@adatechnology/conversations-ui 0.1.0-rc.20 → 0.1.0-rc.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-OIDAIVCH.js → chunk-TV4OQRGH.js} +636 -434
- package/dist/index.d.ts +142 -9
- package/dist/index.js +374 -66
- package/dist/preview/index.d.ts +122 -3
- package/dist/preview/index.js +137 -21
- package/dist/styles.css +112 -0
- package/dist/{types-O7kMP1Yn.d.ts → types-C6A_9edv.d.ts} +42 -2
- package/package.json +2 -2
- package/src/AudioTranscription.test.tsx +115 -0
- package/src/AudioTranscription.tsx +249 -0
- package/src/ConversationContextPanel.tsx +205 -52
- package/src/ConversationLocalesProvider.tsx +28 -0
- package/src/MediaRenderer.tsx +37 -6
- package/src/MessageBubble.tsx +26 -3
- package/src/MessageComposer.tsx +21 -2
- package/src/Wallpaper.tsx +27 -13
- package/src/conversationTranscript.test.ts +57 -0
- package/src/conversationTranscript.ts +29 -4
- package/src/hooks/useScrollToLatestMessage.ts +127 -0
- package/src/index.ts +11 -0
- package/src/preview/ConversationPreview.tsx +13 -4
- package/src/preview/ConversationSimulatorPanel.test.tsx +55 -0
- package/src/preview/ConversationSimulatorPanel.tsx +89 -0
- package/src/preview/createPreviewBridgeClient.ts +37 -1
- package/src/preview/createPreviewMediaUploader.ts +82 -0
- package/src/preview/createPreviewWebhookClient.test.ts +89 -0
- package/src/preview/createPreviewWebhookClient.ts +91 -0
- package/src/preview/index.ts +9 -0
- package/src/preview/previewMediaUploader.test.ts +61 -0
- package/src/providers/types.ts +12 -1
- package/src/settings/TranscriptionSettingsForm.test.tsx +81 -0
- package/src/settings/TranscriptionSettingsForm.tsx +189 -0
- package/src/styles.css +122 -0
- package/src/types.ts +26 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import react__default, { ReactNode, CSSProperties, FormEvent } from 'react';
|
|
3
|
-
import { G as MessagePayload,
|
|
4
|
-
export { A as AudioRecorderButton, a as AudioRecorderButtonLabels, b as AudioRecorderButtonProps, C as CHANNEL_CAPABILITIES, c as CHANNEL_FILTER_ALL, d as CONVERSATION_CHANNEL, e as ChannelCapabilities, f as ChannelFilter, g as ChannelFilterOption, h as CompanyDocument, i as CompanyDocumentPage, l as ConversationDocumentPage, m as ConversationEventSource, n as ConversationPage, s as ConversationsTheme, t as ConversationsUIConfig, D as DEFAULT_AUDIO_RECORDER_BUTTON_LABELS, u as DEFAULT_CONVERSATION_CHANNEL, v as DEFAULT_MAX_RECORDING_MILLISECONDS, F as FormatContactHandleParams, H as HANDLE_KIND, w as HandleKind, I as InteractiveOption, y as InteractiveSection, M as MediaRenderer, E as MediaRendererProps, R as REOPEN_MECHANISM,
|
|
2
|
+
import react__default, { ReactNode, CSSProperties, UIEvent, FormEvent, RefObject } from 'react';
|
|
3
|
+
import { G as MessagePayload, N as ResolveMediaUrl, z as InteractiveSelection, J as MessageTranscription, x as InteractivePayload, r as ConversationsFeatures, o as ConversationSummary, j as ConversationChannel, L as ListConversationsParams, q as ConversationsApi, S as SSEProvider, T as TranscriptionMode, B as ListDocumentsParams, k as ConversationDocument, p as ConversationTemplate } from './types-C6A_9edv.js';
|
|
4
|
+
export { A as AudioRecorderButton, a as AudioRecorderButtonLabels, b as AudioRecorderButtonProps, C as CHANNEL_CAPABILITIES, c as CHANNEL_FILTER_ALL, d as CONVERSATION_CHANNEL, e as ChannelCapabilities, f as ChannelFilter, g as ChannelFilterOption, h as CompanyDocument, i as CompanyDocumentPage, l as ConversationDocumentPage, m as ConversationEventSource, n as ConversationPage, s as ConversationsTheme, t as ConversationsUIConfig, D as DEFAULT_AUDIO_RECORDER_BUTTON_LABELS, u as DEFAULT_CONVERSATION_CHANNEL, v as DEFAULT_MAX_RECORDING_MILLISECONDS, F as FormatContactHandleParams, H as HANDLE_KIND, w as HandleKind, I as InteractiveOption, y as InteractiveSection, M as MediaRenderer, E as MediaRendererProps, R as REOPEN_MECHANISM, K as ReopenMechanism, O as TranscriptionStatus, P as capabilitiesOf, Q as channelFiltersFor, U as contactFlag, V as formatContactHandle } from './types-C6A_9edv.js';
|
|
5
5
|
|
|
6
6
|
interface MessageBubbleProps {
|
|
7
7
|
message: MessagePayload;
|
|
@@ -21,9 +21,15 @@ interface MessageBubbleProps {
|
|
|
21
21
|
* no histórico da inbox: o operador vê o que foi oferecido, sem responder no lugar do cliente.
|
|
22
22
|
*/
|
|
23
23
|
onInteractiveSelect?: (selection: InteractiveSelection) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Pede a transcrição do áudio. Ausente, o balão usa `transcribeAudio` do `ConversationsApi` do
|
|
26
|
+
* contexto — passe apenas para sobrescrever. Sem nenhum dos dois, o bloco de transcrição só exibe
|
|
27
|
+
* o que já veio pronto do backend.
|
|
28
|
+
*/
|
|
29
|
+
onTranscribeAudio?: (messageId: string) => Promise<MessageTranscription | void>;
|
|
24
30
|
className?: string;
|
|
25
31
|
}
|
|
26
|
-
declare function MessageBubble({ message, isMine, senderName, isFirstInGroup, isSelecting, isSelected, onToggleSelect, onResolveMediaUrl, onInteractiveSelect, className, }: MessageBubbleProps): react.JSX.Element;
|
|
32
|
+
declare function MessageBubble({ message, isMine, senderName, isFirstInGroup, isSelecting, isSelected, onToggleSelect, onResolveMediaUrl, onInteractiveSelect, onTranscribeAudio, className, }: MessageBubbleProps): react.JSX.Element;
|
|
27
33
|
|
|
28
34
|
interface InteractiveMessageLabels {
|
|
29
35
|
/** Fallback do rótulo do botão que abre a lista, quando o payload não traz um. */
|
|
@@ -43,8 +49,18 @@ interface ConversationWallpaperProps {
|
|
|
43
49
|
className?: string;
|
|
44
50
|
/** Ajusta ou substitui o fundo padrão — para produto com identidade visual própria. */
|
|
45
51
|
style?: CSSProperties;
|
|
52
|
+
/**
|
|
53
|
+
* Rolagem da área de mensagens. Par do `ref`: é este elemento que rola, então é aqui que
|
|
54
|
+
* `useScrollToLatestMessage` observa a posição para saber se o operador está acompanhando o fim.
|
|
55
|
+
*/
|
|
56
|
+
onScroll?: (event: UIEvent<HTMLDivElement>) => void;
|
|
46
57
|
}
|
|
47
|
-
|
|
58
|
+
/**
|
|
59
|
+
* `forwardRef` porque quem controla a rolagem é de fora — o hook precisa do elemento para saltar
|
|
60
|
+
* até a última mensagem. `forwardRef` e não `ref` como prop: o pacote suporta React 18, onde
|
|
61
|
+
* ref-como-prop ainda não existe.
|
|
62
|
+
*/
|
|
63
|
+
declare const ConversationWallpaper: react.ForwardRefExoticComponent<ConversationWallpaperProps & react.RefAttributes<HTMLDivElement>>;
|
|
48
64
|
|
|
49
65
|
interface ConversationLocales {
|
|
50
66
|
bubble: {
|
|
@@ -68,6 +84,20 @@ interface ConversationLocales {
|
|
|
68
84
|
untitledDocument: string;
|
|
69
85
|
downloadFile: string;
|
|
70
86
|
};
|
|
87
|
+
transcription: {
|
|
88
|
+
label: string;
|
|
89
|
+
copy: string;
|
|
90
|
+
copied: string;
|
|
91
|
+
transcribe: string;
|
|
92
|
+
transcribing: string;
|
|
93
|
+
retry: string;
|
|
94
|
+
failed: string;
|
|
95
|
+
/** Áudio processado sem fala detectada — distinto de "não transcrito". */
|
|
96
|
+
empty: string;
|
|
97
|
+
unsupported: string;
|
|
98
|
+
showMore: string;
|
|
99
|
+
showLess: string;
|
|
100
|
+
};
|
|
71
101
|
selection: {
|
|
72
102
|
select: string;
|
|
73
103
|
};
|
|
@@ -92,6 +122,33 @@ interface AudioPlayerProps {
|
|
|
92
122
|
}
|
|
93
123
|
declare function AudioPlayer({ src, isMine }: AudioPlayerProps): react.JSX.Element;
|
|
94
124
|
|
|
125
|
+
interface AudioTranscriptionProps {
|
|
126
|
+
transcription?: MessageTranscription | null;
|
|
127
|
+
/**
|
|
128
|
+
* Pede a transcrição ao backend. Ausente, o bloco nunca oferece o botão — um host em modo
|
|
129
|
+
* automático não tem rota para isso, e desenhar um botão que estoura no clique é pior do que não
|
|
130
|
+
* desenhar nada.
|
|
131
|
+
*
|
|
132
|
+
* O que for devolvido é exibido na hora. Sem isso o texto só apareceria no próximo refetch da
|
|
133
|
+
* lista, e transcrição não emite evento de tempo real: o operador clicaria, veria o spinner
|
|
134
|
+
* terminar e continuaria sem o texto na tela.
|
|
135
|
+
*/
|
|
136
|
+
onTranscribe?: () => Promise<MessageTranscription | void>;
|
|
137
|
+
isMine?: boolean;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Transcrição sob a nota de voz, com botão de copiar.
|
|
141
|
+
*
|
|
142
|
+
* Copiar é o motivo de o bloco existir: o operador cola o pedido do cliente no sistema interno, no
|
|
143
|
+
* orçamento, na busca. Seleção manual de texto dentro de um balão de chat é exatamente onde o
|
|
144
|
+
* arrasto do mouse falha — pega o balão vizinho, o horário, o nome do remetente.
|
|
145
|
+
*
|
|
146
|
+
* `navigator.clipboard.writeText` com try/catch silencioso, mesmo padrão de `MessageText.tsx`: a API
|
|
147
|
+
* exige contexto seguro e permissão, e um host servindo em HTTP simples não a tem. Falhar sem alarme
|
|
148
|
+
* é o certo — o texto continua na tela para seleção manual.
|
|
149
|
+
*/
|
|
150
|
+
declare function AudioTranscription({ transcription, onTranscribe, isMine }: AudioTranscriptionProps): react.JSX.Element | null;
|
|
151
|
+
|
|
95
152
|
interface EmojiPickerLabels {
|
|
96
153
|
search: string;
|
|
97
154
|
noResults: string;
|
|
@@ -546,22 +603,35 @@ declare function ConversationHeader({ conversation, busy, onTakeover, onReturnTo
|
|
|
546
603
|
|
|
547
604
|
/**
|
|
548
605
|
* "Suas Seleções": o que o bot já coletou na conversa. Para o atendente que assume no meio, é a
|
|
549
|
-
* diferença entre ler o transcript inteiro e ver o estado
|
|
606
|
+
* diferença entre ler o transcript inteiro e ver o estado de relance.
|
|
550
607
|
*
|
|
551
608
|
* O pacote não interpreta o contexto — ele é `Record<string, unknown>` e cada produto nomeia as
|
|
552
609
|
* próprias chaves. O host traduz para `entries`; aqui só se decide como mostrar.
|
|
610
|
+
*
|
|
611
|
+
* Desenho em paridade com financiamento-imobiliario-bot/apps/web/src/components/SelectionsSummary.tsx:
|
|
612
|
+
* card com gradiente, badge de contagem, pills de status no cabeçalho e grid de cards com borda
|
|
613
|
+
* colorida por estado. O que ficou diferente de lá, e por quê, está comentado no ponto.
|
|
553
614
|
*/
|
|
615
|
+
/**
|
|
616
|
+
* `completed` tem valor, `pending` ainda não foi coletado, `editing` é o cliente refazendo a
|
|
617
|
+
* resposta. O host só precisa mandar `status` para o terceiro caso — os dois primeiros saem do
|
|
618
|
+
* próprio `value`, e exigir o campo quebraria quem já usa o painel.
|
|
619
|
+
*/
|
|
620
|
+
type ConversationContextStatus = 'completed' | 'pending' | 'editing';
|
|
554
621
|
interface ConversationContextEntry {
|
|
555
622
|
key: string;
|
|
556
623
|
label: string;
|
|
557
624
|
value?: string | undefined;
|
|
558
625
|
icon?: string;
|
|
626
|
+
status?: ConversationContextStatus;
|
|
559
627
|
}
|
|
560
628
|
interface ConversationContextPanelLabels {
|
|
561
629
|
title: string;
|
|
562
630
|
empty: string;
|
|
563
631
|
collapse: string;
|
|
564
632
|
expand: string;
|
|
633
|
+
/** Placeholder do card ainda não coletado. */
|
|
634
|
+
notCollected: string;
|
|
565
635
|
}
|
|
566
636
|
declare const DEFAULT_CONVERSATION_CONTEXT_LABELS: ConversationContextPanelLabels;
|
|
567
637
|
interface ConversationContextPanelClassNames {
|
|
@@ -576,14 +646,19 @@ interface ConversationContextPanelProps {
|
|
|
576
646
|
* Estado inicial. Ausente, abre sozinho no desktop quando há algum dado preenchido.
|
|
577
647
|
*
|
|
578
648
|
* Existe porque "abre sozinho" nem sempre é o que o produto quer: com 1 de 6 campos preenchidos o
|
|
579
|
-
* painel ocupa altura mostrando quase só
|
|
649
|
+
* painel ocupa altura mostrando quase só pendências, e empurra a conversa — que é o que se veio ver.
|
|
580
650
|
*/
|
|
581
651
|
defaultOpen?: boolean;
|
|
652
|
+
/**
|
|
653
|
+
* Rótulo do fluxo em curso, exibido em azul ao lado do título — no financiamento é o produto
|
|
654
|
+
* escolhido ("Consórcio", "MCMV"). Ausente, o cabeçalho fica só com título e contagens.
|
|
655
|
+
*/
|
|
656
|
+
flowLabel?: string;
|
|
582
657
|
labels?: Partial<ConversationContextPanelLabels>;
|
|
583
658
|
className?: string;
|
|
584
659
|
classNames?: Partial<ConversationContextPanelClassNames>;
|
|
585
660
|
}
|
|
586
|
-
declare function ConversationContextPanel({ entries, defaultOpen, labels: labelsOverride, className, classNames, }: ConversationContextPanelProps): react.JSX.Element;
|
|
661
|
+
declare function ConversationContextPanel({ entries, defaultOpen, flowLabel, labels: labelsOverride, className, classNames, }: ConversationContextPanelProps): react.JSX.Element;
|
|
587
662
|
|
|
588
663
|
interface WindowExpiredNoticeLabels {
|
|
589
664
|
title: string;
|
|
@@ -962,6 +1037,47 @@ interface WelcomeFarewellFormProps {
|
|
|
962
1037
|
}
|
|
963
1038
|
declare function WelcomeFarewellForm({ welcomeMessage, onWelcomeMessageChange, farewellMessage, onFarewellMessageChange, onSave, saving, saveSuccess, welcomePlaceholders, farewellPlaceholders, labels: labelsOverride, }: WelcomeFarewellFormProps): react.JSX.Element;
|
|
964
1039
|
|
|
1040
|
+
interface TranscriptionSettingsFormLabels {
|
|
1041
|
+
sectionTitle: string;
|
|
1042
|
+
enabled: string;
|
|
1043
|
+
enabledHint: string;
|
|
1044
|
+
modeTitle: string;
|
|
1045
|
+
modeAuto: string;
|
|
1046
|
+
modeAutoHint: string;
|
|
1047
|
+
modeOnDemand: string;
|
|
1048
|
+
modeOnDemandHint: string;
|
|
1049
|
+
unavailable: string;
|
|
1050
|
+
save: string;
|
|
1051
|
+
saving: string;
|
|
1052
|
+
saveSuccess: string;
|
|
1053
|
+
}
|
|
1054
|
+
interface TranscriptionSettingsFormProps {
|
|
1055
|
+
enabled: boolean;
|
|
1056
|
+
onEnabledChange: (value: boolean) => void;
|
|
1057
|
+
mode: TranscriptionMode;
|
|
1058
|
+
onModeChange: (value: TranscriptionMode) => void;
|
|
1059
|
+
onSave: (event: FormEvent) => void;
|
|
1060
|
+
/**
|
|
1061
|
+
* A capacidade existe no servidor (engine e credencial configurados)?
|
|
1062
|
+
*
|
|
1063
|
+
* Distinto de `enabled`: isto é "o ambiente consegue", aquilo é "esta empresa quer". Sem a
|
|
1064
|
+
* distinção, um lojista ligaria o interruptor num ambiente sem engine e concluiria que o produto
|
|
1065
|
+
* está quebrado — o texto nunca apareceria e nada explicaria por quê.
|
|
1066
|
+
*/
|
|
1067
|
+
isAvailable?: boolean;
|
|
1068
|
+
saving?: boolean;
|
|
1069
|
+
saveSuccess?: boolean;
|
|
1070
|
+
labels?: Partial<TranscriptionSettingsFormLabels>;
|
|
1071
|
+
}
|
|
1072
|
+
/**
|
|
1073
|
+
* Interruptor de transcrição por empresa, para a tela de configurações.
|
|
1074
|
+
*
|
|
1075
|
+
* Puramente apresentacional, como os outros forms daqui: quem persiste é o host. O pacote não sabe a
|
|
1076
|
+
* rota, e a política vive nas configurações do módulo (`settings.transcriptionEnabled`), não em
|
|
1077
|
+
* variável de ambiente — mudar de ideia sobre transcrever não deveria exigir deploy.
|
|
1078
|
+
*/
|
|
1079
|
+
declare function TranscriptionSettingsForm({ enabled, onEnabledChange, mode, onModeChange, onSave, isAvailable, saving, saveSuccess, labels: labelsOverride, }: TranscriptionSettingsFormProps): react.JSX.Element;
|
|
1080
|
+
|
|
965
1081
|
declare const TEMPLATE_SETTINGS_TAB: {
|
|
966
1082
|
readonly SELECT: "select";
|
|
967
1083
|
readonly CREATE: "create";
|
|
@@ -1045,6 +1161,23 @@ declare function useConversationMessages(conversationId: string, params?: {
|
|
|
1045
1161
|
before?: string;
|
|
1046
1162
|
}): UseConversationMessagesResult;
|
|
1047
1163
|
|
|
1164
|
+
type UseScrollToLatestMessageParams = {
|
|
1165
|
+
/** Troca de conversa. Muda ⇒ salto instantâneo para o fim. */
|
|
1166
|
+
readonly conversationId: string | undefined;
|
|
1167
|
+
/** Quantidade de mensagens carregadas. Cresce ⇒ acompanha o fim, se o operador estiver lá. */
|
|
1168
|
+
readonly messageCount: number;
|
|
1169
|
+
};
|
|
1170
|
+
type UseScrollToLatestMessageResult = {
|
|
1171
|
+
/** Vai no elemento que rola — tipicamente o `ConversationWallpaper`. */
|
|
1172
|
+
readonly containerRef: RefObject<HTMLDivElement | null>;
|
|
1173
|
+
/** Ligue no `onScroll` do mesmo elemento: é o que detecta o operador lendo o histórico. */
|
|
1174
|
+
readonly handleScroll: (event: UIEvent<HTMLDivElement>) => void;
|
|
1175
|
+
/** `true` quando o operador rolou para trás — serve a um botão "ir para a última". */
|
|
1176
|
+
readonly isAwayFromBottom: boolean;
|
|
1177
|
+
readonly scrollToBottom: (behavior?: ScrollBehavior) => void;
|
|
1178
|
+
};
|
|
1179
|
+
declare function useScrollToLatestMessage({ conversationId, messageCount, }: UseScrollToLatestMessageParams): UseScrollToLatestMessageResult;
|
|
1180
|
+
|
|
1048
1181
|
type UseConversationListParams = ListConversationsParams;
|
|
1049
1182
|
interface UseConversationListResult {
|
|
1050
1183
|
conversations: ConversationSummary[];
|
|
@@ -1132,4 +1265,4 @@ interface AsyncResourceState<T> {
|
|
|
1132
1265
|
|
|
1133
1266
|
declare function createMediaUrlResolver(api: Pick<ConversationsApi, 'getDocumentUrl' | 'getMediaProxyUrl'>): ResolveMediaUrl;
|
|
1134
1267
|
|
|
1135
|
-
export { type AsyncResourceState, AudioPlayer, type AudioPlayerProps, Avatar, type AvatarLabels, type AvatarProps, type BuildTranscriptTextParams, CHANNEL_BRAND_COLOR, CONVERSATION_WINDOW, ChannelIcon, type ChannelIconProps, ConversationChannel, type ConversationContextEntry, ConversationContextPanel, type ConversationContextPanelClassNames, type ConversationContextPanelLabels, type ConversationContextPanelProps, ConversationDocument, ConversationDocumentsPanel, type ConversationDocumentsPanelClassNames, type ConversationDocumentsPanelLabels, type ConversationDocumentsPanelProps, ConversationHeader, type ConversationHeaderClassNames, type ConversationHeaderLabels, type ConversationHeaderProps, type ConversationHeaderUtility, ConversationListItem, type ConversationListItemLabels, type ConversationListItemProps, type ConversationLocales, ConversationLocalesProvider, type ConversationLocalesProviderProps, type ConversationRealtimeHandler, ConversationRow, type ConversationRowClassNames, type ConversationRowProps, ConversationSummary, ConversationTemplate, ConversationWallpaper, type ConversationWallpaperProps, type ConversationWindow, ConversationsApi, ConversationsFeatures, ConversationsProvider, DEFAULT_ACCEPTED_FILE_TYPES, DEFAULT_AVATAR_LABELS, DEFAULT_CONVERSATION_CONTEXT_LABELS, DEFAULT_CONVERSATION_DOCUMENTS_LABELS, DEFAULT_CONVERSATION_HEADER_LABELS, DEFAULT_CONVERSATION_LIST_ITEM_LABELS, DEFAULT_DOCUMENTS_LIBRARY_LABELS, DEFAULT_EMOJI_PICKER_LABELS, DEFAULT_INTERACTIVE_MESSAGE_LABELS, DEFAULT_LIGHTBOX_LABELS, DEFAULT_MESSAGE_COMPOSER_LABELS, DEFAULT_RICH_COMPOSER_TOOLTIPS, DEFAULT_TEMPLATES_SETTINGS_LABELS, DEFAULT_WHATSAPP_MESSAGE_EDITOR_LABELS, DEFAULT_WINDOW_EXPIRED_LABELS, DOCUMENT_SOURCE_FILTER, DateDivider, type DateDividerClassNames, type DateDividerProps, type DocumentSourceFilter, DocumentsLibrary, type DocumentsLibraryClassNames, type DocumentsLibraryLabels, type DocumentsLibraryProps, EMOJI_CATEGORIES, type EmojiCategory, type EmojiEntry, EmojiPicker, type EmojiPickerLabels, type EmojiPickerProps, FileIcon, type FileIconProps, InteractiveMessage, type InteractiveMessageLabels, type InteractiveMessageProps, InteractivePayload, InteractiveSelection, Lightbox, type LightboxLabels, type LightboxProps, ListConversationsParams, ListDocumentsParams, MessageBubble, type MessageBubbleProps, MessageComposer, type MessageComposerClassNames, type MessageComposerLabels, type MessageComposerProps, MessagePayload, MessageTail, MessageText, type MessageTextProps, MessageTimestamp, NARROW_MAX_WIDTH_PX, type QuickReply, RICH_COMPOSER_ACTION, ResolveMediaUrl, type RichComposerAction, type RichComposerQuickReply, type RichComposerTooltips, type RichComposerVariable, RichMessageComposer, type RichMessageComposerHandle, type RichMessageComposerProps, SSEProvider, SimpleEmojiPicker, type SimpleEmojiPickerProps, StatusTicks, type StatusTicksProps, TEMPLATE_SETTINGS_TAB, type TemplateSettingsTab, ToastProvider, type TopicItem, TopicsForm, type TopicsFormLabels, type TopicsFormProps, type UseConversationActionsResult, type UseConversationContextResult, type UseConversationDocumentsParams, type UseConversationDocumentsResult, type UseConversationListParams, type UseConversationListResult, type UseConversationMessagesResult, type UseInboxActionsResult, type UseWaitingNotificationsLabels, type UseWaitingNotificationsParams, type UseWaitingNotificationsResult, WINDOW_FILTERS, WelcomeFarewellForm, type WelcomeFarewellFormLabels, type WelcomeFarewellFormProps, WhatsAppCreateTemplateForm, type WhatsAppCreateTemplateFormLabels, type WhatsAppCreateTemplateFormProps, type WhatsAppCreateTemplateResult, type WhatsAppCreateTemplateState, WhatsAppMessageEditor, type WhatsAppMessageEditorLabels, type WhatsAppMessageEditorProps, type WhatsAppTemplateHeaderType, WhatsAppTemplateSettingsForm, type WhatsAppTemplateSettingsFormLabels, type WhatsAppTemplateSettingsFormProps, type WhatsAppTemplateSummary, type WhatsAppTemplateVariableSuggestion, WhatsAppTemplatesSettings, type WhatsAppTemplatesSettingsLabels, type WhatsAppTemplatesSettingsProps, WindowExpiredNotice, type WindowExpiredNoticeLabels, type WindowExpiredNoticeProps, type WindowOfParams, applyQuickReplyVariables, buildTranscriptFilename, buildTranscriptText, createMediaUrlResolver, downloadTextFile, formatDateTime, formatFileSize, formatPhone, formatStalledFor, formatTimestamp, htmlToWA, isSameDay, isWindowBlocking, parseWhatsAppFormatting, phoneInitials, resolveQuickReply, searchEmojis, toast, useConversationActions, useConversationContext, useConversationDocuments, useConversationList, useConversationLocales, useConversationMessages, useConversationRealtime, useConversations, useDarkMode, useGlobalRealtime, useInboxActions, useIsDarkTheme, useIsNarrow, useToast, useWaitingNotifications, waToHTML, waToHTMLInline, windowOf };
|
|
1268
|
+
export { type AsyncResourceState, AudioPlayer, type AudioPlayerProps, AudioTranscription, type AudioTranscriptionProps, Avatar, type AvatarLabels, type AvatarProps, type BuildTranscriptTextParams, CHANNEL_BRAND_COLOR, CONVERSATION_WINDOW, ChannelIcon, type ChannelIconProps, ConversationChannel, type ConversationContextEntry, ConversationContextPanel, type ConversationContextPanelClassNames, type ConversationContextPanelLabels, type ConversationContextPanelProps, type ConversationContextStatus, ConversationDocument, ConversationDocumentsPanel, type ConversationDocumentsPanelClassNames, type ConversationDocumentsPanelLabels, type ConversationDocumentsPanelProps, ConversationHeader, type ConversationHeaderClassNames, type ConversationHeaderLabels, type ConversationHeaderProps, type ConversationHeaderUtility, ConversationListItem, type ConversationListItemLabels, type ConversationListItemProps, type ConversationLocales, ConversationLocalesProvider, type ConversationLocalesProviderProps, type ConversationRealtimeHandler, ConversationRow, type ConversationRowClassNames, type ConversationRowProps, ConversationSummary, ConversationTemplate, ConversationWallpaper, type ConversationWallpaperProps, type ConversationWindow, ConversationsApi, ConversationsFeatures, ConversationsProvider, DEFAULT_ACCEPTED_FILE_TYPES, DEFAULT_AVATAR_LABELS, DEFAULT_CONVERSATION_CONTEXT_LABELS, DEFAULT_CONVERSATION_DOCUMENTS_LABELS, DEFAULT_CONVERSATION_HEADER_LABELS, DEFAULT_CONVERSATION_LIST_ITEM_LABELS, DEFAULT_DOCUMENTS_LIBRARY_LABELS, DEFAULT_EMOJI_PICKER_LABELS, DEFAULT_INTERACTIVE_MESSAGE_LABELS, DEFAULT_LIGHTBOX_LABELS, DEFAULT_MESSAGE_COMPOSER_LABELS, DEFAULT_RICH_COMPOSER_TOOLTIPS, DEFAULT_TEMPLATES_SETTINGS_LABELS, DEFAULT_WHATSAPP_MESSAGE_EDITOR_LABELS, DEFAULT_WINDOW_EXPIRED_LABELS, DOCUMENT_SOURCE_FILTER, DateDivider, type DateDividerClassNames, type DateDividerProps, type DocumentSourceFilter, DocumentsLibrary, type DocumentsLibraryClassNames, type DocumentsLibraryLabels, type DocumentsLibraryProps, EMOJI_CATEGORIES, type EmojiCategory, type EmojiEntry, EmojiPicker, type EmojiPickerLabels, type EmojiPickerProps, FileIcon, type FileIconProps, InteractiveMessage, type InteractiveMessageLabels, type InteractiveMessageProps, InteractivePayload, InteractiveSelection, Lightbox, type LightboxLabels, type LightboxProps, ListConversationsParams, ListDocumentsParams, MessageBubble, type MessageBubbleProps, MessageComposer, type MessageComposerClassNames, type MessageComposerLabels, type MessageComposerProps, MessagePayload, MessageTail, MessageText, type MessageTextProps, MessageTimestamp, MessageTranscription, NARROW_MAX_WIDTH_PX, type QuickReply, RICH_COMPOSER_ACTION, ResolveMediaUrl, type RichComposerAction, type RichComposerQuickReply, type RichComposerTooltips, type RichComposerVariable, RichMessageComposer, type RichMessageComposerHandle, type RichMessageComposerProps, SSEProvider, SimpleEmojiPicker, type SimpleEmojiPickerProps, StatusTicks, type StatusTicksProps, TEMPLATE_SETTINGS_TAB, type TemplateSettingsTab, ToastProvider, type TopicItem, TopicsForm, type TopicsFormLabels, type TopicsFormProps, TranscriptionMode, TranscriptionSettingsForm, type TranscriptionSettingsFormLabels, type TranscriptionSettingsFormProps, type UseConversationActionsResult, type UseConversationContextResult, type UseConversationDocumentsParams, type UseConversationDocumentsResult, type UseConversationListParams, type UseConversationListResult, type UseConversationMessagesResult, type UseInboxActionsResult, type UseScrollToLatestMessageParams, type UseScrollToLatestMessageResult, type UseWaitingNotificationsLabels, type UseWaitingNotificationsParams, type UseWaitingNotificationsResult, WINDOW_FILTERS, WelcomeFarewellForm, type WelcomeFarewellFormLabels, type WelcomeFarewellFormProps, WhatsAppCreateTemplateForm, type WhatsAppCreateTemplateFormLabels, type WhatsAppCreateTemplateFormProps, type WhatsAppCreateTemplateResult, type WhatsAppCreateTemplateState, WhatsAppMessageEditor, type WhatsAppMessageEditorLabels, type WhatsAppMessageEditorProps, type WhatsAppTemplateHeaderType, WhatsAppTemplateSettingsForm, type WhatsAppTemplateSettingsFormLabels, type WhatsAppTemplateSettingsFormProps, type WhatsAppTemplateSummary, type WhatsAppTemplateVariableSuggestion, WhatsAppTemplatesSettings, type WhatsAppTemplatesSettingsLabels, type WhatsAppTemplatesSettingsProps, WindowExpiredNotice, type WindowExpiredNoticeLabels, type WindowExpiredNoticeProps, type WindowOfParams, applyQuickReplyVariables, buildTranscriptFilename, buildTranscriptText, createMediaUrlResolver, downloadTextFile, formatDateTime, formatFileSize, formatPhone, formatStalledFor, formatTimestamp, htmlToWA, isSameDay, isWindowBlocking, parseWhatsAppFormatting, phoneInitials, resolveQuickReply, searchEmojis, toast, useConversationActions, useConversationContext, useConversationDocuments, useConversationList, useConversationLocales, useConversationMessages, useConversationRealtime, useConversations, useDarkMode, useGlobalRealtime, useInboxActions, useIsDarkTheme, useIsNarrow, useScrollToLatestMessage, useToast, useWaitingNotifications, waToHTML, waToHTMLInline, windowOf };
|