@ringg/react-native 0.0.1-alpha.8 → 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 (118) hide show
  1. package/dist/index.d.mts +964 -0
  2. package/dist/index.d.ts +964 -0
  3. package/dist/index.js +1164 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/index.mjs +1129 -0
  6. package/dist/index.mjs.map +1 -0
  7. package/package.json +24 -66
  8. package/LICENSE +0 -21
  9. package/README.md +0 -250
  10. package/app.plugin.js +0 -51
  11. package/lib/module/adapters/index.js +0 -4
  12. package/lib/module/adapters/index.js.map +0 -1
  13. package/lib/module/adapters/livekit-rn-adapter.js +0 -216
  14. package/lib/module/adapters/livekit-rn-adapter.js.map +0 -1
  15. package/lib/module/components/RinggWidget.js +0 -550
  16. package/lib/module/components/RinggWidget.js.map +0 -1
  17. package/lib/module/components/steps/ButtonsStep.js +0 -146
  18. package/lib/module/components/steps/ButtonsStep.js.map +0 -1
  19. package/lib/module/components/steps/CalendarStep.js +0 -190
  20. package/lib/module/components/steps/CalendarStep.js.map +0 -1
  21. package/lib/module/components/steps/ConfirmationStep.js +0 -175
  22. package/lib/module/components/steps/ConfirmationStep.js.map +0 -1
  23. package/lib/module/components/steps/FormStep.js +0 -346
  24. package/lib/module/components/steps/FormStep.js.map +0 -1
  25. package/lib/module/components/steps/InteractiveFlow.js +0 -249
  26. package/lib/module/components/steps/InteractiveFlow.js.map +0 -1
  27. package/lib/module/components/ui/ActionButton.js +0 -92
  28. package/lib/module/components/ui/ActionButton.js.map +0 -1
  29. package/lib/module/components/ui/CallControls.js +0 -168
  30. package/lib/module/components/ui/CallControls.js.map +0 -1
  31. package/lib/module/components/ui/FeedbackScreen.js +0 -180
  32. package/lib/module/components/ui/FeedbackScreen.js.map +0 -1
  33. package/lib/module/components/ui/Icons.js +0 -294
  34. package/lib/module/components/ui/Icons.js.map +0 -1
  35. package/lib/module/components/ui/MessageBubble.js +0 -80
  36. package/lib/module/components/ui/MessageBubble.js.map +0 -1
  37. package/lib/module/components/ui/TabSelector.js +0 -80
  38. package/lib/module/components/ui/TabSelector.js.map +0 -1
  39. package/lib/module/components/ui/WidgetHeader.js +0 -168
  40. package/lib/module/components/ui/WidgetHeader.js.map +0 -1
  41. package/lib/module/context/RinggProvider.js +0 -134
  42. package/lib/module/context/RinggProvider.js.map +0 -1
  43. package/lib/module/context/index.js +0 -4
  44. package/lib/module/context/index.js.map +0 -1
  45. package/lib/module/globals.d.js +0 -2
  46. package/lib/module/globals.d.js.map +0 -1
  47. package/lib/module/hooks/index.js +0 -10
  48. package/lib/module/hooks/index.js.map +0 -1
  49. package/lib/module/hooks/useRinggCall.js +0 -259
  50. package/lib/module/hooks/useRinggCall.js.map +0 -1
  51. package/lib/module/hooks/useRinggChat.js +0 -141
  52. package/lib/module/hooks/useRinggChat.js.map +0 -1
  53. package/lib/module/hooks/useRinggComponents.js +0 -226
  54. package/lib/module/hooks/useRinggComponents.js.map +0 -1
  55. package/lib/module/hooks/useRinggFeedback.js +0 -66
  56. package/lib/module/hooks/useRinggFeedback.js.map +0 -1
  57. package/lib/module/hooks/useRinggTheme.js +0 -39
  58. package/lib/module/hooks/useRinggTheme.js.map +0 -1
  59. package/lib/module/hooks/useRinggTranscripts.js +0 -70
  60. package/lib/module/hooks/useRinggTranscripts.js.map +0 -1
  61. package/lib/module/hooks/useRinggWidgetState.js +0 -51
  62. package/lib/module/hooks/useRinggWidgetState.js.map +0 -1
  63. package/lib/module/index.js +0 -56
  64. package/lib/module/index.js.map +0 -1
  65. package/lib/module/package.json +0 -1
  66. package/lib/typescript/adapters/index.d.ts +0 -2
  67. package/lib/typescript/adapters/index.d.ts.map +0 -1
  68. package/lib/typescript/adapters/livekit-rn-adapter.d.ts +0 -38
  69. package/lib/typescript/adapters/livekit-rn-adapter.d.ts.map +0 -1
  70. package/lib/typescript/components/RinggWidget.d.ts +0 -44
  71. package/lib/typescript/components/RinggWidget.d.ts.map +0 -1
  72. package/lib/typescript/components/steps/ButtonsStep.d.ts +0 -17
  73. package/lib/typescript/components/steps/ButtonsStep.d.ts.map +0 -1
  74. package/lib/typescript/components/steps/CalendarStep.d.ts +0 -16
  75. package/lib/typescript/components/steps/CalendarStep.d.ts.map +0 -1
  76. package/lib/typescript/components/steps/ConfirmationStep.d.ts +0 -16
  77. package/lib/typescript/components/steps/ConfirmationStep.d.ts.map +0 -1
  78. package/lib/typescript/components/steps/FormStep.d.ts +0 -17
  79. package/lib/typescript/components/steps/FormStep.d.ts.map +0 -1
  80. package/lib/typescript/components/steps/InteractiveFlow.d.ts +0 -23
  81. package/lib/typescript/components/steps/InteractiveFlow.d.ts.map +0 -1
  82. package/lib/typescript/components/ui/ActionButton.d.ts +0 -22
  83. package/lib/typescript/components/ui/ActionButton.d.ts.map +0 -1
  84. package/lib/typescript/components/ui/CallControls.d.ts +0 -22
  85. package/lib/typescript/components/ui/CallControls.d.ts.map +0 -1
  86. package/lib/typescript/components/ui/FeedbackScreen.d.ts +0 -24
  87. package/lib/typescript/components/ui/FeedbackScreen.d.ts.map +0 -1
  88. package/lib/typescript/components/ui/Icons.d.ts +0 -28
  89. package/lib/typescript/components/ui/Icons.d.ts.map +0 -1
  90. package/lib/typescript/components/ui/MessageBubble.d.ts +0 -17
  91. package/lib/typescript/components/ui/MessageBubble.d.ts.map +0 -1
  92. package/lib/typescript/components/ui/TabSelector.d.ts +0 -21
  93. package/lib/typescript/components/ui/TabSelector.d.ts.map +0 -1
  94. package/lib/typescript/components/ui/WidgetHeader.d.ts +0 -20
  95. package/lib/typescript/components/ui/WidgetHeader.d.ts.map +0 -1
  96. package/lib/typescript/context/RinggProvider.d.ts +0 -53
  97. package/lib/typescript/context/RinggProvider.d.ts.map +0 -1
  98. package/lib/typescript/context/index.d.ts +0 -3
  99. package/lib/typescript/context/index.d.ts.map +0 -1
  100. package/lib/typescript/hooks/index.d.ts +0 -15
  101. package/lib/typescript/hooks/index.d.ts.map +0 -1
  102. package/lib/typescript/hooks/useRinggCall.d.ts +0 -41
  103. package/lib/typescript/hooks/useRinggCall.d.ts.map +0 -1
  104. package/lib/typescript/hooks/useRinggChat.d.ts +0 -29
  105. package/lib/typescript/hooks/useRinggChat.d.ts.map +0 -1
  106. package/lib/typescript/hooks/useRinggComponents.d.ts +0 -52
  107. package/lib/typescript/hooks/useRinggComponents.d.ts.map +0 -1
  108. package/lib/typescript/hooks/useRinggFeedback.d.ts +0 -23
  109. package/lib/typescript/hooks/useRinggFeedback.d.ts.map +0 -1
  110. package/lib/typescript/hooks/useRinggTheme.d.ts +0 -40
  111. package/lib/typescript/hooks/useRinggTheme.d.ts.map +0 -1
  112. package/lib/typescript/hooks/useRinggTranscripts.d.ts +0 -30
  113. package/lib/typescript/hooks/useRinggTranscripts.d.ts.map +0 -1
  114. package/lib/typescript/hooks/useRinggWidgetState.d.ts +0 -38
  115. package/lib/typescript/hooks/useRinggWidgetState.d.ts.map +0 -1
  116. package/lib/typescript/index.d.ts +0 -44
  117. package/lib/typescript/index.d.ts.map +0 -1
  118. package/lib/typescript/package.json +0 -1
@@ -1,550 +0,0 @@
1
- "use strict";
2
-
3
- /**
4
- * RinggWidget — the pre-built drop-in widget for React Native.
5
- *
6
- * Renders a floating action button (FAB) that opens a modal with
7
- * voice call or text chat capabilities. Mirrors the web CDN widget
8
- * pixel-for-pixel.
9
- *
10
- * Usage:
11
- * ```tsx
12
- * import { RinggWidget } from "@ringg/react-native";
13
- *
14
- * function App() {
15
- * return (
16
- * <View style={{ flex: 1 }}>
17
- * <YourApp />
18
- * <RinggWidget
19
- * config={{
20
- * agentId: "your-agent-id",
21
- * xApiKey: "your-api-key",
22
- * variables: { callee_name: "John" },
23
- * }}
24
- * onEvent={(event, payload) => console.log(event, payload)}
25
- * />
26
- * </View>
27
- * );
28
- * }
29
- * ```
30
- *
31
- * For custom UI, use <RinggProvider> with individual hooks instead.
32
- */
33
-
34
- import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
35
- import { View, TouchableOpacity, FlatList, StyleSheet, Text, Alert, Linking, Dimensions, Animated } from "react-native";
36
- import { colorToSolid, DEFAULT_CONFIG } from "@ringg/core";
37
- import { RinggProvider, useRinggContext } from "../context/RinggProvider.js";
38
- import { useRinggCall } from "../hooks/useRinggCall.js";
39
- import { useRinggChat } from "../hooks/useRinggChat.js";
40
- import { useRinggTranscripts } from "../hooks/useRinggTranscripts.js";
41
- import { useRinggComponents } from "../hooks/useRinggComponents.js";
42
- import { useRinggWidgetState } from "../hooks/useRinggWidgetState.js";
43
- import { useRinggFeedback } from "../hooks/useRinggFeedback.js";
44
- import { useRinggTheme } from "../hooks/useRinggTheme.js";
45
- import { WidgetHeader } from "./ui/WidgetHeader.js";
46
- import { MessageBubble } from "./ui/MessageBubble.js";
47
- import { ActionButton } from "./ui/ActionButton.js";
48
- import { CallControls } from "./ui/CallControls.js";
49
- import { FeedbackScreen } from "./ui/FeedbackScreen.js";
50
- import { TabSelector } from "./ui/TabSelector.js";
51
- import { WidgetPhoneIcon, CloseIcon, MinusIcon } from "./ui/Icons.js";
52
- import { InteractiveFlow } from "./steps/InteractiveFlow.js";
53
-
54
- // ─── Display item union (messages + interactive components) ──────────────────
55
-
56
- // ─── Public API ──────────────────────────────────────────────────────────────
57
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
58
- /**
59
- * Drop-in widget — wraps RinggProvider + WidgetInner.
60
- * This is the highest-level component consumers use.
61
- */
62
- export function RinggWidget({
63
- config,
64
- urls,
65
- onEvent,
66
- triggerIcon,
67
- triggerSize = 56
68
- }) {
69
- return /*#__PURE__*/_jsx(RinggProvider, {
70
- config: config,
71
- urls: urls,
72
- onEvent: onEvent,
73
- children: /*#__PURE__*/_jsx(WidgetInner, {
74
- triggerIcon: triggerIcon,
75
- triggerSize: triggerSize
76
- })
77
- });
78
- }
79
-
80
- // ─── Internal Widget ─────────────────────────────────────────────────────────
81
-
82
- function WidgetInner({
83
- triggerIcon,
84
- triggerSize
85
- }) {
86
- const {
87
- config
88
- } = useRinggContext();
89
- const {
90
- theme,
91
- getSolidColor
92
- } = useRinggTheme();
93
- const widget = useRinggWidgetState();
94
- const call = useRinggCall();
95
- const chat = useRinggChat();
96
- const transcriptHook = useRinggTranscripts();
97
- const components = useRinggComponents();
98
- const feedback = useRinggFeedback();
99
- const [callMode, setCallMode] = useState(config.defaultTab ?? "audio");
100
- const title = config.title ?? DEFAULT_CONFIG.title;
101
- const description = config.description ?? DEFAULT_CONFIG.description;
102
-
103
- // Determine which messages to display based on call mode.
104
- // Text mode: only chat messages (lk.transcription text stream + user sends).
105
- // Audio mode: only STT transcripts (RoomEvent.TranscriptionReceived).
106
- // The agent sends the same content through both lk.transcription text stream
107
- // AND TranscriptionReceived events, so using only one source avoids duplicates.
108
- // TranscriptionReceived is preferred in audio mode because it includes
109
- // both the agent's speech AND the user's speech-to-text.
110
- const displayMessages = call.callMode === "text" ? chat.messages : transcriptHook.transcripts;
111
-
112
- // ── Unified display list (messages + interactive components) ───────────────
113
- // Components are appended after messages so they appear inline at the bottom
114
- // of the conversation, matching the CDN behavior.
115
- const displayItems = useMemo(() => {
116
- const items = displayMessages.map(msg => ({
117
- kind: "message",
118
- data: msg
119
- }));
120
- for (const comp of components.components) {
121
- items.push({
122
- kind: "component",
123
- data: comp
124
- });
125
- }
126
- return items;
127
- }, [displayMessages, components.components]);
128
-
129
- // ── Auto-scroll (WhatsApp-style) ───────────────────────────────────────────
130
- // Scroll to bottom when content grows, unless the user has scrolled up.
131
- const flatListRef = useRef(null);
132
- const isNearBottomRef = useRef(true);
133
- const handleScroll = useCallback(event => {
134
- const {
135
- contentOffset,
136
- contentSize,
137
- layoutMeasurement
138
- } = event.nativeEvent;
139
- const distanceFromBottom = contentSize.height - layoutMeasurement.height - contentOffset.y;
140
- isNearBottomRef.current = distanceFromBottom < 80;
141
- }, []);
142
-
143
- // Fires every time FlatList content height changes (i.e. new messages rendered).
144
- const handleContentSizeChange = useCallback((_w, _h) => {
145
- if (isNearBottomRef.current) {
146
- flatListRef.current?.scrollToEnd({
147
- animated: true
148
- });
149
- }
150
- }, []);
151
-
152
- // Force scroll to bottom after user sends a message
153
- const handleSendMessage = useCallback(async text => {
154
- await chat.sendMessage(text);
155
- // Always scroll to bottom when the user sends
156
- isNearBottomRef.current = true;
157
- setTimeout(() => {
158
- flatListRef.current?.scrollToEnd({
159
- animated: true
160
- });
161
- }, 100);
162
- }, [chat]);
163
- const handleToggleMic = useCallback(async () => {
164
- await call.toggleMic();
165
- }, [call]);
166
- const handleEndCallPress = useCallback(() => {
167
- if (call.isConnected) {
168
- Alert.alert(`End ${call.callMode === "audio" ? "Call" : "Chat"}?`, "Your current conversation will be closed and cannot be accessed later.", [{
169
- text: "Cancel",
170
- style: "cancel"
171
- }, {
172
- text: `End ${call.callMode === "audio" ? "Call" : "Chat"}`,
173
- style: "destructive",
174
- onPress: () => {
175
- chat.clearMessages();
176
- transcriptHook.clearTranscripts();
177
- components.clearComponents();
178
- call.endCall();
179
- }
180
- }]);
181
- }
182
- }, [call, chat, transcriptHook, components]);
183
- const handleCallStart = useCallback(mode => {
184
- widget.open();
185
- setCallMode(mode);
186
- call.startCall(mode);
187
- }, [call, widget]);
188
- const handleTabChange = useCallback(tab => {
189
- setCallMode(tab);
190
- }, []);
191
- const handleFeedbackSubmit = useCallback((rating, comment) => {
192
- feedback.submitFeedback(rating, comment);
193
- }, [feedback]);
194
- const renderDisplayItem = useCallback(({
195
- item
196
- }) => {
197
- if (item.kind === "component") {
198
- return /*#__PURE__*/_jsx(InteractiveFlow, {
199
- initialComponent: item.data,
200
- theme: theme,
201
- onSendResponse: components.respondToComponent
202
- });
203
- }
204
- return /*#__PURE__*/_jsx(MessageBubble, {
205
- message: item.data,
206
- theme: theme
207
- });
208
- }, [theme, components.respondToComponent]);
209
- const handleClosePress = useCallback(() => {
210
- if (call.isConnected) {
211
- handleEndCallPress();
212
- } else if (widget.isShowingFeedback) {
213
- feedback.skipFeedback();
214
- } else {
215
- widget.minimize();
216
- }
217
- }, [call.isConnected, widget, feedback, handleEndCallPress]);
218
- const handleMinimizePress = useCallback(() => {
219
- widget.minimize();
220
- }, [widget]);
221
- const {
222
- height: screenHeight
223
- } = Dimensions.get("window");
224
- // Cap panel height: ~48% of screen, max 420px (matches CDN's ~392px panel)
225
- const panelHeight = Math.min(Math.round(screenHeight * 0.48), 420);
226
-
227
- // ── Animations ──────────────────────────────────────────────────────────────
228
- const panelAnim = useRef(new Animated.Value(0)).current; // 0 = hidden, 1 = visible
229
- const fabAnim = useRef(new Animated.Value(1)).current; // 0 = hidden, 1 = visible
230
- const [panelMounted, setPanelMounted] = useState(widget.isOpen);
231
- useEffect(() => {
232
- if (widget.isOpen) {
233
- // Mount panel first, then animate in
234
- setPanelMounted(true);
235
- Animated.parallel([Animated.spring(panelAnim, {
236
- toValue: 1,
237
- useNativeDriver: true,
238
- tension: 65,
239
- friction: 11
240
- }), Animated.timing(fabAnim, {
241
- toValue: 0,
242
- duration: 150,
243
- useNativeDriver: true
244
- })]).start();
245
- } else {
246
- // Animate out, then unmount
247
- Animated.parallel([Animated.timing(panelAnim, {
248
- toValue: 0,
249
- duration: 200,
250
- useNativeDriver: true
251
- }), Animated.spring(fabAnim, {
252
- toValue: 1,
253
- useNativeDriver: true,
254
- tension: 65,
255
- friction: 11
256
- })]).start(({
257
- finished
258
- }) => {
259
- if (finished) setPanelMounted(false);
260
- });
261
- }
262
- }, [widget.isOpen, panelAnim, fabAnim]);
263
- const panelTranslateY = panelAnim.interpolate({
264
- inputRange: [0, 1],
265
- outputRange: [panelHeight * 0.3, 0]
266
- });
267
- const panelOpacity = panelAnim.interpolate({
268
- inputRange: [0, 1],
269
- outputRange: [0, 1]
270
- });
271
- const fabScale = fabAnim;
272
- const fabOpacity = fabAnim;
273
- return /*#__PURE__*/_jsxs(_Fragment, {
274
- children: [/*#__PURE__*/_jsx(Animated.View, {
275
- style: [styles.fab, {
276
- width: triggerSize,
277
- height: triggerSize,
278
- borderRadius: triggerSize / 2,
279
- backgroundColor: getSolidColor(theme.primaryColor),
280
- transform: [{
281
- scale: fabScale
282
- }],
283
- opacity: fabOpacity
284
- }],
285
- pointerEvents: widget.isOpen ? "none" : "auto",
286
- children: /*#__PURE__*/_jsx(TouchableOpacity, {
287
- style: styles.fabTouchable,
288
- onPress: widget.toggle,
289
- activeOpacity: 0.9,
290
- children: /*#__PURE__*/_jsx(WidgetPhoneIcon, {
291
- size: 25,
292
- color: theme.primaryTextColor
293
- })
294
- })
295
- }), panelMounted && /*#__PURE__*/_jsx(Animated.View, {
296
- style: [styles.panel, {
297
- height: panelHeight,
298
- backgroundColor: theme.backgroundColor,
299
- borderColor: theme.borderColor,
300
- opacity: panelOpacity,
301
- transform: [{
302
- translateY: panelTranslateY
303
- }]
304
- }],
305
- pointerEvents: widget.isOpen ? "auto" : "none",
306
- children: /*#__PURE__*/_jsxs(View, {
307
- style: [styles.panelInner, {
308
- backgroundColor: theme.backgroundColor
309
- }],
310
- children: [/*#__PURE__*/_jsxs(View, {
311
- style: styles.topButtonRow,
312
- children: [call.isConnected && /*#__PURE__*/_jsx(TouchableOpacity, {
313
- style: [styles.topButton, {
314
- backgroundColor: theme.surfaceColor
315
- }],
316
- onPress: handleMinimizePress,
317
- hitSlop: {
318
- top: 10,
319
- bottom: 10,
320
- left: 10,
321
- right: 10
322
- },
323
- activeOpacity: 0.6,
324
- children: /*#__PURE__*/_jsx(MinusIcon, {
325
- size: 16,
326
- color: theme.mutedTextColor
327
- })
328
- }), /*#__PURE__*/_jsx(TouchableOpacity, {
329
- style: [styles.topButton, {
330
- backgroundColor: theme.surfaceColor
331
- }],
332
- onPress: handleClosePress,
333
- hitSlop: {
334
- top: 10,
335
- bottom: 10,
336
- left: 10,
337
- right: 10
338
- },
339
- activeOpacity: 0.6,
340
- children: /*#__PURE__*/_jsx(CloseIcon, {
341
- size: 16,
342
- color: theme.mutedTextColor
343
- })
344
- })]
345
- }), widget.isShowingFeedback ? /*#__PURE__*/_jsx(FeedbackScreen, {
346
- theme: theme,
347
- feedbackConfig: config.feedbackScreen,
348
- callMode: call.callMode,
349
- isSubmitting: feedback.isSubmitting,
350
- onSubmit: handleFeedbackSubmit,
351
- onSkip: feedback.skipFeedback
352
- }) : /*#__PURE__*/_jsxs(View, {
353
- style: styles.mainContent,
354
- children: [/*#__PURE__*/_jsxs(View, {
355
- style: [styles.innerContent, (!call.isConnected || call.isLoading) && styles.innerContentPreCall],
356
- children: [/*#__PURE__*/_jsx(WidgetHeader, {
357
- title: title,
358
- description: description,
359
- logoUrl: config.logoUrl,
360
- logoStyles: config.logoStyles,
361
- isConnected: call.isConnected,
362
- isLoading: call.isLoading,
363
- theme: theme
364
- }), call.isConnected && displayItems.length > 0 && /*#__PURE__*/_jsx(FlatList, {
365
- ref: flatListRef,
366
- data: displayItems,
367
- renderItem: renderDisplayItem,
368
- keyExtractor: (item, index) => {
369
- if (item.kind === "component") {
370
- return `comp_${item.data.component_id}_${index}`;
371
- }
372
- return `msg_${item.data.timestamp}_${index}`;
373
- },
374
- style: styles.messageList,
375
- contentContainerStyle: styles.messageListContent,
376
- inverted: false,
377
- onScroll: handleScroll,
378
- scrollEventThrottle: 16,
379
- onContentSizeChange: handleContentSizeChange
380
- }), call.isConnected && displayItems.length === 0 && /*#__PURE__*/_jsx(View, {
381
- style: styles.emptyState
382
- }), /*#__PURE__*/_jsx(CallControls, {
383
- callMode: call.callMode,
384
- isConnected: call.isConnected,
385
- isMicEnabled: call.isMicEnabled,
386
- theme: theme,
387
- onToggleMic: handleToggleMic,
388
- onEndCall: handleEndCallPress,
389
- onSendMessage: handleSendMessage
390
- }), call.error != null && /*#__PURE__*/_jsx(Text, {
391
- style: [styles.errorText, {
392
- color: theme.errorColor
393
- }],
394
- children: call.error
395
- }), !call.isConnected && /*#__PURE__*/_jsx(ActionButton, {
396
- callMode: callMode,
397
- isLoading: call.isLoading,
398
- isConnected: call.isConnected,
399
- buttonConfig: config.buttons,
400
- theme: theme,
401
- onPress: handleCallStart
402
- }), !call.isConnected && /*#__PURE__*/_jsx(View, {
403
- style: styles.disclaimerContainer,
404
- children: config.legalDisclaimer ? /*#__PURE__*/_jsx(Text, {
405
- style: [styles.disclaimerText, {
406
- color: theme.mutedTextColor
407
- }],
408
- children: config.legalDisclaimer.text
409
- }) : /*#__PURE__*/_jsxs(Text, {
410
- style: [styles.disclaimerText, {
411
- color: theme.mutedTextColor
412
- }],
413
- children: ["By starting call you agree to", " ", /*#__PURE__*/_jsx(Text, {
414
- style: {
415
- color: colorToSolid(theme.primaryColor)
416
- },
417
- onPress: () => Linking.openURL("https://www.ringg.ai/privacy"),
418
- children: "Privacy policy"
419
- }), " & ", /*#__PURE__*/_jsx(Text, {
420
- style: {
421
- color: colorToSolid(theme.primaryColor)
422
- },
423
- onPress: () => Linking.openURL("https://www.ringg.ai/terms"),
424
- children: "T&C"
425
- })]
426
- })
427
- })]
428
- }), !call.isConnected && !config.hideTabSelector && /*#__PURE__*/_jsx(TabSelector, {
429
- activeTab: callMode,
430
- onTabChange: handleTabChange,
431
- theme: theme
432
- })]
433
- })]
434
- })
435
- })]
436
- });
437
- }
438
-
439
- // ─── Styles ──────────────────────────────────────────────────────────────────
440
-
441
- const styles = StyleSheet.create({
442
- // ── FAB ─────────────────────────────────────────────────────────────────────
443
- fab: {
444
- position: "absolute",
445
- bottom: 24,
446
- right: 24,
447
- alignItems: "center",
448
- justifyContent: "center",
449
- elevation: 8,
450
- shadowColor: "#000",
451
- shadowOffset: {
452
- width: 0,
453
- height: 4
454
- },
455
- shadowOpacity: 0.25,
456
- shadowRadius: 8,
457
- zIndex: 9999
458
- },
459
- fabTouchable: {
460
- flex: 1,
461
- width: "100%",
462
- alignItems: "center",
463
- justifyContent: "center"
464
- },
465
- // ── Floating Panel ──────────────────────────────────────────────────────────
466
- panel: {
467
- position: "absolute",
468
- bottom: 24,
469
- right: 10,
470
- left: 10,
471
- borderRadius: 16,
472
- borderWidth: 1,
473
- overflow: "hidden",
474
- elevation: 12,
475
- shadowColor: "#000",
476
- shadowOffset: {
477
- width: 0,
478
- height: 8
479
- },
480
- shadowOpacity: 0.25,
481
- shadowRadius: 16,
482
- zIndex: 10000
483
- },
484
- panelInner: {
485
- flex: 1,
486
- borderRadius: 16,
487
- overflow: "hidden"
488
- },
489
- // ── Top buttons ─────────────────────────────────────────────────────────────
490
- topButtonRow: {
491
- position: "absolute",
492
- top: 8,
493
- right: 8,
494
- zIndex: 9999,
495
- flexDirection: "row",
496
- gap: 6
497
- },
498
- topButton: {
499
- width: 32,
500
- height: 32,
501
- borderRadius: 16,
502
- alignItems: "center",
503
- justifyContent: "center"
504
- },
505
- // ── Main content ────────────────────────────────────────────────────────────
506
- mainContent: {
507
- flex: 1
508
- },
509
- innerContent: {
510
- flex: 1,
511
- paddingHorizontal: 16,
512
- paddingTop: 12,
513
- paddingBottom: 8,
514
- gap: 12
515
- },
516
- innerContentPreCall: {
517
- justifyContent: "center",
518
- alignItems: "stretch"
519
- },
520
- // ── Messages ────────────────────────────────────────────────────────────────
521
- messageList: {
522
- flex: 1,
523
- marginTop: 68 // space below the absolute in-call header (48px logo + 16px padding + border)
524
- },
525
- messageListContent: {
526
- paddingVertical: 8,
527
- gap: 10
528
- },
529
- emptyState: {
530
- flex: 1,
531
- marginTop: 68
532
- },
533
- // ── Error ───────────────────────────────────────────────────────────────────
534
- errorText: {
535
- fontSize: 14,
536
- textAlign: "center",
537
- marginTop: -12,
538
- marginBottom: -8
539
- },
540
- // ── Legal Disclaimer ────────────────────────────────────────────────────────
541
- disclaimerContainer: {
542
- paddingHorizontal: 20
543
- },
544
- disclaimerText: {
545
- fontSize: 12,
546
- textAlign: "center",
547
- lineHeight: 18
548
- }
549
- });
550
- //# sourceMappingURL=RinggWidget.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","useState","View","TouchableOpacity","FlatList","StyleSheet","Text","Alert","Linking","Dimensions","Animated","colorToSolid","DEFAULT_CONFIG","RinggProvider","useRinggContext","useRinggCall","useRinggChat","useRinggTranscripts","useRinggComponents","useRinggWidgetState","useRinggFeedback","useRinggTheme","WidgetHeader","MessageBubble","ActionButton","CallControls","FeedbackScreen","TabSelector","WidgetPhoneIcon","CloseIcon","MinusIcon","InteractiveFlow","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","RinggWidget","config","urls","onEvent","triggerIcon","triggerSize","children","WidgetInner","theme","getSolidColor","widget","call","chat","transcriptHook","components","feedback","callMode","setCallMode","defaultTab","title","description","displayMessages","messages","transcripts","displayItems","items","map","msg","kind","data","comp","push","flatListRef","isNearBottomRef","handleScroll","event","contentOffset","contentSize","layoutMeasurement","nativeEvent","distanceFromBottom","height","y","current","handleContentSizeChange","_w","_h","scrollToEnd","animated","handleSendMessage","text","sendMessage","setTimeout","handleToggleMic","toggleMic","handleEndCallPress","isConnected","alert","style","onPress","clearMessages","clearTranscripts","clearComponents","endCall","handleCallStart","mode","open","startCall","handleTabChange","tab","handleFeedbackSubmit","rating","comment","submitFeedback","renderDisplayItem","item","initialComponent","onSendResponse","respondToComponent","message","handleClosePress","isShowingFeedback","skipFeedback","minimize","handleMinimizePress","screenHeight","get","panelHeight","Math","min","round","panelAnim","Value","fabAnim","panelMounted","setPanelMounted","isOpen","parallel","spring","toValue","useNativeDriver","tension","friction","timing","duration","start","finished","panelTranslateY","interpolate","inputRange","outputRange","panelOpacity","fabScale","fabOpacity","styles","fab","width","borderRadius","backgroundColor","primaryColor","transform","scale","opacity","pointerEvents","fabTouchable","toggle","activeOpacity","size","color","primaryTextColor","panel","borderColor","translateY","panelInner","topButtonRow","topButton","surfaceColor","hitSlop","top","bottom","left","right","mutedTextColor","feedbackConfig","feedbackScreen","isSubmitting","onSubmit","onSkip","mainContent","innerContent","isLoading","innerContentPreCall","logoUrl","logoStyles","length","ref","renderItem","keyExtractor","index","component_id","timestamp","messageList","contentContainerStyle","messageListContent","inverted","onScroll","scrollEventThrottle","onContentSizeChange","emptyState","isMicEnabled","onToggleMic","onEndCall","onSendMessage","error","errorText","errorColor","buttonConfig","buttons","disclaimerContainer","legalDisclaimer","disclaimerText","openURL","hideTabSelector","activeTab","onTabChange","create","position","alignItems","justifyContent","elevation","shadowColor","shadowOffset","shadowOpacity","shadowRadius","zIndex","flex","borderWidth","overflow","flexDirection","gap","paddingHorizontal","paddingTop","paddingBottom","marginTop","paddingVertical","fontSize","textAlign","marginBottom","lineHeight"],"sourceRoot":"../../../src","sources":["components/RinggWidget.tsx"],"mappings":"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","ignoreList":[]}