@zeniai/web-components 4.3.59-betaAK0 → 4.3.59

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 (56) hide show
  1. package/dist/{SessionTimeoutPopup-CYilum3A.js → SessionTimeoutPopup-BmGGI1m1.js} +86877 -86569
  2. package/dist/{SessionTimeoutPopup-Dn-ZPwN9.cjs → SessionTimeoutPopup-DOvBM1F6.cjs} +15231 -15156
  3. package/dist/appLocale.d.ts +64 -18
  4. package/dist/cockpit.cjs.js +84 -84
  5. package/dist/cockpit.esm.js +223 -222
  6. package/dist/components/common/downloadReport/types/downloadReportOptions.d.ts +2 -0
  7. package/dist/components/common/downloadReport/types/downloadReportOptionsPayload.d.ts +2 -0
  8. package/dist/components/common/downloadReport/types/statementID.d.ts +2 -2
  9. package/dist/components/detail/dashboardReportPage/DashboardReportPage.d.ts +2 -1
  10. package/dist/components/detail/dashboardReportPage/DetailPageReportFilters.d.ts +2 -1
  11. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualJournalEntryCard.d.ts +22 -0
  12. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEOneTimeAccrualDetailPage.d.ts +2 -8
  13. package/dist/components/invoicing/catalog/InvoicingCatalogPage.d.ts +1 -2
  14. package/dist/components/invoicing/catalog/catalogActionMenuItems.d.ts +0 -4
  15. package/dist/components/invoicing/catalogDetail/InvoicingCatalogItemDetailPage.d.ts +6 -19
  16. package/dist/components/invoicing/catalogForm/CatalogPricePointFields.d.ts +15 -1
  17. package/dist/components/invoicing/common/composeInvoicingEmailPreview.d.ts +20 -0
  18. package/dist/components/invoicing/customerDetail/InvoicingCustomerDetailPage.d.ts +14 -11
  19. package/dist/components/invoicing/customerDetail/InvoicingPaymentLinkEmailComposerDialog.d.ts +26 -0
  20. package/dist/components/invoicing/customerList/InvoicingCustomerListPage.d.ts +1 -1
  21. package/dist/components/invoicing/discountDetail/InvoicingDiscountDetailPage.d.ts +6 -2
  22. package/dist/components/invoicing/discountList/InvoicingDiscountListPage.d.ts +1 -2
  23. package/dist/components/invoicing/discountList/discountActionMenuItems.d.ts +0 -4
  24. package/dist/components/invoicing/dunningDetail/InvoicingDunningEmailComposerDialog.d.ts +4 -0
  25. package/dist/components/invoicing/invoiceDetail/InvoicingInvoiceDetailPage.d.ts +6 -1
  26. package/dist/components/invoicing/paymentList/paymentActionMenuItems.d.ts +2 -6
  27. package/dist/components/invoicing/paymentList/paymentListRowMenu.d.ts +1 -1
  28. package/dist/components/invoicing/subscriptionDetail/InvoicingSubscriptionDetailPage.d.ts +6 -2
  29. package/dist/components/invoicing/subscriptionList/InvoicingSubscriptionListPage.d.ts +1 -4
  30. package/dist/components/invoicing/subscriptionList/subscriptionActionMenuItems.d.ts +0 -4
  31. package/dist/components/invoicing/subscriptionList/subscriptionListRowMenu.d.ts +1 -1
  32. package/dist/components/reportTree/reportTreeTypes.d.ts +5 -0
  33. package/dist/components/reportTree/treeNode/pAndLReports/row/SectionRow.d.ts +7 -1
  34. package/dist/components/reportTree/treeNode/pAndLReports/treeNodeMappers/mapSectionToTreeNode.d.ts +6 -3
  35. package/dist/components/reports/ReportsPage.d.ts +10 -2
  36. package/dist/components/reports/cashFlow/mapCashFlowClassReportToTreeNodes.d.ts +4 -0
  37. package/dist/components/reports/cashFlow/mapCashFlowGroupedReportToTreeNodes.d.ts +20 -0
  38. package/dist/components/reports/cashFlow/mapCashFlowProjectReportToTreeNodes.d.ts +4 -0
  39. package/dist/components/reports/reportTypes.d.ts +2 -2
  40. package/dist/components/spendManagement/zeniAccounts/expressPay/sections/RecipientDetailsSection.d.ts +1 -1
  41. package/dist/components/transactionDetail/items/transactionLineTable/listRow/TransactionLineTableListRow.d.ts +1 -1
  42. package/dist/components/transactionDetail/items/transactionLineTable/transactionLineTableTypes.d.ts +9 -0
  43. package/dist/context/featureProvider/DynamicConfigNameConstants.d.ts +2 -0
  44. package/dist/context/featureProvider/useMeetingLinks.d.ts +16 -0
  45. package/dist/index.cjs.js +1 -1
  46. package/dist/index.d.ts +5 -1
  47. package/dist/index.esm.js +285 -284
  48. package/dist/strings/strings.d.ts +64 -18
  49. package/package.json +48 -124
  50. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualSequenceSection.d.ts +0 -22
  51. package/dist/components/invoicing/catalogDetail/catalogProductActionMenuItems.test.d.ts +0 -1
  52. package/dist/components/invoicing/customerDetail/InvoicingPaymentLinkEmailPreview.d.ts +0 -15
  53. package/dist/components/invoicing/discountList/discountActionMenuItems.test.d.ts +0 -1
  54. package/dist/components/invoicing/invoiceDetail/invoicingVoidInvoiceHelpers.d.ts +0 -4
  55. package/dist/components/invoicing/invoiceDetail/invoicingVoidInvoiceHelpers.test.d.ts +0 -1
  56. /package/dist/{components/invoicing/catalog/catalogActionMenuItems.test.d.ts → context/featureProvider/useMeetingLinks.test.d.ts} +0 -0
@@ -1,5 +1,4 @@
1
- import { ClientAnalytics } from '@zeniai/client-analytics';
2
- import { FetchState, ID, JEOneTimeAccrual, NewAccrualAccountsView, OneTimeAccrualEdits, OneTimeAccrualIgnoreReasonType, OneTimeAccrualRevertReasonType, TransactionID } from '@zeniai/client-epic-state';
1
+ import { FetchState, ID, JEOneTimeAccrual, NewAccrualAccountsView, OneTimeAccrualEdits, OneTimeAccrualIgnoreReasonType, OneTimeAccrualRevertReasonType } from '@zeniai/client-epic-state';
3
2
  /**
4
3
  * The whole editable surface of a draft accrual. Amount lives here too -- it is edited in the
5
4
  * header, but posts in the same body as the rest.
@@ -8,9 +7,6 @@ export interface JEOneTimeAccrualDetailPageProps {
8
7
  accrual: JEOneTimeAccrual;
9
8
  /** Status of the promote / ignore request for this accrual. */
10
9
  actionFetchState: FetchState;
11
- analytics: ClientAnalytics;
12
- controllerEmails: string[];
13
- controllerUserIds: string[];
14
10
  isAccountingClassesEnabled: boolean;
15
11
  /** Unposted edits from this visit. Seeds the form so a remount does not lose them. */
16
12
  localData?: OneTimeAccrualEdits;
@@ -24,8 +20,6 @@ export interface JEOneTimeAccrualDetailPageProps {
24
20
  onNavigateBack: () => void;
25
21
  onRevert: (reason: OneTimeAccrualRevertReasonType, note?: string) => void;
26
22
  onSkip: (reason: OneTimeAccrualIgnoreReasonType, note?: string) => void;
27
- /** Opens the journal entry behind a posted accrual or its reversal. */
28
- onViewTransaction: (transactionID: TransactionID) => void;
29
23
  }
30
24
  /**
31
25
  * A single one-time accrual, with the two decisions a human makes about it: post it, or skip the
@@ -34,5 +28,5 @@ export interface JEOneTimeAccrualDetailPageProps {
34
28
  * There is no GET-by-id on the accruals gateway, so the accrual arrives as a prop read from the
35
29
  * list already in the store — this page never fetches.
36
30
  */
37
- declare const JEOneTimeAccrualDetailPage: ({ accrual, actionFetchState, analytics, controllerEmails, controllerUserIds, isAccountingClassesEnabled, localData, newAccrualAccountsView, onAccrualFormChange, onAccrualFormClear, onApproveAndPost, onNavigateBack, onRevert, onViewTransaction, onSkip, }: Readonly<JEOneTimeAccrualDetailPageProps>) => import("react/jsx-runtime").JSX.Element;
31
+ declare const JEOneTimeAccrualDetailPage: ({ accrual, actionFetchState, isAccountingClassesEnabled, localData, newAccrualAccountsView, onAccrualFormChange, onAccrualFormClear, onApproveAndPost, onNavigateBack, onRevert, onSkip, }: Readonly<JEOneTimeAccrualDetailPageProps>) => import("react/jsx-runtime").JSX.Element;
38
32
  export default JEOneTimeAccrualDetailPage;
@@ -32,8 +32,7 @@ export interface InvoicingCatalogPageProps {
32
32
  onTabChange: (tab: InvoicingCatalogTab) => void;
33
33
  onCatalogItemLifecycleAction?: (id: string, action: InvoicingCatalogItemLifecycleAction) => void;
34
34
  onImportCsv?: () => void;
35
- onRowAction?: (tab: InvoicingCatalogTab, id: string, action: "edit") => void;
36
35
  onSortChange?: (next: SortState | null) => void;
37
36
  }
38
- export declare function InvoicingCatalogPage({ activeTab, counts, hasMore, isLoading, isLoadingMore, countsLoading, plans, productColumns, products, searchValue, sortState, onAddItem, onImportCsv, onItemClick, onLoadMore, onRowAction, catalogItemLifecycleActionOptions, onCatalogItemLifecycleAction, runningCatalogItemActionId, onSearchChange, onSortChange, onTabChange, }: Readonly<InvoicingCatalogPageProps>): import("react/jsx-runtime").JSX.Element;
37
+ export declare function InvoicingCatalogPage({ activeTab, counts, hasMore, isLoading, isLoadingMore, countsLoading, plans, productColumns, products, searchValue, sortState, onAddItem, onImportCsv, onItemClick, onLoadMore, catalogItemLifecycleActionOptions, onCatalogItemLifecycleAction, runningCatalogItemActionId, onSearchChange, onSortChange, onTabChange, }: Readonly<InvoicingCatalogPageProps>): import("react/jsx-runtime").JSX.Element;
39
38
  export default InvoicingCatalogPage;
@@ -1,14 +1,10 @@
1
1
  import { InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingPlan } from '@zeniai/client-epic-state';
2
2
  import { InvoicingActionMenuItem } from '../common/InvoicingActionMenu';
3
3
  export interface CatalogActionMenuCallbacks {
4
- onEdit?: () => void;
5
4
  onLifecycleAction?: (action: InvoicingCatalogItemLifecycleAction) => void;
6
- onViewDetails?: () => void;
7
5
  }
8
6
  export interface CatalogActionMenuOptions {
9
7
  disabled?: boolean;
10
- includeEdit?: boolean;
11
- includeViewDetails?: boolean;
12
8
  lifecycleActionOptions?: InvoicingCatalogLifecycleActionOption<InvoicingCatalogItemLifecycleAction>[];
13
9
  }
14
10
  /**
@@ -7,19 +7,11 @@ type InvoicingPlanWithIdentifiers = InvoicingPlan & {
7
7
  productCode?: string;
8
8
  };
9
9
  export interface InvoicingCatalogItemDetailPageProps {
10
- /** The accounts the price-point account pickers render. */
11
10
  groupedAccountOptions: GroupedOption[];
12
- /** The class tree the price-point class pickers render, already narrowed. */
13
11
  groupedClassOptions: GroupedOption[];
14
12
  isLoading: boolean;
15
13
  itemId: string;
16
- /**
17
- * The inline editor's form data, held in CES. Every change flows back through
18
- * `onEditChange`, so the page renders the draft rather than reseeding itself
19
- * from the record — which used to revert edits whenever a prop changed.
20
- */
21
14
  localData: InvoicingCatalogItemFormLocalData;
22
- /** `/1.0/config` option lists the pricing editor's selects are built from. */
23
15
  periodUnitOptions: InvoicingNamedOption[];
24
16
  trialEndActionOptions: InvoicingNamedOption[];
25
17
  trialUnitOptions: InvoicingNamedOption[];
@@ -27,26 +19,21 @@ export interface InvoicingCatalogItemDetailPageProps {
27
19
  applicableItemOptions?: InvoicingCatalogApplicableItemOption[];
28
20
  catalogItemLifecycleActionOptions?: InvoicingCatalogLifecycleActionOption<InvoicingCatalogItemLifecycleAction>[];
29
21
  catalogProductLifecycleActionOptions?: InvoicingCatalogLifecycleActionOption<InvoicingCatalogProductLifecycleAction>[];
30
- /** Error from the last inline-edit save attempt, shown in edit mode. */
31
- editErrorMessage?: string;
32
22
  fieldHelp?: FieldHelpByCode;
33
23
  isRunningLifecycleAction?: boolean;
34
- /** True while an inline-edit save is in flight. */
35
24
  isSaving?: boolean;
36
25
  plan?: InvoicingPlanWithIdentifiers;
37
- /**
38
- * `catalog_tier_type_options_by_pricing_model` from the invoicing config; the
39
- * tier `Type` column is driven by it. `undefined` until the config loads.
40
- */
41
26
  tierTypeOptionsByPricingModel?: InvoicingNamedOptionsByKey;
42
27
  onBack?: () => void;
43
- /** Create a new price point under this catalog item. */
44
- /** Push a form change into the CES draft. */
45
28
  onEditChange?: (localData: InvoicingCatalogItemFormLocalData) => void;
46
29
  onLifecycleAction?: (action: InvoicingCatalogItemLifecycleAction) => void;
47
- /** Save the stored draft. CES already holds the values and builds the body. */
48
30
  onSaveEdit?: () => void;
49
31
  onSubFamilyLifecycleAction?: (subFamilyId: string, action: InvoicingCatalogProductLifecycleAction) => void;
50
32
  }
51
- export declare function InvoicingCatalogItemDetailPage({ applicableItemOptions, catalogItemLifecycleActionOptions, fieldHelp, catalogProductLifecycleActionOptions, editErrorMessage, groupedClassOptions, groupedAccountOptions, isLoading, isRunningLifecycleAction, isSaving, localData, itemId, onBack, onEditChange, onLifecycleAction, onSaveEdit, onSubFamilyLifecycleAction, plan, tierTypeOptionsByPricingModel, periodUnitOptions, trialEndActionOptions, trialUnitOptions, typeOptions, }: Readonly<InvoicingCatalogItemDetailPageProps>): import("react/jsx-runtime").JSX.Element;
33
+ /**
34
+ * Holds the skeleton until every request the page renders from has settled, so
35
+ * the form below mounts once with real values instead of re-seeding itself as
36
+ * each response lands.
37
+ */
38
+ export declare function InvoicingCatalogItemDetailPage(props: Readonly<InvoicingCatalogItemDetailPageProps>): import("react/jsx-runtime").JSX.Element;
52
39
  export default InvoicingCatalogItemDetailPage;
@@ -22,11 +22,25 @@ export interface CatalogPricePointFieldsProps {
22
22
  tierTypeOptionsByPricingModel: InvoicingNamedOptionsByKey | undefined;
23
23
  /** The current values, for the seeds and the conditional rows. */
24
24
  values: CatalogSubFamilyFormValues;
25
+ /**
26
+ * Drops the card wrapper when the surface already draws one — the detail
27
+ * page's section card would otherwise double the border.
28
+ */
29
+ bare?: boolean;
30
+ /** Style for the price input itself, when the row style is not enough. */
31
+ fieldStyle?: React.CSSProperties;
32
+ /** Appended to every label — the detail page's rows read `Label:`. */
33
+ labelSuffix?: string;
25
34
  /**
26
35
  * Locks the price itself while leaving the rest editable — a price point that
27
36
  * already has subscriptions cannot be repriced in place.
28
37
  */
29
38
  pricingDisabled?: boolean;
39
+ /**
40
+ * Per-row style overrides. The detail page stretches the rows to the section
41
+ * width and drops their side borders, which its section card already draws.
42
+ */
43
+ rowStyle?: React.CSSProperties;
30
44
  /** Called when a tier row changes. Omitted when nothing needs persisting. */
31
45
  persist?: () => void;
32
46
  }
@@ -35,4 +49,4 @@ export interface CatalogPricePointFieldsProps {
35
49
  * Shared so the catalog item form and the create-price-point dialog cannot drift
36
50
  * on which fields exist or where they sit.
37
51
  */
38
- export declare function CatalogPricePointFields({ groupedClassOptions, groupedAccountOptions, isAddon, labelWidth, namePrefix, pricingDisabled, selectedPricingModel, showTrialEnd, tiered, tierTypeOptionsByPricingModel, values, persist, }: Readonly<CatalogPricePointFieldsProps>): import("react/jsx-runtime").JSX.Element;
52
+ export declare function CatalogPricePointFields({ groupedClassOptions, groupedAccountOptions, isAddon, labelWidth, namePrefix, pricingDisabled, selectedPricingModel, showTrialEnd, tiered, tierTypeOptionsByPricingModel, values, bare, fieldStyle, labelSuffix, persist, rowStyle, }: Readonly<CatalogPricePointFieldsProps>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,20 @@
1
+ /** The subject and body a composer is editing. */
2
+ export interface InvoicingEmailDraft {
3
+ body: string;
4
+ subject: string;
5
+ }
6
+ /**
7
+ * An email the backend rendered once, with sentinel tokens standing in for the
8
+ * subject and body so a draft can be spliced in without another request.
9
+ */
10
+ export interface InvoicingEmailPreviewTemplate {
11
+ bodyToken: string;
12
+ renderedHtmlTemplate: string;
13
+ subjectToken: string;
14
+ }
15
+ /**
16
+ * Splices a draft into the rendered template, HTML-escaping both fields and
17
+ * turning body newlines into `<br>`. Returns undefined when there is nothing to
18
+ * render into, so callers can show their own empty or error state.
19
+ */
20
+ export declare function composeInvoicingEmailPreview(preview: InvoicingEmailPreviewTemplate | undefined, draft: InvoicingEmailDraft): string | undefined;
@@ -1,5 +1,6 @@
1
1
  import { InvoicingCustomer, InvoicingCustomerFormLocalData, InvoicingCustomerPaymentMethod, InvoicingInvoice, InvoicingNamedOption } from '@zeniai/client-epic-state';
2
2
  import { FieldHelpByCode } from '../../formElements/fieldHelp/FieldHelpContext';
3
+ import { InvoicingPaymentLinkEmailPreview } from './InvoicingPaymentLinkEmailComposerDialog';
3
4
  export interface InvoicingCustomerDetailPageProps {
4
5
  customerId: string;
5
6
  /** `/1.0/config` option lists backing the customer form's pickers. */
@@ -9,28 +10,23 @@ export interface InvoicingCustomerDetailPageProps {
9
10
  taxabilityOptions: InvoicingNamedOption[];
10
11
  /** Formatted billing address for display (from the shared Address flow). */
11
12
  billingAddressLabel?: string;
12
- /** Branding accent color for the payment-link email preview. */
13
- brandingAccentColor?: string;
14
- /** Tenant company name shown as the sender in the payment-link email preview. */
15
- brandingCompanyName?: string;
16
- /** Branding contact email shown in the payment-link email preview footer. */
17
- brandingEmail?: string;
18
- /** Branding logo URL for the payment-link email preview header. */
19
- brandingLogoUrl?: string;
20
13
  customer?: InvoicingCustomer;
21
14
  /** Error from the last inline-edit save attempt, shown in edit mode. */
22
- editErrorMessage?: string;
23
15
  fieldHelp?: FieldHelpByCode;
16
+ hasPaymentLinkEmailPreviewFailed?: boolean;
24
17
  /** Open the payment-link email preview modal on mount (Storybook). */
25
18
  initialPreviewEmailOpen?: boolean;
26
19
  /** Recent invoices for this customer (Figma: "Recent Invoices" table). */
27
20
  invoices?: InvoicingInvoice[];
21
+ isPaymentLinkEmailPreviewLoading?: boolean;
28
22
  /** True while an inline-edit save is in flight. */
29
23
  isSaving?: boolean;
30
24
  /** True while a magic-link payment-collection email is being sent. */
31
25
  isSendingPaymentLink?: boolean;
32
26
  /** CES draft for the inline edit — seeds the form and persists across nav. */
33
27
  localData?: InvoicingCustomerFormLocalData;
28
+ /** The tokenized email render the composer previews. */
29
+ paymentLinkEmailPreview?: InvoicingPaymentLinkEmailPreview;
34
30
  /**
35
31
  * Saved payment methods, newest first with exactly one marked default.
36
32
  * Normalized by the customer detail view selector.
@@ -51,6 +47,8 @@ export interface InvoicingCustomerDetailPageProps {
51
47
  onChange?: (localData: InvoicingCustomerFormLocalData) => void;
52
48
  onCreateInvoice?: () => void;
53
49
  onCreatePromotionalCredits?: () => void;
50
+ /** Asked for when the composer opens, and again behind its Retry. */
51
+ onFetchPaymentLinkEmailPreview?: (cacheOverride?: boolean) => void;
54
52
  onInvoiceClick?: (invoiceId: string) => void;
55
53
  onNewSubscription?: () => void;
56
54
  /** Open the shared Address screen to add/edit the billing address. */
@@ -60,8 +58,13 @@ export interface InvoicingCustomerDetailPageProps {
60
58
  /** Persist inline-edit changes; receives the customer draft `localData`. */
61
59
  onSaveEdit?: (localData: InvoicingCustomerFormLocalData) => void;
62
60
  /** Email the customer a magic link to add their payment details. */
63
- onSendPaymentLink?: (email: string) => void;
61
+ onSendPaymentLink?: (email: string, subject?: string, body?: string) => void;
64
62
  onSubscriptionClick?: (subscriptionId: string) => void;
65
63
  }
66
- export declare function InvoicingCustomerDetailPage({ billingAddressLabel, fieldHelp, brandingAccentColor, brandingCompanyName, brandingEmail, brandingLogoUrl, customer, customerId, editErrorMessage, initialPreviewEmailOpen, invoices, isLoading, isSaving, isSendingPaymentLink, localData, onAddPaymentMethod, onBack, onChange, onCreateInvoice, onInvoiceClick, onCreatePromotionalCredits, paymentMethods, onNewSubscription, onOpenAddress, onOpenPaymentSettings, onSaveEdit, onSendPaymentLink, onSubscriptionClick, sendPaymentLinkErrorMessage, sentPaymentLinkEmail, sentPaymentLinkMagicUrl, stripeConnected, customerTypeOptions, netTermDayOptions, taxabilityOptions, }: Readonly<InvoicingCustomerDetailPageProps>): import("react/jsx-runtime").JSX.Element;
64
+ /**
65
+ * Holds the skeleton until every request the page renders from has settled, so
66
+ * the form below mounts once with real values instead of re-seeding itself as
67
+ * each response lands.
68
+ */
69
+ export declare function InvoicingCustomerDetailPage(props: Readonly<InvoicingCustomerDetailPageProps>): import("react/jsx-runtime").JSX.Element;
67
70
  export default InvoicingCustomerDetailPage;
@@ -0,0 +1,26 @@
1
+ import { InvoicingEmailPreviewTemplate } from '../common/composeInvoicingEmailPreview';
2
+ /** The backend's default prefills, alongside the tokenized render. */
3
+ export interface InvoicingPaymentLinkEmailPreview extends InvoicingEmailPreviewTemplate {
4
+ body: string;
5
+ subject: string;
6
+ to: string;
7
+ }
8
+ export interface InvoicingPaymentLinkEmailComposerDialogProps {
9
+ open: boolean;
10
+ hasPreviewFailed?: boolean;
11
+ isPreviewLoading?: boolean;
12
+ isSending?: boolean;
13
+ preview?: InvoicingPaymentLinkEmailPreview;
14
+ onClose: () => void;
15
+ /** Called with the edited subject and body, both already validated. */
16
+ onSend: (subject: string, body: string) => void;
17
+ /** Re-requests the preview after a failure. */
18
+ onRetryPreview?: () => void;
19
+ }
20
+ /**
21
+ * Composes the payment-method-request email: the backend renders it once with
22
+ * sentinel tokens where the subject and body go, and the draft is spliced into
23
+ * those tokens as the user types — so the live preview costs no requests.
24
+ */
25
+ export declare function InvoicingPaymentLinkEmailComposerDialog({ open, hasPreviewFailed, isPreviewLoading, isSending, preview, onClose, onRetryPreview, onSend, }: Readonly<InvoicingPaymentLinkEmailComposerDialogProps>): import("react/jsx-runtime").JSX.Element;
26
+ export default InvoicingPaymentLinkEmailComposerDialog;
@@ -1,7 +1,7 @@
1
1
  import { Address, InvoicingCustomer, InvoicingCustomerColumnConfig, InvoicingCustomerTabId, InvoicingListCounts } from '@zeniai/client-epic-state';
2
2
  import { SortState } from '../../dataListTable/types';
3
3
  /** Row overflow-menu actions, mirroring the customer detail page. */
4
- export type InvoicingCustomerRowAction = "createInvoice" | "edit" | "createPromotionalCredits" | "newSubscription";
4
+ export type InvoicingCustomerRowAction = "createInvoice" | "createPromotionalCredits" | "newSubscription";
5
5
  /** Presentational Customers list for the in-app Invoicing module. */
6
6
  export interface InvoicingCustomerListPageProps {
7
7
  activeStatus: string;
@@ -6,7 +6,6 @@ export interface InvoicingDiscountDetailPageProps {
6
6
  coupon?: InvoicingCoupon;
7
7
  discountLifecycleActionOptions?: InvoicingDiscountLifecycleActionOption[];
8
8
  /** Error from the last inline-edit save attempt, shown in edit mode. */
9
- editErrorMessage?: string;
10
9
  fieldHelp?: FieldHelpByCode;
11
10
  isRunningLifecycleAction?: boolean;
12
11
  /** True while an inline-edit save is in flight. */
@@ -16,5 +15,10 @@ export interface InvoicingDiscountDetailPageProps {
16
15
  /** Persist inline-edit changes; receives the API-ready coupon payload. */
17
16
  onSaveEdit?: (data: Record<string, unknown>) => void;
18
17
  }
19
- export declare function InvoicingDiscountDetailPage({ coupon, fieldHelp, couponId, discountLifecycleActionOptions, editErrorMessage, isLoading, isRunningLifecycleAction, isSaving, onBack, onLifecycleAction, onSaveEdit, }: Readonly<InvoicingDiscountDetailPageProps>): import("react/jsx-runtime").JSX.Element;
18
+ /**
19
+ * Holds the skeleton until every request the page renders from has settled, so
20
+ * the form below mounts once with real values instead of re-seeding itself as
21
+ * each response lands.
22
+ */
23
+ export declare function InvoicingDiscountDetailPage(props: Readonly<InvoicingDiscountDetailPageProps>): import("react/jsx-runtime").JSX.Element;
20
24
  export default InvoicingDiscountDetailPage;
@@ -28,8 +28,7 @@ export interface InvoicingDiscountListPageProps {
28
28
  onCreateCoupon?: () => void;
29
29
  onDiscountLifecycleAction?: (id: string, action: InvoicingDiscountLifecycleAction) => void;
30
30
  onImportCsv?: () => void;
31
- onRowAction?: (couponId: string, action: "edit") => void;
32
31
  onSortChange?: (next: SortState | null) => void;
33
32
  }
34
- export declare function InvoicingDiscountListPage({ activeStatus, columns, counts, coupons, hasMore, isLoading, isLoadingMore, countsLoading, searchValue, sortState, tabIds, onCouponClick, onCreateCoupon, onImportCsv, onLoadMore, onRowAction, discountLifecycleActionOptions, onDiscountLifecycleAction, runningDiscountActionId, onSearchChange, onSortChange, onStatusChange, }: Readonly<InvoicingDiscountListPageProps>): import("react/jsx-runtime").JSX.Element;
33
+ export declare function InvoicingDiscountListPage({ activeStatus, columns, counts, coupons, hasMore, isLoading, isLoadingMore, countsLoading, searchValue, sortState, tabIds, onCouponClick, onCreateCoupon, onImportCsv, onLoadMore, discountLifecycleActionOptions, onDiscountLifecycleAction, runningDiscountActionId, onSearchChange, onSortChange, onStatusChange, }: Readonly<InvoicingDiscountListPageProps>): import("react/jsx-runtime").JSX.Element;
35
34
  export default InvoicingDiscountListPage;
@@ -1,14 +1,10 @@
1
1
  import { InvoicingCoupon, InvoicingDiscountLifecycleAction, InvoicingDiscountLifecycleActionOption } from '@zeniai/client-epic-state';
2
2
  import { InvoicingActionMenuItem } from '../common/InvoicingActionMenu';
3
3
  export interface DiscountActionMenuCallbacks {
4
- onEdit?: () => void;
5
4
  onLifecycleAction?: (action: InvoicingDiscountLifecycleAction) => void;
6
- onViewDetails?: () => void;
7
5
  }
8
6
  export interface DiscountActionMenuOptions {
9
7
  disabled?: boolean;
10
- includeEdit?: boolean;
11
- includeViewDetails?: boolean;
12
8
  lifecycleActionOptions?: InvoicingDiscountLifecycleActionOption[];
13
9
  }
14
10
  /**
@@ -21,5 +21,9 @@ export interface InvoicingDunningEmailComposerDialogProps {
21
21
  onSend: (draft: InvoicingDunningEmailDraft) => void;
22
22
  }
23
23
  export declare function InvoicingDunningEmailComposerDialog({ initialDraft, isPreviewLoading, isSending, onClose, onSend, open, preview, previewErrorMessage, sendErrorMessage, }: Readonly<InvoicingDunningEmailComposerDialogProps>): import("react/jsx-runtime").JSX.Element;
24
+ /**
25
+ * Kept as the dunning-facing name; the splice itself is shared with the
26
+ * payment-link composer.
27
+ */
24
28
  export declare function composeInvoicingDunningEmailPreview(preview: InvoicingDunningEmailPreviewTemplate | undefined, draft: InvoicingDunningEmailDraft): string | undefined;
25
29
  export default InvoicingDunningEmailComposerDialog;
@@ -27,5 +27,10 @@ export interface InvoicingInvoiceDetailPageProps {
27
27
  onSubscriptionClick?: (subscriptionId: string) => void;
28
28
  onVoid?: (body: VoidInvoiceBody) => void;
29
29
  }
30
- export declare function InvoicingInvoiceDetailPage({ fieldHelp, billingAddress, invoice, invoiceId, shippingAddress, isLoading, isSaving, isVoiding, onBack, onCustomerClick, onIssueCreditNote, onRecordPayment, onRegenerate, onSaveEdit, onSendReminder, onSubscriptionClick, onVoid, }: Readonly<InvoicingInvoiceDetailPageProps>): import("react/jsx-runtime").JSX.Element;
30
+ /**
31
+ * Holds the skeleton until every request the page renders from has settled, so
32
+ * the form below mounts once with real values instead of re-seeding itself as
33
+ * each response lands.
34
+ */
35
+ export declare function InvoicingInvoiceDetailPage(props: Readonly<InvoicingInvoiceDetailPageProps>): import("react/jsx-runtime").JSX.Element;
31
36
  export default InvoicingInvoiceDetailPage;
@@ -3,22 +3,18 @@ import { InvoicingActionMenuItem } from '../common/InvoicingActionMenu';
3
3
  export interface TransactionActionMenuCallbacks {
4
4
  onCapture?: () => void;
5
5
  onViewCustomer?: () => void;
6
- onViewDetails?: () => void;
7
6
  onViewInvoice?: () => void;
8
7
  onViewSubscription?: () => void;
9
8
  }
10
9
  export interface TransactionActionMenuOptions {
11
10
  disabled?: boolean;
12
- includeViewDetails?: boolean;
13
11
  }
14
12
  /**
15
13
  * Single source of truth for the transaction (payment) action menu, shared by
16
14
  * the detail page kebab and each payments-list row ⋮ menu so they never drift.
17
15
  * The detail page's full action set drives it — capture, View Invoice, View
18
16
  * Subscription, View Customer — each gated on the related entity existing and on
19
- * its callback being wired. The list wires only View Invoice / View Customer and
20
- * sets includeViewDetails, which appends a trailing View Details entry that opens
21
- * the transaction detail (the list divider before View Customer is suppressed so
22
- * only the detail keeps its capture-vs-navigation separator).
17
+ * its callback being wired. The list wires only View Invoice / View Customer;
18
+ * rows open the detail by click, so the menu carries no View Details entry.
23
19
  */
24
20
  export declare function buildTransactionActionMenuItems(transaction: InvoicingTransaction, callbacks: TransactionActionMenuCallbacks, options?: TransactionActionMenuOptions): InvoicingActionMenuItem[];
@@ -8,5 +8,5 @@ export interface PaymentListRowMenuProps extends TransactionActionMenuCallbacks
8
8
  * Per-row ⋮ menu for the payments list. Stops event propagation so row
9
9
  * navigation does not fire when opening the menu.
10
10
  */
11
- export declare function PaymentListRowMenu({ disabled, transaction, onCapture, onViewCustomer, onViewDetails, onViewInvoice, onViewSubscription, }: Readonly<PaymentListRowMenuProps>): import("react/jsx-runtime").JSX.Element;
11
+ export declare function PaymentListRowMenu({ disabled, transaction, onCapture, onViewCustomer, onViewInvoice, onViewSubscription, }: Readonly<PaymentListRowMenuProps>): import("react/jsx-runtime").JSX.Element;
12
12
  export default PaymentListRowMenu;
@@ -18,7 +18,6 @@ export interface InvoicingSubscriptionDetailPageProps {
18
18
  /** Coupon options for commercial inline edit. */
19
19
  coupons?: InvoicingSubscriptionFormOption[];
20
20
  /** Error from the last inline-edit save attempt, shown in edit mode. */
21
- editErrorMessage?: string;
22
21
  fieldHelp?: FieldHelpByCode;
23
22
  isRunningAction?: boolean;
24
23
  /** True while an inline-edit save is in flight. */
@@ -47,5 +46,10 @@ export interface InvoicingSubscriptionDetailPageProps {
47
46
  onSaveEdit?: (localData: InvoicingSubscriptionFormLocalData) => void;
48
47
  onViewInvoices?: () => void;
49
48
  }
50
- export declare function InvoicingSubscriptionDetailPage({ fieldHelp, addons: addonOptions, canEditCommercial, coupons: couponOptions, editErrorMessage, isLoading, isRunningAction, isSaving, lifecycleActionOptions, localData, onBack, onChange, onCustomerClick, onChangeTermEnd, cancelReasonCodeOptions, onCancelSubscription, onLifecycleAction, onOpenAddress, onSaveEdit, onViewInvoices, plans: planOptions, shippingAddressLabel, subscription, subscriptionId, }: Readonly<InvoicingSubscriptionDetailPageProps>): import("react/jsx-runtime").JSX.Element;
49
+ /**
50
+ * Holds the skeleton until every request the page renders from has settled, so
51
+ * the form below mounts once with real values instead of re-seeding itself as
52
+ * each response lands.
53
+ */
54
+ export declare function InvoicingSubscriptionDetailPage(props: Readonly<InvoicingSubscriptionDetailPageProps>): import("react/jsx-runtime").JSX.Element;
51
55
  export default InvoicingSubscriptionDetailPage;
@@ -20,10 +20,8 @@ export interface InvoicingSubscriptionListPageProps {
20
20
  tabIds: InvoicingSubscriptionTabId[];
21
21
  /** Cancel reasons from `/1.0/config`, handed to the cancel dialog. */
22
22
  cancelReasonCodeOptions?: InvoicingNamedOption[];
23
- commercialEditAllowedFromStatuses?: string[];
24
23
  countsLoading?: boolean;
25
24
  lifecycleActionOptions?: InvoicingSubscriptionLifecycleActionOption[];
26
- metadataEditAllowedFromStatuses?: string[];
27
25
  runningActionSubscriptionId?: string | null;
28
26
  sortState?: SortState | null;
29
27
  onLoadMore: () => void;
@@ -34,12 +32,11 @@ export interface InvoicingSubscriptionListPageProps {
34
32
  /** Cancel is its own callback: the dialog collects a reason and a comment. */
35
33
  onCancelSubscription?: (subscriptionId: string, values: InvoicingCancelSubscriptionValues) => void;
36
34
  onChangeTermEnd?: (subscriptionId: string, termEndsAt: string) => void;
37
- onEditSubscription?: (subscriptionId: string) => void;
38
35
  onImportCsv?: () => void;
39
36
  onSortChange?: (next: SortState | null) => void;
40
37
  /** `resumeDate` is only supplied for `pause`, collected by the pause dialog. */
41
38
  onSubscriptionAction?: (subscriptionId: string, action: SubscriptionListRowAction, resumeDate?: string) => void;
42
39
  onViewSubscriptionInvoices?: (subscriptionId: string) => void;
43
40
  }
44
- export declare function InvoicingSubscriptionListPage({ activeStatus, columns, commercialEditAllowedFromStatuses, counts, countsLoading, hasMore, isLoading, isLoadingMore, metadataEditAllowedFromStatuses, searchValue, sortState, subscriptions, tabIds, onAddSubscription, onChangeTermEnd, onEditSubscription, onImportCsv, onLoadMore, onSearchChange, onSortChange, onStatusChange, cancelReasonCodeOptions, onCancelSubscription, onSubscriptionAction, onSubscriptionClick, onViewSubscriptionInvoices, lifecycleActionOptions, runningActionSubscriptionId, }: Readonly<InvoicingSubscriptionListPageProps>): import("react/jsx-runtime").JSX.Element;
41
+ export declare function InvoicingSubscriptionListPage({ activeStatus, columns, counts, countsLoading, hasMore, isLoading, isLoadingMore, searchValue, sortState, subscriptions, tabIds, onAddSubscription, onChangeTermEnd, onImportCsv, onLoadMore, onSearchChange, onSortChange, onStatusChange, cancelReasonCodeOptions, onCancelSubscription, onSubscriptionAction, onSubscriptionClick, onViewSubscriptionInvoices, lifecycleActionOptions, runningActionSubscriptionId, }: Readonly<InvoicingSubscriptionListPageProps>): import("react/jsx-runtime").JSX.Element;
45
42
  export default InvoicingSubscriptionListPage;
@@ -3,15 +3,11 @@ import { InvoicingActionMenuItem } from '../common/InvoicingActionMenu';
3
3
  export type SubscriptionListRowAction = InvoicingSubscriptionLifecycleAction;
4
4
  export interface SubscriptionActionMenuCallbacks {
5
5
  onChangeTermEnd?: () => void;
6
- onEdit?: () => void;
7
6
  onLifecycleAction?: (action: InvoicingSubscriptionLifecycleAction) => void;
8
- onViewDetails?: () => void;
9
7
  onViewInvoices?: () => void;
10
8
  }
11
9
  export interface SubscriptionActionMenuOptions {
12
10
  disabled?: boolean;
13
- includeEdit?: boolean;
14
- includeViewDetails?: boolean;
15
11
  lifecycleActionOptions?: InvoicingSubscriptionLifecycleActionOption[];
16
12
  }
17
13
  /**
@@ -9,5 +9,5 @@ export interface SubscriptionListRowMenuProps extends SubscriptionActionMenuCall
9
9
  * Per-row ⋮ menu for the subscriptions list. Stops event propagation so row
10
10
  * navigation does not fire when opening the menu.
11
11
  */
12
- export declare function SubscriptionListRowMenu({ disabled, lifecycleActionOptions, subscription, onChangeTermEnd, onEdit, onLifecycleAction, onViewDetails, onViewInvoices, }: Readonly<SubscriptionListRowMenuProps>): import("react/jsx-runtime").JSX.Element;
12
+ export declare function SubscriptionListRowMenu({ disabled, lifecycleActionOptions, subscription, onChangeTermEnd, onLifecycleAction, onViewInvoices, }: Readonly<SubscriptionListRowMenuProps>): import("react/jsx-runtime").JSX.Element;
13
13
  export default SubscriptionListRowMenu;
@@ -54,6 +54,11 @@ interface ReportElement {
54
54
  numOfBalances: number;
55
55
  title: string;
56
56
  data?: Section | SectionWithAccountOnly | CalculatedSection | AccountGroupReport | AccountReport | HorizontalAccountReportData | SectionClassesViewReportV2 | SectionAccountsViewReport | NestedAccountReport | AccountGroupReportV2 | NestedClassReportV2 | ProjectReportWithBalances | SectionProjectViewReport | COABalance[] | ClassColumnDefinition[] | NestedClassHierarchyForReport | AgingPeriod[] | AgingBalance[] | AgingBalancesByVendor | NestedAgingBalancesByCustomer | OpExBalancesByVendor | FluxSectionViewReport | FluxAnalysisVendorView | FluxVendorAccountsAndClassesView | FluxTotalRowReport | AccountReconciliationBySection | AccountReconciliationByAccount;
57
+ /**
58
+ * Renders the row's label and children but no balance cells. Used where a
59
+ * section is only a grouping label and its figures live on a row below.
60
+ */
61
+ hideBalances?: boolean;
57
62
  index?: number;
58
63
  metadata?: ElementMetadata;
59
64
  sectionType?: SectionType;
@@ -17,7 +17,13 @@ export interface Props {
17
17
  treeNodeId: string;
18
18
  type: ReportTreeKind;
19
19
  backgroundColor?: Color;
20
+ /**
21
+ * Renders the cells empty instead of dropping them, so a label-only row keeps
22
+ * the row's width and bottom border. Mirrors isTitleRow in the PDF and Excel
23
+ * section rows.
24
+ */
25
+ hideBalances?: boolean;
20
26
  hideSectionIconCircle?: boolean;
21
27
  onClick?: (treeNodeId: string) => void;
22
28
  }
23
- export default function SectionRow({ type, backgroundColor, isSticky, treeNodeId, height, sectionId, sectionName, sectionBalances, isActualVsForecastOn, compareMode, isScrolling: _isScrolling, isOpen, isLeaf, onClick, }: Props): import("react/jsx-runtime").JSX.Element;
29
+ export default function SectionRow({ type, backgroundColor, isSticky, treeNodeId, height, sectionId, sectionName, sectionBalances, hideBalances, isActualVsForecastOn, compareMode, isScrolling: _isScrolling, isOpen, isLeaf, onClick, }: Props): import("react/jsx-runtime").JSX.Element;
@@ -1,21 +1,23 @@
1
1
  import { Section, SectionAccountsViewReport, SectionClassesViewReportV2, SectionProjectViewReport } from '@zeniai/client-epic-state';
2
2
  import { default as SectionType } from '../../../../dataSelector/dataSelector';
3
3
  import { ReportElementConfig, ReportTreeNode } from '../../../reportTreeTypes';
4
- export declare function mapSectionToTreeNode({ section, sectionType, numOfBalances, title, isLastNode, config, }: {
4
+ export declare function mapSectionToTreeNode({ section, sectionType, numOfBalances, title, isLastNode, config, hideBalances, }: {
5
5
  config: ReportElementConfig;
6
6
  isLastNode: boolean;
7
7
  numOfBalances: number;
8
8
  section: Section;
9
9
  sectionType: SectionType;
10
10
  title: string;
11
+ hideBalances?: boolean;
11
12
  }): ReportTreeNode;
12
- export declare function mapClassViewSectionToTreeNode({ section, sectionType, numOfBalances, title, isLastNode, config, }: {
13
+ export declare function mapClassViewSectionToTreeNode({ section, sectionType, numOfBalances, title, isLastNode, config, hideBalances, }: {
13
14
  config: ReportElementConfig;
14
15
  isLastNode: boolean;
15
16
  numOfBalances: number;
16
17
  section: SectionClassesViewReportV2;
17
18
  sectionType: SectionType;
18
19
  title: string;
20
+ hideBalances?: boolean;
19
21
  }): ReportTreeNode;
20
22
  export declare function mapAccountViewSectionToTreeNode({ section, sectionType, numOfBalances, title, isLastNode, config, }: {
21
23
  config: ReportElementConfig;
@@ -25,11 +27,12 @@ export declare function mapAccountViewSectionToTreeNode({ section, sectionType,
25
27
  sectionType: SectionType;
26
28
  title: string;
27
29
  }): ReportTreeNode;
28
- export declare function mapProjectViewSectionToTreeNode({ section, sectionType, numOfBalances, title, isLastNode, config, }: {
30
+ export declare function mapProjectViewSectionToTreeNode({ section, sectionType, numOfBalances, title, isLastNode, config, hideBalances, }: {
29
31
  config: ReportElementConfig;
30
32
  isLastNode: boolean;
31
33
  numOfBalances: number;
32
34
  section: SectionProjectViewReport;
33
35
  sectionType: SectionType;
34
36
  title: string;
37
+ hideBalances?: boolean;
35
38
  }): ReportTreeNode;
@@ -1,5 +1,5 @@
1
1
  import { ClientAnalytics } from '@zeniai/client-analytics';
2
- import { AccountReport, AccountViewMode, BalanceSheetClassesViewReport, BalanceSheetProjectViewReport, BalanceSheetReport, COABalance, COABalanceTimeFrame, COABalanceType, COABalancesOrder, COABalancesRange, COABalancesRangeWithThisPeriod, CashFlowReport, ClassViewLayout, FetchState, FetchStateAndError, ID, NestedClassID, ProfitAndLossByClassHorizontalReport, ProfitAndLossClassesViewReport, ProfitAndLossProjectViewReport, ProfitAndLossReport, ReportFormat, ReportID, TimeframeTick, TimeframeTickWithMetaData } from '@zeniai/client-epic-state';
2
+ import { AccountReport, AccountViewMode, BalanceSheetClassesViewReport, BalanceSheetProjectViewReport, BalanceSheetReport, COABalance, COABalanceTimeFrame, COABalanceType, COABalancesOrder, COABalancesRange, COABalancesRangeWithThisPeriod, CashFlowClassesViewReport, CashFlowProjectViewReport, CashFlowReport, ClassViewLayout, FetchState, FetchStateAndError, ID, NestedClassID, ProfitAndLossByClassHorizontalReport, ProfitAndLossClassesViewReport, ProfitAndLossProjectViewReport, ProfitAndLossReport, ReportFormat, ReportID, TimeframeTick, TimeframeTickWithMetaData } from '@zeniai/client-epic-state';
3
3
  import { RequestToOpenThreadType } from '../commentsAndNotes/utils/ThreadsProvider';
4
4
  import { DownloadbleReportProps } from '../common/downloadReport/downloadableReportProps';
5
5
  import { ReportTreeScrollPosition } from '../reportTree/ReportTree';
@@ -10,6 +10,8 @@ export interface Props extends DownloadbleReportProps {
10
10
  balanceSheetProjectViewReport: BalanceSheetProjectViewReport;
11
11
  balanceSheetReport: BalanceSheetReport;
12
12
  balancesInTimeframe: COABalance[];
13
+ cashFlowClassesViewReport: CashFlowClassesViewReport;
14
+ cashFlowProjectViewReport: CashFlowProjectViewReport;
13
15
  cashFlowReport: CashFlowReport;
14
16
  displayOrder: COABalancesOrder;
15
17
  fetchState: FetchState;
@@ -63,7 +65,13 @@ export interface Props extends DownloadbleReportProps {
63
65
  onTableScroll?: (reportId: ReportID, props: ReportTreeScrollPosition) => void;
64
66
  onThisPeriodChanged?: (thisPeriod: TimeframeTick, maxNumOfPeriodsToSelect: number, reportViewUpdate?: boolean) => void;
65
67
  onTimeframeSelectionChanged?: (selectedTimeframe: COABalanceTimeFrame, isUpdateAdditionalBalances: boolean, reportViewUpdate?: boolean) => void;
66
- onUpdateAccountViewMode?: (view: AccountViewMode) => void;
68
+ onUpdateAccountViewMode?: (view: AccountViewMode,
69
+ /**
70
+ * The report the mode belongs to. Thread navigation changes the report and
71
+ * the mode in one go, and the handler's own props still hold the previous
72
+ * report at that point, so the family has to travel with the mode.
73
+ */
74
+ forReportId?: ReportID) => void;
67
75
  onUpdateClassesToFilterOut?: (classesToFilterOut: NestedClassID[]) => void;
68
76
  onUpdateClassViewLayout?: (layout: ClassViewLayout) => void;
69
77
  onUpdateProjectsToFilterOut?: (projectsToFilterOut: ID[]) => void;
@@ -0,0 +1,4 @@
1
+ import { CashFlowClassesViewReport } from '@zeniai/client-epic-state';
2
+ import { RootNodes } from '../../reportTree/ReportTree';
3
+ import { ReportElementConfig } from '../../reportTree/reportTreeTypes';
4
+ export declare function mapCashFlowClassReportToReportTreeNodes(report: CashFlowClassesViewReport, config: ReportElementConfig, makeTimeframeRowSticky?: boolean, isPageFetchInProgress?: boolean): RootNodes;
@@ -0,0 +1,20 @@
1
+ import { CashFlowClassesViewReport, CashFlowProjectViewReport, CashFlowReportViewSectionID } from '@zeniai/client-epic-state';
2
+ import { default as SectionType } from '../../dataSelector/dataSelector';
3
+ import { RootNodes } from '../../reportTree/ReportTree';
4
+ import { ReportElementConfig, ReportTreeNode } from '../../reportTree/reportTreeTypes';
5
+ export declare function mapCashFlowGroupedReportToReportTreeNodes<TSection>({ report, sections, config, isPageFetchInProgress, makeTimeframeRowSticky, mapSectionToTreeNode, }: {
6
+ config: ReportElementConfig;
7
+ isPageFetchInProgress: boolean;
8
+ makeTimeframeRowSticky: boolean;
9
+ report: CashFlowClassesViewReport | CashFlowProjectViewReport;
10
+ sections: Record<CashFlowReportViewSectionID, TSection>;
11
+ mapSectionToTreeNode: (args: {
12
+ config: ReportElementConfig;
13
+ isLastNode: boolean;
14
+ numOfBalances: number;
15
+ section: TSection;
16
+ sectionType: SectionType;
17
+ title: string;
18
+ hideBalances?: boolean;
19
+ }) => ReportTreeNode;
20
+ }): RootNodes;
@@ -0,0 +1,4 @@
1
+ import { CashFlowProjectViewReport } from '@zeniai/client-epic-state';
2
+ import { RootNodes } from '../../reportTree/ReportTree';
3
+ import { ReportElementConfig } from '../../reportTree/reportTreeTypes';
4
+ export declare function mapCashFlowProjectReportToReportTreeNodes(report: CashFlowProjectViewReport, config: ReportElementConfig, makeTimeframeRowSticky?: boolean, isPageFetchInProgress?: boolean): RootNodes;
@@ -1,2 +1,2 @@
1
- import { BalanceSheetClassesViewReport, BalanceSheetProjectViewReport, BalanceSheetReport, CashFlowReport, ProfitAndLossByClassHorizontalReport, ProfitAndLossClassesViewReport, ProfitAndLossProjectViewReport, ProfitAndLossReport } from '@zeniai/client-epic-state';
2
- export type FinancialReport = ProfitAndLossReport | BalanceSheetReport | BalanceSheetClassesViewReport | BalanceSheetProjectViewReport | CashFlowReport | ProfitAndLossClassesViewReport | ProfitAndLossByClassHorizontalReport | ProfitAndLossProjectViewReport;
1
+ import { BalanceSheetClassesViewReport, BalanceSheetProjectViewReport, BalanceSheetReport, CashFlowClassesViewReport, CashFlowProjectViewReport, CashFlowReport, ProfitAndLossByClassHorizontalReport, ProfitAndLossClassesViewReport, ProfitAndLossProjectViewReport, ProfitAndLossReport } from '@zeniai/client-epic-state';
2
+ export type FinancialReport = ProfitAndLossReport | BalanceSheetReport | BalanceSheetClassesViewReport | BalanceSheetProjectViewReport | CashFlowClassesViewReport | CashFlowProjectViewReport | CashFlowReport | ProfitAndLossClassesViewReport | ProfitAndLossByClassHorizontalReport | ProfitAndLossProjectViewReport;
@@ -16,7 +16,7 @@ export interface RecipientDetailsFormData {
16
16
  recipientType: SingleSelectFieldValue;
17
17
  }
18
18
  type FormDataKeys = keyof RecipientDetailsFormData;
19
- declare const uniqueName: (sectionId: string, key: FormDataKeys) => `${string}.recipient` | `${string}.recipientName` | `${string}.recipientEmail` | `${string}.recipientType`;
19
+ declare const uniqueName: (sectionId: string, key: FormDataKeys) => `${string}.recipient` | `${string}.recipientEmail` | `${string}.recipientName` | `${string}.recipientType`;
20
20
  export type RecipientFormKeyUniqueNames = ReturnType<typeof uniqueName>;
21
21
  /**x
22
22
  * Component & its Props