@zeniai/web-components 4.3.8 → 4.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{SessionTimeoutPopup-BfSjI6xY.cjs → SessionTimeoutPopup-B9l5xt8w.cjs} +16523 -16372
- package/dist/{SessionTimeoutPopup-DTocbMko.js → SessionTimeoutPopup-BieF8U6a.js} +94089 -92526
- package/dist/appLocale.d.ts +50 -16
- package/dist/cockpit.cjs.js +91 -91
- package/dist/cockpit.esm.js +1244 -1234
- package/dist/common/util.d.ts +1 -0
- package/dist/components/aiCfo/components/FieldRowWithAutoFillBadge.d.ts +14 -1
- package/dist/components/aiCfo/components/common/downloadAndCopyHandlers.d.ts +5 -0
- package/dist/components/appDrawerContent/MenuButton.d.ts +6 -6
- package/dist/components/appDrawerContent/MenuList.d.ts +1 -0
- package/dist/components/cards/summaryCard/tasksCard/TasksCard.d.ts +2 -4
- package/dist/components/common/downloadReport/types/downloadReportOptions.d.ts +2 -1
- package/dist/components/common/downloadReport/types/downloadReportOptionsPayload.d.ts +2 -1
- package/dist/components/commonSetUp/utils/hasFormFieldValue.d.ts +11 -0
- package/dist/components/customerOnboarding/detail/CustomerOnboardingDetailPage.d.ts +11 -0
- package/dist/components/customerOnboarding/detail/components/BankVerification.d.ts +5 -2
- package/dist/components/customerOnboarding/detail/components/OnboardingStepFrame.d.ts +5 -1
- package/dist/components/customerOnboarding/detail/pages/AIAgentsActivatingPage.d.ts +8 -1
- package/dist/components/customerOnboarding/detail/pages/VerifyUnlockFinancialStackPage.d.ts +4 -1
- package/dist/components/customerOnboarding/drawer/OnboardingSidebar.d.ts +9 -1
- package/dist/components/dashboard/Dashboard.d.ts +1 -2
- package/dist/components/detail/common/dashboardReportDownload.d.ts +4 -2
- package/dist/components/detail/dashboardReportPage/DashboardReportPage.d.ts +5 -1
- package/dist/components/detail/dashboardReportPage/DetailPageReportFilters.d.ts +4 -1
- package/dist/components/detail/dashboardReportPage/DetailPageReportTable.d.ts +2 -1
- package/dist/components/detail/dashboardReportPage/common/getRootNodesWithUpdatedConfig.d.ts +2 -2
- package/dist/components/detail/dashboardReportPage/detailPageReportTypes.d.ts +2 -1
- package/dist/components/detail/netBurnOrIncome/mapNetBurnOrIncomeProjectReportToReportTreeNodes.d.ts +4 -0
- package/dist/components/detail/opEx/mapOpExProjectReportToReportTreeNodes.d.ts +4 -0
- package/dist/components/detail/revenue/mapRevenueProjectReportToReportTreeNodes.d.ts +4 -0
- package/dist/components/expenseAutomation/sections/accountRecon/statementParseFormHelpers.d.ts +11 -20
- package/dist/components/formElements/labeledColorPicker/LabeledColorPickerField.d.ts +12 -0
- package/dist/components/formElements/labeledGroupedCheckBoxField/LabeledGroupedCheckBoxField.d.ts +1 -0
- package/dist/components/invoicing/catalogForm/InvoicingCatalogItemFormPage.d.ts +4 -2
- package/dist/components/invoicing/catalogForm/catalogItemForm.shared.d.ts +10 -3
- package/dist/components/invoicing/common/InvoicingFormRows.d.ts +4 -1
- package/dist/components/invoicing/common/InvoicingOpenEntityValue.d.ts +14 -0
- package/dist/components/invoicing/couponForm/couponForm.shared.d.ts +3 -1
- package/dist/components/invoicing/customerForm/customerForm.shared.d.ts +2 -2
- package/dist/components/invoicing/recordPayment/recordPayment.shared.d.ts +3 -1
- package/dist/components/invoicing/settings/InvoicingIntegrationsSection.d.ts +2 -1
- package/dist/components/invoicing/settings/InvoicingIntegrationsSettingsPage.d.ts +9 -0
- package/dist/components/invoicing/settings/InvoicingPaymentDestinationSettingsPage.d.ts +5 -2
- package/dist/components/invoicing/settings/InvoicingQBOSettingsPage.d.ts +24 -0
- package/dist/components/invoicing/settings/StripeWebhookUrlField.d.ts +4 -0
- package/dist/components/invoicing/settings/invoicingIntegrationCards.d.ts +2 -1
- package/dist/components/invoicing/settings/invoicingSettingsShared.d.ts +21 -35
- package/dist/components/invoicing/subscriptionForm/subscriptionForm.shared.d.ts +6 -3
- package/dist/components/notifications/components/CommentsNotificationTileMedium.d.ts +4 -7
- package/dist/components/notifications/components/NotificationRowText.d.ts +13 -0
- package/dist/components/notifications/components/NotificationTagPill.d.ts +12 -0
- package/dist/components/notifications/components/NotificationTileMedium.d.ts +1 -7
- package/dist/components/notifications/components/notificationRowStyles.d.ts +34 -0
- package/dist/components/notifications/table/notificationsListHeader/NotificationsListConfig.d.ts +2 -0
- package/dist/components/notifications/utils/commentsNotificationHelpers.d.ts +13 -2
- package/dist/components/notifications/utils/commonHelpers.d.ts +2 -1
- package/dist/components/reportTree/treeNode/treeNodeMappers/mapTotalBalancesToTreeNode.d.ts +2 -2
- package/dist/components/settingsPage/Integrations/components/integrationCardTypes.d.ts +1 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.esm.js +388 -382
- package/dist/strings/strings.d.ts +50 -16
- package/dist/types/liveblocks.config.d.ts +8 -0
- package/package.json +4 -4
package/dist/common/util.d.ts
CHANGED
|
@@ -85,4 +85,5 @@ export declare const roundAmountIfNeeded: (amount: number) => number;
|
|
|
85
85
|
export declare const flowFromUrl: () => string;
|
|
86
86
|
export declare const isEqualProps: <T extends Record<string, unknown>>(prevProps: T, newProps: T, listOfProps: ReadonlyArray<keyof T>) => boolean;
|
|
87
87
|
export declare const normalizeString: (str: string | undefined) => string;
|
|
88
|
+
export declare const base64ToBytes: (base64: string) => Uint8Array;
|
|
88
89
|
export {};
|
|
@@ -15,5 +15,18 @@ import { ReactNode } from 'react';
|
|
|
15
15
|
export interface FieldRowWithAutoFillBadgeProps {
|
|
16
16
|
children: ReactNode;
|
|
17
17
|
isAutoFilled: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* True when the field already holds a value — manually entered or filled by an
|
|
20
|
+
* earlier document. A filled field keeps its value during a new parse instead
|
|
21
|
+
* of being replaced (and unmounted) by a skeleton, so user input is never lost.
|
|
22
|
+
*/
|
|
23
|
+
isFilled?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* While the uploaded document is being parsed for autofill, render a skeleton
|
|
26
|
+
* row in place of the (still-empty) field — it's one of the "expected" values
|
|
27
|
+
* the document may populate. Empty / 0-confidence results are fine; the
|
|
28
|
+
* skeleton just signals the field is loading.
|
|
29
|
+
*/
|
|
30
|
+
isParsing?: boolean;
|
|
18
31
|
}
|
|
19
|
-
export declare function FieldRowWithAutoFillBadge({ isAutoFilled, children, }: FieldRowWithAutoFillBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
export declare function FieldRowWithAutoFillBadge({ isAutoFilled, isFilled, isParsing, children, }: FieldRowWithAutoFillBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -4,6 +4,11 @@ import { ToolkitType } from '../../../../context/toolkitProvider/ToolkitProvider
|
|
|
4
4
|
* Generates filename with summarized title and date
|
|
5
5
|
*/
|
|
6
6
|
export declare function generateFileName(summarizedTitle: string, fileType: "xlsx" | "png", prefix?: string): string;
|
|
7
|
+
/** Thrown with a machine-readable reason so callers can show specific copy. */
|
|
8
|
+
export declare class TableDownloadError extends Error {
|
|
9
|
+
readonly reason: "missing-context" | "network" | "too-large" | "server";
|
|
10
|
+
constructor(reason: TableDownloadError["reason"], message: string, cause?: unknown);
|
|
11
|
+
}
|
|
7
12
|
export declare function downloadTableAsExcel(url: string, queryPayload: {
|
|
8
13
|
columns: string[];
|
|
9
14
|
file_name: string;
|
|
@@ -11,9 +11,9 @@ export declare const ALL_AI_CFO_MENU_OPTIONS: readonly ["new_chat", "explore", "
|
|
|
11
11
|
export declare const toAiCfoMenuOptionType: (v: string) => "new_chat" | "explore" | "search_chats";
|
|
12
12
|
export declare const toAiCfoMenuOptionTypeStrict: (v: string) => "new_chat" | "explore" | "search_chats" | undefined;
|
|
13
13
|
export type AiCfoMenu = (typeof ALL_AI_CFO_MENU_OPTIONS)[number];
|
|
14
|
-
export declare const ALL_INVOICING_MENU_OPTIONS: readonly ["invoicing_overview", "invoicing_analytics", "invoicing_customers", "invoicing_subscriptions", "invoicing_invoices", "invoicing_payments", "invoicing_credits", "invoicing_discounts", "invoicing_dunning", "invoicing_reports", "invoicing_catalog", "invoicing_settings", "invoicing_integrations", "invoicing_data_import", "invoicing_audit_log"];
|
|
15
|
-
export declare const toInvoicingMenuOptionType: (v: string) => "invoicing_overview" | "invoicing_analytics" | "invoicing_customers" | "invoicing_subscriptions" | "invoicing_invoices" | "invoicing_payments" | "invoicing_credits" | "invoicing_discounts" | "invoicing_dunning" | "invoicing_reports" | "invoicing_catalog" | "invoicing_settings" | "invoicing_integrations" | "invoicing_data_import" | "invoicing_audit_log";
|
|
16
|
-
export declare const toInvoicingMenuOptionTypeStrict: (v: string) => "invoicing_overview" | "invoicing_analytics" | "invoicing_customers" | "invoicing_subscriptions" | "invoicing_invoices" | "invoicing_payments" | "invoicing_credits" | "invoicing_discounts" | "invoicing_dunning" | "invoicing_reports" | "invoicing_catalog" | "invoicing_settings" | "invoicing_integrations" | "invoicing_data_import" | "invoicing_audit_log" | undefined;
|
|
14
|
+
export declare const ALL_INVOICING_MENU_OPTIONS: readonly ["invoicing_overview", "invoicing_analytics", "invoicing_customers", "invoicing_subscriptions", "invoicing_invoices", "invoicing_payments", "invoicing_credits", "invoicing_discounts", "invoicing_dunning", "invoicing_reports", "invoicing_catalog", "invoicing_settings", "invoicing_settings_payment_destination", "invoicing_settings_branding", "invoicing_settings_integrations", "invoicing_settings_dunning", "invoicing_integrations", "invoicing_data_import", "invoicing_audit_log"];
|
|
15
|
+
export declare const toInvoicingMenuOptionType: (v: string) => "invoicing_overview" | "invoicing_analytics" | "invoicing_customers" | "invoicing_subscriptions" | "invoicing_invoices" | "invoicing_payments" | "invoicing_credits" | "invoicing_discounts" | "invoicing_dunning" | "invoicing_reports" | "invoicing_catalog" | "invoicing_settings" | "invoicing_settings_payment_destination" | "invoicing_settings_branding" | "invoicing_settings_integrations" | "invoicing_settings_dunning" | "invoicing_integrations" | "invoicing_data_import" | "invoicing_audit_log";
|
|
16
|
+
export declare const toInvoicingMenuOptionTypeStrict: (v: string) => "invoicing_overview" | "invoicing_analytics" | "invoicing_customers" | "invoicing_subscriptions" | "invoicing_invoices" | "invoicing_payments" | "invoicing_credits" | "invoicing_discounts" | "invoicing_dunning" | "invoicing_reports" | "invoicing_catalog" | "invoicing_settings" | "invoicing_settings_payment_destination" | "invoicing_settings_branding" | "invoicing_settings_integrations" | "invoicing_settings_dunning" | "invoicing_integrations" | "invoicing_data_import" | "invoicing_audit_log" | undefined;
|
|
17
17
|
export type InvoicingMenu = (typeof ALL_INVOICING_MENU_OPTIONS)[number];
|
|
18
18
|
export declare const ALL_MENU_GROUPS: readonly ["close_management", "ai_intelligence", "finance", "accounts_receivable", "accounts_payable", "banking", "administration"];
|
|
19
19
|
export declare const toMenuGroupType: (v: string) => "accounts_receivable" | "accounts_payable" | "close_management" | "ai_intelligence" | "finance" | "banking" | "administration";
|
|
@@ -27,9 +27,9 @@ export declare const ALL_AI_CFO_MENU_GROUPS: readonly ["ai_cfo"];
|
|
|
27
27
|
export declare const toAiCfoMenuGroupType: (v: string) => "ai_cfo";
|
|
28
28
|
export declare const toAiCfoMenuGroupTypeStrict: (v: string) => "ai_cfo" | undefined;
|
|
29
29
|
export type AiCfoMenuGroup = ReturnType<typeof toAiCfoMenuGroupType>;
|
|
30
|
-
export declare const ALL_INVOICING_MENU_GROUPS: readonly ["invoicing_general", "invoicing_billing", "invoicing_setup", "invoicing_analytics_group"];
|
|
31
|
-
export declare const toInvoicingMenuGroupType: (v: string) => "invoicing_general" | "invoicing_billing" | "invoicing_setup" | "invoicing_analytics_group";
|
|
32
|
-
export declare const toInvoicingMenuGroupTypeStrict: (v: string) => "invoicing_general" | "invoicing_billing" | "invoicing_setup" | "invoicing_analytics_group" | undefined;
|
|
30
|
+
export declare const ALL_INVOICING_MENU_GROUPS: readonly ["invoicing_general", "invoicing_billing", "invoicing_payments_group", "invoicing_setup", "invoicing_analytics_group"];
|
|
31
|
+
export declare const toInvoicingMenuGroupType: (v: string) => "invoicing_general" | "invoicing_billing" | "invoicing_payments_group" | "invoicing_setup" | "invoicing_analytics_group";
|
|
32
|
+
export declare const toInvoicingMenuGroupTypeStrict: (v: string) => "invoicing_general" | "invoicing_billing" | "invoicing_payments_group" | "invoicing_setup" | "invoicing_analytics_group" | undefined;
|
|
33
33
|
export type InvoicingMenuGroup = (typeof ALL_INVOICING_MENU_GROUPS)[number];
|
|
34
34
|
export type MenuListItem = {
|
|
35
35
|
group: MenuGroup | SettingsMenuGroup | AiCfoMenuGroup | InvoicingMenuGroup;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AiCfoViewSelector, CurrentTenant, LoggedInUser, MonthEndCloseChecksView, MonthYearPeriod, RewardsPlanData } from '@zeniai/client-epic-state';
|
|
2
2
|
import { AiCfoMenu, InvoicingMenu, Menu, MenuListItem, SettingsMenu } from './MenuButton';
|
|
3
3
|
export declare const COMMAND_CENTER_SUBMENU_TYPES: readonly ["transaction_categorization", "je_schedules", "missing_receipts", "flux_analysis", "reconciliation"];
|
|
4
|
+
export declare const INVOICING_SETTINGS_SUBMENU_TYPES: readonly ["invoicing_settings_payment_destination", "invoicing_settings_branding", "invoicing_settings_integrations", "invoicing_settings_dunning"];
|
|
4
5
|
/** Returns true if the menu key is command_center or one of its submenu step types. */
|
|
5
6
|
export declare const isCloseManagementMenu: (key: string) => boolean;
|
|
6
7
|
export declare const menuList: MenuListItem[];
|
|
@@ -3,20 +3,18 @@ import { ClientAnalytics } from '@zeniai/client-analytics';
|
|
|
3
3
|
import { TasksCardReport } from '@zeniai/client-epic-state';
|
|
4
4
|
import { CardActions, CardData } from '../../cardTypes';
|
|
5
5
|
import { DragAndDropProps } from '../../common/Card';
|
|
6
|
-
declare const TasksCard: ({ card, data, actions,
|
|
6
|
+
declare const TasksCard: ({ card, data, actions, analytics, dndProps, }: {
|
|
7
7
|
actions: CardActions;
|
|
8
8
|
card: CardData;
|
|
9
9
|
data: TasksCardReport;
|
|
10
|
-
isExpenseAutomationEnabledForUser: boolean;
|
|
11
10
|
analytics?: ClientAnalytics;
|
|
12
11
|
dndProps?: DragAndDropProps;
|
|
13
12
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
14
13
|
export default TasksCard;
|
|
15
|
-
export declare const MemoTasksCard: React.MemoExoticComponent<({ card, data, actions,
|
|
14
|
+
export declare const MemoTasksCard: React.MemoExoticComponent<({ card, data, actions, analytics, dndProps, }: {
|
|
16
15
|
actions: CardActions;
|
|
17
16
|
card: CardData;
|
|
18
17
|
data: TasksCardReport;
|
|
19
|
-
isExpenseAutomationEnabledForUser: boolean;
|
|
20
18
|
analytics?: ClientAnalytics;
|
|
21
19
|
dndProps?: DragAndDropProps;
|
|
22
20
|
}) => import("react/jsx-runtime").JSX.Element>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AccountViewMode, COABalanceTimeFrame, COABalanceType, COABalancesRangeWithThisPeriod, ClassViewLayout, FileType, Month, NestedClassHierarchyForReport, NestedClassID, ReportFormat, TimeframeTick, ZeniDate } from '@zeniai/client-epic-state';
|
|
1
|
+
import { AccountViewMode, COABalanceTimeFrame, COABalanceType, COABalancesRangeWithThisPeriod, ClassViewLayout, FileType, ID, Month, NestedClassHierarchyForReport, NestedClassID, ReportFormat, TimeframeTick, ZeniDate } from '@zeniai/client-epic-state';
|
|
2
2
|
import { SupportedLocale } from '../../../../strings/localizedStrings';
|
|
3
3
|
import { BalanceTimeframe } from '../../../cards/cardTypes';
|
|
4
4
|
import { AccountGroupNilBalancesFilter, AccountNilBalancesFilter } from '../../../dataSelector/dataSelector';
|
|
@@ -28,5 +28,6 @@ export interface DownloadReportOptions {
|
|
|
28
28
|
dataAvailable?: TimeframeTick;
|
|
29
29
|
disabledAdditionalColumns?: COABalanceType[];
|
|
30
30
|
nestedClassHierarchy?: NestedClassHierarchyForReport[];
|
|
31
|
+
projectsToFilterOut?: ID[];
|
|
31
32
|
showClassAccountNumber?: boolean;
|
|
32
33
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { COABalanceType, ClassViewLayout, NestedClassID } from '@zeniai/client-epic-state';
|
|
1
|
+
import { COABalanceType, ClassViewLayout, ID, NestedClassID } from '@zeniai/client-epic-state';
|
|
2
2
|
import { AccountGroupNilBalancesFilter, AccountNilBalancesFilter } from '../../../dataSelector/dataSelector';
|
|
3
3
|
import { DownloadReportOptions } from './downloadReportOptions';
|
|
4
4
|
interface COABalancesRangePayload {
|
|
@@ -41,6 +41,7 @@ export default interface DownloadReportOptionsPayload {
|
|
|
41
41
|
end_date: string;
|
|
42
42
|
start_date: string;
|
|
43
43
|
};
|
|
44
|
+
projects_to_filter_out?: ID[];
|
|
44
45
|
}
|
|
45
46
|
export declare function toDownloadReportOptions(payload: DownloadReportOptionsPayload): DownloadReportOptions | undefined;
|
|
46
47
|
export declare function toDownloadReportOptionsPayload(options: DownloadReportOptions): DownloadReportOptionsPayload;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True when a react-hook-form field value is non-empty: a string with
|
|
3
|
+
* non-whitespace content, a non-empty array, an object with at least one
|
|
4
|
+
* non-empty entry (e.g. an address), or any other truthy scalar.
|
|
5
|
+
*
|
|
6
|
+
* Used by the verification sections to decide whether a field already holds a
|
|
7
|
+
* value (manually entered or document-autofilled) and so should keep its value
|
|
8
|
+
* during a new document parse instead of being replaced by a skeleton. Shared by
|
|
9
|
+
* the company + officer detail sections so the emptiness rule lives in one place.
|
|
10
|
+
*/
|
|
11
|
+
export declare function hasFormFieldValue(value: unknown): boolean;
|
|
@@ -46,6 +46,17 @@ export interface Props {
|
|
|
46
46
|
* is rendered enabled but unwired).
|
|
47
47
|
*/
|
|
48
48
|
integrationsSectionProps?: IntegrationsSectionProps;
|
|
49
|
+
/**
|
|
50
|
+
* True only for pure Tax/CFO/Payroll (product-suite) tenants. Gates the
|
|
51
|
+
* verification→setup_billing redirect so bookkeeping / mixed tenants are
|
|
52
|
+
* never routed to the interim product-suite page (which latches
|
|
53
|
+
* is_interim_email_sent and traps them on /thankyou).
|
|
54
|
+
*
|
|
55
|
+
* Absent/undefined intentionally means "treat as non-product-suite": the
|
|
56
|
+
* redirect stays suppressed, which is the safe default for callers that
|
|
57
|
+
* don't wire tenant product data.
|
|
58
|
+
*/
|
|
59
|
+
isProductSuiteTenant?: boolean;
|
|
49
60
|
handleAddCardPaymentSource: (paymentType: AddCardPaymentSourceType, paymentMethod: string, paymentId: string) => void;
|
|
50
61
|
handleConfirmCardSetupIntent: (setupIntentData: SetupIntentResult) => void;
|
|
51
62
|
handleCreateCardSetupIntent: (paymentsMethod: string[]) => void;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { ID, PaymentAccount } from '@zeniai/client-epic-state';
|
|
2
|
-
declare const BankVerification: ({ bankVerificationFlags,
|
|
2
|
+
declare const BankVerification: ({ bankVerificationFlags, isVerificationLoading, linkSessionId, showStartVerification, onClick, }: {
|
|
3
3
|
bankVerificationFlags: {
|
|
4
4
|
isBankVerificationBox: boolean;
|
|
5
5
|
paymentAccount: PaymentAccount | undefined;
|
|
6
6
|
paymentAccountStatus: string | undefined;
|
|
7
|
+
providerVerificationStatusCode?: string;
|
|
7
8
|
};
|
|
9
|
+
isVerificationLoading?: boolean;
|
|
8
10
|
linkSessionId?: ID | null;
|
|
9
|
-
|
|
11
|
+
showStartVerification?: boolean;
|
|
12
|
+
onClick?: () => void;
|
|
10
13
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
11
14
|
export default BankVerification;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
+
export type SkipDisabledReason = "qbo" | "pending-verification" | "login-required";
|
|
2
3
|
export interface OnboardingStepFrameProps {
|
|
3
4
|
children: ReactNode;
|
|
4
5
|
title: string;
|
|
@@ -8,6 +9,9 @@ export interface OnboardingStepFrameProps {
|
|
|
8
9
|
ctaIcon?: JSX.Element;
|
|
9
10
|
ctaLabel?: string;
|
|
10
11
|
ctaLoading?: boolean;
|
|
12
|
+
skipDisabled?: boolean;
|
|
13
|
+
/** Chooses the disabled-skip tooltip copy. Defaults to the QBO reason. */
|
|
14
|
+
skipDisabledReason?: SkipDisabledReason;
|
|
11
15
|
skipLabel?: string;
|
|
12
16
|
stepNumber?: number;
|
|
13
17
|
subtitle?: string;
|
|
@@ -16,4 +20,4 @@ export interface OnboardingStepFrameProps {
|
|
|
16
20
|
onCtaClick?: () => void;
|
|
17
21
|
onSkipClick?: () => void;
|
|
18
22
|
}
|
|
19
|
-
export declare const OnboardingStepFrame: ({ title, subtitle, stepNumber, totalSteps, ctaLabel, ctaIcon, ctaLoading, ctaDisabled, onCtaClick, backLabel, onBackClick, backDisabled, skipLabel, onSkipClick, children, }: OnboardingStepFrameProps) => import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export declare const OnboardingStepFrame: ({ title, subtitle, stepNumber, totalSteps, ctaLabel, ctaIcon, ctaLoading, ctaDisabled, onCtaClick, backLabel, onBackClick, backDisabled, skipLabel, skipDisabled, skipDisabledReason, onSkipClick, children, }: OnboardingStepFrameProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -4,6 +4,13 @@ export interface AIAgentsActivatingPageProps {
|
|
|
4
4
|
stepNumber: number;
|
|
5
5
|
tenantName: string;
|
|
6
6
|
totalSteps: number;
|
|
7
|
+
/**
|
|
8
|
+
* When true the activation timeline is skipped and every row renders in its
|
|
9
|
+
* settled "building" state with the CTA enabled. Set on repeat visits once
|
|
10
|
+
* isOnboardingAiActivationViewed is true, so the animation doesn't replay
|
|
11
|
+
* each time the page loads.
|
|
12
|
+
*/
|
|
13
|
+
alreadyViewed?: boolean;
|
|
7
14
|
/** Override the background row statuses (used by stories). */
|
|
8
15
|
backgroundRowStatuses?: ReadonlyArray<AIAgentRowStatus>;
|
|
9
16
|
/**
|
|
@@ -28,4 +35,4 @@ export interface AIAgentsActivatingPageProps {
|
|
|
28
35
|
showLedgerReadyInLabel?: boolean;
|
|
29
36
|
onContinueClick: () => void;
|
|
30
37
|
}
|
|
31
|
-
export declare const AIAgentsActivatingPage: ({ tenantName, stepNumber, totalSteps, ledgerRowStatuses: overrideLedgerRowStatuses, backgroundRowStatuses: overrideBackgroundRowStatuses, showLedgerReadyInLabel: overrideShowLedgerReadyInLabel, showBackgroundReadyInLabel: overrideShowBackgroundReadyInLabel, counts, forceContinueEnabled, rowStartingDurationMs, onContinueClick, }: AIAgentsActivatingPageProps) => import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
export declare const AIAgentsActivatingPage: ({ tenantName, stepNumber, totalSteps, alreadyViewed, ledgerRowStatuses: overrideLedgerRowStatuses, backgroundRowStatuses: overrideBackgroundRowStatuses, showLedgerReadyInLabel: overrideShowLedgerReadyInLabel, showBackgroundReadyInLabel: overrideShowBackgroundReadyInLabel, counts, forceContinueEnabled, rowStartingDurationMs, onContinueClick, }: AIAgentsActivatingPageProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { SkipDisabledReason } from '../components/OnboardingStepFrame';
|
|
1
2
|
import { VerifyUnlockFinancialStackSectionProps } from '../sections/VerifyUnlockFinancialStackSection';
|
|
2
3
|
export interface VerifyUnlockFinancialStackPageProps extends VerifyUnlockFinancialStackSectionProps {
|
|
3
4
|
stepNumber: number;
|
|
4
5
|
totalSteps: number;
|
|
6
|
+
skipDisabled?: boolean;
|
|
7
|
+
skipDisabledReason?: SkipDisabledReason;
|
|
5
8
|
onStartVerificationClick: () => void;
|
|
6
9
|
onSkipToDashboardClick?: () => void;
|
|
7
10
|
}
|
|
8
|
-
export declare const VerifyUnlockFinancialStackPage: ({ stepNumber, totalSteps, onStartVerificationClick, onSkipToDashboardClick, ...sectionProps }: VerifyUnlockFinancialStackPageProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare const VerifyUnlockFinancialStackPage: ({ stepNumber, totalSteps, skipDisabled, skipDisabledReason, onStartVerificationClick, onSkipToDashboardClick, ...sectionProps }: VerifyUnlockFinancialStackPageProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -20,10 +20,18 @@ export interface OnboardingSidebarProps {
|
|
|
20
20
|
* Exactly one step should be "active".
|
|
21
21
|
*/
|
|
22
22
|
stepStatuses: Partial<Record<OnboardingStep, OnboardingSidebarStepStatus>>;
|
|
23
|
+
/** Attention/error treatment for a step; takes precedence over `warningStep`. */
|
|
24
|
+
errorStep?: OnboardingStep;
|
|
23
25
|
footerSlot?: ReactNode;
|
|
26
|
+
/**
|
|
27
|
+
* Step to render in warning colors (badge round + title) regardless of its
|
|
28
|
+
* progress status — signals an action the user must resolve (e.g. a pending
|
|
29
|
+
* bank verification on setup_billing) before onboarding can complete.
|
|
30
|
+
*/
|
|
31
|
+
warningStep?: OnboardingStep;
|
|
24
32
|
onLogoClick?: () => void;
|
|
25
33
|
onStepClick?: (step: OnboardingStep) => void;
|
|
26
34
|
}
|
|
27
|
-
declare const OnboardingSidebar: ({ steps, stepStatuses, allRequiredStepsCompleted, footerSlot, onLogoClick, onStepClick, }: OnboardingSidebarProps) => import("react/jsx-runtime").JSX.Element;
|
|
35
|
+
declare const OnboardingSidebar: ({ steps, stepStatuses, allRequiredStepsCompleted, footerSlot, warningStep, errorStep, onLogoClick, onStepClick, }: OnboardingSidebarProps) => import("react/jsx-runtime").JSX.Element;
|
|
28
36
|
export default OnboardingSidebar;
|
|
29
37
|
export declare const SIDEBAR_WIDTH_PX = 240;
|
|
@@ -2,7 +2,7 @@ import { ClientAnalytics } from '@zeniai/client-analytics';
|
|
|
2
2
|
import { CardActions, CardType } from '../cards/cardTypes';
|
|
3
3
|
import { AutoCompleteActions, AutoCompleteData } from '../common/autoComplete/autoCompleteProps';
|
|
4
4
|
import { DashboardCardData } from './dashboardTypes';
|
|
5
|
-
declare function Dashboard({ cardDataArray, cardActions, christmasAnimationEnabled, newYearAnimationEnabled, autoCompleteData, autoCompleteActions, analytics, isReimbursementEnabled, isBillPayEnabled, isVisitingFirstTime, isZeniAccountEnabled,
|
|
5
|
+
declare function Dashboard({ cardDataArray, cardActions, christmasAnimationEnabled, newYearAnimationEnabled, autoCompleteData, autoCompleteActions, analytics, isReimbursementEnabled, isBillPayEnabled, isVisitingFirstTime, isZeniAccountEnabled, onDragAndDropCard, isAiCfoAccessEnabled, onAskAiCfoClick, onAiCfoDashboardPromptSubmit, onAiCfoDashboardOpenPanel, onAiCfoDashboardOpenScopePage, onAiCfoDashboardExpandToFullPage, isAiCfoFileUploadEnabled, initialSearchFocus, maxColumns, aiAuditScorePercentageEnabled, aiCfoDashboardShouldClearPromptOnSubmit, aiCfoDashboardSuggestedPromptQuestions, aiCfoDashboardSuggestedPromptQuestionsLoading, }: Readonly<{
|
|
6
6
|
aiAuditScorePercentageEnabled: boolean;
|
|
7
7
|
analytics: ClientAnalytics;
|
|
8
8
|
autoCompleteActions: AutoCompleteActions;
|
|
@@ -10,7 +10,6 @@ declare function Dashboard({ cardDataArray, cardActions, christmasAnimationEnabl
|
|
|
10
10
|
cardActions: CardActions;
|
|
11
11
|
cardDataArray: DashboardCardData[];
|
|
12
12
|
isBillPayEnabled: boolean;
|
|
13
|
-
isExpenseAutomationEnabledForUser: boolean;
|
|
14
13
|
isReimbursementEnabled: boolean;
|
|
15
14
|
isVisitingFirstTime: boolean;
|
|
16
15
|
isZeniAccountEnabled: boolean;
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import { AccountViewMode, COABalancesFilter, COABalancesRange, CashInCashOutReport, CashPositionReport, NestedClassID, NetBurnOrIncomeClassesViewReport, NetBurnOrIncomeReport, OpExClassesViewReport, OpExReport, RevenueClassesViewReport, RevenueReport, TopExReport } from '@zeniai/client-epic-state';
|
|
1
|
+
import { AccountViewMode, COABalancesFilter, COABalancesRange, CashInCashOutReport, CashPositionReport, ID, NestedClassID, NetBurnOrIncomeClassesViewReport, NetBurnOrIncomeProjectViewReport, NetBurnOrIncomeReport, OpExClassesViewReport, OpExProjectViewReport, OpExReport, RevenueClassesViewReport, RevenueProjectViewReport, RevenueReport, TopExReport } from '@zeniai/client-epic-state';
|
|
2
2
|
import { DownloadbleReportProps } from '../../common/downloadReport/downloadableReportProps';
|
|
3
3
|
export type DashboardReport = NetBurnOrIncomeReport | CashInCashOutReport | OpExReport | RevenueReport | TopExReport | CashPositionReport;
|
|
4
4
|
export type DashboardClassesViewReport = NetBurnOrIncomeClassesViewReport | RevenueClassesViewReport | OpExClassesViewReport;
|
|
5
|
+
export type DashboardProjectViewReport = NetBurnOrIncomeProjectViewReport | RevenueProjectViewReport | OpExProjectViewReport;
|
|
5
6
|
export interface Props extends DownloadbleReportProps {
|
|
6
7
|
classesToFilterOut: NestedClassID[];
|
|
7
8
|
coaBalancesRange: COABalancesRange;
|
|
8
9
|
filter: COABalancesFilter;
|
|
9
10
|
isCompareModeOn: boolean;
|
|
10
11
|
isZeniCOAUsed: boolean;
|
|
11
|
-
|
|
12
|
+
projectsToFilterOut: ID[];
|
|
13
|
+
report: DashboardReport | DashboardClassesViewReport | DashboardProjectViewReport;
|
|
12
14
|
reportType: "detailed" | "more_detailed";
|
|
13
15
|
reportView: AccountViewMode;
|
|
14
16
|
}
|
|
@@ -5,7 +5,7 @@ import { AutoCompleteActions, AutoCompleteData } from '../../common/autoComplete
|
|
|
5
5
|
import { ReportTreeScrollPosition } from '../../reportTree/ReportTree';
|
|
6
6
|
import { AccountBalanceClickMeta } from '../../reportTree/reportTreeTypes';
|
|
7
7
|
import { InsightsSectionAiCfoProps } from '../common/insights/InsightsSectionAiCfoQuestions';
|
|
8
|
-
import { DetailPageClassViewReport, DetailPageReport, DownloadParams, UIState } from './detailPageReportTypes';
|
|
8
|
+
import { DetailPageClassViewReport, DetailPageProjectViewReport, DetailPageReport, DownloadParams, UIState } from './detailPageReportTypes';
|
|
9
9
|
export interface DashboardReportPageProps<Report extends SelectorReport> {
|
|
10
10
|
autoCompleteActions: AutoCompleteActions;
|
|
11
11
|
autoCompleteData: AutoCompleteData;
|
|
@@ -18,9 +18,11 @@ export interface DashboardReportPageProps<Report extends SelectorReport> {
|
|
|
18
18
|
uiState: UIState;
|
|
19
19
|
analytics?: ClientAnalytics;
|
|
20
20
|
highlightedClassesViewRangeReport?: DetailPageClassViewReport;
|
|
21
|
+
highlightedProjectViewRangeReport?: DetailPageProjectViewReport;
|
|
21
22
|
initialOpenThreadRequest?: RequestToOpenThreadType;
|
|
22
23
|
insightsSectionAiCfoInfo?: InsightsSectionAiCfoProps;
|
|
23
24
|
isAccountingClassesEnabled?: boolean;
|
|
25
|
+
isAccountingProjectsEnabled?: boolean;
|
|
24
26
|
isAiCfoAccessEnabled?: boolean;
|
|
25
27
|
/** Enables the page-level comments icon + drawer (OpEx only). */
|
|
26
28
|
isReportsCommentingEnabled?: boolean;
|
|
@@ -29,6 +31,7 @@ export interface DashboardReportPageProps<Report extends SelectorReport> {
|
|
|
29
31
|
reportsResyncFetchState?: FetchStateAndError;
|
|
30
32
|
scrollPosition?: ReportTreeScrollPosition;
|
|
31
33
|
selectedClassesViewRangeReport?: DetailPageClassViewReport;
|
|
34
|
+
selectedProjectViewRangeReport?: DetailPageProjectViewReport;
|
|
32
35
|
onAdditionalBalanceSelectionChanged: (isCompareModeOn: boolean, additionalBalances: COABalanceType[], maxNumOfPeriodsToHighlight: number) => void;
|
|
33
36
|
onCOABalancesRangeChanged: (selectedCOABalancesRange: COABalancesRange, highlightedCOABalancesRange?: COABalancesRangeWithThisPeriod) => void;
|
|
34
37
|
onThisPeriodChanged: (thisPeriod: TimeframeTick) => void;
|
|
@@ -48,6 +51,7 @@ export interface DashboardReportPageProps<Report extends SelectorReport> {
|
|
|
48
51
|
onTableScroll?: (props: ReportTreeScrollPosition) => void;
|
|
49
52
|
onUpdateAccountViewMode?: (view: AccountViewMode) => void;
|
|
50
53
|
onUpdateClassesToFilterOut?: (classesToFilterOut: NestedClassID[]) => void;
|
|
54
|
+
onUpdateProjectsToFilterOut?: (projectsToFilterOut: ID[]) => void;
|
|
51
55
|
}
|
|
52
56
|
declare const DashboardReportPage: (props: DashboardReportPageProps<DetailPageReport>) => import("react/jsx-runtime").JSX.Element;
|
|
53
57
|
export default DashboardReportPage;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ClientAnalytics } from '@zeniai/client-analytics';
|
|
2
2
|
import { AccountViewMode, COABalanceTimeFrame, COABalanceType, COABalancesRange, COABalancesRangeWithThisPeriod, Forecast, ID, Mode, NestedClassID } from '@zeniai/client-epic-state';
|
|
3
|
-
import { DetailPageClassViewReport, DetailPageReport, UIState } from './detailPageReportTypes';
|
|
3
|
+
import { DetailPageClassViewReport, DetailPageProjectViewReport, DetailPageReport, UIState } from './detailPageReportTypes';
|
|
4
4
|
export interface DetailPageReportFiltersProps {
|
|
5
5
|
highlightedRangeReport: DetailPageReport;
|
|
6
6
|
reportLabels: {
|
|
@@ -10,10 +10,12 @@ export interface DetailPageReportFiltersProps {
|
|
|
10
10
|
uiState: UIState;
|
|
11
11
|
analytics?: ClientAnalytics;
|
|
12
12
|
isAccountingClassesEnabled?: boolean;
|
|
13
|
+
isAccountingProjectsEnabled?: boolean;
|
|
13
14
|
isPageFetchInProgress?: boolean;
|
|
14
15
|
isZeniCOAUsed?: boolean;
|
|
15
16
|
isZeniUser?: boolean;
|
|
16
17
|
selectedClassesViewRangeReport?: DetailPageClassViewReport;
|
|
18
|
+
selectedProjectViewRangeReport?: DetailPageProjectViewReport;
|
|
17
19
|
onAdditionalBalanceSelectionChanged: (isCompareModeOn: boolean, additionalBalances: COABalanceType[], maxNumOfPeriodsToHighlight: number) => void;
|
|
18
20
|
onCOABalancesRangeChanged: (selectedCOABalancesRange: COABalancesRange, highlightedCOABalancesRange?: COABalancesRangeWithThisPeriod) => void;
|
|
19
21
|
onTimeframeSelectionChanged: (selectedTimeframe: COABalanceTimeFrame) => void;
|
|
@@ -25,6 +27,7 @@ export interface DetailPageReportFiltersProps {
|
|
|
25
27
|
onResyncReports?: () => void;
|
|
26
28
|
onUpdateAccountViewMode?: (view: AccountViewMode) => void;
|
|
27
29
|
onUpdateClassesToFilterOut?: (classesToFilterOut: NestedClassID[]) => void;
|
|
30
|
+
onUpdateProjectsToFilterOut?: (projectsToFilterOut: ID[]) => void;
|
|
28
31
|
}
|
|
29
32
|
export declare const DetailPageReportFilters: (props: DetailPageReportFiltersProps) => import("react/jsx-runtime").JSX.Element;
|
|
30
33
|
export declare function ForecastListWithToggle({ isOn, isDisabled, selectedForecastIndex, forecasts, isForecastValid, onForecastToggleChanged, onForecastSelectionChanged, }: {
|
|
@@ -3,7 +3,7 @@ import { ClientAnalytics } from '@zeniai/client-analytics';
|
|
|
3
3
|
import { AccountReport, COABalance, COABalanceType } from '@zeniai/client-epic-state';
|
|
4
4
|
import { ReportTreeInternalType, ReportTreeScrollPosition } from '../../reportTree/ReportTree';
|
|
5
5
|
import { AccountBalanceClickMeta, ReportTreeNode } from '../../reportTree/reportTreeTypes';
|
|
6
|
-
import { DetailPageClassViewReport, DetailPageReport, UIState } from './detailPageReportTypes';
|
|
6
|
+
import { DetailPageClassViewReport, DetailPageProjectViewReport, DetailPageReport, UIState } from './detailPageReportTypes';
|
|
7
7
|
export declare const DetailPageReportTable: (props: {
|
|
8
8
|
selectedRangeReport: DetailPageReport;
|
|
9
9
|
uiState: UIState;
|
|
@@ -14,6 +14,7 @@ export declare const DetailPageReportTable: (props: {
|
|
|
14
14
|
isZeniUser?: boolean;
|
|
15
15
|
scrollPosition?: ReportTreeScrollPosition;
|
|
16
16
|
selectedClassesViewRangeReport?: DetailPageClassViewReport;
|
|
17
|
+
selectedProjectViewRangeReport?: DetailPageProjectViewReport;
|
|
17
18
|
treeRef?: RefObject<ReportTreeInternalType>;
|
|
18
19
|
onAdditionalBalanceSelectionChanged: (isCompareModeOn: boolean, additionalBalances: COABalanceType[], maxNumOfPeriodsToHighlight: number) => void;
|
|
19
20
|
onAccountBalanceClick?: (account: AccountReport, balance: COABalance, balanceClickMeta?: AccountBalanceClickMeta) => void;
|
package/dist/components/detail/dashboardReportPage/common/getRootNodesWithUpdatedConfig.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { RootNodes } from '../../../reportTree/ReportTree';
|
|
2
2
|
import { ReportElementConfig } from '../../../reportTree/reportTreeTypes';
|
|
3
|
-
import { DetailPageClassViewReport, DetailPageReport } from '../detailPageReportTypes';
|
|
4
|
-
export declare function getRootNodesWithUpdatedConfig(rootNodes: RootNodes, updatedConfig: ReportElementConfig, report: DetailPageReport | DetailPageClassViewReport, makeTimeframeRowSticky?: boolean): RootNodes;
|
|
3
|
+
import { DetailPageClassViewReport, DetailPageProjectViewReport, DetailPageReport } from '../detailPageReportTypes';
|
|
4
|
+
export declare function getRootNodesWithUpdatedConfig(rootNodes: RootNodes, updatedConfig: ReportElementConfig, report: DetailPageReport | DetailPageClassViewReport | DetailPageProjectViewReport, makeTimeframeRowSticky?: boolean): RootNodes;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { AuthParams, COABalanceTimeFrame, COABalanceType, COABalancesRange, COABalancesRangeWithThisPeriod, FetchState, ID, Mode, TopExReport } from '@zeniai/client-epic-state';
|
|
2
|
-
import { DashboardClassesViewReport, DashboardReport } from '../common/dashboardReportDownload';
|
|
2
|
+
import { DashboardClassesViewReport, DashboardProjectViewReport, DashboardReport } from '../common/dashboardReportDownload';
|
|
3
3
|
export type DetailPageReport = Exclude<DashboardReport, TopExReport>;
|
|
4
4
|
export type DetailPageClassViewReport = DashboardClassesViewReport;
|
|
5
|
+
export type DetailPageProjectViewReport = DashboardProjectViewReport;
|
|
5
6
|
export type UIState = {
|
|
6
7
|
downloadState: FetchState;
|
|
7
8
|
mode: Mode;
|
package/dist/components/detail/netBurnOrIncome/mapNetBurnOrIncomeProjectReportToReportTreeNodes.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { NetBurnOrIncomeProjectViewReport } from '@zeniai/client-epic-state';
|
|
2
|
+
import { RootNodes } from '../../reportTree/ReportTree';
|
|
3
|
+
import { ReportElementConfig } from '../../reportTree/reportTreeTypes';
|
|
4
|
+
export declare function mapNetBurnOrIncomeProjectReportToReportTreeNodes(report: NetBurnOrIncomeProjectViewReport, config: ReportElementConfig, makeTimeframeRowSticky?: boolean, isPageFetchInProgress?: boolean): RootNodes;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { OpExProjectViewReport } from '@zeniai/client-epic-state';
|
|
2
|
+
import { RootNodes } from '../../reportTree/ReportTree';
|
|
3
|
+
import { ReportElementConfig } from '../../reportTree/reportTreeTypes';
|
|
4
|
+
export declare function mapOpExProjectReportToReportTreeNodes(report: OpExProjectViewReport, config: ReportElementConfig, makeTimeframeRowSticky?: boolean, isPageFetchInProgress?: boolean): RootNodes;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { RevenueProjectViewReport } from '@zeniai/client-epic-state';
|
|
2
|
+
import { RootNodes } from '../../reportTree/ReportTree';
|
|
3
|
+
import { ReportElementConfig } from '../../reportTree/reportTreeTypes';
|
|
4
|
+
export declare function mapRevenueProjectReportToReportTreeNodes(report: RevenueProjectViewReport, config: ReportElementConfig, makeTimeframeRowSticky?: boolean, isPageFetchInProgress?: boolean): RootNodes;
|
package/dist/components/expenseAutomation/sections/accountRecon/statementParseFormHelpers.d.ts
CHANGED
|
@@ -17,15 +17,6 @@ export interface StatementParseFormView {
|
|
|
17
17
|
totalPayments: number;
|
|
18
18
|
transactions: StatementParseFormTransaction[];
|
|
19
19
|
}
|
|
20
|
-
/** Totals derived from in-period transactions (UI + local store; not used in PUT). */
|
|
21
|
-
export interface StatementBalancesFromTransactions {
|
|
22
|
-
closingBalance: number;
|
|
23
|
-
totalDeposits: number;
|
|
24
|
-
totalPayments: number;
|
|
25
|
-
}
|
|
26
|
-
export type StatementUpdateLocalDataWithTxnBalances = StatementUpdateLocalData & {
|
|
27
|
-
balancesFromTransactions: StatementBalancesFromTransactions;
|
|
28
|
-
};
|
|
29
20
|
export interface GetStatementParseFormViewInput {
|
|
30
21
|
originalTransactions: StatementTransaction[];
|
|
31
22
|
parsedStatementMeta: StatementMeta | undefined;
|
|
@@ -47,20 +38,20 @@ export interface ApplyStatementParseFormChangeInput {
|
|
|
47
38
|
changedField?: string;
|
|
48
39
|
}
|
|
49
40
|
export interface ApplyStatementParseFormChangeResult {
|
|
50
|
-
|
|
41
|
+
didRecalculateBalances: boolean;
|
|
51
42
|
formView: StatementParseFormView;
|
|
52
|
-
localData:
|
|
43
|
+
localData: StatementUpdateLocalData;
|
|
53
44
|
}
|
|
54
45
|
export declare const isStatementParseTransactionFieldChange: (changedField: string | undefined) => boolean;
|
|
55
46
|
export declare const isStatementParseManualBalanceField: (field: string | undefined) => field is StatementParseManualBalanceField;
|
|
56
|
-
export declare const
|
|
57
|
-
export declare const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
export declare const getStatementParseFormView: ({ accountType, parsedStatementMeta, originalTransactions, statementUpdateLocalData, }: GetStatementParseFormViewInput) => StatementParseFormView & {
|
|
63
|
-
balancesFromTransactions: StatementBalancesFromTransactions;
|
|
47
|
+
export declare const shouldRecalculateStatementParseBalances: (changedField: string | undefined) => boolean;
|
|
48
|
+
export declare const resolveStatementParseBalanceFields: (formView: StatementParseFormView, changedField: string | undefined, accountType?: AccountType) => {
|
|
49
|
+
closingBalance: number;
|
|
50
|
+
openingBalance: number;
|
|
51
|
+
totalDeposits: number;
|
|
52
|
+
totalPayments: number;
|
|
64
53
|
};
|
|
65
|
-
export declare const
|
|
54
|
+
export declare const areStatementParseBalancesConsistent: (formView: StatementParseFormView, accountType?: AccountType) => boolean;
|
|
55
|
+
export declare const getStatementParseFormView: ({ accountType, parsedStatementMeta, originalTransactions, statementUpdateLocalData, }: GetStatementParseFormViewInput) => StatementParseFormView;
|
|
56
|
+
export declare const toStatementUpdateLocalDataFromFormView: ({ accountType, formView, parsedStatementMeta, originalTransactions, changedField, }: ToStatementUpdateLocalDataFromFormViewInput) => StatementUpdateLocalData;
|
|
66
57
|
export declare const applyStatementParseFormChange: ({ accountType, formView, changedField, parsedStatementMeta, originalTransactions, }: ApplyStatementParseFormChangeInput) => ApplyStatementParseFormChangeResult;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DisableMode, LabelProps } from '../common/common';
|
|
2
|
+
export interface LabeledColorPickerFieldProps {
|
|
3
|
+
label: LabelProps;
|
|
4
|
+
/** Field name registered with react-hook-form; holds a `#rrggbb` string. */
|
|
5
|
+
name: string;
|
|
6
|
+
controlWidth?: number | string;
|
|
7
|
+
defaultValue?: string;
|
|
8
|
+
isDisabled?: DisableMode;
|
|
9
|
+
placeholder?: string;
|
|
10
|
+
style?: React.CSSProperties;
|
|
11
|
+
}
|
|
12
|
+
export declare function LabeledColorPickerField({ controlWidth, defaultValue, isDisabled, label, name, placeholder, style, }: Readonly<LabeledColorPickerFieldProps>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { InvoicingCatalogItemFormLocalData } from '@zeniai/client-epic-state';
|
|
1
|
+
import { InvoicingCatalogItemFormLocalData, InvoicingQboAccountOption } from '@zeniai/client-epic-state';
|
|
2
2
|
/**
|
|
3
3
|
* Catalog item types as shown to the user. All three are parent catalog items;
|
|
4
4
|
* the type controls the parent and nested sub-family payload fields.
|
|
@@ -29,6 +29,8 @@ export interface InvoicingCatalogItemFormPageProps {
|
|
|
29
29
|
*/
|
|
30
30
|
defaultType?: CatalogFormType;
|
|
31
31
|
errorMessage?: string;
|
|
32
|
+
qboClasses?: InvoicingQboAccountOption[];
|
|
33
|
+
qboIncomeAccounts?: InvoicingQboAccountOption[];
|
|
32
34
|
onCancel: () => void;
|
|
33
35
|
onChange: (localData: InvoicingCatalogItemFormLocalData) => void;
|
|
34
36
|
onSubmit: () => void;
|
|
@@ -41,5 +43,5 @@ export interface InvoicingCatalogItemFormPageProps {
|
|
|
41
43
|
* invoicing forms. The whole form syncs back to the CES draft (`localData`) on
|
|
42
44
|
* every change; the save payload is derived from the draft in CES.
|
|
43
45
|
*/
|
|
44
|
-
export declare function InvoicingCatalogItemFormPage({ applicabilityValues, applicableItemOptions, defaultType, errorMessage, isSubmitting, localData, mode, onBack, onCancel, onChange, onSubmit, periodUnitValues, pricingModelValues, prorationValues, tierTypeValues, trialEndActionValues, trialUnitValues, typeValues, }: Readonly<InvoicingCatalogItemFormPageProps>): import("react/jsx-runtime").JSX.Element;
|
|
46
|
+
export declare function InvoicingCatalogItemFormPage({ applicabilityValues, applicableItemOptions, defaultType, errorMessage, isSubmitting, localData, mode, onBack, onCancel, onChange, onSubmit, periodUnitValues, pricingModelValues, prorationValues, qboClasses, qboIncomeAccounts, tierTypeValues, trialEndActionValues, trialUnitValues, typeValues, }: Readonly<InvoicingCatalogItemFormPageProps>): import("react/jsx-runtime").JSX.Element;
|
|
45
47
|
export default InvoicingCatalogItemFormPage;
|
|
@@ -37,14 +37,19 @@ export interface PickerValue {
|
|
|
37
37
|
allOptions: CatalogSelectOption[];
|
|
38
38
|
selectedOption?: string;
|
|
39
39
|
}
|
|
40
|
+
/** Unwrap accountingCode/accountingCategory — PickerValue when QBO-connected, string otherwise. */
|
|
41
|
+
export declare const pickerOrText: (value: PickerValue | string) => string;
|
|
40
42
|
export interface CatalogTierFormValues {
|
|
41
43
|
endingUnit: string;
|
|
42
44
|
packageSize: string;
|
|
43
|
-
|
|
45
|
+
/** Held as a float by `returnValueType: "floatValue"`; `null` when cleared. */
|
|
46
|
+
price: number | null;
|
|
44
47
|
pricingType: PickerValue;
|
|
45
48
|
startingUnit: string;
|
|
46
49
|
}
|
|
47
50
|
export interface CatalogSubFamilyFormValues {
|
|
51
|
+
accountingCategory: PickerValue | string;
|
|
52
|
+
accountingCode: PickerValue | string;
|
|
48
53
|
billingCycles: string;
|
|
49
54
|
description: string;
|
|
50
55
|
flags: MultiSelectFieldValue;
|
|
@@ -55,9 +60,11 @@ export interface CatalogSubFamilyFormValues {
|
|
|
55
60
|
period: string;
|
|
56
61
|
periodUnit: PickerValue;
|
|
57
62
|
priceCode: string;
|
|
58
|
-
|
|
63
|
+
/** Held as a float by `returnValueType: "floatValue"`; `null` when cleared. */
|
|
64
|
+
priceDollars: number | null;
|
|
59
65
|
pricingModel: PickerValue;
|
|
60
66
|
prorationType: PickerValue;
|
|
67
|
+
sku: string;
|
|
61
68
|
tiers: CatalogTierFormValues[];
|
|
62
69
|
trialEndAction: PickerValue;
|
|
63
70
|
trialPeriod: string;
|
|
@@ -66,7 +73,7 @@ export interface CatalogSubFamilyFormValues {
|
|
|
66
73
|
/**
|
|
67
74
|
* Form-values shape reuses the CES localData field names verbatim — only the
|
|
68
75
|
* fields whose *shape* differs on the form (pickers, multiselect, sub-families)
|
|
69
|
-
* are overridden. Every plain field (name, productCode,
|
|
76
|
+
* are overridden. Every plain field (name, productCode, externalId, …) flows
|
|
70
77
|
* through by identity, so adding a field to the CES type needs no mapper change.
|
|
71
78
|
*/
|
|
72
79
|
export type CatalogFormValues = Omit<InvoicingCatalogItemFormLocalData, "applicableItems" | "catalogType" | "itemApplicability" | "subFamilies"> & {
|
|
@@ -65,6 +65,9 @@ export interface FormToggleRowProps {
|
|
|
65
65
|
checked: boolean;
|
|
66
66
|
description: string;
|
|
67
67
|
label: string;
|
|
68
|
+
containerStyle?: React.CSSProperties;
|
|
69
|
+
descriptionStyle?: React.CSSProperties;
|
|
70
|
+
labelStyle?: React.CSSProperties;
|
|
68
71
|
onChange: (checked: boolean) => void;
|
|
69
72
|
}
|
|
70
|
-
export declare function FormToggleRow({ checked, description, label, onChange, }: Readonly<FormToggleRowProps>): import("react/jsx-runtime").JSX.Element;
|
|
73
|
+
export declare function FormToggleRow({ checked, containerStyle, description, descriptionStyle, label, labelStyle, onChange, }: Readonly<FormToggleRowProps>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
export interface InvoicingOpenEntityValueProps {
|
|
3
|
+
dataTestId: string;
|
|
4
|
+
label: string;
|
|
5
|
+
ariaLabel?: string;
|
|
6
|
+
onOpen: () => void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Linked-entity value for the invoicing detail pages: the name stays plain text
|
|
10
|
+
* and only a trailing open-in-new-tab icon is a click target, so long names
|
|
11
|
+
* don't read as one large hyperlink. Shared so the invoice and subscription
|
|
12
|
+
* detail pages can't drift apart.
|
|
13
|
+
*/
|
|
14
|
+
export declare function InvoicingOpenEntityValue({ ariaLabel, dataTestId, label, onOpen, }: Readonly<InvoicingOpenEntityValueProps>): ReactElement;
|
|
@@ -17,8 +17,10 @@ export interface PickerValue {
|
|
|
17
17
|
* Every plain field (name, couponCode, couponId, …) flows through by identity,
|
|
18
18
|
* so adding a field to the CES type needs no mapper change.
|
|
19
19
|
*/
|
|
20
|
-
export type CouponFormValues = Omit<InvoicingCouponFormLocalData, "applyOn" | "discountType" | "durationType" | "periodUnit" | "validFrom" | "validTill"> & {
|
|
20
|
+
export type CouponFormValues = Omit<InvoicingCouponFormLocalData, "applyOn" | "discountAmount" | "discountType" | "durationType" | "periodUnit" | "validFrom" | "validTill"> & {
|
|
21
21
|
applyOn: PickerValue;
|
|
22
|
+
/** Held as a float by `returnValueType: "floatValue"`; `null` when cleared. */
|
|
23
|
+
discountAmount: number | null;
|
|
22
24
|
discountType: PickerValue;
|
|
23
25
|
durationType: PickerValue;
|
|
24
26
|
periodUnit: PickerValue;
|