@bcrumbs.net/inbox 0.0.60 → 0.0.62
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/assets/ar/inbox.json +16 -3
- package/assets/en/inbox.json +15 -2
- package/index.cjs.js +49055 -49383
- package/index.esm.js +49059 -49387
- package/package.json +4 -4
- package/playwright.config.d.ts +9 -0
- package/src/app/ai/components/Crumby/CrumbyComposer.d.ts +1 -1
- package/src/app/ai/components/playground/Button.d.ts +1 -1
- package/src/app/ai/components/playground/ThreadMessages.d.ts +5 -1
- package/src/app/ai/components/playground/TooltipIconButton.d.ts +2 -2
- package/src/app/auth/components/UserAvatar/AccountSettingsDropdown.d.ts +3 -5
- package/src/app/auth/hooks/useRoles.d.ts +1 -0
- package/src/app/auth/pages/Auth.style.d.ts +68 -0
- package/src/app/auth/pages/Login.style.d.ts +1 -0
- package/src/app/auth/pages/Register.style.d.ts +5 -0
- package/src/app/auth/utils/avatar.d.ts +1 -0
- package/src/app/auth/utils/resetWorkspaceRoleState.d.ts +4 -0
- package/src/app/broadcast/components/BroadcastAnalysisContent.d.ts +3 -1
- package/src/app/broadcast/components/BroadcastAnalysisReciepients.d.ts +6 -1
- package/src/app/broadcast/components/BroadcastAnalysisReciepientsHeader.d.ts +7 -1
- package/src/app/contact/components/ContactFilterOptions.d.ts +4 -1
- package/src/app/contact/components/ContactFormFields.d.ts +4 -1
- package/src/app/dashboard/components/AgentPerformanceCard.d.ts +2 -1
- package/src/app/dashboard/components/BroadcastCampaignProgressCard.d.ts +3 -1
- package/src/app/dashboard/components/DashboardExportButton.d.ts +8 -0
- package/src/app/dashboard/components/DashboardSections.d.ts +2 -1
- package/src/app/dashboard/components/OpenedChatsCard.d.ts +5 -1
- package/src/app/dashboard/components/TagPerformanceCard.d.ts +2 -1
- package/src/app/dashboard/utils/dashboardReportExports.d.ts +100 -0
- package/src/app/generic/components/PhoneDigitsInput.d.ts +7 -0
- package/src/app/generic/hooks/useResourceColumns.d.ts +3 -1
- package/src/app/inbox/components/Chat/ChatHeader.d.ts +2 -0
- package/src/app/inbox/components/Chat/NoConvSelected.d.ts +5 -0
- package/src/app/inbox/components/Chat/index.d.ts +4 -1
- package/src/app/inbox/components/NewDetails/ClientSection.d.ts +2 -1
- package/src/app/inbox/components/NewDetails/UserHeader.d.ts +2 -1
- package/src/app/inbox/components/NewDetails/index.d.ts +2 -1
- package/src/app/inbox/components/Shared/Inbox.d.ts +4 -1
- package/src/app/inbox/components/Shared/MobileChatDetailsSlider.d.ts +14 -0
- package/src/app/inbox/components/Shared/MobileDetailsSwipeHint.d.ts +9 -0
- package/src/app/inbox/components/Shared/MobileMenu.d.ts +2 -1
- package/src/app/inbox/hooks/useConvActions.d.ts +1 -0
- package/src/app/inbox/hooks/useConversationsPerodicFetch.d.ts +3 -0
- package/src/app/inbox/hooks/useStartedTimeAgo.d.ts +5 -0
- package/src/app/inbox/utils/convs.d.ts +8 -1
- package/src/app/inbox/utils/inboxAssignableAis.d.ts +11 -1
- package/src/app/layout/constants/index.d.ts +10 -10
- package/src/app/layout/hooks/useCrumbyEnabled.d.ts +18 -0
- package/src/app/layout/hooks/useCrumbyUpgradeAction.d.ts +10 -0
- package/src/app/managemnet/config/types.d.ts +2 -0
- package/src/app/onboarding/utils/onboardingChecklistPersistence.d.ts +18 -0
- package/src/app/onboarding/utils/onboardingChecklistStorage.d.ts +10 -1
- package/src/app/resources/components/Integrations/Facebook/PagePickerPopup.d.ts +3 -1
- package/src/app/resources/components/ListResources/Utils.d.ts +1 -0
- package/src/app/subscriptions/components/NewSubscription/OnboardingStepper.d.ts +8 -0
- package/src/app/subscriptions/components/NewSubscription/SubscriptionFailed.d.ts +6 -0
- package/src/app/subscriptions/components/NewSubscription/SubscriptionName.d.ts +1 -1
- package/src/app/subscriptions/components/NewSubscription/SubscriptionSuccess.d.ts +5 -2
- package/src/app/subscriptions/components/NewSubscription/WorkspaceStepLayout.d.ts +11 -0
- package/src/app/subscriptions/components/Plans/ShowcasePlans.d.ts +3 -1
- package/src/app/subscriptions/components/SubscriptionSwitcher/Switcher.d.ts +1 -1
- package/src/app/subscriptions/pages/NewSubscription.d.ts +1 -1
- package/src/app/subscriptions/utils/newWorkspaceCheckout.d.ts +16 -0
- package/src/assets/locales/translations.d.ts +78 -0
- package/src/graphql.autogenerated.d.ts +511 -1
- package/src/lib/EmbeddedMobileMenu.d.ts +2 -1
- package/src/routes/PrivateRoutes.d.ts +1 -5
- package/src/utils/exportCsv.d.ts +8 -0
- package/src/utils/textUtils.d.ts +2 -0
- package/src/app/broadcast/components/BroadcastTargetingComplianceNotice.d.ts +0 -2
- package/src/app/generic/hooks/WithMenuConfig.d.ts +0 -1
- package/src/app/layout/components/language/LanguageDropdown.d.ts +0 -9
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bcrumbs.net/inbox",
|
|
3
3
|
"description": "Inbox widget for Bread Crumbs portals",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.62",
|
|
5
5
|
"keyword": [
|
|
6
6
|
"bcrumbs",
|
|
7
7
|
"bc-ui",
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"graphql": "15.4.0"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@bcrumbs.net/bc-shared": "^0.0.
|
|
28
|
-
"@bcrumbs.net/bc-ui": "^0.0.
|
|
29
|
-
"@bcrumbs.net/bc-api": "^0.0.
|
|
27
|
+
"@bcrumbs.net/bc-shared": "^0.0.11",
|
|
28
|
+
"@bcrumbs.net/bc-ui": "^0.0.16",
|
|
29
|
+
"@bcrumbs.net/bc-api": "^0.0.49",
|
|
30
30
|
"@azure/storage-blob": "^12.25.0"
|
|
31
31
|
},
|
|
32
32
|
"module": "./index.esm.js",
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read environment variables from file.
|
|
3
|
+
* https://github.com/motdotla/dotenv
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* See https://playwright.dev/docs/test-configuration.
|
|
7
|
+
*/
|
|
8
|
+
declare const _default: import("@playwright/test").PlaywrightTestConfig<{}, {}>;
|
|
9
|
+
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Auto-growing composer for the Crumby floating chat (distinct from the playground Composer). */
|
|
2
2
|
declare const CrumbyComposer: () => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default CrumbyComposer;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { type VariantProps } from "class-variance-authority";
|
|
3
3
|
declare const buttonVariants: (props?: ({
|
|
4
|
-
variant?: "
|
|
4
|
+
variant?: "outline" | "default" | "ghost" | null | undefined;
|
|
5
5
|
size?: "default" | "icon" | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
7
7
|
declare function Button({ className, variant, size, asChild, ...props }: React.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
type ThreadMessagesProps = {
|
|
2
|
+
/** Overrides the container padding (defaults to 24px) when the parent already provides some (e.g. Crumby ChatView surface). */
|
|
3
|
+
padding?: string;
|
|
4
|
+
};
|
|
5
|
+
declare const ThreadMessages: ({ padding }: ThreadMessagesProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
2
6
|
export default ThreadMessages;
|
|
@@ -5,11 +5,11 @@ export type TooltipIconButtonProps = ComponentPropsWithoutRef<typeof Button> & {
|
|
|
5
5
|
side?: "top" | "bottom" | "left" | "right";
|
|
6
6
|
};
|
|
7
7
|
export declare const TooltipIconButton: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & import("class-variance-authority").VariantProps<(props?: ({
|
|
8
|
-
variant?: "
|
|
8
|
+
variant?: "outline" | "default" | "ghost" | null | undefined;
|
|
9
9
|
size?: "default" | "icon" | null | undefined;
|
|
10
10
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string> & {
|
|
11
11
|
asChild?: boolean | undefined;
|
|
12
12
|
}, "ref"> & {
|
|
13
13
|
tooltip: string;
|
|
14
|
-
side?: "
|
|
14
|
+
side?: "bottom" | "left" | "right" | "top" | undefined;
|
|
15
15
|
} & import("react").RefAttributes<HTMLButtonElement>>;
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ActionItem } from '@bcrumbs.net/bc-ui';
|
|
2
2
|
import { PropsWithChildren } from 'react';
|
|
3
3
|
export type AccountSettingsProps = {
|
|
4
4
|
url?: string;
|
|
5
5
|
text?: string;
|
|
6
|
-
|
|
7
|
-
itemClicked: (e: DropdownListItemValue) => void;
|
|
8
|
-
itemsList: DropdownListItemType[];
|
|
6
|
+
actions: ActionItem[];
|
|
9
7
|
dataTestid?: string;
|
|
10
8
|
userInfo?: any;
|
|
11
9
|
isMobile?: boolean;
|
|
12
10
|
};
|
|
13
|
-
export declare function AccountSettingsDropdown({ url,
|
|
11
|
+
export declare function AccountSettingsDropdown({ url, actions, text, dataTestid, userInfo, isMobile, }: PropsWithChildren<AccountSettingsProps>): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const TEAL = "#16616C";
|
|
3
|
+
export declare const AuthContainer: import("@emotion/styled").StyledComponent<{
|
|
4
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
5
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
6
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
7
|
+
export declare const AuthFormColumn: import("@emotion/styled").StyledComponent<{
|
|
8
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
9
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
10
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
11
|
+
export declare const AuthFormContent: import("@emotion/styled").StyledComponent<{
|
|
12
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
13
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
14
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
15
|
+
export declare const SigninForm: import("@emotion/styled").StyledComponent<{
|
|
16
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
17
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
18
|
+
}, import("react").DetailedHTMLProps<import("react").FormHTMLAttributes<HTMLFormElement>, HTMLFormElement>, {}>;
|
|
19
|
+
export declare const PasswordFieldWrapper: import("@emotion/styled").StyledComponent<{
|
|
20
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
21
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
22
|
+
} & {
|
|
23
|
+
rtl?: boolean | undefined;
|
|
24
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
25
|
+
export declare const ShowPasswordBtn: import("@emotion/styled").StyledComponent<{
|
|
26
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
27
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
28
|
+
} & {
|
|
29
|
+
rtl?: boolean | undefined;
|
|
30
|
+
}, import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
31
|
+
export declare const SocialButtonsRow: import("@emotion/styled").StyledComponent<{
|
|
32
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
33
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
34
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
35
|
+
export declare const SocialAuthButton: import("@emotion/styled").StyledComponent<{
|
|
36
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
37
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
38
|
+
}, import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
39
|
+
export declare const OrDivider: import("@emotion/styled").StyledComponent<{
|
|
40
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
41
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
42
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
43
|
+
export declare const OptionsRow: import("@emotion/styled").StyledComponent<{
|
|
44
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
45
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
46
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
47
|
+
export declare const ForgetPasswordLink: import("@emotion/styled").StyledComponent<import("react-router-dom").LinkProps<unknown> & import("react").RefAttributes<HTMLAnchorElement> & {
|
|
48
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
49
|
+
}, {}, {}>;
|
|
50
|
+
export declare const SignInActions: import("@emotion/styled").StyledComponent<{
|
|
51
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
52
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
53
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
54
|
+
export declare const SignInButton: import("@emotion/styled").StyledComponent<{
|
|
55
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
56
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
57
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
58
|
+
export declare const SignUpFooter: import("@emotion/styled").StyledComponent<{
|
|
59
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
60
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
61
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, {}>;
|
|
62
|
+
export declare const SignUpLink: import("@emotion/styled").StyledComponent<import("react-router-dom").LinkProps<unknown> & import("react").RefAttributes<HTMLAnchorElement> & {
|
|
63
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
64
|
+
}, {}, {}>;
|
|
65
|
+
export declare const HelloCon: import("@emotion/styled").StyledComponent<{
|
|
66
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
67
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
68
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Auth.style';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const FormRow: import("@emotion/styled").StyledComponent<{
|
|
3
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
4
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
5
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Stored on userInfo with role so readers can reject a stale workspace role. */
|
|
2
|
+
export declare const ROLE_WORKSPACE_ID_KEY = "roleWorkspaceId";
|
|
3
|
+
/** Drop cached workspace role so the next me fetch drives permissions for the active workspace. */
|
|
4
|
+
export declare function resetWorkspaceRoleState(): void;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { BroadcastState } from '../../../graphql.autogenerated';
|
|
1
2
|
interface BroadcastAnalysisContentProps {
|
|
2
3
|
integrationId: string;
|
|
3
4
|
templateNameValue: string;
|
|
4
5
|
loadingBroadcast: boolean;
|
|
6
|
+
broadcastState?: BroadcastState;
|
|
5
7
|
}
|
|
6
|
-
declare const BroadcastAnalysisContent: ({ integrationId, templateNameValue, loadingBroadcast, }: BroadcastAnalysisContentProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare const BroadcastAnalysisContent: ({ integrationId, templateNameValue, loadingBroadcast, broadcastState, }: BroadcastAnalysisContentProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
7
9
|
export default BroadcastAnalysisContent;
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
2
|
+
import { BroadcastState } from '../../../graphql.autogenerated';
|
|
3
|
+
interface BroadcastAnalysisReciepientsProps {
|
|
4
|
+
broadcastState?: BroadcastState;
|
|
5
|
+
retryableFailed: number;
|
|
6
|
+
}
|
|
7
|
+
declare const _default: React.MemoExoticComponent<({ broadcastState, retryableFailed, }: BroadcastAnalysisReciepientsProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
3
8
|
export default _default;
|
|
@@ -15,6 +15,12 @@ interface BroadcastAnalysisReciepientsHeaderProps {
|
|
|
15
15
|
/** Workspace delivery report: filter rows by template name substring (server-side). */
|
|
16
16
|
templateNameQuery?: string;
|
|
17
17
|
setTemplateNameQuery?: (query: string) => void;
|
|
18
|
+
canRetryFailed?: boolean;
|
|
19
|
+
retryableFailed?: number;
|
|
20
|
+
retryDialogOpen?: boolean;
|
|
21
|
+
onRetryDialogOpenChange?: (open: boolean) => void;
|
|
22
|
+
onRetryFailed?: () => void;
|
|
23
|
+
retryLoading?: boolean;
|
|
18
24
|
}
|
|
19
|
-
declare const _default: React.MemoExoticComponent<({ setSearchQuery, searchQuery, selectedCountry, setSelectedCountry, selectedStage, setSelectedStage, selectedState, setSelectedState, clientStages, onDownloadCsv, templateNameQuery, setTemplateNameQuery, }: BroadcastAnalysisReciepientsHeaderProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
25
|
+
declare const _default: React.MemoExoticComponent<({ setSearchQuery, searchQuery, selectedCountry, setSelectedCountry, selectedStage, setSelectedStage, selectedState, setSelectedState, clientStages, onDownloadCsv, templateNameQuery, setTemplateNameQuery, canRetryFailed, retryableFailed, retryDialogOpen, onRetryDialogOpenChange, onRetryFailed, retryLoading, }: BroadcastAnalysisReciepientsHeaderProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
20
26
|
export default _default;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export type ContactStatus = 'active' | 'archived' | 'blocked';
|
|
1
2
|
interface FilterOptionsProps {
|
|
2
3
|
setSelectedTags: (tags: string[]) => void;
|
|
3
4
|
selectedTags: string[];
|
|
@@ -5,10 +6,12 @@ interface FilterOptionsProps {
|
|
|
5
6
|
selectedStageId: string | undefined;
|
|
6
7
|
setSelectedAgentId: (agentId: string | undefined) => void;
|
|
7
8
|
selectedAgentId: string | undefined;
|
|
9
|
+
selectedStatus: ContactStatus;
|
|
10
|
+
setSelectedStatus: (status: ContactStatus) => void;
|
|
8
11
|
setFilterIsOpen: (isOpen: boolean) => void;
|
|
9
12
|
onApplyFilters?: () => void;
|
|
10
13
|
hasAppliedFilters?: boolean;
|
|
11
14
|
onClearFilters?: () => void;
|
|
12
15
|
}
|
|
13
|
-
declare const FilterOptions: ({ setSelectedTags, selectedTags, setSelectedStageId, selectedStageId, setSelectedAgentId, selectedAgentId, setFilterIsOpen, onApplyFilters, hasAppliedFilters, onClearFilters, }: FilterOptionsProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
16
|
+
declare const FilterOptions: ({ setSelectedTags, selectedTags, setSelectedStageId, selectedStageId, setSelectedAgentId, selectedAgentId, selectedStatus, setSelectedStatus, setFilterIsOpen, onApplyFilters, hasAppliedFilters, onClearFilters, }: FilterOptionsProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
14
17
|
export default FilterOptions;
|
|
@@ -4,6 +4,9 @@ interface ContactFormFieldsProps {
|
|
|
4
4
|
isEditMode?: boolean;
|
|
5
5
|
renderDroplistField?: any;
|
|
6
6
|
clientStages?: Tag[];
|
|
7
|
+
phoneValue?: string;
|
|
8
|
+
onPhoneChange?: (value: string) => void;
|
|
9
|
+
phoneFieldError?: string;
|
|
7
10
|
}
|
|
8
|
-
declare const ContactFormFields: ({ renderField, renderDroplistField, isEditMode, clientStages, }: ContactFormFieldsProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
11
|
+
declare const ContactFormFields: ({ renderField, renderDroplistField, isEditMode, clientStages, phoneValue, onPhoneChange, phoneFieldError, }: ContactFormFieldsProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
9
12
|
export default ContactFormFields;
|
|
@@ -4,6 +4,7 @@ interface AgentPerformanceCardProps {
|
|
|
4
4
|
data?: AgentReportNode[];
|
|
5
5
|
agentsData?: Agent[];
|
|
6
6
|
loading?: boolean;
|
|
7
|
+
startDate: string;
|
|
7
8
|
}
|
|
8
|
-
declare const AgentPerformanceCard: ({ data, agentsData, loading }: AgentPerformanceCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
9
|
+
declare const AgentPerformanceCard: ({ data, agentsData, loading, startDate }: AgentPerformanceCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
9
10
|
export default AgentPerformanceCard;
|
|
@@ -5,6 +5,8 @@ interface BroadcastCampaignProgressCardProps {
|
|
|
5
5
|
completedChange: number;
|
|
6
6
|
failedChange: number;
|
|
7
7
|
barData: NewBarChartDataItem[];
|
|
8
|
+
startDate: string;
|
|
9
|
+
endDate: string;
|
|
8
10
|
}
|
|
9
|
-
declare const BroadcastCampaignProgressCard: ({ completed, failed, completedChange, failedChange, barData, }: BroadcastCampaignProgressCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
11
|
+
declare const BroadcastCampaignProgressCard: ({ completed, failed, completedChange, failedChange, barData, startDate, endDate, }: BroadcastCampaignProgressCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
10
12
|
export default BroadcastCampaignProgressCard;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface DashboardExportButtonProps {
|
|
2
|
+
onClick: () => void;
|
|
3
|
+
disabled?: boolean;
|
|
4
|
+
'aria-label'?: string;
|
|
5
|
+
}
|
|
6
|
+
/** Compact CSV export control for dashboard report cards. */
|
|
7
|
+
export declare function DashboardExportButton({ onClick, disabled, 'aria-label': ariaLabel }: DashboardExportButtonProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
8
|
+
export default DashboardExportButton;
|
|
@@ -19,10 +19,11 @@ interface DashboardSectionsProps {
|
|
|
19
19
|
assignedConversations?: number;
|
|
20
20
|
unassignedConversations?: number;
|
|
21
21
|
liveConvs?: Conversation[] | null;
|
|
22
|
+
periodFilteredLiveConvs?: Conversation[];
|
|
22
23
|
startDate: string;
|
|
23
24
|
endDate: string;
|
|
24
25
|
selectedPeriod: string;
|
|
25
26
|
reportNodes: ReportNode[];
|
|
26
27
|
}
|
|
27
|
-
declare const _default: React.MemoExoticComponent<({ agentsData, allAgentsData, agentsReportData, agentsLoading, agentsReportLoading, convTagsReportData, convTagsReportLoading, totalMessages, convsLoading, integrationId, agentIds, assignedConversations, unassignedConversations, liveConvs, startDate, endDate, selectedPeriod, reportNodes, }: DashboardSectionsProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
28
|
+
declare const _default: React.MemoExoticComponent<({ agentsData, allAgentsData, agentsReportData, agentsLoading, agentsReportLoading, convTagsReportData, convTagsReportLoading, totalMessages, convsLoading, integrationId, agentIds, assignedConversations, unassignedConversations, liveConvs, periodFilteredLiveConvs, startDate, endDate, selectedPeriod, reportNodes, }: DashboardSectionsProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
28
29
|
export default _default;
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import { Conversation } from '../../../graphql.autogenerated';
|
|
1
2
|
export interface AllChatsCardProps {
|
|
2
3
|
totalMessages?: number;
|
|
3
4
|
assignedConversations?: number;
|
|
4
5
|
unassignedConversations?: number;
|
|
5
6
|
selectedPeriod?: string;
|
|
6
7
|
loading?: boolean;
|
|
8
|
+
conversations?: Pick<Conversation, 'createdAt' | 'assigneeId'>[];
|
|
9
|
+
startDate?: string;
|
|
10
|
+
endDate?: string;
|
|
7
11
|
}
|
|
8
|
-
declare const OpenedChatsCard: ({ totalMessages, assignedConversations, unassignedConversations, selectedPeriod, loading, }: AllChatsCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
12
|
+
declare const OpenedChatsCard: ({ totalMessages, assignedConversations, unassignedConversations, selectedPeriod, loading, conversations, startDate, endDate, }: AllChatsCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
9
13
|
export default OpenedChatsCard;
|
|
@@ -3,6 +3,7 @@ type ConvTagReportNode = NonNullable<ConvTagsReportQuery['convTagsReport']['node
|
|
|
3
3
|
interface TagPerformanceCardProps {
|
|
4
4
|
data?: ConvTagReportNode[];
|
|
5
5
|
loading?: boolean;
|
|
6
|
+
startDate: string;
|
|
6
7
|
}
|
|
7
|
-
declare const TagPerformanceCard: ({ data, loading }: TagPerformanceCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare const TagPerformanceCard: ({ data, loading, startDate }: TagPerformanceCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
8
9
|
export default TagPerformanceCard;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { BroadcastReportFragment, Conversation } from '../../../graphql.autogenerated';
|
|
2
|
+
import { CsvCell } from '../../../utils/exportCsv';
|
|
3
|
+
export type DashboardExportReportKey = 'opened_chats' | 'conversation_analytics' | 'agent_performance' | 'tag_performance' | 'broadcast_recipients' | 'campaign_progress' | 'status_distribution';
|
|
4
|
+
export declare function dashboardExportFilename(reportKey: DashboardExportReportKey, startDate: string): string;
|
|
5
|
+
/** Matches ticket examples: "21 sec", "4m 30s", "2h 05m". */
|
|
6
|
+
export declare function formatExportDuration(seconds: number): string;
|
|
7
|
+
export interface OpenedChatsExportLabels {
|
|
8
|
+
date: string;
|
|
9
|
+
openedConversations: string;
|
|
10
|
+
assigned: string;
|
|
11
|
+
unassigned: string;
|
|
12
|
+
total: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function buildOpenedChatsExportRows(conversations: Pick<Conversation, 'createdAt' | 'assigneeId'>[], startDate: string, endDate: string): CsvCell[][];
|
|
15
|
+
export declare function exportOpenedChatsCsv(conversations: Pick<Conversation, 'createdAt' | 'assigneeId'>[], startDate: string, endDate: string, labels: OpenedChatsExportLabels): void;
|
|
16
|
+
export interface ConversationAnalyticsExportLabels {
|
|
17
|
+
date: string;
|
|
18
|
+
conversations: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function buildConversationAnalyticsExportRows(reportNodes: {
|
|
21
|
+
createdAt: string;
|
|
22
|
+
conversationCount?: number | null;
|
|
23
|
+
}[], startDate: string, endDate: string): CsvCell[][];
|
|
24
|
+
export declare function exportConversationAnalyticsCsv(reportNodes: {
|
|
25
|
+
createdAt: string;
|
|
26
|
+
conversationCount?: number | null;
|
|
27
|
+
}[], startDate: string, endDate: string, labels: ConversationAnalyticsExportLabels): void;
|
|
28
|
+
export interface AgentPerformanceExportRow {
|
|
29
|
+
agentName: string;
|
|
30
|
+
conversationCount: number;
|
|
31
|
+
newClientConvCount: number;
|
|
32
|
+
agentMessagesCount: number;
|
|
33
|
+
clientMessageCount: number;
|
|
34
|
+
avgFirstResponseTime: number;
|
|
35
|
+
avgConversationTime: number;
|
|
36
|
+
}
|
|
37
|
+
export interface AgentPerformanceExportLabels {
|
|
38
|
+
agent: string;
|
|
39
|
+
closed: string;
|
|
40
|
+
uniqueClosed: string;
|
|
41
|
+
messagesSent: string;
|
|
42
|
+
messagesReceived: string;
|
|
43
|
+
avgResponseTime: string;
|
|
44
|
+
handleTime: string;
|
|
45
|
+
}
|
|
46
|
+
export declare function buildAgentPerformanceExportRows(rows: AgentPerformanceExportRow[]): CsvCell[][];
|
|
47
|
+
export declare function exportAgentPerformanceCsv(rows: AgentPerformanceExportRow[], startDate: string, labels: AgentPerformanceExportLabels): void;
|
|
48
|
+
export interface TagPerformanceExportRow {
|
|
49
|
+
tagName: string;
|
|
50
|
+
conversationCount: number;
|
|
51
|
+
newClientConvCount: number;
|
|
52
|
+
agentMessagesCount: number;
|
|
53
|
+
clientMessageCount: number;
|
|
54
|
+
avgFirstResponseTime: number;
|
|
55
|
+
avgConversationTime: number;
|
|
56
|
+
}
|
|
57
|
+
export interface TagPerformanceExportLabels {
|
|
58
|
+
tag: string;
|
|
59
|
+
closed: string;
|
|
60
|
+
uniqueClosed: string;
|
|
61
|
+
messagesSent: string;
|
|
62
|
+
messagesReceived: string;
|
|
63
|
+
avgResponseTime: string;
|
|
64
|
+
handleTime: string;
|
|
65
|
+
}
|
|
66
|
+
export declare function buildTagPerformanceExportRows(rows: TagPerformanceExportRow[]): CsvCell[][];
|
|
67
|
+
export declare function exportTagPerformanceCsv(rows: TagPerformanceExportRow[], startDate: string, labels: TagPerformanceExportLabels): void;
|
|
68
|
+
export interface RecipientsExportLabels {
|
|
69
|
+
date: string;
|
|
70
|
+
successful: string;
|
|
71
|
+
failed: string;
|
|
72
|
+
totalRecipients: string;
|
|
73
|
+
successRate: string;
|
|
74
|
+
}
|
|
75
|
+
export declare function buildRecipientsExportRows(reportNodes: BroadcastReportFragment[], startDate: string, endDate: string): CsvCell[][];
|
|
76
|
+
export declare function exportRecipientsCsv(reportNodes: BroadcastReportFragment[], startDate: string, endDate: string, labels: RecipientsExportLabels): void;
|
|
77
|
+
export interface CampaignProgressExportLabels {
|
|
78
|
+
date: string;
|
|
79
|
+
successfulCampaigns: string;
|
|
80
|
+
failedCampaigns: string;
|
|
81
|
+
}
|
|
82
|
+
export declare function buildCampaignProgressExportRows(dailyBars: {
|
|
83
|
+
successful?: number;
|
|
84
|
+
failed?: number;
|
|
85
|
+
}[], startDate: string, endDate: string): CsvCell[][];
|
|
86
|
+
export declare function exportCampaignProgressCsv(dailyBars: {
|
|
87
|
+
successful?: number;
|
|
88
|
+
failed?: number;
|
|
89
|
+
}[], startDate: string, endDate: string, labels: CampaignProgressExportLabels): void;
|
|
90
|
+
export interface StatusDistributionExportItem {
|
|
91
|
+
status: string;
|
|
92
|
+
count: number;
|
|
93
|
+
}
|
|
94
|
+
export interface StatusDistributionExportLabels {
|
|
95
|
+
status: string;
|
|
96
|
+
count: string;
|
|
97
|
+
percentage: string;
|
|
98
|
+
}
|
|
99
|
+
export declare function buildStatusDistributionExportRows(items: StatusDistributionExportItem[]): CsvCell[][];
|
|
100
|
+
export declare function exportStatusDistributionCsv(items: StatusDistributionExportItem[], startDate: string, labels: StatusDistributionExportLabels): void;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { InputHTMLAttributes } from 'react';
|
|
2
|
+
export interface PhoneDigitsInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value' | 'type'> {
|
|
3
|
+
value: string;
|
|
4
|
+
onChange: (value: string) => void;
|
|
5
|
+
}
|
|
6
|
+
declare const PhoneDigitsInput: ({ value, onChange, onKeyDown, ...props }: PhoneDigitsInputProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default PhoneDigitsInput;
|
|
@@ -12,12 +12,14 @@ interface GetResourceColumnsParams {
|
|
|
12
12
|
handleDeleteResource?: (row: CellContext<any, any>) => void;
|
|
13
13
|
handleArchiveResource?: (row: CellContext<any, any>) => void;
|
|
14
14
|
handleUnArchiveResource?: (row: CellContext<any, any>) => void;
|
|
15
|
+
handleBlockResource?: (row: CellContext<any, any>) => void;
|
|
16
|
+
handleUnBlockResource?: (row: CellContext<any, any>) => void;
|
|
15
17
|
currentSortField?: string;
|
|
16
18
|
currentSortDirection?: 'asc' | 'desc';
|
|
17
19
|
/** 🔹 NEW: custom cell renderers by field name */
|
|
18
20
|
customCells?: Record<string, (info: CellContext<any, any>) => React.ReactNode>;
|
|
19
21
|
}
|
|
20
|
-
export declare const useResourceColumns: ({ resourceDef, onSortChange, customHeaderProps, customRowProps, otherActions, handlePatchResource, handleArchiveResource, handleUnArchiveResource, handleDeleteResource, currentSortField, currentSortDirection, customCells, }: GetResourceColumnsParams) => {
|
|
22
|
+
export declare const useResourceColumns: ({ resourceDef, onSortChange, customHeaderProps, customRowProps, otherActions, handlePatchResource, handleArchiveResource, handleUnArchiveResource, handleBlockResource, handleUnBlockResource, handleDeleteResource, currentSortField, currentSortDirection, customCells, }: GetResourceColumnsParams) => {
|
|
21
23
|
columns: CustomColumn[];
|
|
22
24
|
actions: TableAction[];
|
|
23
25
|
};
|
|
@@ -12,6 +12,8 @@ interface Props {
|
|
|
12
12
|
showOlderMessagesButton?: boolean;
|
|
13
13
|
isLoadingOlderMessages?: boolean;
|
|
14
14
|
onLoadOlderMessages?: () => void;
|
|
15
|
+
/** Mobile: return to conversation list (shown before the search icon). */
|
|
16
|
+
onBack?: () => void;
|
|
15
17
|
}
|
|
16
18
|
export declare const HeaderContainer: import("@emotion/styled").StyledComponent<import("@bcrumbs.net/bc-ui").HorizontalLayoutProps & {
|
|
17
19
|
children?: React.ReactNode;
|
|
@@ -3,6 +3,11 @@ interface NoConvSelectedProps {
|
|
|
3
3
|
convsLength: number;
|
|
4
4
|
loadingConvs: boolean;
|
|
5
5
|
handleStartConversation?: () => void;
|
|
6
|
+
hasInboxAccess?: boolean;
|
|
7
|
+
/** Parent already resolved that there are no channels; skip integrations query. */
|
|
8
|
+
forceNoChannels?: boolean;
|
|
9
|
+
/** Parent is still resolving channel state; show loading and skip integrations query. */
|
|
10
|
+
resolvingChannels?: boolean;
|
|
6
11
|
}
|
|
7
12
|
declare const NoConvSelected: React.FC<NoConvSelectedProps>;
|
|
8
13
|
export default NoConvSelected;
|
|
@@ -17,6 +17,9 @@ interface Props {
|
|
|
17
17
|
showHeader?: boolean;
|
|
18
18
|
/** Auth user type (e.g. apiKey). Passed by embedded inbox; omit in portal inbox. */
|
|
19
19
|
userType?: string;
|
|
20
|
+
hasInboxAccess?: boolean;
|
|
21
|
+
/** Mobile: navigate back to the conversation list from the chat header. */
|
|
22
|
+
onBackToList?: () => void;
|
|
20
23
|
}
|
|
21
|
-
declare const Chat: ({ selectedConv, onConvEnd, agents, logo, rtl, convsLength, loadingConvs, handleStartConversation, showNoResults, onContactMessage, onContactAddContact, showHeader, userType, }: Props) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
24
|
+
declare const Chat: ({ selectedConv, onConvEnd, agents, logo, rtl, convsLength, loadingConvs, handleStartConversation, showNoResults, onContactMessage, onContactAddContact, showHeader, userType, hasInboxAccess, onBackToList, }: Props) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
22
25
|
export default Chat;
|
|
@@ -5,6 +5,7 @@ interface ClientSectionProps {
|
|
|
5
5
|
conversationTags: Tag[];
|
|
6
6
|
tagsLoading: boolean;
|
|
7
7
|
refetchTags: () => void;
|
|
8
|
+
onBackToList?: () => void;
|
|
8
9
|
}
|
|
9
|
-
declare const ClientSection: ({ conv, clientTags, conversationTags, tagsLoading, refetchTags, }: ClientSectionProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
10
|
+
declare const ClientSection: ({ conv, clientTags, conversationTags, tagsLoading, refetchTags, onBackToList, }: ClientSectionProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
10
11
|
export default ClientSection;
|
|
@@ -2,6 +2,7 @@ import { ClientQuery } from '../../../../graphql.autogenerated';
|
|
|
2
2
|
interface UserHeaderProps {
|
|
3
3
|
clientData: ClientQuery['client'] | undefined;
|
|
4
4
|
setEditMode: (editMode: boolean) => void;
|
|
5
|
+
onBackToList?: () => void;
|
|
5
6
|
}
|
|
6
|
-
declare const UserHeader: ({ clientData, setEditMode }: UserHeaderProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare const UserHeader: ({ clientData, setEditMode, onBackToList }: UserHeaderProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
7
8
|
export default UserHeader;
|
|
@@ -11,6 +11,7 @@ interface Props {
|
|
|
11
11
|
convStages: Tag[];
|
|
12
12
|
onUpdate?: () => void;
|
|
13
13
|
clientSectionPlaceholder?: React.ReactNode;
|
|
14
|
+
onBackToList?: () => void;
|
|
14
15
|
}
|
|
15
|
-
declare const NewDetails: ({ conv, clientTags, conversationTags, tagsLoading, refetchTags, agents, aiAgents, convStages, onUpdate, clientSectionPlaceholder, }: Props) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
16
|
+
declare const NewDetails: ({ conv, clientTags, conversationTags, tagsLoading, refetchTags, agents, aiAgents, convStages, onUpdate, clientSectionPlaceholder, onBackToList, }: Props) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
16
17
|
export default NewDetails;
|
|
@@ -13,8 +13,11 @@ export declare const MobileContent: import("@emotion/styled").StyledComponent<{
|
|
|
13
13
|
} & {
|
|
14
14
|
$reserveBottomNavSpace?: boolean | undefined;
|
|
15
15
|
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
16
|
-
export declare const InboxNoSelectionContainer: ({ convsLength, loadingConvs, handleStartConversation, }: {
|
|
16
|
+
export declare const InboxNoSelectionContainer: ({ convsLength, loadingConvs, handleStartConversation, hasInboxAccess, forceNoChannels, resolvingChannels, }: {
|
|
17
17
|
convsLength?: number;
|
|
18
18
|
loadingConvs?: boolean;
|
|
19
19
|
handleStartConversation?: () => void;
|
|
20
|
+
hasInboxAccess?: boolean;
|
|
21
|
+
forceNoChannels?: boolean;
|
|
22
|
+
resolvingChannels?: boolean;
|
|
20
23
|
}) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
type MobileChatDetailsSliderProps = {
|
|
3
|
+
showDetails: boolean;
|
|
4
|
+
onShowDetailsChange: (showDetails: boolean) => void;
|
|
5
|
+
rtl?: boolean;
|
|
6
|
+
chat: ReactNode;
|
|
7
|
+
details: ReactNode;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Side-by-side chat/details pager with follow-the-finger drag.
|
|
11
|
+
* Edge chevron buttons remain for one-tap navigation.
|
|
12
|
+
*/
|
|
13
|
+
export declare const MobileChatDetailsSlider: ({ showDetails, onShowDetailsChange, rtl, chat, details, }: MobileChatDetailsSliderProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type MobileDetailsSwipeHintProps = {
|
|
2
|
+
rtl?: boolean;
|
|
3
|
+
onClick: () => void;
|
|
4
|
+
/** `toDetails` sits on the trailing edge; `toChat` on the leading edge. */
|
|
5
|
+
direction?: 'toDetails' | 'toChat';
|
|
6
|
+
};
|
|
7
|
+
/** Edge affordance for mobile chat ↔ details swipe navigation. */
|
|
8
|
+
export declare const MobileDetailsSwipeHint: ({ rtl, onClick, direction, }: MobileDetailsSwipeHintProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -3,6 +3,7 @@ export type { MobileViews };
|
|
|
3
3
|
type MobileMenuProps = {
|
|
4
4
|
activePage: MobileViews;
|
|
5
5
|
setActivePage: (page: MobileViews) => void;
|
|
6
|
+
/** @deprecated Details is opened via swipe; kept for call-site compatibility. */
|
|
6
7
|
hideDetails?: boolean;
|
|
7
8
|
};
|
|
8
|
-
export declare const MobileMenu: ({ activePage, setActivePage
|
|
9
|
+
export declare const MobileMenu: ({ activePage, setActivePage }: MobileMenuProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
@@ -12,5 +12,6 @@ interface ConvActionsProps {
|
|
|
12
12
|
}
|
|
13
13
|
declare const useConvActions: ({ conv, handleChangeStage, handleAssignAgent, agents, convStages, myAgent, onConvEnd, aiAgents, }: ConvActionsProps) => {
|
|
14
14
|
DropdownActions: ActionItem[];
|
|
15
|
+
CrumbyUpgradeDialog: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
15
16
|
};
|
|
16
17
|
export default useConvActions;
|
|
@@ -22,6 +22,8 @@ declare function useConversationsPeriodicFetch(selectedConvId?: string, onSelect
|
|
|
22
22
|
ratingFlowInProgress?: boolean | null | undefined;
|
|
23
23
|
broadcastId?: string | null | undefined;
|
|
24
24
|
broadcastName?: string | null | undefined;
|
|
25
|
+
sourceType?: string | null | undefined;
|
|
26
|
+
sourceUrl?: string | null | undefined;
|
|
25
27
|
integrationSwitches?: {
|
|
26
28
|
__typename?: "ConvIntegrationSwitch" | undefined;
|
|
27
29
|
fromIntegrationId: string;
|
|
@@ -57,6 +59,7 @@ declare function useConversationsPeriodicFetch(selectedConvId?: string, onSelect
|
|
|
57
59
|
surname?: string | null | undefined;
|
|
58
60
|
code?: string | null | undefined;
|
|
59
61
|
phone?: string | null | undefined;
|
|
62
|
+
avatarUrl?: string | null | undefined;
|
|
60
63
|
isDeleted: boolean;
|
|
61
64
|
} | null | undefined;
|
|
62
65
|
assignees?: ({
|