@bcrumbs.net/inbox 0.0.51 → 0.0.52
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/{cb9c022b3cf80e0f.svg → 2998ffe42c3436c0.svg} +43 -43
- package/{594c01a9720e0657.svg → 396ba1d86a9997b1.svg} +42 -42
- package/assets/ar/inbox.json +256 -246
- package/assets/en/inbox.json +258 -248
- package/index.cjs.d.ts +1 -1
- package/index.cjs.js +11726 -919
- package/index.esm.d.ts +1 -1
- package/index.esm.js +11727 -920
- package/package.json +4 -4
- package/src/app/ai/components/Crumby/index.d.ts +2 -0
- package/src/app/ai/components/playground/Thread.d.ts +5 -1
- package/src/app/ai/components/playground/ThreadWelcome.d.ts +4 -1
- package/src/app/ai/components/playground/TooltipIconButton.d.ts +1 -1
- package/src/app/ai/pages/AiPreferencesPrompts.d.ts +2 -0
- package/src/app/auth/pages/Login.d.ts +2 -12
- package/src/app/auth/pages/Register.d.ts +2 -13
- package/src/app/auth/redux/actions/registerAction.d.ts +1 -1
- package/src/app/auth/redux/auth.types.d.ts +1 -1
- package/src/app/billing/components/NotAccessible.d.ts +10 -0
- package/src/app/billing/components/Timeline.d.ts +20 -0
- package/src/app/billing/components/checkout/AddNewPaymentCard.d.ts +6 -0
- package/src/app/billing/components/checkout/CheckoutSummary.d.ts +20 -0
- package/src/app/billing/components/checkout/ExceedPaymentUpdateTriesModal.d.ts +8 -0
- package/src/app/billing/components/checkout/ExistingCardPayment.d.ts +10 -0
- package/src/app/billing/components/checkout/PaymentForm.d.ts +11 -0
- package/src/app/billing/components/checkout/PaymentFormExp.d.ts +9 -0
- package/src/app/billing/components/checkout/PaymentMethod.d.ts +8 -0
- package/src/app/billing/components/checkout/PaymentMethodCard.d.ts +9 -0
- package/src/app/billing/components/checkout/PaywithCredits.d.ts +9 -0
- package/src/app/billing/components/invoices/BCLogo.d.ts +5 -0
- package/src/app/billing/components/invoices/Invoice.d.ts +5 -0
- package/src/app/billing/components/planStyles.d.ts +9 -0
- package/src/app/billing/components/styles.d.ts +21 -0
- package/src/app/billing/components/subscription/PlanDetail.d.ts +11 -0
- package/src/app/billing/components/subscription/SubscriptionPausedWarning.d.ts +3 -0
- package/src/app/billing/components/transactions/TransactionHistoryTable.d.ts +15 -0
- package/src/app/billing/context/SubscriptionContext.d.ts +5 -0
- package/src/app/billing/hooks/useGetPaidToday.d.ts +9 -0
- package/src/app/billing/hooks/usePendingPayments.d.ts +51 -0
- package/src/app/billing/hooks/useSetupPayment.d.ts +15 -0
- package/src/app/billing/hooks/useSetupPaymentMethod.d.ts +12 -0
- package/src/app/billing/pages/checkout.d.ts +2 -0
- package/src/app/billing/pages/done.d.ts +1 -0
- package/src/app/billing/pages/invoice.d.ts +1 -0
- package/src/app/billing/pages/invoices.d.ts +2 -0
- package/src/app/billing/pages/payment.d.ts +1 -0
- package/src/app/billing/utils/getStripe.d.ts +3 -0
- package/src/app/billing/utils/openArticleModal.d.ts +1 -0
- package/src/app/billing/utils/paymentProvider.d.ts +3 -0
- package/src/app/billing/utils/stripeUtils.d.ts +2 -0
- package/src/app/broadcast/components/BroadcastAnalysisReciepientsHeader.d.ts +6 -1
- package/src/app/broadcast/components/BroadcastAnalysisReciepientsTable.d.ts +5 -1
- package/src/app/broadcast/components/BroadcastInfoHeader.d.ts +2 -1
- package/src/app/broadcast/components/BroadcastTargetingComplianceNotice.d.ts +2 -0
- package/src/app/broadcast/components/WorkspaceBroadcastAnalysisRecipients.d.ts +7 -0
- package/src/app/broadcast/hooks/useExportWorkspaceBroadcastDelivery.d.ts +6 -0
- package/src/app/broadcast/pages/WorkspaceBroadcastDeliveryReportPage.d.ts +2 -0
- package/src/app/broadcast/utils/helper.d.ts +4 -0
- package/src/app/dashboard/components/AgentCard.d.ts +11 -0
- package/src/app/dashboard/components/AgentPerformanceCard.d.ts +9 -0
- package/src/app/dashboard/components/AgentsCard.d.ts +9 -0
- package/src/app/dashboard/components/AgentsCardSkeleton.d.ts +2 -0
- package/src/app/dashboard/components/BroadcastAnalyticsCard.d.ts +10 -0
- package/src/app/dashboard/components/BroadcastCampaignProgressCard.d.ts +10 -0
- package/src/app/dashboard/components/BroadcastDashboard.d.ts +6 -0
- package/src/app/dashboard/components/BroadcastDashboardStatsCards.d.ts +14 -0
- package/src/app/dashboard/components/BroadcastRecipientsCard.d.ts +8 -0
- package/src/app/dashboard/components/BroadcastStatusDistributionCard.d.ts +6 -0
- package/src/app/dashboard/components/ConversationAnalyticsCard.d.ts +11 -0
- package/src/app/dashboard/components/DashboardSections.d.ts +24 -0
- package/src/app/dashboard/components/DashboardStatsCards.d.ts +10 -0
- package/src/app/dashboard/components/InboxDashboard.d.ts +10 -0
- package/src/app/dashboard/components/OpenedChatsCard.d.ts +8 -0
- package/src/app/dashboard/pages/DashboardNewPage.d.ts +2 -0
- package/src/app/dashboard/utils/buildBroadcastReportOverviewAnalytics.d.ts +17 -0
- package/src/app/dashboard/utils/buildRecipientsAnalytics.d.ts +12 -0
- package/src/app/dashboard/utils/dateHelpers.d.ts +7 -0
- package/src/app/generic/components/HeaderImageInput.d.ts +8 -0
- package/src/app/generic/components/PhoneNumberInput.d.ts +13 -0
- package/src/app/generic/components/TemplateParameterInputs.d.ts +2 -1
- package/src/app/generic/components/ToggleSetting.d.ts +3 -2
- package/src/app/generic/hooks/useGetProviderIcon.d.ts +2 -1
- package/src/app/inbox/components/Chat/ChatContent.d.ts +2 -1
- package/src/app/inbox/components/NewConvList/FilterDrawer.d.ts +18 -0
- package/src/app/inbox/components/NewConvList/HeaderSection.d.ts +4 -1
- package/src/app/inbox/components/NewConvList/index.d.ts +6 -2
- package/src/app/inbox/hooks/useConversationsPerodicFetch.d.ts +10 -0
- package/src/app/inbox/hooks/useNewSortedEvents.d.ts +1 -1
- package/src/app/inbox/utils/convs.d.ts +10 -1
- package/src/app/layout/components/CommandPalette.d.ts +16 -0
- package/src/app/layout/components/Header.d.ts +3 -1
- package/src/app/layout/constants/index.d.ts +24 -2
- package/src/app/layout/constants/subMenu.d.ts +22 -2
- package/src/app/layout/hooks/useImportContactsEnabled.d.ts +1 -0
- package/src/app/managemnet/components/CreateCrmWebhook.d.ts +6 -0
- package/src/app/managemnet/components/channels/AddChannelDialog.d.ts +10 -0
- package/src/app/managemnet/components/channels/ChannelItem.d.ts +11 -0
- package/src/app/managemnet/components/channels/ChannelTypeCard.d.ts +15 -0
- package/src/app/managemnet/components/channels/EditChannelDialog.d.ts +11 -0
- package/src/app/managemnet/pages/crmIntegrations/index.d.ts +2 -0
- package/src/app/onboarding/components/OnboardingChecklistGuideContent.d.ts +8 -0
- package/src/app/onboarding/components/OnboardingChecklistWidget.d.ts +2 -0
- package/src/app/onboarding/utils/onboardingChecklistStorage.d.ts +39 -0
- package/src/app/resources/components/Integrations/ChannelDialogLayout.d.ts +24 -0
- package/src/app/resources/components/Integrations/Custom/index.d.ts +7 -0
- package/src/app/resources/components/Integrations/Facebook/index.d.ts +4 -1
- package/src/app/resources/components/Integrations/Instagram/index.d.ts +4 -1
- package/src/app/resources/components/Integrations/RenderCorrectIntegrationFlow.d.ts +11 -2
- package/src/app/resources/components/Integrations/Telegram/index.d.ts +4 -1
- package/src/app/resources/components/Integrations/WaGupshup/index.d.ts +7 -0
- package/src/app/resources/components/Integrations/WhatsApp/index.d.ts +4 -1
- package/src/app/subscriptions/components/Plans/PlanCard.d.ts +3 -3
- package/src/app/subscriptions/components/Plans/ShowcasePlans.d.ts +5 -2
- package/src/app/subscriptions/components/SubscriptionSettings/SubscriptionHeader.d.ts +2 -1
- package/src/app/subscriptions/components/SubscriptionSettings/SubscriptionProfile.d.ts +1 -0
- package/src/app/subscriptions/components/SubscriptionSettings/SubscriptionUsers.d.ts +0 -1
- package/src/app/subscriptions/constants/Plans.d.ts +9 -6
- package/src/app/subscriptions/pages/Upgrade.d.ts +6 -9
- package/src/assets/locales/translations.d.ts +292 -5
- package/src/config/azure.d.ts +2 -0
- package/src/environments/types.d.ts +3 -0
- package/src/graphql.autogenerated.d.ts +1649 -1234
- package/src/graphql.billing.autogenerated.d.ts +680 -7
- package/src/main.d.ts +2 -0
- package/src/utils/formatFailureReason.d.ts +5 -0
- package/src/utils/globalHelper.d.ts +3 -0
- package/src/utils/localStorage.d.ts +2 -0
- package/src/utils/textUtils.d.ts +3 -1
- package/src/app/resources/components/Integrations/Facebook/LoginPopup.d.ts +0 -4
- package/src/app/resources/components/Integrations/Instagram/LoginPopup.d.ts +0 -4
- package/src/app/resources/components/Integrations/WhatsApp/LoginPopup.d.ts +0 -4
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface BroadcastDashboardStatsCardsProps {
|
|
3
|
+
loading?: boolean;
|
|
4
|
+
/** Denominator-style total from the report (success + failed). */
|
|
5
|
+
totalMessages?: number;
|
|
6
|
+
deliveredSuccessfully?: string | number;
|
|
7
|
+
totalOpened?: string | number;
|
|
8
|
+
/** Share of messages sent (percentage string/number). */
|
|
9
|
+
sentPercentage?: string | number;
|
|
10
|
+
/** Raw sent count for the “Sent messages” subtitle. */
|
|
11
|
+
sentCount?: number;
|
|
12
|
+
}
|
|
13
|
+
declare const _default: React.MemoExoticComponent<({ loading, totalMessages, deliveredSuccessfully, totalOpened, sentPercentage, sentCount, }: BroadcastDashboardStatsCardsProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
14
|
+
export default _default;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BroadcastReportFragment } from '../../../graphql.autogenerated';
|
|
2
|
+
interface BroadcastRecipientsCardProps {
|
|
3
|
+
startDate: string;
|
|
4
|
+
endDate: string;
|
|
5
|
+
reportNodes?: BroadcastReportFragment[];
|
|
6
|
+
}
|
|
7
|
+
declare const BroadcastRecipientsCard: ({ startDate, endDate, reportNodes }: BroadcastRecipientsCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
8
|
+
export default BroadcastRecipientsCard;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
interface BroadcastStatusDistributionCardProps {
|
|
2
|
+
startDate: string;
|
|
3
|
+
endDate: string;
|
|
4
|
+
}
|
|
5
|
+
declare const BroadcastStatusDistributionCard: ({ startDate, endDate }: BroadcastStatusDistributionCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
6
|
+
export default BroadcastStatusDistributionCard;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface ReportNode {
|
|
2
|
+
createdAt: string;
|
|
3
|
+
conversationCount?: number | null;
|
|
4
|
+
}
|
|
5
|
+
interface ConversationAnalyticsCardProps {
|
|
6
|
+
reportNodes: ReportNode[];
|
|
7
|
+
startDate: string;
|
|
8
|
+
endDate: string;
|
|
9
|
+
}
|
|
10
|
+
declare const ConversationAnalyticsCard: ({ reportNodes, startDate, endDate }: ConversationAnalyticsCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
11
|
+
export default ConversationAnalyticsCard;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Agent, AgentsReportQuery, ConvsReportQuery, Conversation } from '../../../graphql.autogenerated';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
type AgentReportNode = NonNullable<AgentsReportQuery['agentsReport']['nodes']>[number];
|
|
4
|
+
type ConvReportNode = NonNullable<ConvsReportQuery['convsReport']['nodes']>[number];
|
|
5
|
+
type ReportNode = AgentReportNode | ConvReportNode;
|
|
6
|
+
interface DashboardSectionsProps {
|
|
7
|
+
agentsData?: Agent[];
|
|
8
|
+
allAgentsData?: Agent[];
|
|
9
|
+
agentsReportData?: AgentReportNode[];
|
|
10
|
+
agentsLoading?: boolean;
|
|
11
|
+
agentsReportLoading?: boolean;
|
|
12
|
+
totalMessages?: number;
|
|
13
|
+
convsLoading?: boolean;
|
|
14
|
+
integrationId?: string;
|
|
15
|
+
agentIds?: string[];
|
|
16
|
+
assignedConversations?: number;
|
|
17
|
+
unassignedConversations?: number;
|
|
18
|
+
liveConvs?: Conversation[] | null;
|
|
19
|
+
startDate: string;
|
|
20
|
+
endDate: string;
|
|
21
|
+
reportNodes: ReportNode[];
|
|
22
|
+
}
|
|
23
|
+
declare const _default: React.MemoExoticComponent<({ agentsData, allAgentsData, agentsReportData, agentsLoading, agentsReportLoading, totalMessages, convsLoading, integrationId, agentIds, assignedConversations, unassignedConversations, liveConvs, startDate, endDate, reportNodes, }: DashboardSectionsProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
24
|
+
export default _default;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface DashboardStatsCardsProps {
|
|
3
|
+
totalConversations?: number | string;
|
|
4
|
+
avgResponseTime?: number | string;
|
|
5
|
+
newConversations?: number | string;
|
|
6
|
+
avgChatTime?: number | string;
|
|
7
|
+
loading?: boolean;
|
|
8
|
+
}
|
|
9
|
+
declare const _default: React.MemoExoticComponent<({ totalConversations, avgResponseTime, newConversations, avgChatTime, loading, }: DashboardStatsCardsProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Agent } from '../../../graphql.autogenerated';
|
|
2
|
+
export interface InboxDashboardProps {
|
|
3
|
+
selectedChannel: string | undefined;
|
|
4
|
+
selectedPeriod: string;
|
|
5
|
+
selectedAgents: string[];
|
|
6
|
+
agentsData?: Agent[];
|
|
7
|
+
agentsLoading?: boolean;
|
|
8
|
+
}
|
|
9
|
+
declare const InboxDashboard: ({ selectedChannel, selectedPeriod, selectedAgents, agentsData, agentsLoading, }: InboxDashboardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
10
|
+
export default InboxDashboard;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface AllChatsCardProps {
|
|
2
|
+
totalMessages?: number;
|
|
3
|
+
assignedConversations?: number;
|
|
4
|
+
unassignedConversations?: number;
|
|
5
|
+
loading?: boolean;
|
|
6
|
+
}
|
|
7
|
+
declare const OpenedChatsCard: ({ totalMessages, assignedConversations, unassignedConversations, loading, }: AllChatsCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
8
|
+
export default OpenedChatsCard;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NewBarChartDataItem } from '@bcrumbs.net/bc-ui';
|
|
2
|
+
import { BroadcastReportFragment } from '../../../graphql.autogenerated';
|
|
3
|
+
export interface BroadcastReportOverviewAnalytics {
|
|
4
|
+
completed: number;
|
|
5
|
+
failed: number;
|
|
6
|
+
draft: number;
|
|
7
|
+
inProgress: number;
|
|
8
|
+
scheduled: number;
|
|
9
|
+
total: number;
|
|
10
|
+
completedChange: number;
|
|
11
|
+
failedChange: number;
|
|
12
|
+
dailyBars: NewBarChartDataItem[];
|
|
13
|
+
}
|
|
14
|
+
export interface BuildBroadcastReportOverviewOptions {
|
|
15
|
+
integrationId?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function buildBroadcastReportOverviewAnalytics(reportNodes: BroadcastReportFragment[], startDate: string, endDate: string, options?: BuildBroadcastReportOverviewOptions): BroadcastReportOverviewAnalytics;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { NewBarChartDataItem } from '@bcrumbs.net/bc-ui';
|
|
2
|
+
import { BroadcastReportFragment } from '../../../graphql.autogenerated';
|
|
3
|
+
export interface BroadcastRecipientsAnalytics {
|
|
4
|
+
totalRecipients: number;
|
|
5
|
+
totalSuccessfulRecipients: number;
|
|
6
|
+
totalFailedRecipients: number;
|
|
7
|
+
successRate: number;
|
|
8
|
+
successRateChange: number;
|
|
9
|
+
barData: NewBarChartDataItem[];
|
|
10
|
+
}
|
|
11
|
+
export declare function buildRecipientsAnalytics(reportNodes: BroadcastReportFragment[], startDate: string, endDate: string): BroadcastRecipientsAnalytics;
|
|
12
|
+
export declare function successRateDeltaTone(delta: number): 'positive' | 'negative' | 'neutral';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Label for a full calendar month N months before the current month (e.g. Feb, Jan). Adds year when not the current year. */
|
|
2
|
+
export declare const getCalendarMonthMonthsAgoLabel: (monthsBack: number, locale?: string) => string;
|
|
3
|
+
export declare const getDateRange: (period?: string) => {
|
|
4
|
+
startDate?: string;
|
|
5
|
+
endDate?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const formatTime: (seconds: number) => string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type HeaderImageInputProps = {
|
|
3
|
+
value: string;
|
|
4
|
+
onChange: (value: string) => void;
|
|
5
|
+
hint?: string;
|
|
6
|
+
};
|
|
7
|
+
declare const _default: React.MemoExoticComponent<({ value, onChange, hint }: HeaderImageInputProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Country } from 'react-phone-number-input';
|
|
2
|
+
export interface PhoneNumberInputProps {
|
|
3
|
+
value?: string;
|
|
4
|
+
onChange: (value?: string) => void;
|
|
5
|
+
defaultCountry?: Country;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
rtl?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
callingCodeOnly?: boolean;
|
|
11
|
+
}
|
|
12
|
+
declare const PhoneNumberInput: ({ value, onChange, defaultCountry, placeholder, disabled, rtl, className, callingCodeOnly, }: PhoneNumberInputProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
13
|
+
export default PhoneNumberInput;
|
|
@@ -4,6 +4,7 @@ interface TemplateParameterInputsProps {
|
|
|
4
4
|
parameterValues: Record<string, string>;
|
|
5
5
|
onParameterChange: (key: string, value: string) => void;
|
|
6
6
|
loading?: boolean;
|
|
7
|
+
context?: 'broadcast' | 'inbox';
|
|
7
8
|
}
|
|
8
|
-
declare const _default: React.MemoExoticComponent<({ parameters, parameterValues, onParameterChange, loading, }: TemplateParameterInputsProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
9
|
+
declare const _default: React.MemoExoticComponent<({ parameters, parameterValues, onParameterChange, loading, context, }: TemplateParameterInputsProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
9
10
|
export default _default;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
interface ToggleSettingProps {
|
|
2
|
-
label
|
|
2
|
+
label?: string;
|
|
3
3
|
checked: boolean;
|
|
4
4
|
onCheckedChange: (checked: boolean) => void;
|
|
5
5
|
description?: string;
|
|
6
|
+
descriptionSide?: boolean;
|
|
6
7
|
disabled?: boolean;
|
|
7
8
|
}
|
|
8
|
-
declare const ToggleSetting: ({ label, checked, onCheckedChange, description, disabled }: ToggleSettingProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
9
|
+
declare const ToggleSetting: ({ label, checked, onCheckedChange, description, descriptionSide, disabled, }: ToggleSettingProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
9
10
|
export default ToggleSetting;
|
|
@@ -23,6 +23,7 @@ interface ChatContentProps {
|
|
|
23
23
|
} | null;
|
|
24
24
|
onCancelReplyMessage: () => void;
|
|
25
25
|
errorMessage: string;
|
|
26
|
+
statusFailureMessage: string;
|
|
26
27
|
logo?: string;
|
|
27
28
|
conversationId?: string;
|
|
28
29
|
/** Called when user clicks "Message" on a contact message card */
|
|
@@ -30,5 +31,5 @@ interface ChatContentProps {
|
|
|
30
31
|
/** Called when user clicks "Add Contact" on a contact message card */
|
|
31
32
|
onContactAddContact?: (contact: ContactMessagePayload) => void;
|
|
32
33
|
}
|
|
33
|
-
declare const ChatContent: ({ messages, olderMessages, msgsLoading, canContribute, onConvEnd, sendMessage, loadOlderMessages, agentsIdsAvatarsMap, noteMode, onNoteSend, onCloseNoteMode, onAddNoteClick, searchPattern, searchMatchNo, onSearchMatchCount, onMessageReply, replyMessage, onCancelReplyMessage, errorMessage, logo, conversationId, onContactMessage, onContactAddContact, }: ChatContentProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
34
|
+
declare const ChatContent: ({ messages, olderMessages, msgsLoading, canContribute, onConvEnd, sendMessage, loadOlderMessages, agentsIdsAvatarsMap, noteMode, onNoteSend, onCloseNoteMode, onAddNoteClick, searchPattern, searchMatchNo, onSearchMatchCount, onMessageReply, replyMessage, onCancelReplyMessage, errorMessage, statusFailureMessage, logo, conversationId, onContactMessage, onContactAddContact, }: ChatContentProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
34
35
|
export default ChatContent;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Agent, Ai, Conversation, Integration, Tag } from '../../../../graphql.autogenerated';
|
|
2
|
+
import { ConvsFilters } from '../../utils/convs';
|
|
3
|
+
interface FilterDrawerProps {
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
onClose: () => void;
|
|
6
|
+
filters: ConvsFilters;
|
|
7
|
+
onFiltersChange: (filters: ConvsFilters) => void;
|
|
8
|
+
agents: Agent[];
|
|
9
|
+
convStages: Tag[];
|
|
10
|
+
integrations: Integration[];
|
|
11
|
+
myAgent: Agent | undefined;
|
|
12
|
+
crumbyAi: Ai | undefined;
|
|
13
|
+
isCrumbyEnabled: boolean;
|
|
14
|
+
rtl: boolean;
|
|
15
|
+
conversations: Conversation[];
|
|
16
|
+
}
|
|
17
|
+
declare const FilterDrawer: ({ isOpen, onClose, filters, onFiltersChange, agents, convStages, integrations, myAgent, crumbyAi, isCrumbyEnabled, rtl, conversations, }: FilterDrawerProps) => import("@emotion/react/jsx-runtime").JSX.Element | null;
|
|
18
|
+
export default FilterDrawer;
|
|
@@ -11,6 +11,9 @@ interface HeaderSectionProps {
|
|
|
11
11
|
onFiltersChange: (filters: ConvsFilters) => void;
|
|
12
12
|
setShowStartConv: (show: boolean) => void;
|
|
13
13
|
crumbyAi?: Ai;
|
|
14
|
+
isTestVariant?: boolean;
|
|
15
|
+
isDrawerOpen?: boolean;
|
|
16
|
+
onFilterDrawerOpen?: () => void;
|
|
14
17
|
}
|
|
15
|
-
declare const HeaderSection: ({ agentsMenu, lifeCycleMenu, filters, agents, convStages, myAgent, onFiltersChange, setShowStartConv, crumbyAi, }: HeaderSectionProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
18
|
+
declare const HeaderSection: ({ agentsMenu, lifeCycleMenu, filters, agents, convStages, myAgent, onFiltersChange, setShowStartConv, crumbyAi, isTestVariant, isDrawerOpen, onFilterDrawerOpen, }: HeaderSectionProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
16
19
|
export default HeaderSection;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RefObject } from 'react';
|
|
2
2
|
import { ConvsFilters } from '../../utils/convs';
|
|
3
|
-
import { Agent, Ai, Conversation, Tag } from '../../../../graphql.autogenerated';
|
|
3
|
+
import { Agent, Ai, Conversation, Integration, Tag } from '../../../../graphql.autogenerated';
|
|
4
4
|
interface NewConvListProps {
|
|
5
5
|
agents: Agent[];
|
|
6
6
|
convStages: Tag[];
|
|
@@ -13,7 +13,11 @@ interface NewConvListProps {
|
|
|
13
13
|
onFiltersChange: (filters: ConvsFilters) => void;
|
|
14
14
|
setShowStartConv: (show: boolean) => void;
|
|
15
15
|
aiAgents: Ai[];
|
|
16
|
+
integrations: Integration[];
|
|
16
17
|
scrollContainerRef?: RefObject<HTMLDivElement>;
|
|
18
|
+
isTestVariant?: boolean;
|
|
19
|
+
isDrawerOpen?: boolean;
|
|
20
|
+
onFilterDrawerOpen?: () => void;
|
|
17
21
|
}
|
|
18
|
-
declare const NewConvList: ({ agents, convStages, convs, loading, selectedConvId, convClicked, onConvEnd, filters, onFiltersChange, setShowStartConv, aiAgents, scrollContainerRef, }: NewConvListProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
22
|
+
declare const NewConvList: ({ agents, convStages, convs, loading, selectedConvId, convClicked, onConvEnd, filters, onFiltersChange, setShowStartConv, aiAgents, integrations, scrollContainerRef, isTestVariant, isDrawerOpen, onFilterDrawerOpen, }: NewConvListProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
19
23
|
export default NewConvList;
|
|
@@ -19,8 +19,18 @@ declare function useConversationsPeriodicFetch(selectedConvId?: string, onSelect
|
|
|
19
19
|
assigneeId?: string | null | undefined;
|
|
20
20
|
aiId?: string | null | undefined;
|
|
21
21
|
aiAssigneed?: boolean | null | undefined;
|
|
22
|
+
ratingFlowInProgress?: boolean | null | undefined;
|
|
22
23
|
broadcastId?: string | null | undefined;
|
|
23
24
|
broadcastName?: string | null | undefined;
|
|
25
|
+
integrationSwitches?: {
|
|
26
|
+
__typename?: "ConvIntegrationSwitch" | undefined;
|
|
27
|
+
fromIntegrationId: string;
|
|
28
|
+
fromIntegrationType: import("../../../graphql.autogenerated").IntegrationType;
|
|
29
|
+
toIntegrationId: string;
|
|
30
|
+
toIntegrationType: import("../../../graphql.autogenerated").IntegrationType;
|
|
31
|
+
switchedAt: any;
|
|
32
|
+
switchedBy?: string | null | undefined;
|
|
33
|
+
}[] | null | undefined;
|
|
24
34
|
messages?: {
|
|
25
35
|
__typename?: "Message" | undefined;
|
|
26
36
|
messageId: string;
|
|
@@ -7,7 +7,7 @@ export type EventType = {
|
|
|
7
7
|
timestamp: number;
|
|
8
8
|
formattedDate: string;
|
|
9
9
|
formattedTime: string;
|
|
10
|
-
type: 'assignee' | 'note' | 'start' | 'end';
|
|
10
|
+
type: 'assignee' | 'note' | 'start' | 'end' | 'switch';
|
|
11
11
|
noteType?: NoteType;
|
|
12
12
|
content: string;
|
|
13
13
|
Icon: React.ReactNode;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Maybe } from 'graphql/jsutils/Maybe';
|
|
2
|
-
import { Agent, Ai, ClientQuery, Message, Tag } from '../../../graphql.autogenerated';
|
|
2
|
+
import { Agent, Ai, ClientQuery, Integration, Message, Tag } from '../../../graphql.autogenerated';
|
|
3
3
|
import { ActionItem } from '@bcrumbs.net/bc-ui';
|
|
4
4
|
export type ConvsFilters = {
|
|
5
5
|
ended?: boolean;
|
|
@@ -8,6 +8,7 @@ export type ConvsFilters = {
|
|
|
8
8
|
aiId?: string | null;
|
|
9
9
|
stageId?: string | null;
|
|
10
10
|
nameOrPhone?: string;
|
|
11
|
+
integrationId?: string | null;
|
|
11
12
|
};
|
|
12
13
|
export interface AgentConversationCounts {
|
|
13
14
|
total: number;
|
|
@@ -48,4 +49,12 @@ export declare const getDisplayName: (clientData: ClientQuery['client'] | undefi
|
|
|
48
49
|
export declare const buildAgentsMenu: ({ agents, myAgent, selectedAgentId, selectedAiId, onAgentSelect, onCrumbySelect, onUnassigneeSelect, t, includeAllOption, onAllSelect, addSeparatorAtLast, counts, crumbyAi, showAllAgents, isCrumbyEnabled, }: BuildAgentsMenuOptions) => ActionItem[];
|
|
49
50
|
export declare const buildLifeCycleMenu: ({ convStages, selectedStageId, onStageSelect, t, addSeparatorAtLast, }: BuildLifeCycleMenuOptions) => ActionItem[];
|
|
50
51
|
export declare const formatPhoneForWhatsApp: (phone: string | null | undefined) => string;
|
|
52
|
+
interface BuildChannelsMenuOptions {
|
|
53
|
+
integrations: Integration[];
|
|
54
|
+
selectedIntegrationId: string | null | undefined;
|
|
55
|
+
onIntegrationSelect: (id: string) => void;
|
|
56
|
+
onAllSelect: () => void;
|
|
57
|
+
t: any;
|
|
58
|
+
}
|
|
59
|
+
export declare const buildChannelsMenu: ({ integrations, selectedIntegrationId, onIntegrationSelect, onAllSelect, t, }: BuildChannelsMenuOptions) => ActionItem[];
|
|
51
60
|
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type CommandPaletteItem = {
|
|
2
|
+
id: string;
|
|
3
|
+
label: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
link?: string;
|
|
6
|
+
action?: string;
|
|
7
|
+
tags: string[];
|
|
8
|
+
commandType: 'page' | 'action';
|
|
9
|
+
section: string;
|
|
10
|
+
};
|
|
11
|
+
type CommandPaletteProps = {
|
|
12
|
+
items: CommandPaletteItem[];
|
|
13
|
+
onActionSelect?: (item: CommandPaletteItem) => void;
|
|
14
|
+
};
|
|
15
|
+
declare function CommandPalette({ items, onActionSelect }: CommandPaletteProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
16
|
+
export default CommandPalette;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { CommandPaletteItem } from './CommandPalette';
|
|
2
3
|
export declare const HeaderContainer: import("@emotion/styled").StyledComponent<{
|
|
3
4
|
theme?: import("@emotion/react").Theme | undefined;
|
|
4
5
|
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
@@ -11,8 +12,9 @@ export declare const Separator: import("@emotion/styled").StyledComponent<{
|
|
|
11
12
|
theme?: import("@emotion/react").Theme | undefined;
|
|
12
13
|
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
13
14
|
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
14
|
-
declare function Header({ onLogout, hasSubMenu }: {
|
|
15
|
+
declare function Header({ onLogout, hasSubMenu, commandItems, }: {
|
|
15
16
|
onLogout: () => void;
|
|
16
17
|
hasSubMenu: boolean;
|
|
18
|
+
commandItems: CommandPaletteItem[];
|
|
17
19
|
}): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
18
20
|
export default Header;
|
|
@@ -2,38 +2,60 @@ import { Permission } from '@bcrumbs.net/bc-shared';
|
|
|
2
2
|
export declare const BCMainNavigation: {
|
|
3
3
|
leftLinks: ({
|
|
4
4
|
label: string;
|
|
5
|
+
title: string;
|
|
5
6
|
icon: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
6
7
|
link: string;
|
|
7
8
|
action: string;
|
|
9
|
+
description: string;
|
|
10
|
+
tags: string[];
|
|
8
11
|
subMenu?: undefined;
|
|
9
12
|
requiredPermissions?: undefined;
|
|
10
13
|
} | {
|
|
11
14
|
label: string;
|
|
15
|
+
title: string;
|
|
12
16
|
icon: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
13
17
|
link: string;
|
|
14
18
|
action: string;
|
|
19
|
+
description: string;
|
|
15
20
|
subMenu: {
|
|
16
|
-
items: {
|
|
21
|
+
items: ({
|
|
17
22
|
label: string;
|
|
23
|
+
title: string;
|
|
18
24
|
icon: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
19
25
|
link: string;
|
|
20
26
|
action: string;
|
|
21
|
-
|
|
27
|
+
tags: string[];
|
|
28
|
+
description?: undefined;
|
|
29
|
+
} | {
|
|
30
|
+
label: string;
|
|
31
|
+
title: string;
|
|
32
|
+
icon: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
33
|
+
link: string;
|
|
34
|
+
action: string;
|
|
35
|
+
description: string;
|
|
36
|
+
tags: string[];
|
|
37
|
+
})[];
|
|
22
38
|
}[];
|
|
39
|
+
tags: string[];
|
|
23
40
|
requiredPermissions?: undefined;
|
|
24
41
|
} | {
|
|
25
42
|
label: string;
|
|
43
|
+
title: string;
|
|
26
44
|
icon: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
27
45
|
link: string;
|
|
28
46
|
action: string;
|
|
47
|
+
description: string;
|
|
48
|
+
tags: string[];
|
|
29
49
|
requiredPermissions: Permission[];
|
|
30
50
|
subMenu?: undefined;
|
|
31
51
|
})[];
|
|
32
52
|
leftBottomLinks: {
|
|
33
53
|
label: string;
|
|
54
|
+
title: string;
|
|
34
55
|
icon: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
35
56
|
link: string;
|
|
36
57
|
action: string;
|
|
58
|
+
tags: string[];
|
|
37
59
|
}[];
|
|
38
60
|
};
|
|
39
61
|
export declare const MOBILE_DIMENSION = 767;
|
|
@@ -3,34 +3,54 @@ export declare const ManagementSubmenu: ({
|
|
|
3
3
|
hide: boolean;
|
|
4
4
|
items: {
|
|
5
5
|
label: string;
|
|
6
|
+
title: string;
|
|
6
7
|
icon: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
7
8
|
link: string;
|
|
8
9
|
action: string;
|
|
10
|
+
description: string;
|
|
11
|
+
tags: string[];
|
|
9
12
|
}[];
|
|
10
13
|
} | {
|
|
11
14
|
title: string;
|
|
12
15
|
items: {
|
|
13
16
|
label: string;
|
|
17
|
+
title: string;
|
|
14
18
|
link: string;
|
|
15
19
|
icon: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
16
20
|
action: string;
|
|
21
|
+
description: string;
|
|
22
|
+
tags: string[];
|
|
17
23
|
}[];
|
|
18
24
|
hide?: undefined;
|
|
19
25
|
})[];
|
|
20
26
|
export declare const ContactSubmenu: {
|
|
21
|
-
items: {
|
|
27
|
+
items: ({
|
|
22
28
|
label: string;
|
|
29
|
+
title: string;
|
|
23
30
|
icon: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
24
31
|
link: string;
|
|
25
32
|
action: string;
|
|
26
|
-
|
|
33
|
+
tags: string[];
|
|
34
|
+
description?: undefined;
|
|
35
|
+
} | {
|
|
36
|
+
label: string;
|
|
37
|
+
title: string;
|
|
38
|
+
icon: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
39
|
+
link: string;
|
|
40
|
+
action: string;
|
|
41
|
+
description: string;
|
|
42
|
+
tags: string[];
|
|
43
|
+
})[];
|
|
27
44
|
}[];
|
|
28
45
|
export declare const CrumpySubmenu: {
|
|
29
46
|
title: string;
|
|
30
47
|
items: {
|
|
31
48
|
label: string;
|
|
49
|
+
title: string;
|
|
32
50
|
icon: import("@emotion/react/jsx-runtime").JSX.Element;
|
|
33
51
|
link: string;
|
|
34
52
|
action: string;
|
|
53
|
+
description: string;
|
|
54
|
+
tags: string[];
|
|
35
55
|
}[];
|
|
36
56
|
}[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useImportContactsEnabled: () => boolean;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface AddChannelDialogProps {
|
|
2
|
+
isOpen: boolean;
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
onSuccess: () => void;
|
|
5
|
+
channelType: string;
|
|
6
|
+
channelTypeName: string;
|
|
7
|
+
rtl?: boolean;
|
|
8
|
+
}
|
|
9
|
+
declare const AddChannelDialog: ({ isOpen, onClose, onSuccess, channelType, channelTypeName, rtl }: AddChannelDialogProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
10
|
+
export default AddChannelDialog;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface ChannelItemProps {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
date: string;
|
|
5
|
+
identifier?: string;
|
|
6
|
+
onDelete: (id: string) => void;
|
|
7
|
+
onEdit: (id: string) => void;
|
|
8
|
+
rtl?: boolean;
|
|
9
|
+
}
|
|
10
|
+
declare const ChannelItem: ({ id, name, date, identifier, onDelete, onEdit, rtl }: ChannelItemProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
11
|
+
export default ChannelItem;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ChannelIntegration {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
type: string;
|
|
5
|
+
createdAt: string;
|
|
6
|
+
identifier?: string;
|
|
7
|
+
}
|
|
8
|
+
interface ChannelTypeCardProps {
|
|
9
|
+
type: string;
|
|
10
|
+
channels: ChannelIntegration[];
|
|
11
|
+
onChannelDelete: (id: string) => void;
|
|
12
|
+
onChannelCreated: () => void;
|
|
13
|
+
}
|
|
14
|
+
declare const ChannelTypeCard: ({ type, channels, onChannelDelete, onChannelCreated }: ChannelTypeCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
15
|
+
export default ChannelTypeCard;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface EditChannelDialogProps {
|
|
2
|
+
isOpen: boolean;
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
onSuccess: () => void;
|
|
5
|
+
channelId: string;
|
|
6
|
+
channelType: string;
|
|
7
|
+
channelTypeName: string;
|
|
8
|
+
rtl?: boolean;
|
|
9
|
+
}
|
|
10
|
+
declare const EditChannelDialog: ({ isOpen, onClose, onSuccess, channelId, channelType, rtl }: EditChannelDialogProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
11
|
+
export default EditChannelDialog;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type OnboardingChecklistStepId } from '../utils/onboardingChecklistStorage';
|
|
2
|
+
export type OnboardingChecklistGuideContentProps = {
|
|
3
|
+
stepId: OnboardingChecklistStepId;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Single-step guide aligned with packages/bc-api-docs/pages/start/quickstart.mdx.
|
|
7
|
+
*/
|
|
8
|
+
export declare function OnboardingChecklistGuideContent({ stepId }: OnboardingChecklistGuideContentProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export declare const ONBOARDING_CHECKLIST_STORAGE_PREFIX = "showcase_onboarding_checklist";
|
|
2
|
+
export declare const ONBOARDING_CHECKLIST_UPDATED_EVENT = "showcase-onboarding-checklist-updated";
|
|
3
|
+
export declare const ONBOARDING_CHECKLIST_TTL_MS: number;
|
|
4
|
+
export type OnboardingChecklistStepId = 'workspace' | 'invite' | 'channel' | 'firstMessage' | 'uploadFile' | 'testAi';
|
|
5
|
+
export type OnboardingChecklistState = {
|
|
6
|
+
startedAt: string;
|
|
7
|
+
completed: Record<OnboardingChecklistStepId, boolean>;
|
|
8
|
+
};
|
|
9
|
+
export declare const ONBOARDING_CHECKLIST_STEP_IDS: OnboardingChecklistStepId[];
|
|
10
|
+
export declare function getOnboardingChecklistStorageKey(userId: string | number): string;
|
|
11
|
+
export declare function getOnboardingChecklistPendingKey(userId: string | number): string;
|
|
12
|
+
/** One-shot: open checklist popover after sign-in (session tab only). */
|
|
13
|
+
export declare const ONBOARDING_CHECKLIST_SESSION_AUTOPEN_KEY = "showcase_onboarding_checklist_session_autopen";
|
|
14
|
+
export declare function clearOnboardingChecklistSessionAutopen(): void;
|
|
15
|
+
export declare function shouldOpenOnboardingChecklistFromSession(): boolean;
|
|
16
|
+
export declare function createDefaultOnboardingChecklistState(): OnboardingChecklistState;
|
|
17
|
+
export declare function parseOnboardingChecklistState(value: unknown): OnboardingChecklistState | null;
|
|
18
|
+
/**
|
|
19
|
+
* Call after a successful sign-in. If the user has no active checklist yet, sets a short-lived
|
|
20
|
+
* pending flag so the layout widget can create `startedAt` only on the first load after login
|
|
21
|
+
* (not for sessions that never went through sign-in in this browser).
|
|
22
|
+
*/
|
|
23
|
+
export declare function notifyOnboardingChecklistAfterSignIn(userId: string | number): void;
|
|
24
|
+
/**
|
|
25
|
+
* Parsed checklist from storage, or null if missing or past TTL.
|
|
26
|
+
* Use this to cheaply skip heavy work (e.g. scanning all inbox messages) when the step is already done
|
|
27
|
+
* or there is no active checklist.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getActiveOnboardingChecklistState(userId: string | number | null | undefined): OnboardingChecklistState | null;
|
|
30
|
+
export type MarkOnboardingChecklistStepOptions = {
|
|
31
|
+
/** When already loaded (e.g. after a gate check), avoids a second localStorage read. */
|
|
32
|
+
knownActiveState?: OnboardingChecklistState;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Marks a checklist step done when the user performs the real action (persists + notifies widget).
|
|
36
|
+
* No-op if there is no checklist, it is expired, or the step is already complete.
|
|
37
|
+
*/
|
|
38
|
+
export declare function markOnboardingChecklistStepComplete(userId: string | number | null | undefined, stepId: OnboardingChecklistStepId, options?: MarkOnboardingChecklistStepOptions): void;
|
|
39
|
+
export declare function tryMarkOnboardingChecklistStepFromAuth(stepId: OnboardingChecklistStepId): void;
|