@zeniai/web-components 4.3.40 → 4.3.41

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 (108) hide show
  1. package/dist/{SessionTimeoutPopup-BWBsmq2A.cjs → SessionTimeoutPopup-B6IhYc5j.cjs} +17448 -15784
  2. package/dist/{SessionTimeoutPopup-B-WVI7aL.js → SessionTimeoutPopup-TT3Z0Y7j.js} +102699 -96364
  3. package/dist/appLocale.d.ts +356 -13
  4. package/dist/assets/interface/avatars-without-pic.svg +12 -0
  5. package/dist/cockpit.cjs.js +2 -2
  6. package/dist/cockpit.esm.js +760 -759
  7. package/dist/components/address/addressHelper.d.ts +2 -2
  8. package/dist/components/common/Picker.d.ts +3 -1
  9. package/dist/components/common/allNavBars/statusSwitcher/switcherTypes.d.ts +1 -0
  10. package/dist/components/common/tooltipVariants/types.d.ts +11 -9
  11. package/dist/components/commonSetUp/approval/ApprovalRuleSection.d.ts +11 -2
  12. package/dist/components/commonSetUp/approval/ApprovalStageRow.d.ts +37 -12
  13. package/dist/components/commonSetUp/approval/ApprovalStagesSection.d.ts +8 -2
  14. package/dist/components/commonSetUp/approval/ConditionRow.d.ts +10 -1
  15. package/dist/components/commonSetUp/approval/FormSection.d.ts +19 -3
  16. package/dist/components/commonSetUp/approval/RuleOverlapBanner.d.ts +63 -17
  17. package/dist/components/commonSetUp/approval/RuleOverlapCard.d.ts +10 -1
  18. package/dist/components/commonSetUp/approval/detectDuplicateRule.d.ts +12 -0
  19. package/dist/components/commonSetUp/approval/formatFallbackRuleChain.d.ts +12 -0
  20. package/dist/components/expenseAutomation/ExpenseAutomationPage.d.ts +41 -6
  21. package/dist/components/expenseAutomation/components/NavBarWithHeader.d.ts +21 -5
  22. package/dist/components/expenseAutomation/components/navbarHeaderData.d.ts +3 -4
  23. package/dist/components/expenseAutomation/sections/accountRecon/AccountReconDetailsDrawerPageV2.d.ts +3 -1
  24. package/dist/components/expenseAutomation/sections/accountRecon/CombinedStatementAccountMappingSection.d.ts +2 -2
  25. package/dist/components/expenseAutomation/sections/accountRecon/StatementProcessingPage.d.ts +0 -1
  26. package/dist/components/expenseAutomation/sections/accountRecon/statementProcessingHelpers.d.ts +2 -0
  27. package/dist/components/expenseAutomation/sections/jeSchedules/JESchedulePage.d.ts +30 -5
  28. package/dist/components/expenseAutomation/sections/jeSchedules/JESchedulePageSkeleton.d.ts +5 -0
  29. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualBillingPatternCard.d.ts +14 -0
  30. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualCalculationBreakdownCard.d.ts +26 -0
  31. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualDetailsSection.d.ts +31 -0
  32. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualFeedbackDialog.d.ts +27 -0
  33. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualFeedbackDialog.test.d.ts +1 -0
  34. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualHeader.d.ts +16 -0
  35. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualSequenceSection.d.ts +22 -0
  36. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEOneTimeAccrualDetailPage.d.ts +28 -0
  37. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/accrualActions.d.ts +24 -0
  38. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/accrualFieldHelpers.d.ts +18 -0
  39. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/accrualFieldHelpers.test.d.ts +1 -0
  40. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEBaseTransactionSearch.d.ts +23 -0
  41. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEBaseTransactionSearch.test.d.ts +1 -0
  42. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEExistingKpiStrip.d.ts +7 -0
  43. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEGroupSectionHeader.d.ts +8 -0
  44. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEJournalEntryPreview.d.ts +28 -0
  45. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEKpiStrip.d.ts +8 -0
  46. package/dist/components/expenseAutomation/sections/jeSchedules/{JEScheduleAccountSettings.d.ts → common/JEScheduleAccountSettings.d.ts} +2 -2
  47. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleCreatedBy.d.ts +21 -0
  48. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleCreatedBy.test.d.ts +1 -0
  49. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleLifecycle.d.ts +19 -0
  50. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleLifecycle.test.d.ts +1 -0
  51. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleNewEntryButton.d.ts +14 -0
  52. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleNewEntryButton.test.d.ts +1 -0
  53. package/dist/components/expenseAutomation/sections/jeSchedules/common/JESchedulePreview.d.ts +18 -0
  54. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleRadioCardGroup.d.ts +27 -0
  55. package/dist/components/expenseAutomation/sections/jeSchedules/{JEScheduleResolveComponent.d.ts → common/JEScheduleResolveComponent.d.ts} +3 -3
  56. package/dist/components/expenseAutomation/sections/jeSchedules/{JEScheduleResolveListRow.d.ts → common/JEScheduleResolveListRow.d.ts} +4 -11
  57. package/dist/components/expenseAutomation/sections/jeSchedules/common/JETypeFilterBar.d.ts +8 -0
  58. package/dist/components/expenseAutomation/sections/jeSchedules/common/jeScheduleKpiHelpers.d.ts +14 -0
  59. package/dist/components/expenseAutomation/sections/jeSchedules/common/newScheduleCopy.test.d.ts +1 -0
  60. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEOneTimeAccrualCell.d.ts +12 -0
  61. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleDownloadRangeDialog.d.ts +18 -0
  62. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleDownloadRangeDialog.test.d.ts +1 -0
  63. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleDraftListRow.d.ts +16 -0
  64. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleGroupList.d.ts +53 -0
  65. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleListWrapperRow.d.ts +39 -0
  66. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleListWrapperRow.test.d.ts +1 -0
  67. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleReadOnlyListRow.d.ts +15 -0
  68. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleReadOnlyListRow.test.d.ts +1 -0
  69. package/dist/components/expenseAutomation/sections/jeSchedules/{jeSchedule.helpers.d.ts → list/jeSchedule.helpers.d.ts} +1 -1
  70. package/dist/components/expenseAutomation/sections/jeSchedules/list/jeScheduleConfig.d.ts +46 -0
  71. package/dist/components/expenseAutomation/sections/jeSchedules/list/jeScheduleListItems.d.ts +56 -0
  72. package/dist/components/expenseAutomation/sections/jeSchedules/list/jeScheduleListRow.helpers.d.ts +29 -0
  73. package/dist/components/expenseAutomation/sections/jeSchedules/list/jeScheduleListRow.helpers.test.d.ts +1 -0
  74. package/dist/components/expenseAutomation/sections/jeSchedules/sections/JEExistingSection.d.ts +22 -0
  75. package/dist/components/expenseAutomation/sections/jeSchedules/sections/JESchedulesSection.d.ts +27 -0
  76. package/dist/components/expenseAutomation/sections/jeSchedules/sections/JESummarySection.d.ts +7 -0
  77. package/dist/components/expenseAutomation/sections/jeSchedules/sections/NewJEScheduleSection.d.ts +59 -0
  78. package/dist/components/expenseAutomation/sections/jeSchedules/sections/NewScheduleDocumentAutofillPanel.d.ts +11 -0
  79. package/dist/components/formElements/formattedTextField/FormattedTextField.d.ts +3 -1
  80. package/dist/components/formElements/multiSelectField/MultiSelectField.d.ts +13 -1
  81. package/dist/components/formElements/textField/TextField.d.ts +3 -1
  82. package/dist/components/jeSchedules/downloadJESchedules/types/downloadJESchedulesOptionsPayload.d.ts +3 -1
  83. package/dist/components/jeSchedules/scheduleDetails/table/ScheduleAccruedSequenceTable.d.ts +2 -1
  84. package/dist/components/jeSchedules/scheduleDetails/table/items/ScheduleAccruedSequenceTableRow.d.ts +6 -1
  85. package/dist/components/singleSelect/SingleSelect.d.ts +12 -1
  86. package/dist/components/singleSelect/SingleSelectField.d.ts +13 -1
  87. package/dist/components/spendManagement/billPay/billPaySetUp/BillPayApprovalRuleDetailPage.d.ts +1 -0
  88. package/dist/components/spendManagement/billPay/billPaySetUp/components/formElements/UserMultiSelect.d.ts +17 -2
  89. package/dist/components/spendManagement/billPay/billPaySetUp/components/formElements/UserMultiSelectField.d.ts +6 -2
  90. package/dist/components/spendManagement/reimbursement/AllReimbursementLineItems.d.ts +1 -1
  91. package/dist/components/spendManagement/reimbursement/reimbursementSetUp/ReimbursementApprovalRuleDetailPage.d.ts +1 -0
  92. package/dist/context/featureProvider/FeatureGateNameConstants.d.ts +8 -3
  93. package/dist/index.cjs.js +1 -1
  94. package/dist/index.d.ts +6 -2
  95. package/dist/index.esm.js +267 -266
  96. package/dist/strings/strings.d.ts +356 -13
  97. package/package.json +5 -5
  98. package/dist/components/expenseAutomation/sections/jeSchedules/JEScheduleDraftListRow.d.ts +0 -19
  99. package/dist/components/expenseAutomation/sections/jeSchedules/JEScheduleListWrapperRow.d.ts +0 -31
  100. package/dist/components/expenseAutomation/sections/jeSchedules/JEScheduleReadOnlyListRow.d.ts +0 -13
  101. package/dist/components/expenseAutomation/sections/jeSchedules/JEScheduleRecommendationIcon.d.ts +0 -13
  102. package/dist/components/expenseAutomation/sections/jeSchedules/JESchedulesList.d.ts +0 -24
  103. package/dist/components/expenseAutomation/sections/jeSchedules/jeScheduleConfig.d.ts +0 -28
  104. package/dist/components/expenseAutomation/sections/jeSchedules/jeScheduleListRow.helpers.d.ts +0 -17
  105. /package/dist/components/expenseAutomation/sections/jeSchedules/{jeScheduleListRow.helpers.test.d.ts → accrualDetail/JEAccrualDetailsSection.test.d.ts} +0 -0
  106. /package/dist/components/expenseAutomation/sections/jeSchedules/{JEScheduleDraftComponent.d.ts → common/JEScheduleDraftComponent.d.ts} +0 -0
  107. /package/dist/components/expenseAutomation/sections/jeSchedules/{JESchedulesListEmptyTable.d.ts → common/JESchedulesListEmptyTable.d.ts} +0 -0
  108. /package/dist/components/expenseAutomation/sections/jeSchedules/{common.d.ts → common/common.d.ts} +0 -0
@@ -1,9 +1,8 @@
1
1
  import { ReactNode } from 'react';
2
- import { CompletionStatusType, ExpenseAutomationReconciliationViewTab, ExpenseAutomationTransactionsTab, ExpenseAutomationViewType, FetchState, ID, MissingReceiptsTab, TransactionFilterEntityType, TransactionFilters, ZeniDate } from '@zeniai/client-epic-state';
2
+ import { CompletionStatusType, ExpenseAutomationReconciliationViewTab, ExpenseAutomationTransactionsTab, ExpenseAutomationViewType, FetchState, ID, MissingReceiptsTab, TransactionFilterEntityType, TransactionFilters, ZeniDate, JEPageTab } from '@zeniai/client-epic-state';
3
3
  import { TabSwitcherOption } from '../../common/allNavBars/statusSwitcher/switcherTypes';
4
4
  import { AutoCompleteActions, AutoCompleteData } from '../../common/autoComplete/autoCompleteProps';
5
5
  import { ValuesDropdownOption } from '../../common/filters/genericFilterTypes';
6
- import { JEScheduleMainTab } from '../sections/jeSchedules/jeScheduleConfig';
7
6
  import { ExpenseAutomationNavbarHeaderData } from './navbarHeaderData';
8
7
  interface NavBarWithHeaderProps {
9
8
  companyId: ID;
@@ -21,10 +20,12 @@ interface NavBarWithHeaderProps {
21
20
  /** Raw progress (0–100) for color bands; falls back to `completionPercentage` when omitted. */
22
21
  completionProgressRaw?: number;
23
22
  createdByUserListLoaded?: boolean;
24
- currentJeTab?: JEScheduleMainTab;
23
+ currentJeTab?: JEPageTab;
25
24
  currentMissingReceiptsTab?: MissingReceiptsTab;
26
25
  currentRecontab?: ExpenseAutomationReconciliationViewTab;
27
26
  currentTab?: ExpenseAutomationTransactionsTab;
27
+ /** Optional download button rendered in the right-side navbar area. */
28
+ downloadButton?: ReactNode;
28
29
  filterComponent?: React.ComponentType<{
29
30
  entity: TransactionFilterEntityType;
30
31
  filters: TransactionFilters;
@@ -38,19 +39,34 @@ interface NavBarWithHeaderProps {
38
39
  /** Memoized dropdown options keyed by category field. Update this when source data populates so dropdowns refresh. */
39
40
  filterOptions?: Record<string, ValuesDropdownOption[]>;
40
41
  filters?: TransactionFilters;
42
+ /**
43
+ * When present, replaces the normal title/back-icon and right-side icon
44
+ * row with a custom title+subtitle and a single close (X) icon, and
45
+ * suppresses the tab switcher and the download/Ask AI CFO buttons — for
46
+ * full-page sub-views within a tab (e.g. JE Schedule creation) that need a
47
+ * reduced header dismissed via close rather than back. Mirrors and
48
+ * extends the existing `hideTabSwitcher` signaling pattern.
49
+ */
50
+ headerOverride?: {
51
+ title: string;
52
+ subtitle?: string;
53
+ onClose: () => void;
54
+ };
41
55
  hideTabSwitcher?: boolean;
42
56
  isAiCfoAccessEnabled?: boolean;
43
57
  isCompletionLoading?: boolean;
44
58
  isReconV3Enabled?: boolean;
45
59
  lastRefreshTime?: ZeniDate;
46
60
  navBarCustomElement?: JSX.Element;
61
+ /** Optional "New" button (e.g. New JE Schedule) rendered in the right-side navbar area. */
62
+ newScheduleButton?: ReactNode;
47
63
  reconcileDetailPageFetchState?: FetchState;
48
64
  selectedGenericTab?: ID;
49
65
  selectedReconAccountId?: ID;
50
66
  titleStyle?: React.CSSProperties;
51
67
  vendorSearchAutoCompleteActions?: AutoCompleteActions;
52
68
  vendorSearchAutoCompleteData?: AutoCompleteData;
53
- getTabCountAndFetchState: (currentTab: ExpenseAutomationTransactionsTab | ExpenseAutomationReconciliationViewTab | MissingReceiptsTab | JEScheduleMainTab) => {
69
+ getTabCountAndFetchState: (currentTab: ExpenseAutomationTransactionsTab | ExpenseAutomationReconciliationViewTab | MissingReceiptsTab | JEPageTab) => {
54
70
  count: number;
55
71
  isFetching: boolean;
56
72
  hideCountInTab?: boolean;
@@ -66,7 +82,7 @@ interface NavBarWithHeaderProps {
66
82
  onCommentDrawerClick?: () => void;
67
83
  onFiltersChange?: (filters: TransactionFilters) => void;
68
84
  onGenericTabChange?: (tab: TabSwitcherOption) => void;
69
- onJeTabUpdate?: (tab: JEScheduleMainTab) => void;
85
+ onJeTabUpdate?: (tab: JEPageTab) => void;
70
86
  onMissingReceiptsTabUpdate?: (tab: MissingReceiptsTab) => void;
71
87
  }
72
88
  export default function NavBarWithHeader(props: Readonly<NavBarWithHeaderProps>): import("react/jsx-runtime").JSX.Element;
@@ -1,9 +1,8 @@
1
- import { ExpenseAutomationReconciliationViewTab, ExpenseAutomationTransactionsTab, ExpenseAutomationViewType, ID, MissingReceiptsTab } from '@zeniai/client-epic-state';
2
- import { JEScheduleMainTab } from '../sections/jeSchedules/jeScheduleConfig';
1
+ import { ExpenseAutomationReconciliationViewTab, ExpenseAutomationTransactionsTab, ExpenseAutomationViewType, ID, MissingReceiptsTab, JEPageTab } from '@zeniai/client-epic-state';
3
2
  declare const toRightOptionType: (v: string) => "search" | "close" | "filter" | "comment" | "refresh" | "commentDrawer" | "askAiCfo";
4
3
  type RightSection = ReturnType<typeof toRightOptionType>;
5
4
  declare const toLeftOptionType: (v: string) => "back";
6
- type LeftSection = ReturnType<typeof toLeftOptionType>;
5
+ export type LeftSection = ReturnType<typeof toLeftOptionType>;
7
6
  export interface SubTitle {
8
7
  bold: string;
9
8
  post: string;
@@ -13,7 +12,7 @@ export interface SubTitle {
13
12
  preLink?: string;
14
13
  }
15
14
  interface ExpenseAutomationTabData {
16
- id: ExpenseAutomationTransactionsTab | ExpenseAutomationReconciliationViewTab | MissingReceiptsTab | JEScheduleMainTab;
15
+ id: ExpenseAutomationTransactionsTab | ExpenseAutomationReconciliationViewTab | MissingReceiptsTab | JEPageTab;
17
16
  label: string;
18
17
  subTitle: SubTitle[];
19
18
  allDoneText?: {
@@ -36,6 +36,8 @@ export interface Props {
36
36
  onEstablishConnectionClick: (publicToken: ID, accountId: ID, linkTokenType?: PlaidLinkTokenType) => void;
37
37
  onExcludeFromReconciliation: () => void;
38
38
  onFetchLinkTokenClick: (plaidLinkTokenType: PlaidLinkTokenType, paymentAccountId?: ID) => void;
39
+ /** Fetch parse-info payload (same as Pusher path) before opening StatementParseInfo. */
40
+ onFetchStatementParseInfo: (accountId: ID, selectedPeriod: MonthYearPeriod, statementUploadId: ID, combinedStatementGroupId?: string, fileId?: ID) => void;
39
41
  onSelectSourceType: (sourceType: ReconciliationAccountSourceType) => void;
40
42
  onSelectStatementAccountScope: (statementAccountScope: StatementAccountScope) => void;
41
43
  onStatementUploadSuccess: (statementUploadPayload: UploadStatementDocumentAIPayload) => void;
@@ -56,4 +58,4 @@ export interface Props {
56
58
  onStatementFormDataChange?: (updateData: StatementUpdateLocalData, statementUploadId: string) => void;
57
59
  onStatementProcessingProgressChange?: (backgroundCompletedSteps: number) => void;
58
60
  }
59
- export default function AccountReconDetailsDrawerPage({ accountReconciliation, plaidConnectionDetails, monthYearPeriod, openFilePicker, filesEndPoint, authParams, excludeAccountFetch, onDismissClick, onFetchLinkTokenClick, onEstablishConnectionClick, onExcludeFromReconciliation, onSelectSourceType, onSelectStatementAccountScope, onDeleteFile, onEditFileName, onStatementUploadSuccess, onUploadWindowOpenedOnce, onFileUploadStarted, onRetryParsing, onReviewClicked, onDismissStatementProcessingFailed, onContinueInBackground, onClearStatementProcessingDismissedToBackground, onResetStatementProcessingProgress, onStatementProcessingProgressChange, onStatementFlowVisibilityChange, onReuploadStatement, onStatementConfirmSave, onStatementFormDataChange, onDismissDateConflict, onReuploadAfterDateConflict, reconciledByName, statementOverrideWarningAccountIds, statementProcessingDismissedToBackground, statementProcessingFailed, isReconV3Enabled, isReconciliationCombinedStatementEnabled, ledgerAccounts, unavailableLedgerAccountIds, onConfirmStatementMapping, }: Readonly<Props>): import("react/jsx-runtime").JSX.Element;
61
+ export default function AccountReconDetailsDrawerPage({ accountReconciliation, plaidConnectionDetails, monthYearPeriod, openFilePicker, filesEndPoint, authParams, excludeAccountFetch, onDismissClick, onFetchLinkTokenClick, onEstablishConnectionClick, onExcludeFromReconciliation, onSelectSourceType, onSelectStatementAccountScope, onDeleteFile, onEditFileName, onStatementUploadSuccess, onUploadWindowOpenedOnce, onFetchStatementParseInfo, onFileUploadStarted, onRetryParsing, onReviewClicked, onDismissStatementProcessingFailed, onContinueInBackground, onClearStatementProcessingDismissedToBackground, onResetStatementProcessingProgress, onStatementProcessingProgressChange, onStatementFlowVisibilityChange, onReuploadStatement, onStatementConfirmSave, onStatementFormDataChange, onDismissDateConflict, onReuploadAfterDateConflict, reconciledByName, statementOverrideWarningAccountIds, statementProcessingDismissedToBackground, statementProcessingFailed, isReconV3Enabled, isReconciliationCombinedStatementEnabled, ledgerAccounts, unavailableLedgerAccountIds, onConfirmStatementMapping, }: Readonly<Props>): import("react/jsx-runtime").JSX.Element;
@@ -6,7 +6,7 @@ export interface CombinedStatementAccountMapping {
6
6
  }
7
7
  export interface CombinedStatementAccountMappingSectionProps {
8
8
  accounts: CombinedStatementAccount[];
9
- anchorAccountName: string;
9
+ fileName: string;
10
10
  ledgerAccounts: AccountBase[];
11
11
  accountType?: string;
12
12
  /** Previously saved draft mappings (e.g. after Continue in Background). */
@@ -17,6 +17,6 @@ export interface CombinedStatementAccountMappingSectionProps {
17
17
  unavailableLedgerAccountIds?: ID[];
18
18
  onMappingsChange: (mappings: CombinedStatementAccountMapping[], canConfirm: boolean) => void;
19
19
  }
20
- declare function CombinedStatementAccountMappingSection({ accounts, anchorAccountName, ledgerAccounts, accountType, initialMappings, statementOverrideWarningAccountIds, unavailableLedgerAccountIds, onMappingsChange, }: Readonly<CombinedStatementAccountMappingSectionProps>): import("react/jsx-runtime").JSX.Element | null;
20
+ declare function CombinedStatementAccountMappingSection({ accounts, fileName, ledgerAccounts, accountType, initialMappings, statementOverrideWarningAccountIds, unavailableLedgerAccountIds, onMappingsChange, }: Readonly<CombinedStatementAccountMappingSectionProps>): import("react/jsx-runtime").JSX.Element | null;
21
21
  declare const _default: import('react').MemoExoticComponent<typeof CombinedStatementAccountMappingSection>;
22
22
  export default _default;
@@ -3,7 +3,6 @@ import { CombinedStatementAccountMapping } from './CombinedStatementAccountMappi
3
3
  import { StatementProcessingBackgroundSnapshot, StatementProcessingFileRef } from './statementProcessingHelpers';
4
4
  export interface StatementProcessingAccountMappingProps {
5
5
  accounts: CombinedStatementAccount[];
6
- anchorAccountName: string;
7
6
  isConfirmLoading: boolean;
8
7
  ledgerAccounts: AccountBase[];
9
8
  accountType?: string;
@@ -5,6 +5,7 @@ export type StatementProcessingFileRef = {
5
5
  signedUrl: string;
6
6
  contentType?: string;
7
7
  extension?: string;
8
+ fileName?: string;
8
9
  };
9
10
  /** Steps 2…N share the countdown; step 1 is upload-bound. */
10
11
  export declare function getStatementProcessingTimedStepCount(totalSteps: number): number;
@@ -65,4 +66,5 @@ export declare function computeStatementProcessingStepsFromElapsedTime({ started
65
66
  }): number;
66
67
  export declare function resolveBackgroundStatementProcessingCompletedSteps(accountReconciliation: AccountReconciliationByAccount, totalSteps: number, activeStatementUploadId?: string): number;
67
68
  export declare function getInitialStatementProcessingUiState(accountReconciliation: AccountReconciliationByAccount, statementProcessingDismissedToBackground: boolean | undefined, totalSteps: number, activeStatementUploadId?: string): StatementProcessingUiState;
69
+ export declare function isProcessedAwaitingStatementConfirm(accountReconciliation: AccountReconciliationByAccount): boolean;
68
70
  export declare function shouldShowContinueParsingFooter(accountReconciliation: AccountReconciliationByAccount, isStatementFlowActive: boolean): boolean;
@@ -1,15 +1,40 @@
1
- import { ExpenseAutomationViewSelector } from '@zeniai/client-epic-state';
1
+ import { ExpenseAutomationViewSelector, FetchStateAndError, NestedAccountHierarchyForReport, NestedClassHierarchyForReport, NewAccrualAccountsView, NewOneTimeAccrualLocalData, ScheduleDetailsLocalDataAccruedExpenses, ScheduleTransaction, TransactionID } from '@zeniai/client-epic-state';
2
2
  import { FooterFormIdType } from '../../common';
3
- import { FormData as JEScheduleAccountSettingsFormData } from './JEScheduleAccountSettings';
4
- import { Props as JEScheduleListProps } from './JESchedulesList';
5
- export interface JESchedulePageProps extends Omit<JEScheduleListProps, "jeSchedules" | "isAccountingClassesEnabled"> {
3
+ import { FormData as JEScheduleAccountSettingsFormData } from './common/JEScheduleAccountSettings';
4
+ import { JESchedulesSectionProps } from './sections/JESchedulesSection';
5
+ import { NewScheduleSaveFormValues } from './sections/NewJEScheduleSection';
6
+ export interface JESchedulePageProps extends Omit<JESchedulesSectionProps, "jeSchedules" | "isAccountingClassesEnabled"> {
7
+ accountListNestedAccountHierarchy: NestedAccountHierarchyForReport[];
8
+ baseTransactionSearchFetchState: FetchStateAndError;
9
+ baseTransactionSearchResults: ScheduleTransaction[];
10
+ classListNestedAccountHierarchy: NestedClassHierarchyForReport[];
6
11
  currentFooterFormId: FooterFormIdType;
7
12
  expenseAutomationViewSelector: ExpenseAutomationViewSelector;
8
13
  isAccountingClassesEnabled: boolean;
14
+ isCreatingNewSchedule: boolean;
15
+ newScheduleSaveStatus: FetchStateAndError;
16
+ allDepreciationAccountListNestedAccountHierarchy?: NestedAccountHierarchyForReport[];
17
+ initialScheduleDetailsMode?: string;
18
+ initialScheduleType?: string;
19
+ /** The base transaction that draft names, resolved by the host. */
20
+ initialSelectedBaseTransaction?: ScheduleTransaction;
21
+ /** The draft this form was last left with, for a host that stores it. */
22
+ /** Cron-2's live gate for this company. Off hides one-time accrual creation. */
23
+ isAccrualEnabled?: boolean;
24
+ newAccrualAccountsView?: NewAccrualAccountsView;
25
+ newScheduleLocalData?: NewScheduleSaveFormValues;
26
+ onCreateAccruedSchedule: (localData: Partial<ScheduleDetailsLocalDataAccruedExpenses>) => void;
27
+ onCreateOneTimeAccrual: (formValues: NewOneTimeAccrualLocalData) => void;
9
28
  onJeAccountSettingsChange: (formData: JEScheduleAccountSettingsFormData) => void;
10
29
  onSaveJeAccountSettingsClick: (formData: JEScheduleAccountSettingsFormData) => void;
30
+ onSaveSchedule: (scheduleType: string, formValues: NewScheduleSaveFormValues) => void;
31
+ onScheduleTypeChange: (scheduleType: string, scheduleDetailsMode: string, shouldResetEnteredData: boolean) => void;
32
+ onSearchBaseTransaction: (query: string) => void;
33
+ onViewTransaction: (transactionID: TransactionID) => void;
34
+ setIsCreatingNewSchedule: (isCreating: boolean) => void;
11
35
  setIsJeAccountSettingsOpened: (isOpened: boolean) => void;
12
36
  setResetJeAccountSettingsForm: (resetFn: () => void) => void;
37
+ onNewScheduleFormChange?: (scheduleType: string, formValues: NewScheduleSaveFormValues) => void;
13
38
  }
14
- declare function JESchedulePage({ expenseAutomationViewSelector, currentFooterFormId, isAccountingClassesEnabled, isJEScheduleCOTEnabled, selectedMainTab, setResetJeAccountSettingsForm, vendorSearchAutoCompleteData, onJESchedulesFormDataChange, onPostJESchedule, handleJeScheduleClick, onJeAccountSettingsChange, onSaveJeAccountSettingsClick, ignoreRecommendedJeSchedule, vendorSearchAutoCompleteActions, setCurrentFooterFormId, setIsJeAccountSettingsOpened, onUpdateJESchedulesUIState, }: Readonly<JESchedulePageProps>): import("react/jsx-runtime").JSX.Element | null;
39
+ declare function JESchedulePage({ accountListNestedAccountHierarchy, baseTransactionSearchFetchState, baseTransactionSearchResults, classListNestedAccountHierarchy, expenseAutomationViewSelector, currentFooterFormId, isAccountingClassesEnabled, isCreatingNewSchedule, newScheduleSaveStatus, allDepreciationAccountListNestedAccountHierarchy, initialScheduleDetailsMode, initialScheduleType, newAccrualAccountsView, onCreateAccruedSchedule, onCreateOneTimeAccrual, setResetJeAccountSettingsForm, vendorSearchAutoCompleteData, onJESchedulesFormDataChange, onPostJESchedule, handleJeScheduleClick, onOneTimeAccrualClick, onOneTimeAccrualFeedback, onJeAccountSettingsChange, onSaveJeAccountSettingsClick, onSaveSchedule, onScheduleTypeChange, onSearchBaseTransaction, onViewTransaction, newScheduleLocalData, initialSelectedBaseTransaction, isAccrualEnabled, onNewScheduleFormChange, ignoreRecommendedJeSchedule, vendorSearchAutoCompleteActions, setCurrentFooterFormId, setIsCreatingNewSchedule, setIsJeAccountSettingsOpened, onRevertJeSchedule, onToggleCreatedGroupCollapsed, onTogglePendingGroupCollapsed, onUpdateJEScheduleTypeFilter, onUpdateJESchedulesUIState, }: Readonly<JESchedulePageProps>): import("react/jsx-runtime").JSX.Element;
15
40
  export default JESchedulePage;
@@ -0,0 +1,5 @@
1
+ export interface JESchedulePageSkeletonProps {
2
+ isAccountingClassesEnabled: boolean;
3
+ }
4
+ export declare function JESchedulesTabSkeleton({ isAccountingClassesEnabled, }: Readonly<JESchedulePageSkeletonProps>): import("react/jsx-runtime").JSX.Element;
5
+ export declare function JEExistingSchedulesTabSkeleton({ isAccountingClassesEnabled, }: Readonly<JESchedulePageSkeletonProps>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { JEOneTimeAccrualProfileSnapshot } from '@zeniai/client-epic-state';
2
+ export interface JEAccrualBillingPatternCardProps {
3
+ profileSnapshot: JEOneTimeAccrualProfileSnapshot;
4
+ /** `YYYY-MM`; the bar for this month is emphasised when the vendor has billed in it. */
5
+ serviceMonth: string;
6
+ }
7
+ /**
8
+ * The vendor's billing history the estimate was drawn from.
9
+ *
10
+ * Only agent-created accruals carry a profile snapshot, so the caller decides whether to render
11
+ * this at all — a human-created accrual has no history to show.
12
+ */
13
+ declare const JEAccrualBillingPatternCard: ({ profileSnapshot, serviceMonth, }: Readonly<JEAccrualBillingPatternCardProps>) => import("react/jsx-runtime").JSX.Element;
14
+ export default JEAccrualBillingPatternCard;
@@ -0,0 +1,26 @@
1
+ export interface JEAccrualCalculationBreakdownRow {
2
+ /** Already formatted for display, e.g. "$41,000". */
3
+ invoiceAmount: string;
4
+ /** Already formatted for display, e.g. "Jan '26". */
5
+ month: string;
6
+ /** Already formatted, e.g. "20%". Omitted until the estimator records its weights. */
7
+ weight?: string;
8
+ weightedValue?: string;
9
+ }
10
+ export interface JEAccrualCalculationBreakdownCardProps {
11
+ rows: readonly JEAccrualCalculationBreakdownRow[];
12
+ /** e.g. "P50 median (6 mo)". Absent until the estimator is recorded on the accrual. */
13
+ methodLabel?: string;
14
+ recommendedAccrual?: string;
15
+ }
16
+ /**
17
+ * The months the estimate was drawn from, and what it recommends.
18
+ *
19
+ * The weight and weighted-value columns render only when the rows carry them. Nothing stores them
20
+ * today — the estimator's method and per-month weights are specified in the accruals v0 plan as
21
+ * `agent_evidence` but are not emitted by the agent, the gateway, or the profile snapshot — so the
22
+ * card currently shows the source months, their invoiced totals and the recommendation. It fills
23
+ * out on its own once those fields exist.
24
+ */
25
+ declare const JEAccrualCalculationBreakdownCard: ({ rows, methodLabel, recommendedAccrual, }: Readonly<JEAccrualCalculationBreakdownCardProps>) => import("react/jsx-runtime").JSX.Element;
26
+ export default JEAccrualCalculationBreakdownCard;
@@ -0,0 +1,31 @@
1
+ import { AccountBase, JEOneTimeAccrual, NestedAccountHierarchyForReport, NestedClassHierarchyForReport } from '@zeniai/client-epic-state';
2
+ /**
3
+ * The two reversal policies, as the API names them. Values are the stored policy strings so the
4
+ * field round-trips without translation; the page maps the choice to reverse_next_month on submit.
5
+ */
6
+ export declare const REVERSAL_SCHEDULED_DATE = "scheduled_date";
7
+ export declare const REVERSAL_ON_BILL_MATCH = "on_bill_match";
8
+ export interface JEAccrualDetailsSectionProps {
9
+ accrual: JEOneTimeAccrual;
10
+ isAccountingClassesEnabled: boolean;
11
+ /** Expense (debit) accounts, with accrued liabilities excluded. */
12
+ accountHierarchy?: NestedAccountHierarchyForReport[];
13
+ allAccountList?: AccountBase[];
14
+ /** Accrued liability accounts. The credit account lives here, not in allAccountList. */
15
+ allAccruedExpenseList?: AccountBase[];
16
+ classHierarchy?: NestedClassHierarchyForReport[];
17
+ /** Accrued liability (credit) accounts. */
18
+ liabilityHierarchy?: NestedAccountHierarchyForReport[];
19
+ }
20
+ /**
21
+ * The stored accrual, rendered with the same field components the schedule detail pages use.
22
+ *
23
+ * A draft is editable: promote is the only write path for one, and it applies the body and posts in
24
+ * a single step, so the values here are what gets posted. Everything else is a read-only record of
25
+ * something already posted.
26
+ *
27
+ * Posting Date and Estimated By never edit. Posting date is derived server-side from the accrual's
28
+ * service month and any value sent for it is ignored; Estimated By records who made the estimate.
29
+ */
30
+ declare const JEAccrualDetailsSection: ({ accrual, accountHierarchy, allAccountList, allAccruedExpenseList, classHierarchy, isAccountingClassesEnabled, liabilityHierarchy, }: Readonly<JEAccrualDetailsSectionProps>) => import("react/jsx-runtime").JSX.Element;
31
+ export default JEAccrualDetailsSection;
@@ -0,0 +1,27 @@
1
+ import { JEScheduleIgnoreReasonType, JEScheduleRevertReasonType, OneTimeAccrualIgnoreReasonType, OneTimeAccrualRevertReasonType } from '@zeniai/client-epic-state';
2
+ export type JEAccrualFeedbackMode = "skip" | "revert" | "ignoreSchedule" | "revertSchedule";
3
+ export type JEAccrualFeedbackReason = JEScheduleIgnoreReasonType | JEScheduleRevertReasonType | OneTimeAccrualIgnoreReasonType | OneTimeAccrualRevertReasonType;
4
+ export interface JEAccrualFeedbackDialogProps {
5
+ /** Already formatted — interpolated into the subtitle. */
6
+ amount: string;
7
+ isOpen: boolean;
8
+ isSubmitting: boolean;
9
+ vendorName: string;
10
+ /**
11
+ * "skip" dismisses a draft accrual, "revert" undoes a posted accrual, "ignoreSchedule"
12
+ * dismisses a recommended prepaid / fixed-asset schedule. All three reason sets are disjoint and
13
+ * each endpoint rejects the others' values, so the mode picks the list.
14
+ */
15
+ mode?: JEAccrualFeedbackMode;
16
+ onClose: () => void;
17
+ onSubmit: (reason: JEAccrualFeedbackReason, note?: string) => void;
18
+ }
19
+ /**
20
+ * Asks why an accrual is being skipped, so the reason reaches the AI Accountant as training signal
21
+ * rather than a bare ignore.
22
+ *
23
+ * The mock's "Apply to" selector is deliberately absent: it maps to the API's `scope` field, which
24
+ * the ignore endpoint rejects with a 400.
25
+ */
26
+ declare const JEAccrualFeedbackDialog: ({ amount, isOpen, isSubmitting, vendorName, onClose, onSubmit, mode, }: Readonly<JEAccrualFeedbackDialogProps>) => import("react/jsx-runtime").JSX.Element;
27
+ export default JEAccrualFeedbackDialog;
@@ -0,0 +1,16 @@
1
+ import { JEOneTimeAccrual } from '@zeniai/client-epic-state';
2
+ export interface JEAccrualHeaderProps {
3
+ accrual: JEOneTimeAccrual;
4
+ /** Registered as `amount` on the surrounding form when open. */
5
+ isEditingAmount: boolean;
6
+ onEditAmount: () => void;
7
+ }
8
+ /**
9
+ * The accrual's identity, amount and summary rows.
10
+ *
11
+ * Mirrors ScheduleAccruedHeader — same container, title row and label/value rows — so this page
12
+ * reads as one of the schedule detail pages rather than a one-off.
13
+ */
14
+ declare const JEAccrualHeader: ({ accrual, isEditingAmount, onEditAmount, }: Readonly<JEAccrualHeaderProps>) => import("react/jsx-runtime").JSX.Element;
15
+ export default JEAccrualHeader;
16
+ export declare function formatAccrualAmount(amount: number): string;
@@ -0,0 +1,22 @@
1
+ import { ClientAnalytics } from '@zeniai/client-analytics';
2
+ import { JEOneTimeAccrual, ScheduledJournalEntry, TransactionID } from '@zeniai/client-epic-state';
3
+ export declare const ACCRUAL_SEQUENCE_SECTION_ID = "jeAccrualSequenceSection";
4
+ export interface JEAccrualSequenceSectionProps {
5
+ accrual: JEOneTimeAccrual;
6
+ analytics: ClientAnalytics;
7
+ controllerEmails: string[];
8
+ controllerUserIds: string[];
9
+ onViewTransaction: (transactionID: TransactionID) => void;
10
+ }
11
+ /**
12
+ * The accrual's entries — the accrual itself and, when it has one, its reversal — in the same
13
+ * sequence table the accrued schedule detail page uses.
14
+ *
15
+ * The rows are synthesized from the accrual because an accrual has no `scheduledJournalEntry`
16
+ * collection of its own. They deliberately carry no `jeScheduleId`: the table reads that to decide
17
+ * whether to offer the per-row menu (cancel accrual, view recorded/posted JE), and none of those
18
+ * apply to a one-time accrual. Combined with `isDisabled`, that makes this a read-only view.
19
+ */
20
+ declare const JEAccrualSequenceSection: ({ accrual, analytics, controllerEmails, controllerUserIds, onViewTransaction, }: Readonly<JEAccrualSequenceSectionProps>) => import("react/jsx-runtime").JSX.Element;
21
+ export default JEAccrualSequenceSection;
22
+ export declare function buildScheduledJournalEntries(accrual: JEOneTimeAccrual): ScheduledJournalEntry[];
@@ -0,0 +1,28 @@
1
+ import { ClientAnalytics } from '@zeniai/client-analytics';
2
+ import { FetchState, JEOneTimeAccrual, NewAccrualAccountsView, OneTimeAccrualEdits, OneTimeAccrualIgnoreReasonType, OneTimeAccrualRevertReasonType, TransactionID } from '@zeniai/client-epic-state';
3
+ export interface JEOneTimeAccrualDetailPageProps {
4
+ accrual: JEOneTimeAccrual;
5
+ /** Status of the promote / ignore request for this accrual. */
6
+ actionFetchState: FetchState;
7
+ analytics: ClientAnalytics;
8
+ controllerEmails: string[];
9
+ controllerUserIds: string[];
10
+ isAccountingClassesEnabled: boolean;
11
+ /** Account and class lists for the editable draft fields. Absent leaves them read-only. */
12
+ newAccrualAccountsView?: NewAccrualAccountsView;
13
+ onApproveAndPost: (amount: number, edits: OneTimeAccrualEdits) => void;
14
+ onNavigateBack: () => void;
15
+ onRevert: (reason: OneTimeAccrualRevertReasonType, note?: string) => void;
16
+ onSkip: (reason: OneTimeAccrualIgnoreReasonType, note?: string) => void;
17
+ /** Opens the journal entry behind a posted accrual or its reversal. */
18
+ onViewTransaction: (transactionID: TransactionID) => void;
19
+ }
20
+ /**
21
+ * A single one-time accrual, with the two decisions a human makes about it: post it, or skip the
22
+ * month with a reason.
23
+ *
24
+ * There is no GET-by-id on the accruals gateway, so the accrual arrives as a prop read from the
25
+ * list already in the store — this page never fetches.
26
+ */
27
+ declare const JEOneTimeAccrualDetailPage: ({ accrual, actionFetchState, analytics, controllerEmails, controllerUserIds, isAccountingClassesEnabled, newAccrualAccountsView, onApproveAndPost, onNavigateBack, onRevert, onViewTransaction, onSkip, }: Readonly<JEOneTimeAccrualDetailPageProps>) => import("react/jsx-runtime").JSX.Element;
28
+ export default JEOneTimeAccrualDetailPage;
@@ -0,0 +1,24 @@
1
+ import { JEOneTimeAccrual } from '@zeniai/client-epic-state';
2
+ /**
3
+ * A state token, not display copy: the caller maps it to a localized string. Returned when the
4
+ * accrual has no actions left and the UI should say why instead.
5
+ */
6
+ export type JEAccrualStatusState = "reversed";
7
+ export interface JEAccrualActions {
8
+ canIgnore: boolean;
9
+ canPromote: boolean;
10
+ canRevert: boolean;
11
+ canReview: boolean;
12
+ statusState?: JEAccrualStatusState;
13
+ }
14
+ /**
15
+ * What a human may do to an accrual in a given state, shared by the detail page footer and the
16
+ * list's Action column so the two cannot drift.
17
+ *
18
+ * The gates mirror what the gateway enforces rather than a UI preference: promote and ignore are
19
+ * "draft only", revert is "posted only". Offering them anywhere else earns a 404 for wrong state.
20
+ *
21
+ * `posting` and `reversing` are transient Cron states with no decision attached, so they fall
22
+ * through to no actions. `posting_blocked` never reaches the UI — the CES selector drops it.
23
+ */
24
+ export declare function accrualActions(accrualStatus: JEOneTimeAccrual["accrualStatus"]): JEAccrualActions;
@@ -0,0 +1,18 @@
1
+ import { AccountBase, ClassBase, ID } from '@zeniai/client-epic-state';
2
+ /**
3
+ * Dropdown option values are `qboId ?? accountId` (see getGroupedAccountOptions), but the accruals
4
+ * API takes Zeni account ids -- so a selection has to be resolved back through the account list
5
+ * rather than sent as-is.
6
+ *
7
+ * Shared by the New Schedule form and the accrual detail page: getting this wrong sends a QuickBooks
8
+ * id where the API expects a Zeni one, which the API accepts and then cannot resolve.
9
+ */
10
+ export declare const findAccountByOptionValue: (accounts: AccountBase[], optionValue?: ID) => AccountBase | undefined;
11
+ /** The class equivalent. Class options carry the class id, but accept either for symmetry. */
12
+ export declare const findClassByOptionValue: (classes: ClassBase[], optionValue?: ID) => ClassBase | undefined;
13
+ /**
14
+ * The option value that shows a stored account as selected. Mirrors getGroupedAccountOptions, which
15
+ * builds values as `qboId ?? accountId` -- feeding it a raw accountId leaves the field blank when
16
+ * the account has a qboId.
17
+ */
18
+ export declare const toAccountOptionValue: (accounts: AccountBase[], accountId?: ID) => string | undefined;
@@ -0,0 +1,23 @@
1
+ import { RefObject } from 'react';
2
+ import { FetchStateAndError, ScheduleTransaction, TransactionID } from '@zeniai/client-epic-state';
3
+ export interface JEBaseTransactionSearchProps {
4
+ baseTransactionSearchFetchState: FetchStateAndError;
5
+ baseTransactionSearchResults: ScheduleTransaction[];
6
+ selectedBaseTransaction: ScheduleTransaction | undefined;
7
+ scheduleAmountPerMonth?: number;
8
+ scheduleMonths?: number;
9
+ searchInputRef?: RefObject<HTMLInputElement>;
10
+ onClearSelection: () => void;
11
+ onSearch: (query: string) => void;
12
+ onSelectTransaction: (transaction: ScheduleTransaction) => void;
13
+ onViewTransaction: (transactionID: TransactionID) => void;
14
+ }
15
+ /**
16
+ * The Base Transaction picker for the New Schedule form: a search box that
17
+ * flips into a read-only selected-value row once a transaction is chosen.
18
+ * Selection itself is controlled by the parent (it needs to know the picked
19
+ * transaction to drive vendor autofill and amount-per-month math) — this
20
+ * component only owns its own in-progress search text.
21
+ */
22
+ declare function JEBaseTransactionSearch({ baseTransactionSearchFetchState, baseTransactionSearchResults, selectedBaseTransaction, scheduleAmountPerMonth, scheduleMonths, searchInputRef, onClearSelection, onSearch, onSelectTransaction, onViewTransaction, }: Readonly<JEBaseTransactionSearchProps>): import("react/jsx-runtime").JSX.Element;
23
+ export default JEBaseTransactionSearch;
@@ -0,0 +1,7 @@
1
+ import { JEKpiSummary, JEScheduleRow } from '@zeniai/client-epic-state';
2
+ export interface JEExistingKpiStripProps {
3
+ kpiSummary: JEKpiSummary;
4
+ ongoingSchedules: JEScheduleRow[];
5
+ }
6
+ declare function JEExistingKpiStrip({ kpiSummary, ongoingSchedules, }: Readonly<JEExistingKpiStripProps>): import("react/jsx-runtime").JSX.Element;
7
+ export default JEExistingKpiStrip;
@@ -0,0 +1,8 @@
1
+ export interface JEGroupSectionHeaderProps {
2
+ count: number;
3
+ isCollapsed: boolean;
4
+ title: string;
5
+ onToggle: () => void;
6
+ }
7
+ declare function JEGroupSectionHeader({ title, count, isCollapsed, onToggle, }: Readonly<JEGroupSectionHeaderProps>): import("react/jsx-runtime").JSX.Element;
8
+ export default JEGroupSectionHeader;
@@ -0,0 +1,28 @@
1
+ export interface JEJournalEntryPreviewRow {
2
+ label: string;
3
+ value: string;
4
+ }
5
+ export interface JEJournalEntryPreviewProps {
6
+ /** Already formatted for display — the same string both lines show. */
7
+ amount: string;
8
+ creditAccountName: string;
9
+ debitAccountName: string;
10
+ /** The reversal sentence, resolved by the caller since it depends on the reversal policy. */
11
+ reversalDescription: string;
12
+ debitClassName?: string;
13
+ /**
14
+ * Extra label/value rows below the two lines — posting date, department, auto reversal on the
15
+ * accrual detail page. The new-schedule form passes none.
16
+ */
17
+ detailRows?: readonly JEJournalEntryPreviewRow[];
18
+ /** Off when the caller renders its own section heading above the card. */
19
+ showTitle?: boolean;
20
+ }
21
+ /**
22
+ * The two lines a one-time accrual will post, shown before the user commits.
23
+ *
24
+ * Prop-driven and pre-formatted: the caller owns currency formatting and the reversal wording,
25
+ * so this stays a layout component with no accrual knowledge.
26
+ */
27
+ declare const JEJournalEntryPreview: ({ amount, creditAccountName, debitAccountName, reversalDescription, debitClassName, detailRows, showTitle, }: Readonly<JEJournalEntryPreviewProps>) => import("react/jsx-runtime").JSX.Element;
28
+ export default JEJournalEntryPreview;
@@ -0,0 +1,8 @@
1
+ import { JEKpiSummary, JEScheduleRow } from '@zeniai/client-epic-state';
2
+ type JEScheduleOrFailedEntry = JEScheduleRow;
3
+ export interface JEKpiStripProps {
4
+ kpiSummary: JEKpiSummary;
5
+ schedules: JEScheduleOrFailedEntry[];
6
+ }
7
+ declare function JEKpiStrip({ kpiSummary, schedules }: Readonly<JEKpiStripProps>): import("react/jsx-runtime").JSX.Element;
8
+ export default JEKpiStrip;
@@ -1,6 +1,6 @@
1
1
  import { JEAccountSettingsView } from '@zeniai/client-epic-state';
2
- import { VendorsAccountsSectionFormData } from '../../../uncategorizedAccountsMapping/VendorsAccountsSection';
3
- import { FooterFormIdType } from '../../common';
2
+ import { VendorsAccountsSectionFormData } from '../../../../uncategorizedAccountsMapping/VendorsAccountsSection';
3
+ import { FooterFormIdType } from '../../../common';
4
4
  declare const vendorsAccountSectionId = "vendorsAccountSection";
5
5
  export interface FormData {
6
6
  [vendorsAccountSectionId]: VendorsAccountsSectionFormData;
@@ -0,0 +1,21 @@
1
+ import { ChainOfThoughtData } from '../../../../common/tooltipVariants/types';
2
+ export interface JEScheduleCreatedByProps {
3
+ isAiAccountant: boolean;
4
+ /**
5
+ * The agent's reasoning for this schedule, if it recorded any. Absent means the icon renders
6
+ * without a popover rather than not at all -- the column stays consistent across rows whose
7
+ * schedules predate the agent writing summaries.
8
+ */
9
+ cotData?: ChainOfThoughtData | null;
10
+ displayName?: string;
11
+ photoUrl?: string;
12
+ }
13
+ /**
14
+ * The "Created by" cell: who made this row, not how it was made.
15
+ *
16
+ * Prop-driven on purpose — every row shape on this page stores its creator differently (a schedule
17
+ * has `createdByUser`, a one-time accrual has `createdBy`), so callers resolve the three values and
18
+ * this component stays free of row-type knowledge.
19
+ */
20
+ declare const JEScheduleCreatedBy: ({ cotData, displayName, isAiAccountant, photoUrl, }: Readonly<JEScheduleCreatedByProps>) => import("react/jsx-runtime").JSX.Element;
21
+ export default JEScheduleCreatedBy;
@@ -0,0 +1,19 @@
1
+ import { ScheduleTypes, ZeniDate } from '@zeniai/client-epic-state';
2
+ export declare const LIFECYCLE_COLUMN_WIDTH_PX: number;
3
+ export interface JEScheduleLifecycleProps {
4
+ posted: number;
5
+ scheduleType: ScheduleTypes;
6
+ total: number;
7
+ endDate?: ZeniDate;
8
+ forcePostedLabel?: boolean;
9
+ /**
10
+ * A one-time accrual, not an accrued schedule. Both carry
11
+ * `scheduleType: "accrued_expenses"`, so the type alone cannot tell them apart, and they want
12
+ * opposite things here: an accrual posts one estimate and reverses it, while an accrued schedule
13
+ * runs monthly like prepaid and fixed assets.
14
+ */
15
+ isOneTimeAccrual?: boolean;
16
+ reversesOnBillMatch?: boolean;
17
+ }
18
+ declare const JEScheduleLifecycle: ({ endDate, forcePostedLabel, isOneTimeAccrual, posted, reversesOnBillMatch, scheduleType, total, }: JEScheduleLifecycleProps) => import("react/jsx-runtime").JSX.Element;
19
+ export default JEScheduleLifecycle;
@@ -0,0 +1,14 @@
1
+ export interface JEScheduleNewEntrySelection {
2
+ scheduleDetailsMode: string;
3
+ scheduleType: string;
4
+ }
5
+ export interface JEScheduleNewEntryButtonProps {
6
+ /**
7
+ * Cron-2's live gate for this company. Off means no accrual documents exist for it, so the
8
+ * one-time option is not offered -- including on the primary button, which is a shortcut to it.
9
+ */
10
+ isAccrualEnabled?: boolean;
11
+ onSelect: (selection: JEScheduleNewEntrySelection) => void;
12
+ }
13
+ declare function JEScheduleNewEntryButton({ onSelect, isAccrualEnabled, }: Readonly<JEScheduleNewEntryButtonProps>): import("react/jsx-runtime").JSX.Element;
14
+ export default JEScheduleNewEntryButton;
@@ -0,0 +1,18 @@
1
+ export interface JESchedulePreviewProps {
2
+ /** "DR <debit> · CR <credit>", resolved by the caller — the credit side differs per type. */
3
+ eachEntry: string;
4
+ /** "<amount> × <n> months", already formatted. */
5
+ posts: string;
6
+ totalCommitted: string;
7
+ /** "<start> → <end>", already formatted. */
8
+ window: string;
9
+ accountingClassName?: string;
10
+ }
11
+ /**
12
+ * What a recurring schedule will post, shown before the user commits.
13
+ *
14
+ * Every value arrives pre-formatted: the credit account, the window and the totals are derived
15
+ * differently per schedule type, so that logic stays with the form.
16
+ */
17
+ declare const JESchedulePreview: ({ eachEntry, posts, totalCommitted, window, accountingClassName, }: Readonly<JESchedulePreviewProps>) => import("react/jsx-runtime").JSX.Element;
18
+ export default JESchedulePreview;