@bcrumbs.net/inbox 0.0.64 → 0.0.66
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 +37 -6
- package/assets/en/inbox.json +37 -6
- package/e2e/checkout/checkout.flows.d.ts +6 -0
- package/e2e/support/auth.d.ts +7 -3
- package/index.cjs.js +38427 -1199
- package/index.esm.js +38430 -1202
- package/package.json +1 -1
- package/src/app/ai/components/Crumby/CrumbyChatError.d.ts +9 -0
- package/src/app/ai/components/Crumby/CrumbyChatErrorBoundary.d.ts +13 -0
- package/src/app/ai/components/Crumby/CrumbyHeader.d.ts +9 -0
- package/src/app/ai/components/Crumby/CrumbyPageContext.d.ts +22 -0
- package/src/app/ai/components/Crumby/CrumbyRuntimeProvider.d.ts +9 -0
- package/src/app/ai/components/CrumbySettings/CrumbyEditsBanner.d.ts +14 -0
- package/src/app/ai/components/CrumbySettings/VoiceSettingsSection.d.ts +9 -0
- package/src/app/ai/components/playground/Button.d.ts +1 -1
- package/src/app/ai/components/playground/TooltipIconButton.d.ts +1 -1
- package/src/app/ai/components/sources/mediaTypeForFile.d.ts +8 -0
- package/src/app/ai/config/promptSettings.d.ts +31 -0
- package/src/app/ai/hooks/usePromptCopilot.d.ts +22 -0
- package/src/app/ai/tools/PromptEditorTool.d.ts +2 -0
- package/src/app/ai/types/index.d.ts +1 -1
- package/src/app/ai/utils/clientToolResubmit.d.ts +8 -0
- package/src/app/ai/utils/crumbyChatFetch.d.ts +15 -0
- package/src/app/auth/components/password-page/AuthPasswordPageLayout.d.ts +3 -1
- package/src/app/auth/components/password-page/PasswordSuccessView.d.ts +2 -1
- package/src/app/auth/config/authProvider.d.ts +20 -2
- package/src/app/auth/config/clerkAppearance.d.ts +51 -52
- package/src/app/auth/pages/Login.d.ts +1 -1
- package/src/app/auth/pages/Register.d.ts +1 -0
- package/src/app/billing/pages/GatewayWelcomePage.d.ts +4 -1
- package/src/app/broadcast/components/BroadcastAnalysisReciepientsHeader.d.ts +2 -1
- package/src/app/broadcast/components/BroadcastDetailsSection.d.ts +3 -1
- package/src/app/dashboard/components/AgentCard.d.ts +2 -1
- package/src/app/dashboard/components/AgentsCard.d.ts +4 -2
- package/src/app/dashboard/components/BroadcastDashboard.d.ts +3 -1
- package/src/app/dashboard/components/ChatsByLifeCycleCard.d.ts +13 -0
- package/src/app/dashboard/components/DashboardFilters.d.ts +27 -0
- package/src/app/dashboard/components/DashboardPdfCaptureArea.d.ts +11 -0
- package/src/app/dashboard/components/DashboardPdfExportButton.d.ts +7 -0
- package/src/app/dashboard/components/DashboardPdfHeader.d.ts +11 -0
- package/src/app/dashboard/components/DashboardSections.d.ts +7 -2
- package/src/app/dashboard/components/InboxDashboard.d.ts +3 -1
- package/src/app/dashboard/hooks/useDashboardPdfMeta.d.ts +31 -0
- package/src/app/dashboard/hooks/useDashboardTabsPdfExport.d.ts +26 -0
- package/src/app/dashboard/utils/dashboardReportExports.d.ts +16 -1
- package/src/app/dashboard/utils/exportDashboardPdf.d.ts +19 -0
- package/src/app/dashboard/utils/lifecycleStages.d.ts +53 -0
- package/src/app/dashboard/utils/reportHelpers.d.ts +9 -0
- package/src/app/gatewayHome/components/ChecklistStep.d.ts +15 -0
- package/src/app/gatewayHome/components/CreditBalanceCard.d.ts +6 -0
- package/src/app/gatewayHome/components/MessageStats.d.ts +5 -0
- package/src/app/gatewayHome/components/SetupChecklist.d.ts +11 -0
- package/src/app/gatewayHome/components/console/QuickstartConsole.d.ts +11 -0
- package/src/app/gatewayHome/components/console/RunRequestBar.d.ts +15 -0
- package/src/app/gatewayHome/components/console/consoleStyles.d.ts +77 -0
- package/src/app/gatewayHome/components/steps/ApiKeyStepBody.d.ts +8 -0
- package/src/app/gatewayHome/components/steps/ChannelStepBody.d.ts +3 -0
- package/src/app/gatewayHome/components/steps/MetaStepBody.d.ts +6 -0
- package/src/app/gatewayHome/components/steps/WebhookStepBody.d.ts +7 -0
- package/src/app/gatewayHome/components/styles.d.ts +29 -0
- package/src/app/gatewayHome/config/constants.d.ts +22 -0
- package/src/app/gatewayHome/hooks/useGatewaySetup.d.ts +59 -0
- package/src/app/gatewayHome/hooks/useMessageStats.d.ts +17 -0
- package/src/app/gatewayHome/hooks/useQuickstartRequest.d.ts +31 -0
- package/src/app/gatewayHome/hooks/useSendableTemplates.d.ts +9 -0
- package/src/app/gatewayHome/pages/GatewayHomePage.d.ts +1 -0
- package/src/app/gatewayHome/types/index.d.ts +21 -0
- package/src/app/gatewayHome/utils/buildRequestBody.d.ts +7 -0
- package/src/app/gatewayHome/utils/buildSnippet.d.ts +9 -0
- package/src/app/gatewayHome/utils/sendTestMessage.d.ts +3 -0
- package/src/app/gatewayHome/utils/setupStorage.d.ts +8 -0
- package/src/app/gatewayHome/utils/templateHasParameters.d.ts +6 -0
- package/src/app/generic/components/HeaderImageInput.d.ts +3 -1
- package/src/app/generic/components/MessagePreview.d.ts +1 -1
- package/src/app/generic/components/PreviewHeaderDocument.d.ts +5 -0
- package/src/app/generic/utils/chunkErrorRecovery.d.ts +7 -0
- package/src/app/generic/utils/onesignal.d.ts +13 -0
- package/src/app/inbox/calls/useIncomingCallAlerts.d.ts +2 -0
- package/src/app/inbox/components/Calls/ActiveCallControls.d.ts +6 -0
- package/src/app/inbox/components/Calls/IncomingCallBanner.d.ts +6 -0
- package/src/app/inbox/components/Chat/QuickReplyEmpty.d.ts +5 -0
- package/src/app/inbox/components/Chat/QuickReplyPickerMenu.d.ts +2 -2
- package/src/app/inbox/components/NewDetails/ClientSection.d.ts +3 -1
- package/src/app/inbox/components/NewDetails/SuggestedAssignee.d.ts +7 -0
- package/src/app/inbox/components/NewDetails/SuggestedStage.d.ts +13 -0
- package/src/app/inbox/components/NewDetails/SuggestedTags.d.ts +18 -0
- package/src/app/inbox/components/NewDetails/SuggestionItems.d.ts +16 -0
- package/src/app/inbox/constants/index.d.ts +1 -0
- package/src/app/inbox/context/CallSession.d.ts +16 -0
- package/src/app/inbox/context/SuggestionsContext.d.ts +25 -0
- package/src/app/inbox/hooks/useAgentSuggestions.d.ts +20 -0
- package/src/app/inbox/hooks/useApplySuggestion.d.ts +18 -0
- package/src/app/inbox/hooks/useConversationsPerodicFetch.d.ts +30 -0
- package/src/app/inbox/hooks/useIncomingCallAlerts.d.ts +2 -0
- package/src/app/inbox/hooks/useNewSortedEvents.d.ts +1 -1
- package/src/app/inbox/hooks/useQuickReplyPicker.d.ts +5 -3
- package/src/app/inbox/pages/InboxPage.d.ts +1 -1
- package/src/app/inbox/utils/callUi.d.ts +25 -0
- package/src/app/inbox/utils/convSuggestions.d.ts +59 -0
- package/src/app/inbox/utils/convSuggestionsStorage.d.ts +20 -0
- package/src/app/inbox/utils/sounds.d.ts +2 -0
- package/src/app/layout/hooks/useCallsEnabled.d.ts +1 -0
- package/src/app/layout/hooks/useGatewayPlanEnabled.d.ts +5 -0
- package/src/app/layout/hooks/useWebchatEnabled.d.ts +5 -0
- package/src/app/managemnet/components/QuickRepliesListEmpty.d.ts +5 -0
- package/src/app/managemnet/components/channels/ChannelItem.d.ts +2 -1
- package/src/app/managemnet/components/channels/ChannelSettingsDrawer.d.ts +15 -0
- package/src/app/managemnet/components/channels/ShareChannelLinkDialog.d.ts +11 -0
- package/src/app/managemnet/components/channels/WebChatSnippetBlock.d.ts +7 -0
- package/src/app/managemnet/config/webchat.d.ts +5 -0
- package/src/app/managemnet/pages/connectChannel/ConnectChannel.d.ts +2 -0
- package/src/app/managemnet/pages/generalSettings/NoiseFilterSettings.d.ts +8 -0
- package/src/app/managemnet/pages/generalSettings/noiseFilterConstants.d.ts +24 -0
- package/src/app/managemnet/utils/webChatSnippet.d.ts +2 -0
- package/src/app/onboarding/components/OnboardingView.d.ts +3 -1
- package/src/app/onboarding/components/useOnboardingChecklist.d.ts +12 -9
- package/src/app/onboarding/constants/workspaceProfileOptions.d.ts +30 -0
- package/src/app/onboarding/utils/onboardingApi.d.ts +23 -0
- package/src/app/onboarding/utils/onboardingChecklistStorage.d.ts +42 -49
- package/src/app/resources/components/Integrations/ChannelDialogLayout.d.ts +6 -1
- package/src/app/resources/components/Integrations/RenderCorrectIntegrationFlow.d.ts +3 -1
- package/src/app/resources/components/Integrations/WebChat/index.d.ts +8 -0
- package/src/app/resources/components/Integrations/WhatsApp/index.d.ts +1 -0
- package/src/app/resources/hooks/useFBPagesHook.d.ts +4 -2
- package/src/app/resources/hooks/useWabaHook.d.ts +5 -4
- package/src/app/resources/utils/channelSetupTracking.d.ts +21 -0
- package/src/app/resources/utils/facebookSdk.d.ts +11 -0
- package/src/app/subscriptions/components/NewSubscription/OnboardingStepper.d.ts +2 -2
- package/src/app/subscriptions/components/NewSubscription/SubscriptionName.d.ts +2 -0
- package/src/app/subscriptions/components/NewSubscription/WorkspaceProfile.d.ts +18 -0
- package/src/app/subscriptions/components/NewSubscription/WorkspaceStepLayout.d.ts +5 -2
- package/src/app/subscriptions/hooks/useWorkspaceProfileSubmit.d.ts +12 -0
- package/src/app/subscriptions/utils/newWorkspaceContext.d.ts +8 -0
- package/src/assets/locales/translations.d.ts +321 -20
- package/src/config/constants.d.ts +1 -2
- package/src/graphql.autogenerated.d.ts +1907 -117
- package/src/testUtils/bcUiMock.d.ts +16 -0
- package/src/utils/colorPool.d.ts +1 -2
- package/src/utils/getActiveChannelList.d.ts +6 -1
- package/src/utils/globalHelper.d.ts +22 -0
- package/src/app/billing/pages/GuidePage.d.ts +0 -1
- package/src/app/contact/components/ImportProgressDialog.d.ts +0 -14
- package/src/app/managemnet/components/channels/EditChannelDialog.d.ts +0 -11
- package/src/app/onboarding/utils/onboardingChecklistPersistence.d.ts +0 -18
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Post-login landing: Gateway workspaces go to the Gateway home (guide), everyone else to Inbox.
|
|
3
|
+
* Waits for the subscription so Gateway users are not sent to Inbox before the plan is known.
|
|
4
|
+
*/
|
|
2
5
|
export default function GatewayWelcomePage(): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
@@ -18,9 +18,10 @@ interface BroadcastAnalysisReciepientsHeaderProps {
|
|
|
18
18
|
canRetryFailed?: boolean;
|
|
19
19
|
retryableFailed?: number;
|
|
20
20
|
retryDialogOpen?: boolean;
|
|
21
|
+
retryDialogVariant?: 'prompt' | 'confirm';
|
|
21
22
|
onRetryDialogOpenChange?: (open: boolean) => void;
|
|
22
23
|
onRetryFailed?: () => void;
|
|
23
24
|
retryLoading?: boolean;
|
|
24
25
|
}
|
|
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>;
|
|
26
|
+
declare const _default: React.MemoExoticComponent<({ setSearchQuery, searchQuery, selectedCountry, setSelectedCountry, selectedStage, setSelectedStage, selectedState, setSelectedState, clientStages, onDownloadCsv, templateNameQuery, setTemplateNameQuery, canRetryFailed, retryableFailed, retryDialogOpen, retryDialogVariant, onRetryDialogOpenChange, onRetryFailed, retryLoading, }: BroadcastAnalysisReciepientsHeaderProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
26
27
|
export default _default;
|
|
@@ -10,6 +10,8 @@ interface BroadcastDetailsSectionProps {
|
|
|
10
10
|
onParameterChange: (key: string, value: string) => void;
|
|
11
11
|
loadingTemplateDetails?: boolean;
|
|
12
12
|
requiredParameters?: string[];
|
|
13
|
+
selectedIntegrationId?: string;
|
|
14
|
+
onRefreshTemplates?: () => void;
|
|
13
15
|
}
|
|
14
|
-
declare const _default: React.MemoExoticComponent<({ renderField, renderDroplistField, templatesData, loadingTemplates, integrationsData, loadingIntegrations, parameterValues, onParameterChange, loadingTemplateDetails, requiredParameters, }: BroadcastDetailsSectionProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
16
|
+
declare const _default: React.MemoExoticComponent<({ renderField, renderDroplistField, templatesData, loadingTemplates, integrationsData, loadingIntegrations, parameterValues, onParameterChange, loadingTemplateDetails, requiredParameters, selectedIntegrationId, onRefreshTemplates, }: BroadcastDetailsSectionProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
15
17
|
export default _default;
|
|
@@ -5,7 +5,8 @@ export interface AgentCardProps {
|
|
|
5
5
|
avatar?: string | null;
|
|
6
6
|
conversationCount: number;
|
|
7
7
|
reportDate?: string;
|
|
8
|
+
rating?: number | null;
|
|
8
9
|
isSelected?: boolean;
|
|
9
10
|
}
|
|
10
|
-
declare const AgentCard: ({ name, surname, email, avatar, conversationCount, reportDate, isSelected }: AgentCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
11
|
+
declare const AgentCard: ({ name, surname, email, avatar, conversationCount, reportDate, rating, isSelected, }: AgentCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
11
12
|
export default AgentCard;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { Agent, Conversation } from '../../../graphql.autogenerated';
|
|
1
|
+
import { Agent, AgentsReportQuery, Conversation } from '../../../graphql.autogenerated';
|
|
2
|
+
type AgentReportNode = NonNullable<AgentsReportQuery['agentsReport']['nodes']>[number];
|
|
2
3
|
interface AgentsCardProps {
|
|
3
4
|
agents?: Agent[];
|
|
5
|
+
agentsReportData?: AgentReportNode[];
|
|
4
6
|
openedConvs?: Conversation[] | null;
|
|
5
7
|
loading?: boolean;
|
|
6
8
|
selectedAgentIds?: string[];
|
|
7
9
|
}
|
|
8
|
-
declare const AgentsCard: ({ agents, openedConvs, loading, selectedAgentIds }: AgentsCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
10
|
+
declare const AgentsCard: ({ agents, agentsReportData, openedConvs, loading, selectedAgentIds }: AgentsCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
9
11
|
export default AgentsCard;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export interface BroadcastDashboardProps {
|
|
2
2
|
integrationId?: string;
|
|
3
3
|
selectedPeriod: string;
|
|
4
|
+
/** Reports whether this section still waits for data — used by the PDF export. */
|
|
5
|
+
onLoadingChange?: (loading: boolean) => void;
|
|
4
6
|
}
|
|
5
|
-
declare const BroadcastDashboard: ({ integrationId, selectedPeriod }: BroadcastDashboardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare const BroadcastDashboard: ({ integrationId, selectedPeriod, onLoadingChange }: BroadcastDashboardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
6
8
|
export default BroadcastDashboard;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ConvStagesReportQuery } from '../../../graphql.autogenerated';
|
|
2
|
+
type ConvLifecycleReportNode = NonNullable<ConvStagesReportQuery['convStagesReport']['nodes']>[number];
|
|
3
|
+
export type ChatsByLifeCycleCardProps = {
|
|
4
|
+
convLifecycleReportData: ConvLifecycleReportNode[];
|
|
5
|
+
/** Workspace lifecycle stage names in configured order; drives slice order and colors. */
|
|
6
|
+
configuredStages?: string[];
|
|
7
|
+
selectedPeriod?: string;
|
|
8
|
+
loading?: boolean;
|
|
9
|
+
startDate?: string;
|
|
10
|
+
endDate?: string;
|
|
11
|
+
};
|
|
12
|
+
declare const ChatsByLifeCycleCard: ({ convLifecycleReportData, configuredStages, selectedPeriod, loading, startDate, endDate, }: ChatsByLifeCycleCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
13
|
+
export default ChatsByLifeCycleCard;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
type Option = {
|
|
3
|
+
value: string;
|
|
4
|
+
text: string;
|
|
5
|
+
};
|
|
6
|
+
type SingleSelectFilter = {
|
|
7
|
+
options: Option[];
|
|
8
|
+
selected?: string;
|
|
9
|
+
onChange: (value?: string) => void;
|
|
10
|
+
};
|
|
11
|
+
type DashboardFiltersProps = {
|
|
12
|
+
activeTab: 'reports' | 'broadcast';
|
|
13
|
+
rtl: boolean;
|
|
14
|
+
reportPeriod: SingleSelectFilter;
|
|
15
|
+
broadcastPeriod: SingleSelectFilter;
|
|
16
|
+
channels: SingleSelectFilter;
|
|
17
|
+
agents: {
|
|
18
|
+
options: Option[];
|
|
19
|
+
selected: string[];
|
|
20
|
+
onChange: (values: string[]) => void;
|
|
21
|
+
};
|
|
22
|
+
/** Rendered after the filters — used for the PDF export action. */
|
|
23
|
+
children?: ReactNode;
|
|
24
|
+
};
|
|
25
|
+
/** Period / agent / channel filters shown next to the dashboard title. */
|
|
26
|
+
export declare function DashboardFilters({ activeTab, rtl, reportPeriod, broadcastPeriod, channels, agents, children, }: DashboardFiltersProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
27
|
+
export default DashboardFilters;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode, RefObject } from 'react';
|
|
2
|
+
type DashboardPdfCaptureAreaProps = {
|
|
3
|
+
/** Receives the off-screen container so the export hook can capture it. */
|
|
4
|
+
targetRef: RefObject<HTMLDivElement>;
|
|
5
|
+
/** Visible element whose computed background is copied onto the capture, so the PDF matches the theme. */
|
|
6
|
+
backgroundSourceRef: RefObject<HTMLElement>;
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
};
|
|
9
|
+
/** Renders the PDF export layout off-screen (portaled to body) so exporting never disturbs the visible page. */
|
|
10
|
+
export declare function DashboardPdfCaptureArea({ targetRef, backgroundSourceRef, children }: DashboardPdfCaptureAreaProps): import("react").ReactPortal;
|
|
11
|
+
export default DashboardPdfCaptureArea;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type DashboardPdfExportButtonProps = {
|
|
2
|
+
onClick: () => void;
|
|
3
|
+
disabled?: boolean;
|
|
4
|
+
};
|
|
5
|
+
/** Triggers the full-dashboard PDF export (all tabs); progress is shown in a dialog. */
|
|
6
|
+
export declare function DashboardPdfExportButton({ onClick, disabled }: DashboardPdfExportButtonProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default DashboardPdfExportButton;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type DashboardPdfHeaderProps = {
|
|
2
|
+
title: string;
|
|
3
|
+
/** Already localized filter labels rendered as `label: value` lines. */
|
|
4
|
+
meta: {
|
|
5
|
+
label: string;
|
|
6
|
+
value: string;
|
|
7
|
+
}[];
|
|
8
|
+
};
|
|
9
|
+
/** Hidden on screen — only rendered inside the PDF capture clone. */
|
|
10
|
+
export declare function DashboardPdfHeader({ title, meta }: DashboardPdfHeaderProps): import("@emotion/react/jsx-runtime").JSX.Element;
|
|
11
|
+
export default DashboardPdfHeader;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Agent, AgentsReportQuery, ConvTagsReportQuery, ConvsReportQuery, Conversation } from '../../../graphql.autogenerated';
|
|
1
|
+
import { Agent, AgentsReportQuery, ConvTagsReportQuery, ConvsReportQuery, Conversation, ConvStagesReportQuery } from '../../../graphql.autogenerated';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
type AgentReportNode = NonNullable<AgentsReportQuery['agentsReport']['nodes']>[number];
|
|
4
4
|
type ConvTagReportNode = NonNullable<ConvTagsReportQuery['convTagsReport']['nodes']>[number];
|
|
5
|
+
type ConvLifecycleReportNode = NonNullable<ConvStagesReportQuery['convStagesReport']['nodes']>[number];
|
|
5
6
|
type ConvReportNode = NonNullable<ConvsReportQuery['convsReport']['nodes']>[number];
|
|
6
7
|
type ReportNode = AgentReportNode | ConvReportNode;
|
|
7
8
|
interface DashboardSectionsProps {
|
|
@@ -11,7 +12,11 @@ interface DashboardSectionsProps {
|
|
|
11
12
|
agentsLoading?: boolean;
|
|
12
13
|
agentsReportLoading?: boolean;
|
|
13
14
|
convTagsReportData?: ConvTagReportNode[];
|
|
15
|
+
convLifecycleReportData?: ConvLifecycleReportNode[];
|
|
16
|
+
/** Workspace lifecycle stage names in configured order. */
|
|
17
|
+
convLifecycleStages?: string[];
|
|
14
18
|
convTagsReportLoading?: boolean;
|
|
19
|
+
convLifecycleReportLoading?: boolean;
|
|
15
20
|
totalMessages?: number;
|
|
16
21
|
convsLoading?: boolean;
|
|
17
22
|
integrationId?: string;
|
|
@@ -25,5 +30,5 @@ interface DashboardSectionsProps {
|
|
|
25
30
|
selectedPeriod: string;
|
|
26
31
|
reportNodes: ReportNode[];
|
|
27
32
|
}
|
|
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>;
|
|
33
|
+
declare const _default: React.MemoExoticComponent<({ agentsData, allAgentsData, agentsReportData, agentsLoading, agentsReportLoading, convTagsReportData, convTagsReportLoading, totalMessages, convsLoading, integrationId, agentIds, assignedConversations, unassignedConversations, liveConvs, periodFilteredLiveConvs, startDate, endDate, selectedPeriod, reportNodes, convLifecycleReportData, convLifecycleStages, convLifecycleReportLoading, }: DashboardSectionsProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
|
|
29
34
|
export default _default;
|
|
@@ -5,6 +5,8 @@ export interface InboxDashboardProps {
|
|
|
5
5
|
selectedAgents: string[];
|
|
6
6
|
agentsData?: Agent[];
|
|
7
7
|
agentsLoading?: boolean;
|
|
8
|
+
/** Reports whether this section still waits for data — used by the PDF export. */
|
|
9
|
+
onLoadingChange?: (loading: boolean) => void;
|
|
8
10
|
}
|
|
9
|
-
declare const InboxDashboard: ({ selectedChannel, selectedPeriod, selectedAgents, agentsData, agentsLoading, }: InboxDashboardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
11
|
+
declare const InboxDashboard: ({ selectedChannel, selectedPeriod, selectedAgents, agentsData, agentsLoading, onLoadingChange, }: InboxDashboardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
10
12
|
export default InboxDashboard;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
type Option = {
|
|
2
|
+
value: string;
|
|
3
|
+
text: string;
|
|
4
|
+
};
|
|
5
|
+
export type DashboardPdfMetaInput = {
|
|
6
|
+
reportPeriod: {
|
|
7
|
+
options: Option[];
|
|
8
|
+
selected: string;
|
|
9
|
+
};
|
|
10
|
+
broadcastPeriod: {
|
|
11
|
+
options: Option[];
|
|
12
|
+
selected: string;
|
|
13
|
+
};
|
|
14
|
+
channelOptions: Option[];
|
|
15
|
+
selectedChannel?: string;
|
|
16
|
+
agents: {
|
|
17
|
+
options: Option[];
|
|
18
|
+
selected: string[];
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export type DashboardPdfMeta = {
|
|
22
|
+
title: string;
|
|
23
|
+
meta: {
|
|
24
|
+
label: string;
|
|
25
|
+
value: string;
|
|
26
|
+
}[];
|
|
27
|
+
filename: string;
|
|
28
|
+
};
|
|
29
|
+
/** Builds the localized header lines and the file name used by the dashboard PDF export. */
|
|
30
|
+
export declare function useDashboardPdfMeta({ reportPeriod, broadcastPeriod, channelOptions, selectedChannel, agents, }: DashboardPdfMetaInput): DashboardPdfMeta;
|
|
31
|
+
export default useDashboardPdfMeta;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
export type DashboardSectionKey = 'reports' | 'broadcast';
|
|
3
|
+
export type DashboardPdfExportPhase = 'loadingData' | 'renderingCharts' | 'generatingPdf';
|
|
4
|
+
export type DashboardPdfExportStatus = 'processing' | 'completed' | 'failed';
|
|
5
|
+
export type DashboardTabsPdfExportInput = {
|
|
6
|
+
targetRef: RefObject<HTMLElement>;
|
|
7
|
+
filename: string;
|
|
8
|
+
};
|
|
9
|
+
export type DashboardTabsPdfExport = {
|
|
10
|
+
exporting: boolean;
|
|
11
|
+
/** True while both dashboard tabs must stay mounted for the capture. */
|
|
12
|
+
renderAllSections: boolean;
|
|
13
|
+
setSectionLoading: (section: DashboardSectionKey, loading: boolean) => void;
|
|
14
|
+
exportAllSections: () => Promise<void>;
|
|
15
|
+
/** Progress percentage (0-100) for the export dialog. */
|
|
16
|
+
progress: number;
|
|
17
|
+
/** Which step of the export is running, for the dialog status text. */
|
|
18
|
+
phase: DashboardPdfExportPhase;
|
|
19
|
+
status: DashboardPdfExportStatus;
|
|
20
|
+
progressDialogOpen: boolean;
|
|
21
|
+
cancelExport: () => void;
|
|
22
|
+
closeProgressDialog: () => void;
|
|
23
|
+
};
|
|
24
|
+
/** Mounts every dashboard section, waits for its data, then exports the whole board as one PDF. */
|
|
25
|
+
export declare function useDashboardTabsPdfExport({ targetRef, filename }: DashboardTabsPdfExportInput): DashboardTabsPdfExport;
|
|
26
|
+
export default useDashboardTabsPdfExport;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BroadcastReportFragment, Conversation } from '../../../graphql.autogenerated';
|
|
2
2
|
import { CsvCell } from '../../../utils/exportCsv';
|
|
3
|
-
|
|
3
|
+
import { LifecycleStageNode } from './lifecycleStages';
|
|
4
|
+
export type DashboardExportReportKey = 'opened_chats' | 'chats_by_lifecycle' | 'conversation_analytics' | 'agent_performance' | 'tag_performance' | 'broadcast_recipients' | 'campaign_progress' | 'status_distribution';
|
|
4
5
|
export declare function dashboardExportFilename(reportKey: DashboardExportReportKey, startDate: string): string;
|
|
5
6
|
/** Matches ticket examples: "21 sec", "4m 30s", "2h 05m". */
|
|
6
7
|
export declare function formatExportDuration(seconds: number): string;
|
|
@@ -13,6 +14,18 @@ export interface OpenedChatsExportLabels {
|
|
|
13
14
|
}
|
|
14
15
|
export declare function buildOpenedChatsExportRows(conversations: Pick<Conversation, 'createdAt' | 'assigneeId'>[], startDate: string, endDate: string): CsvCell[][];
|
|
15
16
|
export declare function exportOpenedChatsCsv(conversations: Pick<Conversation, 'createdAt' | 'assigneeId'>[], startDate: string, endDate: string, labels: OpenedChatsExportLabels): void;
|
|
17
|
+
export interface LifecycleStagesExportLabels {
|
|
18
|
+
date: string;
|
|
19
|
+
total: string;
|
|
20
|
+
/** Display name for each canonical stage key; the key is used when missing. */
|
|
21
|
+
stageNames: Record<string, string>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* One row per day with a column per stage and the day's total, then a totals row.
|
|
25
|
+
* Totals come from every report row, so the last row always matches the pie chart.
|
|
26
|
+
*/
|
|
27
|
+
export declare function buildLifecycleStagesExportRows(nodes: LifecycleStageNode[], stages: string[], configuredStages: string[], startDate: string, endDate: string): CsvCell[][];
|
|
28
|
+
export declare function exportLifecycleStagesCsv(nodes: LifecycleStageNode[], stages: string[], configuredStages: string[], startDate: string, endDate: string, labels: LifecycleStagesExportLabels): void;
|
|
16
29
|
export interface ConversationAnalyticsExportLabels {
|
|
17
30
|
date: string;
|
|
18
31
|
conversations: string;
|
|
@@ -27,6 +40,7 @@ export declare function exportConversationAnalyticsCsv(reportNodes: {
|
|
|
27
40
|
}[], startDate: string, endDate: string, labels: ConversationAnalyticsExportLabels): void;
|
|
28
41
|
export interface AgentPerformanceExportRow {
|
|
29
42
|
agentName: string;
|
|
43
|
+
averageRating: number | null;
|
|
30
44
|
conversationCount: number;
|
|
31
45
|
newClientConvCount: number;
|
|
32
46
|
agentMessagesCount: number;
|
|
@@ -36,6 +50,7 @@ export interface AgentPerformanceExportRow {
|
|
|
36
50
|
}
|
|
37
51
|
export interface AgentPerformanceExportLabels {
|
|
38
52
|
agent: string;
|
|
53
|
+
rating: string;
|
|
39
54
|
closed: string;
|
|
40
55
|
uniqueClosed: string;
|
|
41
56
|
messagesSent: string;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface ExportDashboardPdfOptions {
|
|
2
|
+
element: HTMLElement;
|
|
3
|
+
filename: string;
|
|
4
|
+
/** Checked between steps; when it returns true the export stops without downloading. */
|
|
5
|
+
isCancelled?: () => boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function prepareClone(doc: Document): void;
|
|
8
|
+
/** Walks up from the element to find the first non-transparent background color. */
|
|
9
|
+
export declare function resolveBackgroundColor(element: HTMLElement): string;
|
|
10
|
+
export interface PdfPageLayout {
|
|
11
|
+
contentWidthPt: number;
|
|
12
|
+
pxToPt: number;
|
|
13
|
+
pageHeightPx: number;
|
|
14
|
+
totalPages: number;
|
|
15
|
+
}
|
|
16
|
+
/** Maps a full-height capture onto A4 pages: how many pages, and how many source pixels each holds. */
|
|
17
|
+
export declare function calculatePdfPageLayout(canvasWidth: number, canvasHeight: number): PdfPageLayout;
|
|
18
|
+
/** Renders the given dashboard container into a paginated A4 PDF and downloads it. */
|
|
19
|
+
export declare function exportDashboardPdf({ element, filename, isCancelled }: ExportDashboardPdfOptions): Promise<void>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/** Stage key for conversations that have no lifecycle stage. */
|
|
2
|
+
export declare const NOT_SET_STAGE = "notSet";
|
|
3
|
+
/**
|
|
4
|
+
* Main colors for lifecycle slices (light surface), assigned in this fixed order to stages 1–8.
|
|
5
|
+
* The order is what keeps neighbouring slices apart for colour-blind readers: it was checked
|
|
6
|
+
* with a palette validator for 2–8 slices, including the last-to-first pair a donut closes.
|
|
7
|
+
* Change the values or the order only after re-running that validation.
|
|
8
|
+
*/
|
|
9
|
+
export declare const LIFECYCLE_STAGE_COLORS: readonly ["#2a78d6", "#eb6834", "#1baf7a", "#eda100", "#e87ba4", "#008300", "#4a3aa7", "#e34948"];
|
|
10
|
+
/**
|
|
11
|
+
* Extra main colors for stages 9–12. Each one stays clearly apart from every other main color
|
|
12
|
+
* (ΔE ≥ 15 for normal vision and ≥ 8 for colour-blind vision), not just from its neighbours.
|
|
13
|
+
* Light blue is faint on white (about 2:1), so the legend label carries it.
|
|
14
|
+
*/
|
|
15
|
+
export declare const LIFECYCLE_STAGE_EXTRA_COLORS: readonly ["#92074c", "#82b5ef", "#ac4aa6", "#7706fd"];
|
|
16
|
+
/**
|
|
17
|
+
* Lighter or darker versions of main hues for stages 13–18. They keep neighbouring slices apart,
|
|
18
|
+
* but each sits close to one of the main colors, so these stages lean more on the legend labels.
|
|
19
|
+
*/
|
|
20
|
+
export declare const LIFECYCLE_STAGE_VARIANT_COLORS: readonly ["#9f0117", "#a56f00", "#ab446e", "#52bc4c", "#a33902", "#01724d"];
|
|
21
|
+
/** Conversations without a stage read as "no data", so they get a neutral. */
|
|
22
|
+
export declare const NOT_SET_STAGE_COLOR = "#9da4ae";
|
|
23
|
+
/** Stages past the sequence (19 and up) share one darker neutral, so no series color ever means two stages. */
|
|
24
|
+
export declare const LIFECYCLE_OVERFLOW_COLOR = "#6c737f";
|
|
25
|
+
export interface LifecycleStageNode {
|
|
26
|
+
stage: string;
|
|
27
|
+
conversationCount: number;
|
|
28
|
+
createdAt: string;
|
|
29
|
+
}
|
|
30
|
+
export interface LifecycleStageTotal {
|
|
31
|
+
/** Canonical stage key: the configured stage name, the raw report name, or NOT_SET_STAGE. */
|
|
32
|
+
stage: string;
|
|
33
|
+
value: number;
|
|
34
|
+
color: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Maps a report stage name onto the workspace's configured spelling (case-insensitive),
|
|
38
|
+
* and folds blank or "notSet" values into NOT_SET_STAGE.
|
|
39
|
+
*/
|
|
40
|
+
export declare function createStageResolver(configuredStages: string[]): (stage?: string | null) => string;
|
|
41
|
+
/**
|
|
42
|
+
* Orders every stage the chart may show: configured stages in workspace order, then stages the
|
|
43
|
+
* report returned that are no longer configured (alphabetically), then "not set".
|
|
44
|
+
* A stage's color comes from its position here, so it stays the same when filters hide other stages.
|
|
45
|
+
*/
|
|
46
|
+
export declare function orderLifecycleStages(configuredStages: string[], reportedStages: Iterable<string>): string[];
|
|
47
|
+
/** Color for the stage at `index` of the ordered stage list. */
|
|
48
|
+
export declare function lifecycleStageColor(stage: string, index: number): string;
|
|
49
|
+
/**
|
|
50
|
+
* Sums conversations per stage across days and channels, in chart order.
|
|
51
|
+
* Stages with no conversations are left out; colors still follow each stage's position.
|
|
52
|
+
*/
|
|
53
|
+
export declare function buildLifecycleStageTotals(nodes: LifecycleStageNode[], configuredStages: string[]): LifecycleStageTotal[];
|
|
@@ -14,3 +14,12 @@ export type FirstResponseReportSlice = {
|
|
|
14
14
|
* Uses firstResponseConversationCount when present.
|
|
15
15
|
*/
|
|
16
16
|
export declare function getFirstResponseWeightForReport(node: FirstResponseReportSlice): number;
|
|
17
|
+
/** Fields needed to weight averageRating when aggregating report rows. */
|
|
18
|
+
export type RatingReportSlice = {
|
|
19
|
+
conversationCount?: number | null;
|
|
20
|
+
responseRate?: number | null;
|
|
21
|
+
averageRating?: number | null;
|
|
22
|
+
};
|
|
23
|
+
/** Weighted average rating across report nodes; null when no rated conversations. */
|
|
24
|
+
export declare function aggregateAverageRating(reports: RatingReportSlice[]): number | null;
|
|
25
|
+
export declare function formatAgentRating(rating: number | null | undefined): string;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { SetupStepStatus } from '../types';
|
|
3
|
+
type ChecklistStepProps = {
|
|
4
|
+
index: number;
|
|
5
|
+
title: string;
|
|
6
|
+
status: SetupStepStatus;
|
|
7
|
+
optional?: boolean;
|
|
8
|
+
summary?: string | null;
|
|
9
|
+
expanded: boolean;
|
|
10
|
+
isLast: boolean;
|
|
11
|
+
onToggle: () => void;
|
|
12
|
+
children?: ReactNode;
|
|
13
|
+
};
|
|
14
|
+
declare const ChecklistStep: ({ index, title, status, optional, summary, expanded, isLast, onToggle, children, }: ChecklistStepProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
15
|
+
export default ChecklistStep;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
type CreditBalanceCardProps = {
|
|
2
|
+
workspaceId: number;
|
|
3
|
+
remainingCredits: number | null;
|
|
4
|
+
};
|
|
5
|
+
declare const CreditBalanceCard: ({ workspaceId, remainingCredits }: CreditBalanceCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
6
|
+
export default CreditBalanceCard;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { GatewaySetup } from '../hooks/useGatewaySetup';
|
|
2
|
+
type SetupChecklistProps = {
|
|
3
|
+
workspaceId: number;
|
|
4
|
+
setup: GatewaySetup;
|
|
5
|
+
apiKeyToken: string | null;
|
|
6
|
+
lastSentTo: string | null;
|
|
7
|
+
onApiKeyGenerated: (token: string) => void;
|
|
8
|
+
onGoToDashboard: () => void;
|
|
9
|
+
};
|
|
10
|
+
declare const SetupChecklist: (props: SetupChecklistProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
11
|
+
export default SetupChecklist;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IntegrationFragment } from '../../../../graphql.autogenerated';
|
|
2
|
+
import type { RunResult } from '../../types';
|
|
3
|
+
type QuickstartConsoleProps = {
|
|
4
|
+
workspaceId: number;
|
|
5
|
+
apiKeyToken: string | null;
|
|
6
|
+
webhookUrl: string | null;
|
|
7
|
+
integrations: IntegrationFragment[];
|
|
8
|
+
onSent: (to: string, result: RunResult) => void;
|
|
9
|
+
};
|
|
10
|
+
declare const QuickstartConsole: ({ workspaceId, apiKeyToken, webhookUrl, integrations, onSent }: QuickstartConsoleProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
11
|
+
export default QuickstartConsole;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { RunResult } from '../../types';
|
|
2
|
+
type RunRequestBarProps = {
|
|
3
|
+
to: string;
|
|
4
|
+
onToChange: (value: string) => void;
|
|
5
|
+
/** Shown only when no key is known in this session (keys are revealed once). */
|
|
6
|
+
needsApiKey: boolean;
|
|
7
|
+
apiKeyInput: string;
|
|
8
|
+
onApiKeyInputChange: (value: string) => void;
|
|
9
|
+
disabledReason: string | null;
|
|
10
|
+
running: boolean;
|
|
11
|
+
result: RunResult | null;
|
|
12
|
+
onRun: () => void;
|
|
13
|
+
};
|
|
14
|
+
declare const RunRequestBar: (props: RunRequestBarProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
15
|
+
export default RunRequestBar;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/** Dark "terminal" surface from the design, built on the --bc-dark / --bc-light-color tokens. */
|
|
3
|
+
export declare const ConsoleSurface: 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<HTMLElement>, HTMLElement>, {}>;
|
|
7
|
+
export declare const ConsoleHeader: 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 ConsoleTitle: 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<HTMLHeadingElement>, HTMLHeadingElement>, {}>;
|
|
15
|
+
export declare const Endpoint: 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").HTMLAttributes<HTMLElement>, HTMLElement>, {}>;
|
|
19
|
+
export declare const PillRow: import("@emotion/styled").StyledComponent<{
|
|
20
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
21
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
22
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
23
|
+
export declare const Pill: import("@emotion/styled").StyledComponent<{
|
|
24
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
25
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
26
|
+
} & {
|
|
27
|
+
active: boolean;
|
|
28
|
+
}, import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
29
|
+
/** Code keeps left-to-right order in RTL (Arabic) layouts. */
|
|
30
|
+
export declare const CodePanel: import("@emotion/styled").StyledComponent<{
|
|
31
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
32
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
33
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
34
|
+
export declare const CodeTabs: import("@emotion/styled").StyledComponent<{
|
|
35
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
36
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
37
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
38
|
+
export declare const LangTab: import("@emotion/styled").StyledComponent<{
|
|
39
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
40
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
41
|
+
} & {
|
|
42
|
+
active: boolean;
|
|
43
|
+
}, import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
44
|
+
export declare const Code: import("@emotion/styled").StyledComponent<{
|
|
45
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
46
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
47
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLPreElement>, HTMLPreElement>, {}>;
|
|
48
|
+
export declare const ConsoleNote: import("@emotion/styled").StyledComponent<{
|
|
49
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
50
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
51
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
52
|
+
export declare const ConsoleInput: import("@emotion/styled").StyledComponent<{
|
|
53
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
54
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
55
|
+
}, import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, {}>;
|
|
56
|
+
export declare const ConsoleSelect: import("@emotion/styled").StyledComponent<{
|
|
57
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
58
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
59
|
+
}, import("react").DetailedHTMLProps<import("react").SelectHTMLAttributes<HTMLSelectElement>, HTMLSelectElement>, {}>;
|
|
60
|
+
export declare const ResponseBox: import("@emotion/styled").StyledComponent<{
|
|
61
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
62
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
63
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
64
|
+
export declare const StatusText: import("@emotion/styled").StyledComponent<{
|
|
65
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
66
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
67
|
+
} & {
|
|
68
|
+
ok: boolean;
|
|
69
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
70
|
+
export declare const TabsEnd: import("@emotion/styled").StyledComponent<{
|
|
71
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
72
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
73
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
74
|
+
export declare const TemplateRow: import("@emotion/styled").StyledComponent<{
|
|
75
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
76
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
77
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type ApiKeyStepBodyProps = {
|
|
2
|
+
workspaceId: number;
|
|
3
|
+
token: string | null;
|
|
4
|
+
onGenerated: (token: string) => void;
|
|
5
|
+
onSaved: () => void;
|
|
6
|
+
};
|
|
7
|
+
declare const ApiKeyStepBody: ({ workspaceId, token, onGenerated, onSaved }: ApiKeyStepBodyProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
8
|
+
export default ApiKeyStepBody;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type WebhookStepBodyProps = {
|
|
2
|
+
workspaceId: number;
|
|
3
|
+
onSaved: () => void;
|
|
4
|
+
onSkip: () => void;
|
|
5
|
+
};
|
|
6
|
+
declare const WebhookStepBody: ({ workspaceId, onSaved, onSkip }: WebhookStepBodyProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default WebhookStepBody;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const Muted: 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<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
6
|
+
export declare const SmallMuted: import("@emotion/styled").StyledComponent<{
|
|
7
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
8
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
9
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
10
|
+
export declare const Badge: import("@emotion/styled").StyledComponent<{
|
|
11
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
12
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
13
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
14
|
+
export declare const ButtonRow: import("@emotion/styled").StyledComponent<{
|
|
15
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
16
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
17
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
18
|
+
export declare const TextInput: import("@emotion/styled").StyledComponent<{
|
|
19
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
20
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
21
|
+
}, import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, {}>;
|
|
22
|
+
export declare const MonoBox: import("@emotion/styled").StyledComponent<{
|
|
23
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
24
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
25
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
26
|
+
export declare const WarningText: import("@emotion/styled").StyledComponent<{
|
|
27
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
28
|
+
as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
|
|
29
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CreditPack } from '../../../graphql.billing.autogenerated';
|
|
2
|
+
import { IntegrationType } from '../../../graphql.autogenerated';
|
|
3
|
+
import type { ChannelKind, RequestKind, SnippetLang } from '../types';
|
|
4
|
+
export declare const MESSAGES_ENDPOINT: string;
|
|
5
|
+
export declare const META_PAYMENT_URL = "https://business.facebook.com/billing_hub/payment_settings";
|
|
6
|
+
export declare const API_KEY_PLACEHOLDER = "YOUR_API_KEY";
|
|
7
|
+
export declare const SAMPLE_TEXT = "Your order #1042 has shipped.";
|
|
8
|
+
export declare const SAMPLE_IMAGE_URL = "https://example.com/receipt.png";
|
|
9
|
+
export declare const REQUEST_KINDS: RequestKind[];
|
|
10
|
+
export declare const SNIPPET_LANGS: SnippetLang[];
|
|
11
|
+
export declare const CHANNELS: Array<{
|
|
12
|
+
kind: ChannelKind;
|
|
13
|
+
types: IntegrationType[];
|
|
14
|
+
}>;
|
|
15
|
+
/** Credit packs sold through Polar; mirrors CREDIT_PACKS in SubscriptionCreditsCard. */
|
|
16
|
+
export declare const CREDIT_PACKS: Array<{
|
|
17
|
+
pack: CreditPack;
|
|
18
|
+
usd: number;
|
|
19
|
+
credits: number;
|
|
20
|
+
}>;
|
|
21
|
+
export declare const DEFAULT_CREDIT_PACK: "CREDITS_20";
|
|
22
|
+
export declare const SETUP_STORAGE_KEY = "bc-gateway-home-setup";
|