@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
|
@@ -26,6 +26,9 @@ interface BuildAgentsMenuOptions {
|
|
|
26
26
|
assignableAis?: Ai[];
|
|
27
27
|
onAssignableAiSelect?: (aiId: string) => void;
|
|
28
28
|
onUnassigneeSelect?: () => void;
|
|
29
|
+
/** When false, Crumby is shown locked with an Upgrade CTA */
|
|
30
|
+
isCrumbyEnabled?: boolean;
|
|
31
|
+
onCrumbyUpgrade?: () => void;
|
|
29
32
|
t: any;
|
|
30
33
|
includeAllOption?: boolean;
|
|
31
34
|
onAllSelect?: () => void;
|
|
@@ -45,9 +48,13 @@ export declare function getLastMessage(messages: Maybe<Message[]> | undefined, f
|
|
|
45
48
|
export declare function hashStatuses(messages?: Maybe<Message[]> | null): string;
|
|
46
49
|
export declare function isOutside24HourWindow(message: Message | null | undefined): boolean;
|
|
47
50
|
export declare function formatSeconds(value: number): string;
|
|
51
|
+
type StartedTimeAgoTranslation = (key: string, options?: {
|
|
52
|
+
count?: number;
|
|
53
|
+
}) => string;
|
|
54
|
+
export declare function formatStartedTimeAgo(createdAt: string, t: StartedTimeAgoTranslation): string;
|
|
48
55
|
export declare const getMessageStatusIcon: (message: Message | null | undefined) => import("@emotion/react/jsx-runtime").JSX.Element | null;
|
|
49
56
|
export declare const getDisplayName: (clientData: ClientQuery['client'] | undefined) => string;
|
|
50
|
-
export declare const buildAgentsMenu: ({ agents, myAgent, selectedAgentId, selectedAiId, onAgentSelect, assignableAis, onAssignableAiSelect, onUnassigneeSelect, t, includeAllOption, onAllSelect, addSeparatorAtLast, counts, showAllAgents, }: BuildAgentsMenuOptions) => ActionItem[];
|
|
57
|
+
export declare const buildAgentsMenu: ({ agents, myAgent, selectedAgentId, selectedAiId, onAgentSelect, assignableAis, onAssignableAiSelect, onUnassigneeSelect, isCrumbyEnabled, onCrumbyUpgrade, t, includeAllOption, onAllSelect, addSeparatorAtLast, counts, showAllAgents, }: BuildAgentsMenuOptions) => ActionItem[];
|
|
51
58
|
export declare const buildLifeCycleMenu: ({ convStages, selectedStageId, onStageSelect, t, addSeparatorAtLast, }: BuildLifeCycleMenuOptions) => ActionItem[];
|
|
52
59
|
interface BuildTagsMenuOptions {
|
|
53
60
|
conversationTags: Tag[];
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
import { Ai } from '../../../graphql.autogenerated';
|
|
2
2
|
/** Stored name for the primary Crumby assistant record */
|
|
3
3
|
export declare const CRUMBY_AI_RECORD_NAME = "Crumby AI";
|
|
4
|
+
/** Placeholder id used when Crumby is shown as a locked upgrade option */
|
|
5
|
+
export declare const CRUMBY_UPGRADE_PLACEHOLDER_ID = "__crumby_upgrade__";
|
|
6
|
+
export declare const isCrumbyAi: (ai: Pick<Ai, 'name' | 'type'> | undefined | null) => boolean;
|
|
7
|
+
export declare const createCrumbyUpgradePlaceholder: () => Ai;
|
|
4
8
|
/** Primary Crumby assistant rows first, then remaining AIs by name */
|
|
5
9
|
export declare function sortInboxAssignableAis(ais: Ai[]): Ai[];
|
|
6
10
|
/**
|
|
7
11
|
* Workspace AIs users may assign or filter by in the inbox.
|
|
8
|
-
* Excludes internal assistants
|
|
12
|
+
* Excludes internal assistants. When Crumby is not plan-enabled, it is omitted
|
|
13
|
+
* from filters; assign menus inject a locked upgrade entry separately.
|
|
9
14
|
*/
|
|
10
15
|
export declare function getInboxAssignableAis(aiAgents: Ai[] | undefined, isCrumbyEnabled: boolean): Ai[];
|
|
16
|
+
/**
|
|
17
|
+
* Assign-menu list: always includes Crumby. When the feature is locked, uses an
|
|
18
|
+
* existing Crumby record if present, otherwise a non-assignable placeholder.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getInboxAssignableAisForMenu(aiAgents: Ai[] | undefined, isCrumbyEnabled: boolean, existingCrumby?: Ai | null): Ai[];
|
|
@@ -8,8 +8,18 @@ export declare const BCMainNavigation: {
|
|
|
8
8
|
action: string;
|
|
9
9
|
description: string;
|
|
10
10
|
tags: string[];
|
|
11
|
+
requiredPermissions: Permission[];
|
|
11
12
|
subMenu?: undefined;
|
|
13
|
+
} | {
|
|
14
|
+
label: string;
|
|
15
|
+
title: string;
|
|
16
|
+
icon: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
17
|
+
link: string;
|
|
18
|
+
action: string;
|
|
19
|
+
description: string;
|
|
20
|
+
tags: string[];
|
|
12
21
|
requiredPermissions?: undefined;
|
|
22
|
+
subMenu?: undefined;
|
|
13
23
|
} | {
|
|
14
24
|
label: string;
|
|
15
25
|
title: string;
|
|
@@ -38,16 +48,6 @@ export declare const BCMainNavigation: {
|
|
|
38
48
|
}[];
|
|
39
49
|
tags: string[];
|
|
40
50
|
requiredPermissions: Permission[];
|
|
41
|
-
} | {
|
|
42
|
-
label: string;
|
|
43
|
-
title: string;
|
|
44
|
-
icon: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
45
|
-
link: string;
|
|
46
|
-
action: string;
|
|
47
|
-
description: string;
|
|
48
|
-
tags: string[];
|
|
49
|
-
requiredPermissions: Permission[];
|
|
50
|
-
subMenu?: undefined;
|
|
51
51
|
})[];
|
|
52
52
|
leftBottomLinks: {
|
|
53
53
|
label: string;
|
|
@@ -1 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether the workspace has the paid AI features enabled: the AI tab (Playground,
|
|
3
|
+
* Sources), conversation assignment to Crumby, and the AI-specific onboarding steps.
|
|
4
|
+
* Gated by the plan's `aiEnabled` flag (or a feature-flag override).
|
|
5
|
+
*
|
|
6
|
+
* NOTE: This does NOT gate the Crumby assistant chat widget — that is available on
|
|
7
|
+
* all plans (including free) via `useCrumbyAssistantEnabled`.
|
|
8
|
+
*/
|
|
1
9
|
export declare const useCrumbyEnabled: () => boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Whether the Crumby assistant chat widget should be shown. The assistant is available
|
|
12
|
+
* on every plan, including free — unlike the paid AI features gated by `useCrumbyEnabled`.
|
|
13
|
+
*
|
|
14
|
+
* Returns a constant `true` for now (no rule). It is kept as a hook to act as the single
|
|
15
|
+
* seam for future gating — e.g. a kill switch (feature flag / PostHog), a whitelabel with
|
|
16
|
+
* no AI, or a backend "assistant enabled" flag — so only this hook changes, not every call
|
|
17
|
+
* site. It also keeps the call site readable and symmetric with `useCrumbyEnabled`.
|
|
18
|
+
*/
|
|
19
|
+
export declare const useCrumbyAssistantEnabled: () => boolean;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared upgrade CTA for Crumby when the plan/feature flag does not enable AI.
|
|
3
|
+
* Owners/admins go to the workspace upgrade page; others see a contact-admin dialog.
|
|
4
|
+
*/
|
|
5
|
+
export declare const useCrumbyUpgradeAction: () => {
|
|
6
|
+
isCrumbyEnabled: boolean;
|
|
7
|
+
canManageUpgrade: boolean;
|
|
8
|
+
requestCrumbyUpgrade: any;
|
|
9
|
+
CrumbyUpgradeDialog: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
10
|
+
};
|
|
@@ -62,5 +62,7 @@ export interface ResourceDefinition<T> {
|
|
|
62
62
|
unDeleteMutation?: Omit<BackendMutationDefinition<T>, 'fields'>;
|
|
63
63
|
archiveMutation?: Omit<BackendMutationDefinition<T>, 'fields'>;
|
|
64
64
|
unArchiveMutation?: Omit<BackendMutationDefinition<T>, 'fields'>;
|
|
65
|
+
blockMutation?: Omit<BackendMutationDefinition<T>, 'fields'>;
|
|
66
|
+
unBlockMutation?: Omit<BackendMutationDefinition<T>, 'fields'>;
|
|
65
67
|
client?: Apollo.ApolloClient<Apollo.NormalizedCacheObject>;
|
|
66
68
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable persistence for onboarding checklist data (state + dismissed flag).
|
|
3
|
+
*
|
|
4
|
+
* Backed by cookies on purpose: logout runs `auth.clearAllAppStorage()` which wipes
|
|
5
|
+
* localStorage/sessionStorage but NOT cookies, so progress and the "finished" flag
|
|
6
|
+
* survive a logout → login cycle (same browser).
|
|
7
|
+
*
|
|
8
|
+
* This is a temporary stand-in for a backend-owned onboarding record. When the backend
|
|
9
|
+
* returns the flag + progress, swap the implementation of `onboardingChecklistStore`
|
|
10
|
+
* (or its call sites) for the server-backed read/writes — the get/set/remove shape
|
|
11
|
+
* matches the localStorage util so the change stays local.
|
|
12
|
+
*/
|
|
13
|
+
/** Cookie-backed store mirroring the localStorage util's get/set/remove shape. */
|
|
14
|
+
export declare const onboardingChecklistStore: {
|
|
15
|
+
get(key: string): unknown;
|
|
16
|
+
set(key: string, value: unknown): void;
|
|
17
|
+
remove(key: string): void;
|
|
18
|
+
};
|
|
@@ -15,7 +15,8 @@ export declare function getOnboardingChecklistStorageKey(userId: string | number
|
|
|
15
15
|
/** Pre-workspace-scoping key: showcase_onboarding_checklist_{userId} */
|
|
16
16
|
export declare function getLegacyOnboardingChecklistStorageKey(userId: string | number): string;
|
|
17
17
|
/**
|
|
18
|
-
* Load checklist for user + workspace
|
|
18
|
+
* Load checklist for user + workspace from the durable (cookie) store. Migrates the older
|
|
19
|
+
* localStorage keys (scoped, legacy user-only, empty-workspace) into the cookie store once.
|
|
19
20
|
* Returns null when workspace context is not available.
|
|
20
21
|
*/
|
|
21
22
|
export declare function loadOnboardingChecklistState(userId: string | number, workspaceId?: string | number | null): OnboardingChecklistState | null;
|
|
@@ -25,6 +26,14 @@ export declare function loadOnboardingChecklistState(userId: string | number, wo
|
|
|
25
26
|
* first load and creates the checklist scoped to whichever workspace the user landed in.
|
|
26
27
|
*/
|
|
27
28
|
export declare function getOnboardingChecklistPendingKey(userId: string | number): string;
|
|
29
|
+
/**
|
|
30
|
+
* Persisted "user finished / dismissed onboarding for this workspace" marker.
|
|
31
|
+
* Unlike the checklist key (which is removed on finish), this survives so that a later
|
|
32
|
+
* logout → login does not recreate a fresh checklist for a workspace already onboarded.
|
|
33
|
+
*/
|
|
34
|
+
export declare function getOnboardingChecklistDismissedKey(userId: string | number, workspaceId?: string | number | null): string;
|
|
35
|
+
export declare function isOnboardingChecklistDismissed(userId: string | number, workspaceId?: string | number | null): boolean;
|
|
36
|
+
export declare function markOnboardingChecklistDismissed(userId: string | number, workspaceId?: string | number | null): void;
|
|
28
37
|
/** One-shot: open checklist popover after sign-in (session tab only). */
|
|
29
38
|
export declare const ONBOARDING_CHECKLIST_SESSION_AUTOPEN_KEY = "showcase_onboarding_checklist_session_autopen";
|
|
30
39
|
export declare function clearOnboardingChecklistSessionAutopen(): void;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { IntegrationWithSecrets } from '../../../../../graphql.autogenerated';
|
|
2
2
|
import { FBPage } from '../../../hooks/useFBPagesHook';
|
|
3
|
-
export declare function PagePickerPopup({ onClose, setInitialValues, pages, rtl, }: {
|
|
3
|
+
export declare function PagePickerPopup({ onClose, setInitialValues, pages, userAccessToken, rtl, }: {
|
|
4
4
|
onClose: () => void;
|
|
5
5
|
setInitialValues: (initialResource: Partial<IntegrationWithSecrets>) => void;
|
|
6
6
|
pages: FBPage[];
|
|
7
|
+
/** Short-lived Facebook user token; exchanged server-side for a long-lived page token. */
|
|
8
|
+
userAccessToken: string;
|
|
7
9
|
rtl?: boolean;
|
|
8
10
|
}): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type OnboardingStepStatus = 'complete' | 'active' | 'upcoming';
|
|
2
|
+
export type OnboardingStepKey = 'registration' | 'workspace' | 'checkout';
|
|
3
|
+
type OnboardingStepperProps = {
|
|
4
|
+
/** Status per step; defaults to registration complete, workspace active, checkout upcoming. */
|
|
5
|
+
statuses?: Partial<Record<OnboardingStepKey, OnboardingStepStatus>>;
|
|
6
|
+
};
|
|
7
|
+
export declare const OnboardingStepper: ({ statuses }: OnboardingStepperProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
8
|
+
export default OnboardingStepper;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
type SubscriptionNameProps = {
|
|
2
|
-
onSubmit: (companyName:
|
|
2
|
+
onSubmit: (companyName: string) => void;
|
|
3
3
|
};
|
|
4
4
|
export declare const SubscriptionName: (props: SubscriptionNameProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
5
5
|
export default SubscriptionName;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
type SubscriptionSuccessProps = {
|
|
2
|
-
|
|
2
|
+
/** Workspace that was created/paid for; activated before navigating to the inbox. */
|
|
3
|
+
workspaceId?: number;
|
|
4
|
+
/** When false, copy reflects activation without a payment (free plan). */
|
|
5
|
+
paid?: boolean;
|
|
3
6
|
};
|
|
4
|
-
export declare const SubscriptionSuccess: ({
|
|
7
|
+
export declare const SubscriptionSuccess: ({ workspaceId, paid }: SubscriptionSuccessProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
5
8
|
export default SubscriptionSuccess;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { OnboardingStepKey, OnboardingStepStatus } from './OnboardingStepper';
|
|
3
|
+
type WorkspaceStepLayoutProps = {
|
|
4
|
+
statuses?: Partial<Record<OnboardingStepKey, OnboardingStepStatus>>;
|
|
5
|
+
illustration: string;
|
|
6
|
+
title: string;
|
|
7
|
+
subtitle?: string;
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
};
|
|
10
|
+
export declare const WorkspaceStepLayout: ({ statuses, illustration, title, subtitle, children, }: WorkspaceStepLayoutProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
11
|
+
export default WorkspaceStepLayout;
|
|
@@ -10,6 +10,8 @@ type ShowcasePlansProps = {
|
|
|
10
10
|
selectingPlan?: boolean;
|
|
11
11
|
processing?: boolean;
|
|
12
12
|
loadingPlanType?: PlanType | null;
|
|
13
|
+
/** Force the Crumby AI plan toggle on (e.g. deep-link from upgrade CTA). */
|
|
14
|
+
defaultIncludeAi?: boolean;
|
|
13
15
|
};
|
|
14
|
-
export declare const ShowcasePlans: ({ onPlanPicked, disableFreePlan, currentPlanType, currentTerm, selectingPlan, processing, loadingPlanType, }: ShowcasePlansProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare const ShowcasePlans: ({ onPlanPicked, disableFreePlan, currentPlanType, currentTerm, selectingPlan, processing, loadingPlanType, defaultIncludeAi, }: ShowcasePlansProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
15
17
|
export default ShowcasePlans;
|
|
@@ -17,4 +17,4 @@ export type SwitcherProps = {
|
|
|
17
17
|
compact?: boolean;
|
|
18
18
|
workspaceLogo?: React.ReactNode;
|
|
19
19
|
};
|
|
20
|
-
export declare function Switcher({ items, title,
|
|
20
|
+
export declare function Switcher({ items, title, footerItems, width, name, addPlanWord, isLoading, plan, onDropdownStateChange, compact, workspaceLogo, }: SwitcherProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
@@ -3,6 +3,6 @@ export type Props = {
|
|
|
3
3
|
history: any;
|
|
4
4
|
router: any;
|
|
5
5
|
};
|
|
6
|
-
export declare const NewSubscription: ({ router
|
|
6
|
+
export declare const NewSubscription: ({ router }: Props) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
7
7
|
declare const _default: any;
|
|
8
8
|
export default _default;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PlanType } from '../../../graphql.billing.autogenerated';
|
|
2
|
+
/**
|
|
3
|
+
* Marker written right before redirecting to a hosted checkout (Polar/Stripe) from the
|
|
4
|
+
* new-workspace onboarding flow. Because the backend always returns hosted checkouts to
|
|
5
|
+
* `/billing/done`, the done page reads this per-tab marker to tell a new-workspace checkout
|
|
6
|
+
* apart from a normal upgrade, then routes the user back into the workspace stepper flow.
|
|
7
|
+
* It also remembers the plan so the failed screen can retry the same checkout.
|
|
8
|
+
*/
|
|
9
|
+
export declare const NEW_WORKSPACE_PENDING_CHECKOUT_KEY = "bc_new_workspace_pending_checkout";
|
|
10
|
+
export type PendingCheckout = {
|
|
11
|
+
workspaceId: number;
|
|
12
|
+
planType: PlanType;
|
|
13
|
+
};
|
|
14
|
+
export declare function storePendingCheckout(value: PendingCheckout): void;
|
|
15
|
+
export declare function readPendingCheckout(): PendingCheckout | null;
|
|
16
|
+
export declare function clearPendingCheckout(): void;
|
|
@@ -22,10 +22,19 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
|
|
|
22
22
|
auth: {
|
|
23
23
|
e_mail: string;
|
|
24
24
|
password: string;
|
|
25
|
+
signInTo: string;
|
|
26
|
+
signUpTo: string;
|
|
27
|
+
signUpSubtitle: string;
|
|
28
|
+
signUpGoogle: string;
|
|
29
|
+
signUpFacebook: string;
|
|
30
|
+
registerPanelTitle: string;
|
|
31
|
+
registerPanelDescription: string;
|
|
25
32
|
welcomeToBC: string;
|
|
33
|
+
welcomeBackDescription: string;
|
|
26
34
|
getStarted: string;
|
|
27
35
|
keepMeSignedIn: string;
|
|
28
36
|
forgetPassword: string;
|
|
37
|
+
or: string;
|
|
29
38
|
login: string;
|
|
30
39
|
register: string;
|
|
31
40
|
loginFailed: string;
|
|
@@ -162,6 +171,24 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
|
|
|
162
171
|
gravatarTooltip: string;
|
|
163
172
|
terms: string;
|
|
164
173
|
};
|
|
174
|
+
newWorkspaceFlow: {
|
|
175
|
+
steps: {
|
|
176
|
+
registration: string;
|
|
177
|
+
workspace: string;
|
|
178
|
+
checkout: string;
|
|
179
|
+
};
|
|
180
|
+
createTitle: string;
|
|
181
|
+
createSubtitle: string;
|
|
182
|
+
namePlaceholder: string;
|
|
183
|
+
createButton: string;
|
|
184
|
+
successTitle: string;
|
|
185
|
+
successSubtitle: string;
|
|
186
|
+
successSubtitleFree: string;
|
|
187
|
+
goToInbox: string;
|
|
188
|
+
failedTitle: string;
|
|
189
|
+
failedSubtitle: string;
|
|
190
|
+
tryAgain: string;
|
|
191
|
+
};
|
|
165
192
|
subscriptions: {
|
|
166
193
|
planName: string;
|
|
167
194
|
subscriptions: string;
|
|
@@ -421,6 +448,9 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
|
|
|
421
448
|
emptyMessagePreviewTitle: string;
|
|
422
449
|
emptyMessagePreviewSubtitle: string;
|
|
423
450
|
templateSelection: string;
|
|
451
|
+
templateLanguageMissing: string;
|
|
452
|
+
messageParametersMissing: string;
|
|
453
|
+
completeRequiredFields: string;
|
|
424
454
|
messageParameters: string;
|
|
425
455
|
analysis: {
|
|
426
456
|
deliveryRate: string;
|
|
@@ -448,6 +478,14 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
|
|
|
448
478
|
openBroadcastReport: string;
|
|
449
479
|
messageSentAt: string;
|
|
450
480
|
template: string;
|
|
481
|
+
retryFailed: string;
|
|
482
|
+
retryFailedDialogTitle: string;
|
|
483
|
+
retryFailedDialogDescription: string;
|
|
484
|
+
retryFailedConfirm: string;
|
|
485
|
+
retryFailedSuccessTitle: string;
|
|
486
|
+
retryFailedSuccessDescription: string;
|
|
487
|
+
retryFailedErrorTitle: string;
|
|
488
|
+
retryFailedErrorDescription: string;
|
|
451
489
|
};
|
|
452
490
|
recipientsReport: {
|
|
453
491
|
pageTitle: string;
|
|
@@ -456,6 +494,7 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
|
|
|
456
494
|
templateNameFilter: string;
|
|
457
495
|
noRowsToExport: string;
|
|
458
496
|
};
|
|
497
|
+
launch: string;
|
|
459
498
|
};
|
|
460
499
|
resources: {
|
|
461
500
|
loginToFB: string;
|
|
@@ -524,8 +563,10 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
|
|
|
524
563
|
modify: string;
|
|
525
564
|
removeItem: string;
|
|
526
565
|
archivingResource: string;
|
|
566
|
+
blockingResource: string;
|
|
527
567
|
removingConfirmation: string;
|
|
528
568
|
archivingConfirmation: string;
|
|
569
|
+
blockingConfirmation: string;
|
|
529
570
|
launchingConfirmation: string;
|
|
530
571
|
name: string;
|
|
531
572
|
surname: string;
|
|
@@ -566,6 +607,7 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
|
|
|
566
607
|
messageUpdated: string;
|
|
567
608
|
endingConv: string;
|
|
568
609
|
newConv: string;
|
|
610
|
+
conversationAssigned: string;
|
|
569
611
|
newClient: string;
|
|
570
612
|
clientUpdated: string;
|
|
571
613
|
broadcast: string;
|
|
@@ -651,6 +693,23 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
|
|
|
651
693
|
selectAll: string;
|
|
652
694
|
clearAll: string;
|
|
653
695
|
reports: string;
|
|
696
|
+
export: {
|
|
697
|
+
csv: string;
|
|
698
|
+
columns: {
|
|
699
|
+
date: string;
|
|
700
|
+
openedConversations: string;
|
|
701
|
+
conversations: string;
|
|
702
|
+
messagesReceived: string;
|
|
703
|
+
avgResponseTime: string;
|
|
704
|
+
successful: string;
|
|
705
|
+
totalRecipients: string;
|
|
706
|
+
successfulCampaigns: string;
|
|
707
|
+
failedCampaigns: string;
|
|
708
|
+
status: string;
|
|
709
|
+
count: string;
|
|
710
|
+
percentage: string;
|
|
711
|
+
};
|
|
712
|
+
};
|
|
654
713
|
broadcast: {
|
|
655
714
|
title: string;
|
|
656
715
|
period: {
|
|
@@ -786,6 +845,8 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
|
|
|
786
845
|
delete: string;
|
|
787
846
|
submit: string;
|
|
788
847
|
archive: string;
|
|
848
|
+
block: string;
|
|
849
|
+
unblock: string;
|
|
789
850
|
close: string;
|
|
790
851
|
date: string;
|
|
791
852
|
time: string;
|
|
@@ -891,13 +952,19 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
|
|
|
891
952
|
contactDeleteTitle: string;
|
|
892
953
|
contactArchiveTitle: string;
|
|
893
954
|
contactUnarchiveTitle: string;
|
|
955
|
+
contactBlockTitle: string;
|
|
956
|
+
contactUnblockTitle: string;
|
|
894
957
|
unarchive: string;
|
|
895
958
|
exportingClients: string;
|
|
896
959
|
exportCompleted: string;
|
|
897
960
|
exportFailed: string;
|
|
898
961
|
noContactsToExport: string;
|
|
899
962
|
selectedLifecycle: string;
|
|
963
|
+
active: string;
|
|
900
964
|
archived: string;
|
|
965
|
+
blacklisted: string;
|
|
966
|
+
contactStatus: string;
|
|
967
|
+
blocked: string;
|
|
901
968
|
};
|
|
902
969
|
management: {
|
|
903
970
|
title: string;
|
|
@@ -1102,6 +1169,10 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
|
|
|
1102
1169
|
customExternalId: string;
|
|
1103
1170
|
customExternalIdPlaceholder: string;
|
|
1104
1171
|
gupshupChannelDescription: string;
|
|
1172
|
+
gupshupPartnerId: string;
|
|
1173
|
+
gupshupPartnerIdNote: string;
|
|
1174
|
+
gupshupPartnerIdCopied: string;
|
|
1175
|
+
gupshupPartnerIdCopyFailed: string;
|
|
1105
1176
|
gupshupDisplayPhoneNumber: string;
|
|
1106
1177
|
gupshupDisplayPhoneNumberPlaceholder: string;
|
|
1107
1178
|
gupshupAccessToken: string;
|
|
@@ -1139,6 +1210,11 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
|
|
|
1139
1210
|
test_numbers: string;
|
|
1140
1211
|
suggested_qs: string;
|
|
1141
1212
|
crumby_settings: string;
|
|
1213
|
+
upgrade: {
|
|
1214
|
+
cta: string;
|
|
1215
|
+
contactAdminTitle: string;
|
|
1216
|
+
contactAdminDescription: string;
|
|
1217
|
+
};
|
|
1142
1218
|
playground: {
|
|
1143
1219
|
welcomeMessage: string;
|
|
1144
1220
|
askTheAIToAnalyzeYourData: string;
|
|
@@ -1335,6 +1411,8 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
|
|
|
1335
1411
|
delete_confirmation: string;
|
|
1336
1412
|
archive_confirmation: string;
|
|
1337
1413
|
unarchive_confirmation: string;
|
|
1414
|
+
block_confirmation: string;
|
|
1415
|
+
unblock_confirmation: string;
|
|
1338
1416
|
};
|
|
1339
1417
|
send: string;
|
|
1340
1418
|
}>, current?: string) => void;
|