@giovchat/react-native 0.0.0-stage → 0.2.0

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.
Files changed (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +333 -2
  3. package/dist/GiovChat.d.ts +100 -0
  4. package/dist/GiovChat.d.ts.map +1 -0
  5. package/dist/GiovChat.js +257 -0
  6. package/dist/GiovChat.js.map +1 -0
  7. package/dist/attachments.d.ts +121 -0
  8. package/dist/attachments.d.ts.map +1 -0
  9. package/dist/attachments.js +185 -0
  10. package/dist/attachments.js.map +1 -0
  11. package/dist/brand-assets.d.ts +6 -0
  12. package/dist/brand-assets.d.ts.map +1 -0
  13. package/dist/brand-assets.js +9 -0
  14. package/dist/brand-assets.js.map +1 -0
  15. package/dist/client.d.ts +190 -0
  16. package/dist/client.d.ts.map +1 -0
  17. package/dist/client.js +801 -0
  18. package/dist/client.js.map +1 -0
  19. package/dist/color.d.ts +25 -0
  20. package/dist/color.d.ts.map +1 -0
  21. package/dist/color.js +78 -0
  22. package/dist/color.js.map +1 -0
  23. package/dist/components/Attachments.d.ts +13 -0
  24. package/dist/components/Attachments.d.ts.map +1 -0
  25. package/dist/components/Attachments.js +42 -0
  26. package/dist/components/Attachments.js.map +1 -0
  27. package/dist/components/Branding.d.ts +6 -0
  28. package/dist/components/Branding.d.ts.map +1 -0
  29. package/dist/components/Branding.js +28 -0
  30. package/dist/components/Branding.js.map +1 -0
  31. package/dist/components/ChatMarkdown.d.ts +15 -0
  32. package/dist/components/ChatMarkdown.d.ts.map +1 -0
  33. package/dist/components/ChatMarkdown.js +72 -0
  34. package/dist/components/ChatMarkdown.js.map +1 -0
  35. package/dist/components/GiovBotMark.d.ts +6 -0
  36. package/dist/components/GiovBotMark.d.ts.map +1 -0
  37. package/dist/components/GiovBotMark.js +11 -0
  38. package/dist/components/GiovBotMark.js.map +1 -0
  39. package/dist/components/GreetingBubble.d.ts +7 -0
  40. package/dist/components/GreetingBubble.d.ts.map +1 -0
  41. package/dist/components/GreetingBubble.js +12 -0
  42. package/dist/components/GreetingBubble.js.map +1 -0
  43. package/dist/components/Header.d.ts +18 -0
  44. package/dist/components/Header.d.ts.map +1 -0
  45. package/dist/components/Header.js +67 -0
  46. package/dist/components/Header.js.map +1 -0
  47. package/dist/components/MessageBubble.d.ts +16 -0
  48. package/dist/components/MessageBubble.d.ts.map +1 -0
  49. package/dist/components/MessageBubble.js +49 -0
  50. package/dist/components/MessageBubble.js.map +1 -0
  51. package/dist/components/PreChatForm.d.ts +11 -0
  52. package/dist/components/PreChatForm.d.ts.map +1 -0
  53. package/dist/components/PreChatForm.js +72 -0
  54. package/dist/components/PreChatForm.js.map +1 -0
  55. package/dist/components/TypingIndicator.d.ts +9 -0
  56. package/dist/components/TypingIndicator.d.ts.map +1 -0
  57. package/dist/components/TypingIndicator.js +18 -0
  58. package/dist/components/TypingIndicator.js.map +1 -0
  59. package/dist/components/WidgetStyles.d.ts +3 -0
  60. package/dist/components/WidgetStyles.d.ts.map +1 -0
  61. package/dist/components/WidgetStyles.js +9 -0
  62. package/dist/components/WidgetStyles.js.map +1 -0
  63. package/dist/components/bubbleStyles.d.ts +47 -0
  64. package/dist/components/bubbleStyles.d.ts.map +1 -0
  65. package/dist/components/bubbleStyles.js +19 -0
  66. package/dist/components/bubbleStyles.js.map +1 -0
  67. package/dist/components/index.d.ts +11 -0
  68. package/dist/components/index.d.ts.map +1 -0
  69. package/dist/components/index.js +14 -0
  70. package/dist/components/index.js.map +1 -0
  71. package/dist/errors.d.ts +18 -0
  72. package/dist/errors.d.ts.map +1 -0
  73. package/dist/errors.js +26 -0
  74. package/dist/errors.js.map +1 -0
  75. package/dist/i18n.d.ts +73 -0
  76. package/dist/i18n.d.ts.map +1 -0
  77. package/dist/i18n.js +292 -0
  78. package/dist/i18n.js.map +1 -0
  79. package/dist/identity.d.ts +41 -0
  80. package/dist/identity.d.ts.map +1 -0
  81. package/dist/identity.js +41 -0
  82. package/dist/identity.js.map +1 -0
  83. package/dist/index.d.ts +20 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +46 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/markdown.d.ts +56 -0
  88. package/dist/markdown.d.ts.map +1 -0
  89. package/dist/markdown.js +219 -0
  90. package/dist/markdown.js.map +1 -0
  91. package/dist/outbox.d.ts +68 -0
  92. package/dist/outbox.d.ts.map +1 -0
  93. package/dist/outbox.js +168 -0
  94. package/dist/outbox.js.map +1 -0
  95. package/dist/protocol.d.ts +9 -0
  96. package/dist/protocol.d.ts.map +1 -0
  97. package/dist/protocol.js +34 -0
  98. package/dist/protocol.js.map +1 -0
  99. package/dist/styleOverrides.d.ts +37 -0
  100. package/dist/styleOverrides.d.ts.map +1 -0
  101. package/dist/styleOverrides.js +54 -0
  102. package/dist/styleOverrides.js.map +1 -0
  103. package/dist/types.d.ts +111 -0
  104. package/dist/types.d.ts.map +1 -0
  105. package/dist/types.js +3 -0
  106. package/dist/types.js.map +1 -0
  107. package/dist/unread.d.ts +9 -0
  108. package/dist/unread.d.ts.map +1 -0
  109. package/dist/unread.js +49 -0
  110. package/dist/unread.js.map +1 -0
  111. package/dist/useChatSession.d.ts +78 -0
  112. package/dist/useChatSession.d.ts.map +1 -0
  113. package/dist/useChatSession.js +796 -0
  114. package/dist/useChatSession.js.map +1 -0
  115. package/package.json +59 -4
  116. package/src/GiovChat.tsx +530 -0
  117. package/src/attachments.ts +218 -0
  118. package/src/brand-assets.ts +5 -0
  119. package/src/client.ts +758 -0
  120. package/src/color.ts +74 -0
  121. package/src/components/Attachments.tsx +75 -0
  122. package/src/components/Branding.tsx +35 -0
  123. package/src/components/ChatMarkdown.tsx +111 -0
  124. package/src/components/GiovBotMark.tsx +19 -0
  125. package/src/components/GreetingBubble.tsx +20 -0
  126. package/src/components/Header.tsx +131 -0
  127. package/src/components/MessageBubble.tsx +121 -0
  128. package/src/components/PreChatForm.tsx +183 -0
  129. package/src/components/TypingIndicator.tsx +34 -0
  130. package/src/components/WidgetStyles.tsx +5 -0
  131. package/src/components/bubbleStyles.ts +16 -0
  132. package/src/components/index.ts +14 -0
  133. package/src/errors.ts +30 -0
  134. package/src/i18n.ts +351 -0
  135. package/src/identity.ts +54 -0
  136. package/src/index.ts +68 -0
  137. package/src/markdown.ts +227 -0
  138. package/src/outbox.ts +175 -0
  139. package/src/protocol.ts +31 -0
  140. package/src/styleOverrides.ts +85 -0
  141. package/src/types.ts +119 -0
  142. package/src/unread.ts +39 -0
  143. package/src/useChatSession.ts +695 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChatSession.js","sourceRoot":"","sources":["../src/useChatSession.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,61 @@
1
1
  {
2
2
  "name": "@giovchat/react-native",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.2.0",
4
+ "description": "React Native SDK for the GiovChat live chat platform",
5
+ "license": "MIT",
6
+ "author": "Fegig Tech",
7
+ "homepage": "https://giovchat.app/docs",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/Fegig-Tech/giovchat-react-native.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/Fegig-Tech/giovchat-react-native/issues"
14
+ },
15
+ "keywords": [
16
+ "react-native",
17
+ "chat",
18
+ "live-chat",
19
+ "customer-support",
20
+ "giovchat"
21
+ ],
22
+ "private": false,
23
+ "main": "dist/index.js",
24
+ "types": "dist/index.d.ts",
25
+ "sideEffects": false,
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/index.d.ts",
29
+ "default": "./dist/index.js"
30
+ },
31
+ "./package.json": "./package.json"
32
+ },
33
+ "files": [
34
+ "dist",
35
+ "src"
36
+ ],
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "scripts": {
41
+ "clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
42
+ "build": "npm run clean && tsc -p tsconfig.json",
43
+ "lint": "echo \"no lint configured yet\"",
44
+ "typecheck": "tsc -p tsconfig.json --noEmit",
45
+ "prepublishOnly": "npm run build",
46
+ "test": "node --test test/*.test.cjs"
47
+ },
48
+ "peerDependencies": {
49
+ "react": ">=18.0.0",
50
+ "react-native": ">=0.72.0",
51
+ "react-native-safe-area-context": ">=4.0.0"
52
+ },
53
+ "devDependencies": {
54
+ "@types/react": "^19.2.18",
55
+ "react": "^19.2.8",
56
+ "react-native": "^0.86.2",
57
+ "react-native-safe-area-context": "^5.8.1",
58
+ "react-test-renderer": "19.2.8",
59
+ "typescript": "^6.0.3"
60
+ }
61
+ }
@@ -0,0 +1,530 @@
1
+ import React, { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
2
+ import {
3
+ AccessibilityInfo,
4
+ ActivityIndicator,
5
+ FlatList,
6
+ KeyboardAvoidingView,
7
+ Modal,
8
+ Platform,
9
+ StyleSheet,
10
+ Text,
11
+ TextInput,
12
+ TouchableOpacity,
13
+ useColorScheme,
14
+ View,
15
+ } from "react-native";
16
+ import { useChatSession, sessionScope } from "./useChatSession";
17
+ import type { GiovChatError } from "./errors";
18
+ import {
19
+ GreetingBubble,
20
+ Header,
21
+ MessageBubble,
22
+ PreChatForm,
23
+ TypingIndicator,
24
+ } from "./components";
25
+ import type { GiovChatContact, GiovChatConnectionStatus, GiovChatSessionStorage, GiovMessage } from "./types";
26
+ import { SafeAreaView } from "react-native-safe-area-context";
27
+ import { resolveStyleOverrides, type GiovChatStyleOverrides } from "./styleOverrides";
28
+ import { WidgetStylesContext } from "./components/WidgetStyles";
29
+ import { Branding } from "./components/Branding";
30
+ import { GiovChatStringsContext, resolveStrings, type GiovChatStrings } from "./i18n";
31
+ import { headerIdentity, messageSenderLabel } from "./identity";
32
+ import { plainText } from "./markdown";
33
+ import { clampMessage } from "./outbox";
34
+ import { textOn } from "./color";
35
+ import {
36
+ DEFAULT_ATTACHMENT_POLICY,
37
+ MAX_ATTACHED_FILES,
38
+ validateAttachments,
39
+ type AttachmentProblem,
40
+ type GiovChatAttachmentPicker,
41
+ type GiovChatPickedFile,
42
+ } from "./attachments";
43
+ import type { GiovPushOptions, GiovPushPlatform, GiovPushRegistration } from "./client";
44
+ import { forgetUnreadCount, publishUnreadCount } from "./unread";
45
+
46
+ // ─── Public prop types ─────────────────────────────────────────────────────
47
+
48
+ export interface GiovChatProps {
49
+ /**
50
+ * Tenant key from your agent dashboard.
51
+ * Widget settings (colors, greeting, pre-chat fields, bot name, etc.) are
52
+ * fetched from the server automatically using this key.
53
+ */
54
+ tenantKey: string;
55
+
56
+ /**
57
+ * Render mode:
58
+ * - `"modal"` (default) — wraps the chat in a native `Modal` sheet.
59
+ * Control visibility with the `visible` prop.
60
+ * - `"fullscreen"` — renders inline, filling the parent container.
61
+ * Use inside a dedicated screen or tab.
62
+ */
63
+ mode?: "modal" | "fullscreen";
64
+
65
+ /**
66
+ * Show or hide the chat.
67
+ * In `modal` mode this drives `Modal.visible`.
68
+ * In `fullscreen` mode the component renders `null` when `false`.
69
+ * @default true
70
+ */
71
+ visible?: boolean;
72
+
73
+ /** Called when the user taps the close (✕) button. */
74
+ onClose?: () => void;
75
+
76
+ /**
77
+ * Contact info for the currently logged-in user.
78
+ * Any field supplied here is forwarded to the server automatically
79
+ * and skips the corresponding pre-chat form field.
80
+ */
81
+ contact?: GiovChatContact;
82
+
83
+ /**
84
+ * Override the API base URL.
85
+ * @default "https://api.giovchat.app"
86
+ */
87
+ baseUrl?: string;
88
+
89
+ /**
90
+ * Override the primary brand color from the dashboard.
91
+ * Use a React Native color string.
92
+ */
93
+ primaryColor?: string;
94
+
95
+ /** Override the dashboard's theme. `"auto"` follows the device. */
96
+ theme?: "light" | "dark" | "auto";
97
+
98
+ /** Allowed font and color overrides. Layout and plan branding remain SDK-controlled. */
99
+ styleOverrides?: GiovChatStyleOverrides;
100
+
101
+ /** Interface language ("fr", "pt-BR", …). Defaults to the device language; unsupported ones use English. */
102
+ locale?: string;
103
+ /** Replace any of the SDK's interface strings. */
104
+ strings?: Partial<GiovChatStrings>;
105
+
106
+ /**
107
+ * Enables attachments: the host's own file or image picker. Visitors can attach only what the
108
+ * agent allows; without a picker the attach button is hidden.
109
+ */
110
+ attachmentPicker?: GiovChatAttachmentPicker;
111
+
112
+ /**
113
+ * Stay connected while the chat is hidden (and the app is in the foreground) so new replies are
114
+ * counted as unread. Only resumes an existing conversation; it never starts one.
115
+ */
116
+ keepConnected?: boolean;
117
+ /** Agent replies the visitor has not seen because the chat was hidden. */
118
+ onUnreadCountChange?: (count: number) => void;
119
+
120
+ /** Invoked once with the conversation ID after a session is created. */
121
+ onConversationStart?: (conversationId: string) => void;
122
+ /** Changes isolate/reset the session, for example on logout or account switching. */
123
+ sessionKey?: string | number;
124
+ /** Optional secure storage owned by the host application. No persistence by default. */
125
+ sessionStorage?: GiovChatSessionStorage;
126
+ onError?: (error: GiovChatError) => void;
127
+ onConnectionStatusChange?: (status: GiovChatConnectionStatus) => void;
128
+ }
129
+
130
+ export interface GiovChatHandle {
131
+ /** Clears this identity's stored session and starts fresh if the chat is visible. */
132
+ reset(): Promise<void>;
133
+ /**
134
+ * Registers the device's push token (APNs or FCM) for replies in this conversation, now or once
135
+ * it connects. Pass `{ environment: "sandbox" }` from iOS development builds. Resolves
136
+ * `{ registered: false, reason: "unsupported" }` against a server without visitor push. The
137
+ * notification language defaults to the `locale` prop, else the device language.
138
+ *
139
+ * Before any conversation exists the promise stays pending until one connects (the visitor's
140
+ * first message starts it). It resolves `{ registered: false, reason: "no_conversation" }` when
141
+ * the chat unmounts (including a `sessionKey` change), on `reset()`, or when the workspace refuses
142
+ * the visitor's identity. The token is remembered: a new conversation after the team closed the
143
+ * last one is registered again automatically, until `reset()` or `unregisterPushToken()`.
144
+ */
145
+ registerPushToken(token: string, platform: GiovPushPlatform, options?: GiovPushOptions): Promise<GiovPushRegistration>;
146
+ /**
147
+ * Stops push notifications about this conversation on this device (sign-out, notifications turned
148
+ * off). Call it before `reset()`. Resolves true when the server confirmed; never throws.
149
+ */
150
+ unregisterPushToken(token: string): Promise<boolean>;
151
+ }
152
+
153
+ // ─── Component ───────────────────────────────────────────────────────────────
154
+
155
+ export const GiovChat = React.forwardRef<GiovChatHandle, GiovChatProps>(function GiovChat(props, ref) {
156
+ const scope = sessionScope(props.baseUrl ?? "https://api.giovchat.app", props.tenantKey, props.contact, props.sessionKey);
157
+ return <GiovChatInstance key={scope} {...props} ref={ref} />;
158
+ });
159
+
160
+ function errorText(error: GiovChatError, strings: GiovChatStrings): string {
161
+ switch (error.code) {
162
+ case "invalid_session": return strings.sessionExpired;
163
+ case "conversation_closed": return strings.conversationEnded;
164
+ case "upload_failed": return strings.uploadFailed;
165
+ case "send_failed": return strings.sendFailed;
166
+ case "disconnected": case "connection_failed": return strings.reconnecting;
167
+ case "workspace_busy": return strings.busy;
168
+ default: return strings.unavailable;
169
+ }
170
+ }
171
+
172
+ function problemText(problem: AttachmentProblem, strings: GiovChatStrings): string {
173
+ switch (problem.kind) {
174
+ case "disabled": return strings.attachmentsOff;
175
+ case "type": return strings.typeNotAllowed(problem.name);
176
+ case "size": return strings.fileTooLarge(problem.name, problem.maxSizeMb);
177
+ case "count": return strings.tooManyFiles(problem.max);
178
+ }
179
+ }
180
+
181
+ const GiovChatInstance = React.forwardRef<GiovChatHandle, GiovChatProps>(function GiovChatInstance({
182
+ tenantKey,
183
+ mode = "modal",
184
+ visible = true,
185
+ onClose,
186
+ contact,
187
+ baseUrl = "https://api.giovchat.app",
188
+ primaryColor: overridePrimaryColor,
189
+ theme: themeOverride,
190
+ styleOverrides,
191
+ locale,
192
+ strings: stringOverrides,
193
+ attachmentPicker,
194
+ keepConnected,
195
+ onUnreadCountChange,
196
+ onConversationStart,
197
+ sessionKey,
198
+ sessionStorage,
199
+ onError,
200
+ onConnectionStatusChange,
201
+ }: GiovChatProps, ref) {
202
+ const systemScheme = useColorScheme();
203
+ const custom = useMemo(() => resolveStyleOverrides(styleOverrides), [styleOverrides]);
204
+ const strings = useMemo(() => resolveStrings(locale, stringOverrides), [locale, stringOverrides]);
205
+
206
+ const scope = sessionScope(baseUrl, tenantKey, contact, sessionKey);
207
+ const chat = useChatSession({
208
+ tenantKey, baseUrl, visible, contact, scope, sessionKey, sessionStorage, keepConnected,
209
+ onError, onConnectionStatusChange, onConversationStart, onUnreadCountChange,
210
+ });
211
+ const { phase, config, messages, agentTyping, agentTypingIsBot, error, sending, uploads, requiredFields, retry, reset, submitContact, send } = chat;
212
+ const [input, setInput] = useState("");
213
+ const [files, setFiles] = useState<GiovChatPickedFile[]>([]);
214
+ const [fileProblem, setFileProblem] = useState<string | null>(null);
215
+ const listRef = useRef<FlatList<GiovMessage>>(null);
216
+ const unreadOwner = useRef(Symbol("giovchat-unread"));
217
+ useImperativeHandle(ref, () => ({
218
+ reset: async () => { setInput(""); setFiles([]); await reset(); },
219
+ registerPushToken: (token, platform, options) => chat.registerPushToken(token, platform, { ...(locale ? { locale } : {}), ...options }),
220
+ unregisterPushToken: chat.unregisterPushToken,
221
+ }), [reset, chat.registerPushToken, chat.unregisterPushToken, locale]);
222
+ useEffect(() => {
223
+ const timer = setTimeout(() => listRef.current?.scrollToEnd({ animated: true }), 80);
224
+ return () => clearTimeout(timer);
225
+ }, [messages.length, messages[messages.length - 1]?.content]);
226
+ useEffect(() => { publishUnreadCount(unreadOwner.current, tenantKey, chat.unreadCount); }, [tenantKey, chat.unreadCount]);
227
+ // Screen readers hear each reply as it arrives (history is not read out again).
228
+ const incoming = chat.lastIncoming;
229
+ useEffect(() => {
230
+ if (!incoming || !visible) return;
231
+ const sender = messageSenderLabel(incoming, { botName: config?.botName, agentName: chat.currentAgentName, you: strings.you, automated: strings.automated, agent: strings.agent });
232
+ const text = plainText(incoming.content) || (incoming.attachments?.length ? strings.attachment : "");
233
+ if (text) AccessibilityInfo.announceForAccessibility?.(strings.newMessage(sender, text));
234
+ // Announced once per message: only the message itself triggers it.
235
+ // eslint-disable-next-line react-hooks/exhaustive-deps
236
+ }, [incoming]);
237
+ useEffect(() => () => forgetUnreadCount(unreadOwner.current), []);
238
+
239
+ const primaryColor = overridePrimaryColor ?? config?.primaryColor ?? "#7c3aed";
240
+ const themeSetting = themeOverride ?? config?.theme;
241
+ const isDark = themeSetting === "dark" || (themeSetting === "auto" && systemScheme === "dark");
242
+ const handleClose = useCallback(() => onClose?.(), [onClose]);
243
+ const policy = config?.attachments ?? DEFAULT_ATTACHMENT_POLICY;
244
+ // Uploads need a conversation: the first message starts it, then files can follow.
245
+ const canAttach = !!attachmentPicker && chat.hasConversation && policy.enabled && policy.allowedTypes.length > 0;
246
+ const composing = phase === "ready" || phase === "connecting" || phase === "active";
247
+ const canSend = composing && !sending && (!!input.trim() || files.length > 0);
248
+ const handleSend = async () => {
249
+ const text = input.trim();
250
+ if (!canSend) return;
251
+ const sentFiles = files;
252
+ if (await send(text, sentFiles)) {
253
+ setInput((current) => current.trim() === text ? "" : current);
254
+ setFiles((current) => current === sentFiles ? [] : current);
255
+ setFileProblem(null);
256
+ }
257
+ };
258
+ const handleAttach = async () => {
259
+ if (!attachmentPicker) return;
260
+ setFileProblem(null);
261
+ try {
262
+ const picked = await attachmentPicker.pick({ allowedTypes: policy.allowedTypes, maxFiles: Math.max(1, MAX_ATTACHED_FILES - files.length), maxSizeMb: policy.maxSizeMb });
263
+ const { accepted, problems } = validateAttachments(picked, files.length, policy);
264
+ if (accepted.length) setFiles((current) => [...current, ...accepted]);
265
+ if (problems.length) setFileProblem(problems.map((problem) => problemText(problem, strings)).join(" "));
266
+ } catch { /* The picker was dismissed or failed; nothing changes. */ }
267
+ };
268
+ const identity = config ? headerIdentity(config, chat.currentAgentName, chat.currentAgentAvatar) : null;
269
+ const subtitle = phase === "active" || phase === "ready"
270
+ ? identity?.kind === "person" ? strings.statusPerson : identity?.kind === "bot" ? strings.statusBot : strings.statusTeam
271
+ : phase === "connecting" ? strings.connecting : null;
272
+ const showClose = mode === "modal" || !!onClose;
273
+ const bgColor = isDark ? "#0a0a0a" : "#fff";
274
+ // Black or white on the buttons' colour, by WCAG contrast.
275
+ const buttonInk = textOn(custom.button.backgroundColor ?? primaryColor);
276
+
277
+ // ── Render ───────────────────────────────────────────────────────────────────
278
+
279
+ const chatContent = (
280
+ <GiovChatStringsContext.Provider value={strings}>
281
+ <WidgetStylesContext.Provider value={custom}>
282
+ <SafeAreaView style={[styles.safeArea, { backgroundColor: bgColor }, custom.container]}>
283
+ <Header
284
+ privacyPolicyUrl={config?.privacyPolicyUrl}
285
+ title={identity?.title ?? config?.title ?? "Chat"}
286
+ subtitle={subtitle}
287
+ primaryColor={primaryColor}
288
+ avatarUrl={identity?.avatar}
289
+ kind={identity?.kind}
290
+ onClose={showClose ? handleClose : undefined}
291
+ />
292
+
293
+ {(phase === "loading" || phase === "idle") && (
294
+ <View style={styles.centered}>
295
+ <ActivityIndicator size="large" color={primaryColor} />
296
+ <Text style={[styles.hint, { color: isDark ? "#555" : "#aaa" }, custom.hint]}>{strings.loading}</Text>
297
+ </View>
298
+ )}
299
+
300
+ {phase === "error" && (
301
+ <View style={styles.centered}>
302
+ <Text style={[styles.errorText, custom.errorText]}>{error ? errorText(error, strings) : strings.unavailable}</Text>
303
+ <TouchableOpacity
304
+ style={[styles.retryBtn, { backgroundColor: primaryColor }, custom.button]}
305
+ onPress={retry}
306
+ accessibilityRole="button"
307
+ accessibilityLabel={strings.retry}
308
+ >
309
+ <Text style={[styles.retryBtnText, { color: buttonInk }, custom.buttonText]}>{strings.tryAgain}</Text>
310
+ </TouchableOpacity>
311
+ </View>
312
+ )}
313
+
314
+ {phase === "pre-chat" && config?.requestUserInfo && (
315
+ <PreChatForm
316
+ fields={requiredFields}
317
+ primaryColor={primaryColor}
318
+ dark={isDark}
319
+ initialValues={contact}
320
+ onSubmit={submitContact}
321
+ />
322
+ )}
323
+
324
+ {composing && (
325
+ <KeyboardAvoidingView
326
+ style={styles.flex}
327
+ behavior={Platform.OS === "ios" ? "padding" : "height"}
328
+ >
329
+ {error && (
330
+ <Text accessibilityRole="alert" style={[styles.errorText, { padding: 10 }, custom.errorText]}>{errorText(error, strings)}</Text>
331
+ )}
332
+ <FlatList
333
+ ref={listRef}
334
+ data={messages}
335
+ keyExtractor={(item) => item.clientMessageId ?? item.id}
336
+ contentContainerStyle={styles.listContent}
337
+ ListHeaderComponent={
338
+ config ? (
339
+ <GreetingBubble
340
+ text={config.greetingText}
341
+ dark={isDark}
342
+ />
343
+ ) : null
344
+ }
345
+ ListFooterComponent={agentTyping ? <TypingIndicator dark={isDark} isBot={agentTypingIsBot} botName={config?.botName} /> : null}
346
+ renderItem={({ item }: { item: GiovMessage }) => (
347
+ <MessageBubble
348
+ message={item}
349
+ primaryColor={primaryColor}
350
+ dark={isDark}
351
+ botName={config?.botName}
352
+ resolveAttachmentUrl={chat.attachmentUrl}
353
+ onRetry={(message) => message.clientMessageId && chat.retryMessage(message.clientMessageId)}
354
+ onDiscard={(message) => message.clientMessageId && chat.discardMessage(message.clientMessageId)}
355
+ />
356
+ )}
357
+ />
358
+
359
+ {(files.length > 0 || fileProblem) && (
360
+ <View style={[styles.files, { backgroundColor: bgColor, borderTopColor: isDark ? "#1e1e1e" : "#ebebeb" }]}>
361
+ {fileProblem && <Text accessibilityRole="alert" style={[styles.fileProblem, custom.errorText]}>{fileProblem}</Text>}
362
+ <View style={styles.fileChips}>
363
+ {files.map((file, index) => {
364
+ const upload = uploads[index];
365
+ return (
366
+ <View key={`${file.uri}-${index}`} style={[styles.fileChip, { backgroundColor: isDark ? "#1c1c1c" : "#f2f2f2" }]}>
367
+ <Text style={[styles.fileChipText, { color: isDark ? "#e5e5e5" : "#222" }, custom.hint]} numberOfLines={1}>
368
+ {upload ? strings.uploading(Math.round(upload.progress * 100)) : file.name}
369
+ </Text>
370
+ {!sending && (
371
+ <TouchableOpacity
372
+ onPress={() => setFiles((current) => current.filter((_, i) => i !== index))}
373
+ accessibilityRole="button"
374
+ accessibilityLabel={strings.removeAttachment(file.name)}
375
+ hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }}
376
+ >
377
+ <Text style={{ color: isDark ? "#aaa" : "#666", fontSize: 14 }}>✕</Text>
378
+ </TouchableOpacity>
379
+ )}
380
+ </View>
381
+ );
382
+ })}
383
+ </View>
384
+ </View>
385
+ )}
386
+
387
+ <View
388
+ style={[
389
+ styles.composerRow,
390
+ {
391
+ borderTopColor: isDark ? "#1e1e1e" : "#ebebeb",
392
+ backgroundColor: bgColor,
393
+ },
394
+ custom.composer,
395
+ ]}
396
+ >
397
+ {canAttach && (
398
+ <TouchableOpacity
399
+ style={[styles.attachBtn, { borderColor: isDark ? "#2e2e2e" : "#e5e5e5" }]}
400
+ onPress={handleAttach}
401
+ disabled={sending || files.length >= MAX_ATTACHED_FILES}
402
+ accessibilityRole="button"
403
+ accessibilityLabel={strings.attachFile}
404
+ >
405
+ <Text style={[styles.attachIcon, { color: isDark ? "#ccc" : "#555" }]}>+</Text>
406
+ </TouchableOpacity>
407
+ )}
408
+ <TextInput
409
+ style={[
410
+ styles.composerInput,
411
+ {
412
+ color: isDark ? "#f0f0f0" : "#111",
413
+ backgroundColor: isDark ? "#1c1c1c" : "#f5f5f5",
414
+ borderColor: isDark ? "#2e2e2e" : "#e5e5e5",
415
+ },
416
+ custom.input,
417
+ ]}
418
+ value={input}
419
+ // Over the limit (a long paste) the text is cut at 2000, never dropped, and never through an emoji.
420
+ onChangeText={(value) => { setInput(clampMessage(value)); if (value.trim()) chat.notifyTyping(); }}
421
+ placeholder={config?.textArea ?? strings.composerPlaceholder}
422
+ placeholderTextColor={custom.hint.color ?? (isDark ? "#484848" : "#b0b0b0")}
423
+ accessibilityLabel={strings.messageInput}
424
+ // Typing goes on while files upload; only Send waits.
425
+ editable={composing}
426
+ multiline
427
+ />
428
+ <TouchableOpacity
429
+ style={[
430
+ styles.sendBtn,
431
+ { backgroundColor: primaryColor },
432
+ custom.button,
433
+ !canSend && styles.sendBtnOff,
434
+ ]}
435
+ onPress={handleSend}
436
+ disabled={!canSend}
437
+ accessibilityRole="button"
438
+ accessibilityLabel={strings.sendMessage}
439
+ >
440
+ <Text style={[styles.sendIcon, { color: buttonInk }, custom.buttonText]}>↑</Text>
441
+ </TouchableOpacity>
442
+ </View>
443
+ </KeyboardAvoidingView>
444
+ )}
445
+ <Branding showBranding={config?.showBranding} />
446
+ </SafeAreaView>
447
+ </WidgetStylesContext.Provider>
448
+ </GiovChatStringsContext.Provider>
449
+ );
450
+
451
+ if (mode === "modal") {
452
+ return (
453
+ <Modal
454
+ visible={visible}
455
+ animationType="slide"
456
+ presentationStyle="pageSheet"
457
+ onRequestClose={handleClose}
458
+ >
459
+ {chatContent}
460
+ </Modal>
461
+ );
462
+ }
463
+
464
+ return visible ? chatContent : null;
465
+ });
466
+
467
+ const styles = StyleSheet.create({
468
+ flex: { flex: 1 },
469
+ safeArea: { flex: 1 },
470
+ centered: {
471
+ flex: 1,
472
+ alignItems: "center",
473
+ justifyContent: "center",
474
+ gap: 14,
475
+ padding: 24,
476
+ },
477
+ hint: { fontSize: 14, marginTop: 4 },
478
+ errorText: {
479
+ color: "#dc2626",
480
+ fontSize: 14,
481
+ textAlign: "center",
482
+ lineHeight: 20,
483
+ },
484
+ retryBtn: {
485
+ borderRadius: 8,
486
+ paddingHorizontal: 28,
487
+ paddingVertical: 11,
488
+ },
489
+ retryBtnText: { color: "#fff", fontWeight: "600", fontSize: 14 },
490
+ listContent: { paddingBottom: 12 },
491
+ files: { paddingHorizontal: 10, paddingTop: 8, borderTopWidth: StyleSheet.hairlineWidth, gap: 6 },
492
+ fileProblem: { color: "#dc2626", fontSize: 12 },
493
+ fileChips: { flexDirection: "row", flexWrap: "wrap", gap: 6 },
494
+ fileChip: { flexDirection: "row", alignItems: "center", gap: 6, borderRadius: 14, paddingHorizontal: 10, paddingVertical: 5, maxWidth: 220 },
495
+ fileChipText: { fontSize: 12, flexShrink: 1 },
496
+ composerRow: {
497
+ flexDirection: "row",
498
+ alignItems: "flex-end",
499
+ gap: 8,
500
+ padding: 10,
501
+ borderTopWidth: StyleSheet.hairlineWidth,
502
+ },
503
+ attachBtn: {
504
+ width: 40,
505
+ height: 40,
506
+ borderRadius: 20,
507
+ borderWidth: 1,
508
+ alignItems: "center",
509
+ justifyContent: "center",
510
+ },
511
+ attachIcon: { fontSize: 22, lineHeight: 24 },
512
+ composerInput: {
513
+ flex: 1,
514
+ borderWidth: 1,
515
+ borderRadius: 22,
516
+ paddingHorizontal: 14,
517
+ paddingVertical: Platform.OS === "ios" ? 10 : 8,
518
+ fontSize: 14,
519
+ maxHeight: 120,
520
+ },
521
+ sendBtn: {
522
+ width: 40,
523
+ height: 40,
524
+ borderRadius: 20,
525
+ alignItems: "center",
526
+ justifyContent: "center",
527
+ },
528
+ sendBtnOff: { opacity: 0.35 },
529
+ sendIcon: { color: "#fff", fontSize: 18, fontWeight: "700", lineHeight: 22 },
530
+ });