@zeniai/web-components 4.3.58 → 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 (54) hide show
  1. package/dist/{SessionTimeoutPopup-BBq4i4HC.js → SessionTimeoutPopup-BmGGI1m1.js} +95101 -96038
  2. package/dist/{SessionTimeoutPopup-B2hNcg5c.cjs → SessionTimeoutPopup-DOvBM1F6.cjs} +15782 -15717
  3. package/dist/appLocale.d.ts +14 -11
  4. package/dist/cockpit.cjs.js +84 -84
  5. package/dist/cockpit.esm.js +205 -205
  6. package/dist/components/appDrawerContent/MenuList.d.ts +1 -1
  7. package/dist/components/detail/dashboardReportPage/DashboardReportPage.d.ts +2 -1
  8. package/dist/components/detail/dashboardReportPage/DetailPageReportFilters.d.ts +2 -1
  9. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualJournalEntryCard.d.ts +22 -0
  10. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEOneTimeAccrualDetailPage.d.ts +2 -8
  11. package/dist/components/invoicing/catalog/InvoicingCatalogPage.d.ts +1 -2
  12. package/dist/components/invoicing/catalog/catalogActionMenuItems.d.ts +0 -4
  13. package/dist/components/invoicing/catalogDetail/InvoicingCatalogItemDetailPage.d.ts +11 -32
  14. package/dist/components/invoicing/catalogForm/CatalogPricePointFields.d.ts +20 -1
  15. package/dist/components/invoicing/catalogForm/CatalogSubFamilyTierTable.d.ts +3 -3
  16. package/dist/components/invoicing/catalogForm/InvoicingCatalogItemFormPage.d.ts +1 -1
  17. package/dist/components/invoicing/catalogForm/catalogItemForm.shared.d.ts +4 -4
  18. package/dist/components/invoicing/common/composeInvoicingEmailPreview.d.ts +20 -0
  19. package/dist/components/invoicing/customerDetail/InvoicingCustomerDetailPage.d.ts +14 -16
  20. package/dist/components/invoicing/customerDetail/InvoicingPaymentLinkEmailComposerDialog.d.ts +26 -0
  21. package/dist/components/invoicing/customerList/InvoicingCustomerListPage.d.ts +1 -1
  22. package/dist/components/invoicing/discountDetail/InvoicingDiscountDetailPage.d.ts +6 -7
  23. package/dist/components/invoicing/discountList/InvoicingDiscountListPage.d.ts +1 -2
  24. package/dist/components/invoicing/discountList/discountActionMenuItems.d.ts +0 -4
  25. package/dist/components/invoicing/dunningDetail/InvoicingDunningEmailComposerDialog.d.ts +4 -0
  26. package/dist/components/invoicing/invoiceDetail/InvoicingInvoiceDetailPage.d.ts +6 -3
  27. package/dist/components/invoicing/paymentList/paymentActionMenuItems.d.ts +2 -6
  28. package/dist/components/invoicing/paymentList/paymentListRowMenu.d.ts +1 -1
  29. package/dist/components/invoicing/settings/InvoicingIntegrationsSection.d.ts +2 -1
  30. package/dist/components/invoicing/settings/InvoicingSettingsHubPage.d.ts +2 -4
  31. package/dist/components/invoicing/settings/invoicingIntegrationCards.d.ts +2 -1
  32. package/dist/components/invoicing/subscriptionDetail/InvoicingSubscriptionDetailPage.d.ts +6 -7
  33. package/dist/components/invoicing/subscriptionList/InvoicingSubscriptionListPage.d.ts +1 -4
  34. package/dist/components/invoicing/subscriptionList/subscriptionActionMenuItems.d.ts +0 -4
  35. package/dist/components/invoicing/subscriptionList/subscriptionListRowMenu.d.ts +1 -1
  36. package/dist/components/spendManagement/zeniAccounts/expressPay/sections/RecipientDetailsSection.d.ts +1 -1
  37. package/dist/components/transactionDetail/items/transactionLineTable/listRow/TransactionLineTableListRow.d.ts +1 -1
  38. package/dist/components/transactionDetail/items/transactionLineTable/transactionLineTableTypes.d.ts +9 -0
  39. package/dist/context/featureProvider/DynamicConfigNameConstants.d.ts +2 -0
  40. package/dist/context/featureProvider/useMeetingLinks.d.ts +16 -0
  41. package/dist/index.cjs.js +1 -1
  42. package/dist/index.d.ts +4 -1
  43. package/dist/index.esm.js +254 -254
  44. package/dist/strings/strings.d.ts +14 -11
  45. package/package.json +3 -3
  46. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualSequenceSection.d.ts +0 -22
  47. package/dist/components/invoicing/catalogDetail/CreateInvoicingCatalogSubFamilyDialog.d.ts +0 -40
  48. package/dist/components/invoicing/catalogDetail/catalogDetailEditForm.shared.d.ts +0 -47
  49. package/dist/components/invoicing/catalogDetail/catalogProductActionMenuItems.test.d.ts +0 -1
  50. package/dist/components/invoicing/customerDetail/InvoicingPaymentLinkEmailPreview.d.ts +0 -15
  51. package/dist/components/invoicing/discountList/discountActionMenuItems.test.d.ts +0 -1
  52. package/dist/components/invoicing/invoiceDetail/invoicingVoidInvoiceHelpers.d.ts +0 -4
  53. package/dist/components/invoicing/invoiceDetail/invoicingVoidInvoiceHelpers.test.d.ts +0 -1
  54. /package/dist/{components/invoicing/catalog/catalogActionMenuItems.test.d.ts → context/featureProvider/useMeetingLinks.test.d.ts} +0 -0
@@ -1,60 +1,39 @@
1
- import { InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingCatalogProductLifecycleAction, InvoicingNamedOptionsByKey, InvoicingPlan, CatalogDetailEditValues, CreateSubFamilyFormValues, InvoicingNamedOption } from '@zeniai/client-epic-state';
1
+ import { InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingCatalogProductLifecycleAction, InvoicingNamedOptionsByKey, InvoicingPlan, InvoicingCatalogItemFormLocalData, InvoicingNamedOption } from '@zeniai/client-epic-state';
2
2
  import { FieldHelpByCode } from '../../formElements/fieldHelp/FieldHelpContext';
3
3
  import { GroupedOption } from '../../formElements/labeledGroupSingleSelectFieldWithRecommendationCheckbox/GroupedSingleSelectField';
4
+ import { InvoicingCatalogApplicableItemOption } from '../catalogForm/InvoicingCatalogItemFormPage';
4
5
  type InvoicingPlanWithIdentifiers = InvoicingPlan & {
5
6
  externalId?: string;
6
7
  productCode?: string;
7
8
  };
8
9
  export interface InvoicingCatalogItemDetailPageProps {
9
- /** The accounts the price-point account pickers render. */
10
10
  groupedAccountOptions: GroupedOption[];
11
- /** The class tree the price-point class pickers render, already narrowed. */
12
11
  groupedClassOptions: GroupedOption[];
13
12
  isLoading: boolean;
14
13
  itemId: string;
15
- /**
16
- * The inline editor's form data, held in CES. Every change flows back through
17
- * `onEditChange`, so the page renders the draft rather than reseeding itself
18
- * from the record — which used to revert edits whenever a prop changed.
19
- */
20
- localData: CatalogDetailEditValues;
21
- /** `/1.0/config` option lists the pricing editor's selects are built from. */
14
+ localData: InvoicingCatalogItemFormLocalData;
22
15
  periodUnitOptions: InvoicingNamedOption[];
23
16
  trialEndActionOptions: InvoicingNamedOption[];
24
17
  trialUnitOptions: InvoicingNamedOption[];
25
18
  typeOptions: InvoicingNamedOption[];
19
+ applicableItemOptions?: InvoicingCatalogApplicableItemOption[];
26
20
  catalogItemLifecycleActionOptions?: InvoicingCatalogLifecycleActionOption<InvoicingCatalogItemLifecycleAction>[];
27
21
  catalogProductLifecycleActionOptions?: InvoicingCatalogLifecycleActionOption<InvoicingCatalogProductLifecycleAction>[];
28
- /** Error from the last inline-edit save attempt, shown in edit mode. */
29
- editErrorMessage?: string;
30
22
  fieldHelp?: FieldHelpByCode;
31
- /** Start the page in inline edit mode (e.g. when routed from /edit). */
32
- initialEditMode?: boolean;
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
- /** Called when inline edit is cancelled (e.g. to drop /edit from the URL). */
44
- onCancelEdit?: () => void;
45
- /** Create a new sub-family under this catalog item. */
46
- /**
47
- * The new price point as the dialog's form holds it. CES builds the request
48
- * body, so the page never carries the wire shape.
49
- */
50
- onCreateSubFamily?: (values: CreateSubFamilyFormValues) => void;
51
- onEdit?: () => void;
52
- /** Push a form change into the CES draft. */
53
- onEditChange?: (localData: CatalogDetailEditValues) => void;
28
+ onEditChange?: (localData: InvoicingCatalogItemFormLocalData) => void;
54
29
  onLifecycleAction?: (action: InvoicingCatalogItemLifecycleAction) => void;
55
- /** Save the stored draft. CES already holds the values and builds the body. */
56
30
  onSaveEdit?: () => void;
57
31
  onSubFamilyLifecycleAction?: (subFamilyId: string, action: InvoicingCatalogProductLifecycleAction) => void;
58
32
  }
59
- export declare function InvoicingCatalogItemDetailPage({ catalogItemLifecycleActionOptions, fieldHelp, catalogProductLifecycleActionOptions, editErrorMessage, groupedClassOptions, groupedAccountOptions, initialEditMode, isLoading, isRunningLifecycleAction, isSaving, localData, itemId, onBack, onCancelEdit, onEditChange, onCreateSubFamily, onEdit, 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;
60
39
  export default InvoicingCatalogItemDetailPage;
@@ -22,6 +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;
34
+ /**
35
+ * Locks the price itself while leaving the rest editable — a price point that
36
+ * already has subscriptions cannot be repriced in place.
37
+ */
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;
25
44
  /** Called when a tier row changes. Omitted when nothing needs persisting. */
26
45
  persist?: () => void;
27
46
  }
@@ -30,4 +49,4 @@ export interface CatalogPricePointFieldsProps {
30
49
  * Shared so the catalog item form and the create-price-point dialog cannot drift
31
50
  * on which fields exist or where they sit.
32
51
  */
33
- export declare function CatalogPricePointFields({ groupedClassOptions, groupedAccountOptions, isAddon, labelWidth, namePrefix, 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;
@@ -2,7 +2,7 @@ import { InvoicingNamedOptionsByKey } from '@zeniai/client-epic-state';
2
2
  interface CatalogSubFamilyTierTableProps {
3
3
  /** Field-array path, e.g. `subFamilies.0.tiers`. */
4
4
  name: string;
5
- /** The sub-family's selected pricing model; picks the row's `Type` options. */
5
+ /** The price point's selected pricing model; picks the row's `Type` options. */
6
6
  pricingModel: string;
7
7
  /** Read-only: the tier fields and the add / remove / clear actions are off. */
8
8
  disabled?: boolean;
@@ -22,9 +22,9 @@ interface CatalogSubFamilyTierTableProps {
22
22
  onChange?: () => void;
23
23
  }
24
24
  /**
25
- * The tiered-pricing editor for one sub-family: a From / To / Price / Type grid
25
+ * The tiered-pricing editor for one price point: a From / To / Price / Type grid
26
26
  * with add, remove and clear-all actions. Shared by the catalog item form, the
27
- * catalog item detail page's inline edit and the create-sub-family dialog so all
27
+ * catalog item detail page's inline edit and the create-price point dialog so all
28
28
  * three render the same UI for the tiered pricing models.
29
29
  *
30
30
  * The `Type` column is driven entirely by the invoicing config: the allowed
@@ -2,7 +2,7 @@ import { InvoicingCatalogItemFormLocalData, InvoicingNamedOption, InvoicingNamed
2
2
  import { FieldHelpByCode } from '../../formElements/fieldHelp/FieldHelpContext';
3
3
  /**
4
4
  * Catalog item types as shown to the user. All three are parent catalog items;
5
- * the type controls the parent and nested sub-family payload fields.
5
+ * the type controls the parent and nested price point payload fields.
6
6
  */
7
7
  export type CatalogFormType = "addon" | "charge" | "plan";
8
8
  export interface InvoicingCatalogApplicableItemOption {
@@ -43,7 +43,7 @@ export interface CatalogFormOptions {
43
43
  }
44
44
  /**
45
45
  * The CES-owned value sets. The form receives them as props (the screen reads
46
- * them from CES); the catalog detail page and the create-sub-family dialog use
46
+ * them from CES); the catalog detail page and the create-price point dialog use
47
47
  * this constant so all three render the same options with the same labels.
48
48
  */
49
49
  export declare const CATALOG_FORM_VALUE_SETS: CatalogFormValueSets;
@@ -138,7 +138,7 @@ export type CatalogFormValues = Omit<InvoicingCatalogItemFormLocalData, "applica
138
138
  itemApplicability: PickerValue;
139
139
  subFamilies: CatalogSubFamilyFormValues[];
140
140
  };
141
- /** One CES sub-family as the price-point form holds it. */
141
+ /** One CES price point as the price-point form holds it. */
142
142
  export declare const pricePointToFormValues: (subFamily: InvoicingCatalogItemFormSubFamily, options: CatalogFormOptions) => CatalogSubFamilyFormValues;
143
143
  export declare const localDataToCatalogFormValues: (localData: InvoicingCatalogItemFormLocalData, options: CatalogFormOptions, applicableItemOptions: readonly {
144
144
  id: string;
@@ -146,13 +146,13 @@ export declare const localDataToCatalogFormValues: (localData: InvoicingCatalogI
146
146
  subtitle?: string;
147
147
  }[]) => CatalogFormValues;
148
148
  /**
149
- * One price point's form values as the CES sub-family shape. Exported so the
149
+ * One price point's form values as the CES price point shape. Exported so the
150
150
  * create dialog can hand its values to the create action without repeating the
151
151
  * picker-unwrapping the item form already does.
152
152
  */
153
153
  export declare const pricePointFormValuesToSubFamily: (subFamily: CatalogSubFamilyFormValues) => InvoicingCatalogItemFormSubFamily;
154
154
  export declare const catalogFormValuesToLocalData: (values: CatalogFormValues) => InvoicingCatalogItemFormLocalData;
155
- /** Blank sub-family / tier in form-values shape, seeded from the CES blanks. */
155
+ /** Blank price point / tier in form-values shape, seeded from the CES blanks. */
156
156
  export declare const blankSubFamilyFormValues: (options: CatalogFormOptions) => CatalogSubFamilyFormValues;
157
157
  export declare const blankTierFormValues: (tierTypeOptions: CatalogSelectOption[], startingUnit?: string) => CatalogTierFormValues;
158
158
  export {};
@@ -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,30 +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;
24
- /** Start the page in inline edit mode (e.g. when routed from /edit). */
25
- initialEditMode?: boolean;
16
+ hasPaymentLinkEmailPreviewFailed?: boolean;
26
17
  /** Open the payment-link email preview modal on mount (Storybook). */
27
18
  initialPreviewEmailOpen?: boolean;
28
19
  /** Recent invoices for this customer (Figma: "Recent Invoices" table). */
29
20
  invoices?: InvoicingInvoice[];
21
+ isPaymentLinkEmailPreviewLoading?: boolean;
30
22
  /** True while an inline-edit save is in flight. */
31
23
  isSaving?: boolean;
32
24
  /** True while a magic-link payment-collection email is being sent. */
33
25
  isSendingPaymentLink?: boolean;
34
26
  /** CES draft for the inline edit — seeds the form and persists across nav. */
35
27
  localData?: InvoicingCustomerFormLocalData;
28
+ /** The tokenized email render the composer previews. */
29
+ paymentLinkEmailPreview?: InvoicingPaymentLinkEmailPreview;
36
30
  /**
37
31
  * Saved payment methods, newest first with exactly one marked default.
38
32
  * Normalized by the customer detail view selector.
@@ -49,13 +43,12 @@ export interface InvoicingCustomerDetailPageProps {
49
43
  /** Opens the Add Payment Method dialog (Stripe card / ACH). */
50
44
  onAddPaymentMethod?: () => void;
51
45
  onBack?: () => void;
52
- /** Called when inline edit is cancelled (e.g. to drop /edit from the URL). */
53
- onCancelEdit?: () => void;
54
46
  /** Persist the inline-edit draft to CES on every field change. */
55
47
  onChange?: (localData: InvoicingCustomerFormLocalData) => void;
56
48
  onCreateInvoice?: () => void;
57
49
  onCreatePromotionalCredits?: () => void;
58
- onEdit?: () => void;
50
+ /** Asked for when the composer opens, and again behind its Retry. */
51
+ onFetchPaymentLinkEmailPreview?: (cacheOverride?: boolean) => void;
59
52
  onInvoiceClick?: (invoiceId: string) => void;
60
53
  onNewSubscription?: () => void;
61
54
  /** Open the shared Address screen to add/edit the billing address. */
@@ -65,8 +58,13 @@ export interface InvoicingCustomerDetailPageProps {
65
58
  /** Persist inline-edit changes; receives the customer draft `localData`. */
66
59
  onSaveEdit?: (localData: InvoicingCustomerFormLocalData) => void;
67
60
  /** Email the customer a magic link to add their payment details. */
68
- onSendPaymentLink?: (email: string) => void;
61
+ onSendPaymentLink?: (email: string, subject?: string, body?: string) => void;
69
62
  onSubscriptionClick?: (subscriptionId: string) => void;
70
63
  }
71
- export declare function InvoicingCustomerDetailPage({ billingAddressLabel, fieldHelp, brandingAccentColor, brandingCompanyName, brandingEmail, brandingLogoUrl, customer, customerId, editErrorMessage, initialEditMode, initialPreviewEmailOpen, invoices, isLoading, isSaving, isSendingPaymentLink, localData, onAddPaymentMethod, onBack, onCancelEdit, onChange, onCreateInvoice, onEdit, 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;
72
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,20 +6,19 @@ 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
- /** Start the page in inline edit mode (e.g. when routed from /edit). */
12
- initialEditMode?: boolean;
13
10
  isRunningLifecycleAction?: boolean;
14
11
  /** True while an inline-edit save is in flight. */
15
12
  isSaving?: boolean;
16
13
  onBack?: () => void;
17
- /** Called when inline edit is cancelled (e.g. to drop /edit from the URL). */
18
- onCancelEdit?: () => void;
19
- onEdit?: () => void;
20
14
  onLifecycleAction?: (action: InvoicingDiscountLifecycleAction) => void;
21
15
  /** Persist inline-edit changes; receives the API-ready coupon payload. */
22
16
  onSaveEdit?: (data: Record<string, unknown>) => void;
23
17
  }
24
- export declare function InvoicingDiscountDetailPage({ coupon, fieldHelp, couponId, discountLifecycleActionOptions, editErrorMessage, initialEditMode, isLoading, isRunningLifecycleAction, isSaving, onBack, onCancelEdit, onEdit, 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;
25
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;
@@ -12,8 +12,6 @@ export interface InvoicingInvoiceDetailPageProps {
12
12
  /** Resolved from the shared address store by `invoice.billingAddressId`. */
13
13
  billingAddress?: Address;
14
14
  fieldHelp?: FieldHelpByCode;
15
- /** Start the page in inline edit mode (e.g. when routed from /edit). */
16
- initialEditMode?: boolean;
17
15
  invoice?: InvoicingInvoice;
18
16
  isSaving?: boolean;
19
17
  isVoiding?: boolean;
@@ -29,5 +27,10 @@ export interface InvoicingInvoiceDetailPageProps {
29
27
  onSubscriptionClick?: (subscriptionId: string) => void;
30
28
  onVoid?: (body: VoidInvoiceBody) => void;
31
29
  }
32
- export declare function InvoicingInvoiceDetailPage({ fieldHelp, billingAddress, initialEditMode, 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;
33
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;
@@ -20,6 +20,7 @@ export interface InvoicingIntegrationsSectionProps {
20
20
  onConfigureQBO?: () => void;
21
21
  onConnectStripe?: (credentials: StripeConnectCredentials) => void;
22
22
  onDisconnectStripe?: () => void;
23
+ onOpenPaymentDestination?: () => void;
23
24
  }
24
- export declare function InvoicingIntegrationsSection({ deleteConnectionError, deleteConnectionState, initialStripeDialogOpen, integrationsView, isAdmin, isStripeBusy, onConfigureQBO, onConnectStripe, onDisconnect, onDisconnectStripe, onReconnectQBO, onRefreshQBO, onSaveChargeBeeCredentials, saveChargeBeeError, saveChargeBeeState, settings, stripeError, stripeWebhookUrl, }: Readonly<InvoicingIntegrationsSectionProps>): import("react/jsx-runtime").JSX.Element;
25
+ export declare function InvoicingIntegrationsSection({ deleteConnectionError, deleteConnectionState, initialStripeDialogOpen, integrationsView, isAdmin, isStripeBusy, onConfigureQBO, onConnectStripe, onDisconnect, onDisconnectStripe, onOpenPaymentDestination, onReconnectQBO, onRefreshQBO, onSaveChargeBeeCredentials, saveChargeBeeError, saveChargeBeeState, settings, stripeError, stripeWebhookUrl, }: Readonly<InvoicingIntegrationsSectionProps>): import("react/jsx-runtime").JSX.Element;
25
26
  export default InvoicingIntegrationsSection;
@@ -14,14 +14,12 @@ export interface InvoicingSettingsHubPageProps {
14
14
  isQboConfigured?: boolean;
15
15
  /**
16
16
  * Stripe is connected *and* accepting charges; gates the footer's button.
17
- * Distinct from this page's `isStripeConnected`, which is the looser
18
- * "looks linked" check the integration card renders.
17
+ * Stricter than the "looks linked" check the integration card renders.
19
18
  */
20
19
  isStripePaymentsReady?: boolean;
21
20
  settings?: InvoicingSettings;
22
21
  onBrandingClick: () => void;
23
22
  onDunningClick: () => void;
24
- onPaymentDestinationClick: () => void;
25
23
  /**
26
24
  * Renders the persistent "Enable Invoicing" footer. Pass this whenever the
27
25
  * tenant has not enabled invoicing yet — the footer shows even when the
@@ -30,5 +28,5 @@ export interface InvoicingSettingsHubPageProps {
30
28
  */
31
29
  onEnableInvoicingClick?: () => void;
32
30
  }
33
- export declare function InvoicingSettingsHubPage({ analytics, integrationsSectionProps, isEnablingInvoicing, isLoading, meetingUrl, onBrandingClick, onDunningClick, canEnableInvoicing, isQboConfigured, isStripePaymentsReady, onEnableInvoicingClick, onPaymentDestinationClick, settings, }: Readonly<InvoicingSettingsHubPageProps>): import("react/jsx-runtime").JSX.Element;
31
+ export declare function InvoicingSettingsHubPage({ analytics, integrationsSectionProps, isEnablingInvoicing, isLoading, meetingUrl, onBrandingClick, onDunningClick, canEnableInvoicing, isQboConfigured, isStripePaymentsReady, onEnableInvoicingClick, settings, }: Readonly<InvoicingSettingsHubPageProps>): import("react/jsx-runtime").JSX.Element;
34
32
  export default InvoicingSettingsHubPage;
@@ -14,5 +14,6 @@ export interface BuildInvoicingIntegrationCardsParams {
14
14
  onRefreshQBO: () => void;
15
15
  onConfigureQBO?: () => void;
16
16
  onDisconnectStripe?: () => void;
17
+ onOpenPaymentDestination?: () => void;
17
18
  }
18
- export declare const buildInvoicingIntegrationCardSpecs: ({ integrationsView, isDarkTheme, isQBORefreshing, isStripeBusy, onConfigureQBO, onDisconnectChargebee, onDisconnectQBO, onDisconnectStripe, onOpenChargebeeDialog, onOpenStripeDialog, onReconnectQBO, onRefreshQBO, settings, }: BuildInvoicingIntegrationCardsParams) => IntegrationCardSpec[];
19
+ export declare const buildInvoicingIntegrationCardSpecs: ({ integrationsView, isDarkTheme, isQBORefreshing, isStripeBusy, onConfigureQBO, onDisconnectChargebee, onDisconnectQBO, onDisconnectStripe, onOpenChargebeeDialog, onOpenPaymentDestination, onOpenStripeDialog, onReconnectQBO, onRefreshQBO, settings, }: BuildInvoicingIntegrationCardsParams) => IntegrationCardSpec[];
@@ -18,10 +18,7 @@ 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
- /** Start the page in inline edit mode (e.g. when routed from /edit). */
24
- initialEditMode?: boolean;
25
22
  isRunningAction?: boolean;
26
23
  /** True while an inline-edit save is in flight. */
27
24
  isSaving?: boolean;
@@ -34,8 +31,6 @@ export interface InvoicingSubscriptionDetailPageProps {
34
31
  shippingAddressLabel?: string;
35
32
  subscription?: InvoicingSubscription;
36
33
  onBack?: () => void;
37
- /** Called when inline edit is cancelled (e.g. to drop /edit from the URL). */
38
- onCancelEdit?: () => void;
39
34
  /** Cancel is its own callback: the dialog collects a reason and a comment. */
40
35
  onCancelSubscription?: (values: InvoicingCancelSubscriptionValues) => void;
41
36
  /** Persist the inline-edit draft to CES on every field change. */
@@ -43,7 +38,6 @@ export interface InvoicingSubscriptionDetailPageProps {
43
38
  /** Called with the entered date once the change-term-end dialog is confirmed. */
44
39
  onChangeTermEnd?: (termEndsAt: string) => void;
45
40
  onCustomerClick?: (customerId: string) => void;
46
- onEdit?: () => void;
47
41
  /** `resumeDate` is only supplied for `pause`, collected by the pause dialog. */
48
42
  onLifecycleAction?: (action: InvoicingSubscriptionLifecycleAction, resumeDate?: string) => void;
49
43
  /** Open the shared Address screen to add/edit the shipping address. */
@@ -52,5 +46,10 @@ export interface InvoicingSubscriptionDetailPageProps {
52
46
  onSaveEdit?: (localData: InvoicingSubscriptionFormLocalData) => void;
53
47
  onViewInvoices?: () => void;
54
48
  }
55
- export declare function InvoicingSubscriptionDetailPage({ fieldHelp, addons: addonOptions, canEditCommercial, coupons: couponOptions, editErrorMessage, initialEditMode, isLoading, isRunningAction, isSaving, lifecycleActionOptions, localData, onBack, onCancelEdit, onChange, onCustomerClick, onEdit, 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;
56
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;
@@ -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
@@ -15,7 +15,7 @@ import { TransactionLineTableListEmptyRowProps, TransactionLineTableListRowProps
15
15
  * - `project` — dropdown (no recommendations today, slot reserved)
16
16
  * - `amount` — single right-aligned amount field (no Dr/Cr prefix)
17
17
  */
18
- export declare const TransactionLineTableListRow: ({ accountList: _accountList, accountsHierarchyList, classHierarchyList, classList: _classList, columns, entityId, isCOTEnabled, isCompressed, isDisabled, isAddedLine, isSplitEditMode, isTransactionCommentingEnabled, line, lineIndex, onCOTView, openTooltipId, projects, searchAutoComplete: _searchAutoComplete, sectionId, setOpenTooltipId, transactionId, canDelete: _canDelete, onLineDelete: _onLineDelete, splitValidationErrors, }: TransactionLineTableListRowProps) => import("react/jsx-runtime").JSX.Element;
18
+ export declare const TransactionLineTableListRow: ({ accountList: _accountList, accountsHierarchyList, classHierarchyList, classList: _classList, columns, entityId, feedbackTransactionInfo, isCOTEnabled, isCompressed, isDisabled, isAddedLine, isSplitEditMode, isTransactionCommentingEnabled, line, lineIndex, onCOTView, openTooltipId, projects, searchAutoComplete: _searchAutoComplete, sectionId, setOpenTooltipId, transactionId, canDelete: _canDelete, onLineDelete: _onLineDelete, splitValidationErrors, }: TransactionLineTableListRowProps) => import("react/jsx-runtime").JSX.Element;
19
19
  /**
20
20
  * Skeleton row consumed by `TransactionLinesEmptyTable`. Uses the same
21
21
  * `RowItemContainer` as the live row so column widths line up 1:1.
@@ -81,6 +81,15 @@ export interface TransactionLineTableListRowProps {
81
81
  * `isTransactionCommentingEnabled` to render the line's comment affordance.
82
82
  */
83
83
  entityId?: ID;
84
+ /**
85
+ * Transaction-level fields shown read-only in the recommendation-feedback
86
+ * popup. The row supplies category / class / amount from its own line.
87
+ */
88
+ feedbackTransactionInfo?: {
89
+ date?: string;
90
+ memo?: string;
91
+ vendor?: string;
92
+ };
84
93
  /** When true this row was added during the current split-edit session (not yet persisted). */
85
94
  isAddedLine?: boolean;
86
95
  isDisabled?: DisableMode;