ajaxter-chat 3.0.17 → 3.1.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/dist/components/BlockList/index.d.ts +1 -0
  2. package/dist/components/BlockList/index.d.ts.map +1 -0
  3. package/dist/components/BlockList/index.js +55 -28
  4. package/dist/components/BlockList/index.js.map +1 -0
  5. package/dist/components/CallScreen/index.d.ts +1 -0
  6. package/dist/components/CallScreen/index.d.ts.map +1 -0
  7. package/dist/components/CallScreen/index.js +107 -39
  8. package/dist/components/CallScreen/index.js.map +1 -0
  9. package/dist/components/ChatScreen/index.d.ts +1 -0
  10. package/dist/components/ChatScreen/index.d.ts.map +1 -0
  11. package/dist/components/ChatScreen/index.js +493 -294
  12. package/dist/components/ChatScreen/index.js.map +1 -0
  13. package/dist/components/ChatWidget.d.ts +1 -0
  14. package/dist/components/ChatWidget.d.ts.map +1 -0
  15. package/dist/components/ChatWidget.js +350 -255
  16. package/dist/components/ChatWidget.js.map +1 -0
  17. package/dist/components/EmojiPicker/index.d.ts +1 -0
  18. package/dist/components/EmojiPicker/index.d.ts.map +1 -0
  19. package/dist/components/EmojiPicker/index.js +19 -7
  20. package/dist/components/EmojiPicker/index.js.map +1 -0
  21. package/dist/components/ErrorBoundary/index.d.ts +20 -0
  22. package/dist/components/ErrorBoundary/index.d.ts.map +1 -0
  23. package/dist/components/ErrorBoundary/index.js +76 -0
  24. package/dist/components/ErrorBoundary/index.js.map +1 -0
  25. package/dist/components/HomeScreen/index.d.ts +1 -0
  26. package/dist/components/HomeScreen/index.d.ts.map +1 -0
  27. package/dist/components/HomeScreen/index.js +236 -158
  28. package/dist/components/HomeScreen/index.js.map +1 -0
  29. package/dist/components/MaintenanceView/index.d.ts +1 -0
  30. package/dist/components/MaintenanceView/index.d.ts.map +1 -0
  31. package/dist/components/MaintenanceView/index.js +28 -12
  32. package/dist/components/MaintenanceView/index.js.map +1 -0
  33. package/dist/components/MiniCallBar/index.d.ts +1 -0
  34. package/dist/components/MiniCallBar/index.d.ts.map +1 -0
  35. package/dist/components/MiniCallBar/index.js +85 -37
  36. package/dist/components/MiniCallBar/index.js.map +1 -0
  37. package/dist/components/PermissionsGateScreen/index.d.ts +1 -0
  38. package/dist/components/PermissionsGateScreen/index.d.ts.map +1 -0
  39. package/dist/components/PermissionsGateScreen/index.js +82 -28
  40. package/dist/components/PermissionsGateScreen/index.js.map +1 -0
  41. package/dist/components/RecentChatsScreen/index.d.ts +1 -0
  42. package/dist/components/RecentChatsScreen/index.d.ts.map +1 -0
  43. package/dist/components/RecentChatsScreen/index.js +79 -19
  44. package/dist/components/RecentChatsScreen/index.js.map +1 -0
  45. package/dist/components/SlideNavMenu.d.ts +1 -0
  46. package/dist/components/SlideNavMenu.d.ts.map +1 -0
  47. package/dist/components/SlideNavMenu.js +82 -63
  48. package/dist/components/SlideNavMenu.js.map +1 -0
  49. package/dist/components/Tabs/BottomTabs.d.ts +1 -0
  50. package/dist/components/Tabs/BottomTabs.d.ts.map +1 -0
  51. package/dist/components/Tabs/BottomTabs.js +34 -19
  52. package/dist/components/Tabs/BottomTabs.js.map +1 -0
  53. package/dist/components/TicketDetailScreen/index.d.ts +1 -0
  54. package/dist/components/TicketDetailScreen/index.d.ts.map +1 -0
  55. package/dist/components/TicketDetailScreen/index.js +66 -27
  56. package/dist/components/TicketDetailScreen/index.js.map +1 -0
  57. package/dist/components/TicketFormScreen/index.d.ts +1 -0
  58. package/dist/components/TicketFormScreen/index.d.ts.map +1 -0
  59. package/dist/components/TicketFormScreen/index.js +99 -49
  60. package/dist/components/TicketFormScreen/index.js.map +1 -0
  61. package/dist/components/TicketScreen/index.d.ts +1 -0
  62. package/dist/components/TicketScreen/index.d.ts.map +1 -0
  63. package/dist/components/TicketScreen/index.js +95 -26
  64. package/dist/components/TicketScreen/index.js.map +1 -0
  65. package/dist/components/UserListScreen/index.d.ts +1 -0
  66. package/dist/components/UserListScreen/index.d.ts.map +1 -0
  67. package/dist/components/UserListScreen/index.js +127 -53
  68. package/dist/components/UserListScreen/index.js.map +1 -0
  69. package/dist/components/ViewerBlockedScreen/index.d.ts +1 -0
  70. package/dist/components/ViewerBlockedScreen/index.d.ts.map +1 -0
  71. package/dist/components/ViewerBlockedScreen/index.js +113 -61
  72. package/dist/components/ViewerBlockedScreen/index.js.map +1 -0
  73. package/dist/config/index.d.ts +1 -0
  74. package/dist/config/index.d.ts.map +1 -0
  75. package/dist/config/index.js +7 -2
  76. package/dist/config/index.js.map +1 -0
  77. package/dist/hooks/useChat.d.ts +9 -1
  78. package/dist/hooks/useChat.d.ts.map +1 -0
  79. package/dist/hooks/useChat.js +60 -18
  80. package/dist/hooks/useChat.js.map +1 -0
  81. package/dist/hooks/useRemoteConfig.d.ts +1 -0
  82. package/dist/hooks/useRemoteConfig.d.ts.map +1 -0
  83. package/dist/hooks/useRemoteConfig.js +12 -8
  84. package/dist/hooks/useRemoteConfig.js.map +1 -0
  85. package/dist/hooks/useSocket.d.ts +40 -0
  86. package/dist/hooks/useSocket.d.ts.map +1 -0
  87. package/dist/hooks/useSocket.js +190 -0
  88. package/dist/hooks/useSocket.js.map +1 -0
  89. package/dist/hooks/useWebRTC.d.ts +10 -2
  90. package/dist/hooks/useWebRTC.d.ts.map +1 -0
  91. package/dist/hooks/useWebRTC.js +101 -69
  92. package/dist/hooks/useWebRTC.js.map +1 -0
  93. package/dist/index.d.ts +6 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +67 -21
  96. package/dist/index.js.map +1 -0
  97. package/dist/types/index.d.ts +1 -0
  98. package/dist/types/index.d.ts.map +1 -0
  99. package/dist/types/index.js +3 -1
  100. package/dist/types/index.js.map +1 -0
  101. package/dist/utils/chat.d.ts +1 -0
  102. package/dist/utils/chat.d.ts.map +1 -0
  103. package/dist/utils/chat.js +17 -7
  104. package/dist/utils/chat.js.map +1 -0
  105. package/dist/utils/fileName.d.ts +1 -0
  106. package/dist/utils/fileName.d.ts.map +1 -0
  107. package/dist/utils/fileName.js +5 -1
  108. package/dist/utils/fileName.js.map +1 -0
  109. package/dist/utils/messageSound.d.ts +1 -0
  110. package/dist/utils/messageSound.d.ts.map +1 -0
  111. package/dist/utils/messageSound.js +9 -3
  112. package/dist/utils/messageSound.js.map +1 -0
  113. package/dist/utils/presenceStatus.d.ts +1 -0
  114. package/dist/utils/presenceStatus.d.ts.map +1 -0
  115. package/dist/utils/presenceStatus.js +11 -4
  116. package/dist/utils/presenceStatus.js.map +1 -0
  117. package/dist/utils/privacyConsent.d.ts +1 -0
  118. package/dist/utils/privacyConsent.d.ts.map +1 -0
  119. package/dist/utils/privacyConsent.js +9 -3
  120. package/dist/utils/privacyConsent.js.map +1 -0
  121. package/dist/utils/reenableRequest.d.ts +1 -0
  122. package/dist/utils/reenableRequest.d.ts.map +1 -0
  123. package/dist/utils/reenableRequest.js +5 -1
  124. package/dist/utils/reenableRequest.js.map +1 -0
  125. package/dist/utils/theme.d.ts +1 -0
  126. package/dist/utils/theme.d.ts.map +1 -0
  127. package/dist/utils/theme.js +10 -4
  128. package/dist/utils/theme.js.map +1 -0
  129. package/dist/utils/widgetPermissions.d.ts +1 -0
  130. package/dist/utils/widgetPermissions.d.ts.map +1 -0
  131. package/dist/utils/widgetPermissions.js +13 -5
  132. package/dist/utils/widgetPermissions.js.map +1 -0
  133. package/dist/utils/widgetSession.d.ts +1 -0
  134. package/dist/utils/widgetSession.d.ts.map +1 -0
  135. package/dist/utils/widgetSession.js +9 -3
  136. package/dist/utils/widgetSession.js.map +1 -0
  137. package/package.json +3 -3
  138. package/src/components/ChatWidget.tsx +291 -269
  139. package/src/components/ErrorBoundary/index.tsx +62 -0
  140. package/src/hooks/useChat.ts +59 -12
  141. package/src/hooks/useSocket.ts +228 -0
  142. package/src/hooks/useWebRTC.ts +99 -64
  143. package/src/index.ts +7 -2
@@ -1,16 +1,51 @@
1
+ "use strict";
1
2
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useEffect, useState } from 'react';
4
- import { avatarColor, initials } from '../../utils/chat';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.MiniCallBar = void 0;
38
+ const react_1 = __importStar(require("react"));
39
+ const chat_1 = require("../../utils/chat");
5
40
  /**
6
41
  * Shown when the user minimizes the widget during an active call (ringing or connected).
7
42
  * Sits above the main launcher button so the user can work on the page and return to the call.
8
43
  */
9
- export const MiniCallBar = ({ session, primaryColor, buttonPosition, onExpand, onEnd, }) => {
44
+ const MiniCallBar = ({ session, primaryColor, buttonPosition, onExpand, onEnd, }) => {
10
45
  var _a;
11
46
  const peer = session.peer;
12
- const [duration, setDuration] = useState(0);
13
- useEffect(() => {
47
+ const [duration, setDuration] = (0, react_1.useState)(0);
48
+ (0, react_1.useEffect)(() => {
14
49
  if (session.state !== 'connected' || !session.startedAt)
15
50
  return;
16
51
  const t = setInterval(() => {
@@ -23,46 +58,59 @@ export const MiniCallBar = ({ session, primaryColor, buttonPosition, onExpand, o
23
58
  const pos = buttonPosition === 'bottom-left'
24
59
  ? { left: 24, right: 'auto' }
25
60
  : { right: 24, left: 'auto' };
26
- return (_jsxs("div", { role: "toolbar", "aria-label": "Call in progress", style: Object.assign(Object.assign({ position: 'fixed', bottom: 88, zIndex: 10000 }, pos), { display: 'flex', alignItems: 'center', gap: 10, padding: '10px 14px', maxWidth: 'min(360px, calc(100vw - 48px))', borderRadius: 14, background: `linear-gradient(135deg, ${primaryColor}ee, #0f172a)`, color: '#fff', boxShadow: '0 10px 32px rgba(0,0,0,0.28)', animation: 'cw-miniBarIn 0.28s cubic-bezier(0.22,1,0.36,1)', cursor: 'default' }), children: [_jsx("style", { children: `
61
+ return (react_1.default.createElement("div", { role: "toolbar", "aria-label": "Call in progress", style: Object.assign(Object.assign({ position: 'fixed', bottom: 88, zIndex: 10000 }, pos), { display: 'flex', alignItems: 'center', gap: 10, padding: '10px 14px', maxWidth: 'min(360px, calc(100vw - 48px))', borderRadius: 14, background: `linear-gradient(135deg, ${primaryColor}ee, #0f172a)`, color: '#fff', boxShadow: '0 10px 32px rgba(0,0,0,0.28)', animation: 'cw-miniBarIn 0.28s cubic-bezier(0.22,1,0.36,1)', cursor: 'default' }) },
62
+ react_1.default.createElement("style", null, `
27
63
  @keyframes cw-miniBarIn {
28
64
  from { opacity: 0; transform: translateY(12px); }
29
65
  to { opacity: 1; transform: translateY(0); }
30
66
  }
31
- ` }), _jsxs("button", { type: "button", onClick: onExpand, title: "Open call", style: {
32
- display: 'flex',
33
- alignItems: 'center',
34
- gap: 10,
35
- flex: 1,
36
- minWidth: 0,
37
- padding: 0,
38
- border: 'none',
39
- background: 'transparent',
40
- color: 'inherit',
41
- cursor: 'pointer',
42
- textAlign: 'left',
43
- }, children: [peer && (_jsx("div", { style: {
44
- width: 40,
45
- height: 40,
46
- borderRadius: '50%',
47
- backgroundColor: avatarColor(peer.name),
48
- display: 'flex',
49
- alignItems: 'center',
50
- justifyContent: 'center',
51
- fontSize: 14,
52
- fontWeight: 700,
53
- flexShrink: 0,
54
- animation: session.state === 'calling' ? 'cw-pulse 1.5s ease infinite' : 'none',
55
- }, children: initials(peer.name) })), _jsxs("div", { style: { minWidth: 0, flex: 1 }, children: [_jsx("div", { style: { fontWeight: 700, fontSize: 14, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }, children: (_a = peer === null || peer === void 0 ? void 0 : peer.name) !== null && _a !== void 0 ? _a : 'Call' }), _jsxs("div", { style: { fontSize: 12, opacity: 0.9, marginTop: 2 }, children: [session.state === 'calling' && 'Calling…', session.state === 'connected' && `${mins}:${secs}`] })] })] }), _jsx("button", { type: "button", onClick: onEnd, title: "End call", style: {
67
+ `),
68
+ react_1.default.createElement("button", { type: "button", onClick: onExpand, title: "Open call", style: {
69
+ display: 'flex',
70
+ alignItems: 'center',
71
+ gap: 10,
72
+ flex: 1,
73
+ minWidth: 0,
74
+ padding: 0,
75
+ border: 'none',
76
+ background: 'transparent',
77
+ color: 'inherit',
78
+ cursor: 'pointer',
79
+ textAlign: 'left',
80
+ } },
81
+ peer && (react_1.default.createElement("div", { style: {
56
82
  width: 40,
57
83
  height: 40,
58
84
  borderRadius: '50%',
59
- border: 'none',
60
- background: '#ef4444',
61
- cursor: 'pointer',
85
+ backgroundColor: (0, chat_1.avatarColor)(peer.name),
62
86
  display: 'flex',
63
87
  alignItems: 'center',
64
88
  justifyContent: 'center',
89
+ fontSize: 14,
90
+ fontWeight: 700,
65
91
  flexShrink: 0,
66
- boxShadow: '0 2px 10px rgba(239,68,68,0.45)',
67
- }, children: _jsx("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", children: _jsx("path", { d: "M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07A19.5 19.5 0 013.07 10.8a19.79 19.79 0 01-3.07-8.68A2 2 0 012 0h3a2 2 0 012 1.72c.127.96.361 1.903.7 2.81a2 2 0 01-.45 2.11L6.09 7.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0122 14.92v2z", fill: "#fff", transform: "rotate(135 12 12)" }) }) })] }));
92
+ animation: session.state === 'calling' ? 'cw-pulse 1.5s ease infinite' : 'none',
93
+ } }, (0, chat_1.initials)(peer.name))),
94
+ react_1.default.createElement("div", { style: { minWidth: 0, flex: 1 } },
95
+ react_1.default.createElement("div", { style: { fontWeight: 700, fontSize: 14, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' } }, (_a = peer === null || peer === void 0 ? void 0 : peer.name) !== null && _a !== void 0 ? _a : 'Call'),
96
+ react_1.default.createElement("div", { style: { fontSize: 12, opacity: 0.9, marginTop: 2 } },
97
+ session.state === 'calling' && 'Calling…',
98
+ session.state === 'connected' && `${mins}:${secs}`))),
99
+ react_1.default.createElement("button", { type: "button", onClick: onEnd, title: "End call", style: {
100
+ width: 40,
101
+ height: 40,
102
+ borderRadius: '50%',
103
+ border: 'none',
104
+ background: '#ef4444',
105
+ cursor: 'pointer',
106
+ display: 'flex',
107
+ alignItems: 'center',
108
+ justifyContent: 'center',
109
+ flexShrink: 0,
110
+ boxShadow: '0 2px 10px rgba(239,68,68,0.45)',
111
+ } },
112
+ react_1.default.createElement("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none" },
113
+ react_1.default.createElement("path", { d: "M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07A19.5 19.5 0 013.07 10.8a19.79 19.79 0 01-3.07-8.68A2 2 0 012 0h3a2 2 0 012 1.72c.127.96.361 1.903.7 2.81a2 2 0 01-.45 2.11L6.09 7.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0122 14.92v2z", fill: "#fff", transform: "rotate(135 12 12)" })))));
68
114
  };
115
+ exports.MiniCallBar = MiniCallBar;
116
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/MiniCallBar/index.tsx"],"names":[],"mappings":"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"}
@@ -6,3 +6,4 @@ interface PermissionsGateScreenProps {
6
6
  }
7
7
  export declare const PermissionsGateScreen: React.FC<PermissionsGateScreenProps>;
8
8
  export {};
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PermissionsGateScreen/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAMxC,UAAU,0BAA0B;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CA0FtE,CAAC"}
@@ -1,22 +1,57 @@
1
+ "use strict";
1
2
  'use client';
2
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useState } from 'react';
4
- import { requestWidgetPermissions, storePermissionsGrant } from '../../utils/widgetPermissions';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.PermissionsGateScreen = void 0;
38
+ const react_1 = __importStar(require("react"));
39
+ const widgetPermissions_1 = require("../../utils/widgetPermissions");
5
40
  const DENIED = 'You cannot use this widget due to less permission granted by you.';
6
- export const PermissionsGateScreen = ({ primaryColor, widgetId, onGranted, }) => {
7
- const [phase, setPhase] = useState('prompt');
41
+ const PermissionsGateScreen = ({ primaryColor, widgetId, onGranted, }) => {
42
+ const [phase, setPhase] = (0, react_1.useState)('prompt');
8
43
  const handleAllow = async () => {
9
44
  setPhase('checking');
10
- const ok = await requestWidgetPermissions();
45
+ const ok = await (0, widgetPermissions_1.requestWidgetPermissions)();
11
46
  if (ok) {
12
- storePermissionsGrant(widgetId);
47
+ (0, widgetPermissions_1.storePermissionsGrant)(widgetId);
13
48
  onGranted();
14
49
  }
15
50
  else {
16
51
  setPhase('denied');
17
52
  }
18
53
  };
19
- return (_jsx("div", { style: {
54
+ return (react_1.default.createElement("div", { style: {
20
55
  flex: 1,
21
56
  display: 'flex',
22
57
  flexDirection: 'column',
@@ -25,24 +60,43 @@ export const PermissionsGateScreen = ({ primaryColor, widgetId, onGranted, }) =>
25
60
  padding: '28px 22px',
26
61
  textAlign: 'center',
27
62
  minHeight: 0,
28
- }, children: phase === 'denied' ? (_jsxs(_Fragment, { children: [_jsx("div", { style: { fontSize: 44, marginBottom: 16 }, children: "\uD83D\uDD12" }), _jsx("p", { style: { margin: '0 0 20px', fontSize: 15, fontWeight: 600, color: '#1e293b', lineHeight: 1.55, maxWidth: 320 }, children: DENIED }), _jsx("p", { style: { margin: '0 0 22px', fontSize: 13, color: '#64748b', lineHeight: 1.5, maxWidth: 340 }, children: "Allow microphone, location, and screen sharing in your browser settings for this site, then try again." }), _jsx("button", { type: "button", onClick: () => { setPhase('prompt'); void handleAllow(); }, style: {
29
- padding: '12px 22px',
30
- borderRadius: 12,
31
- border: 'none',
32
- background: primaryColor,
33
- color: '#fff',
34
- fontWeight: 700,
35
- fontSize: 14,
36
- cursor: 'pointer',
37
- }, children: "Try again" })] })) : (_jsxs(_Fragment, { children: [_jsx("div", { style: { fontSize: 44, marginBottom: 16 }, children: "\uD83C\uDF99\uFE0F" }), _jsx("p", { style: { margin: '0 0 10px', fontSize: 16, fontWeight: 700, color: '#0f172a' }, children: "Permissions required" }), _jsxs("p", { style: { margin: '0 0 8px', fontSize: 14, color: '#475569', lineHeight: 1.55, maxWidth: 340 }, children: ["This widget needs ", _jsx("strong", { children: "microphone" }), " (voice & calls), ", _jsx("strong", { children: "location" }), ", and", ' ', _jsx("strong", { children: "screen sharing" }), " to work."] }), _jsx("p", { style: { margin: '0 0 22px', fontSize: 12, color: '#94a3b8', lineHeight: 1.45, maxWidth: 360 }, children: "You will be asked to pick a screen once \u2014 you can stop sharing immediately after; we only verify access." }), _jsx("button", { type: "button", disabled: phase === 'checking', onClick: handleAllow, style: {
38
- padding: '14px 28px',
39
- borderRadius: 12,
40
- border: 'none',
41
- background: phase === 'checking' ? '#94a3b8' : primaryColor,
42
- color: '#fff',
43
- fontWeight: 700,
44
- fontSize: 15,
45
- cursor: phase === 'checking' ? 'default' : 'pointer',
46
- minWidth: 200,
47
- }, children: phase === 'checking' ? 'Checking…' : 'Allow & continue' })] })) }));
63
+ } }, phase === 'denied' ? (react_1.default.createElement(react_1.default.Fragment, null,
64
+ react_1.default.createElement("div", { style: { fontSize: 44, marginBottom: 16 } }, "\uD83D\uDD12"),
65
+ react_1.default.createElement("p", { style: { margin: '0 0 20px', fontSize: 15, fontWeight: 600, color: '#1e293b', lineHeight: 1.55, maxWidth: 320 } }, DENIED),
66
+ react_1.default.createElement("p", { style: { margin: '0 0 22px', fontSize: 13, color: '#64748b', lineHeight: 1.5, maxWidth: 340 } }, "Allow microphone, location, and screen sharing in your browser settings for this site, then try again."),
67
+ react_1.default.createElement("button", { type: "button", onClick: () => { setPhase('prompt'); void handleAllow(); }, style: {
68
+ padding: '12px 22px',
69
+ borderRadius: 12,
70
+ border: 'none',
71
+ background: primaryColor,
72
+ color: '#fff',
73
+ fontWeight: 700,
74
+ fontSize: 14,
75
+ cursor: 'pointer',
76
+ } }, "Try again"))) : (react_1.default.createElement(react_1.default.Fragment, null,
77
+ react_1.default.createElement("div", { style: { fontSize: 44, marginBottom: 16 } }, "\uD83C\uDF99\uFE0F"),
78
+ react_1.default.createElement("p", { style: { margin: '0 0 10px', fontSize: 16, fontWeight: 700, color: '#0f172a' } }, "Permissions required"),
79
+ react_1.default.createElement("p", { style: { margin: '0 0 8px', fontSize: 14, color: '#475569', lineHeight: 1.55, maxWidth: 340 } },
80
+ "This widget needs ",
81
+ react_1.default.createElement("strong", null, "microphone"),
82
+ " (voice & calls), ",
83
+ react_1.default.createElement("strong", null, "location"),
84
+ ", and",
85
+ ' ',
86
+ react_1.default.createElement("strong", null, "screen sharing"),
87
+ " to work."),
88
+ react_1.default.createElement("p", { style: { margin: '0 0 22px', fontSize: 12, color: '#94a3b8', lineHeight: 1.45, maxWidth: 360 } }, "You will be asked to pick a screen once \u2014 you can stop sharing immediately after; we only verify access."),
89
+ react_1.default.createElement("button", { type: "button", disabled: phase === 'checking', onClick: handleAllow, style: {
90
+ padding: '14px 28px',
91
+ borderRadius: 12,
92
+ border: 'none',
93
+ background: phase === 'checking' ? '#94a3b8' : primaryColor,
94
+ color: '#fff',
95
+ fontWeight: 700,
96
+ fontSize: 15,
97
+ cursor: phase === 'checking' ? 'default' : 'pointer',
98
+ minWidth: 200,
99
+ } }, phase === 'checking' ? 'Checking…' : 'Allow & continue')))));
48
100
  };
101
+ exports.PermissionsGateScreen = PermissionsGateScreen;
102
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/PermissionsGateScreen/index.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,+CAAwC;AACxC,qEAAgG;AAEhG,MAAM,MAAM,GACV,mEAAmE,CAAC;AAQ/D,MAAM,qBAAqB,GAAyC,CAAC,EAC1E,YAAY,EACZ,QAAQ,EACR,SAAS,GACV,EAAE,EAAE;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAmC,QAAQ,CAAC,CAAC;IAE/E,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;QAC7B,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrB,MAAM,EAAE,GAAG,MAAM,IAAA,4CAAwB,GAAE,CAAC;QAC5C,IAAI,EAAE,EAAE,CAAC;YACP,IAAA,yCAAqB,EAAC,QAAQ,CAAC,CAAC;YAChC,SAAS,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,uCACE,KAAK,EAAE;YACL,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,CAAC;SACb,IAEA,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CACpB;QACE,uCAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,mBAAU;QACxD,qCAAG,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,IAC/G,MAAM,CACL;QACJ,qCAAG,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,6GAE5F;QACJ,0CACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC,CAAC,CAAC,EAC1D,KAAK,EAAE;gBACL,OAAO,EAAE,WAAW;gBACpB,YAAY,EAAE,EAAE;gBAChB,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,YAAY;gBACxB,KAAK,EAAE,MAAM;gBACb,UAAU,EAAE,GAAG;gBACf,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,SAAS;aAClB,gBAGM,CACR,CACJ,CAAC,CAAC,CAAC,CACF;QACE,uCAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,yBAAW;QACzD,qCAAG,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,2BAA0B;QAC3G,qCAAG,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE;;YAC5E,2DAA2B;;YAAsB,yDAAyB;;YAAM,GAAG;YACrG,+DAA+B;wBAC7B;QACJ,qCAAG,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,oHAE7F;QACJ,0CACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,KAAK,KAAK,UAAU,EAC9B,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE;gBACL,OAAO,EAAE,WAAW;gBACpB,YAAY,EAAE,EAAE;gBAChB,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY;gBAC3D,KAAK,EAAE,MAAM;gBACb,UAAU,EAAE,GAAG;gBACf,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;gBACpD,QAAQ,EAAE,GAAG;aACd,IAEA,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CACjD,CACR,CACJ,CACG,CACP,CAAC;AACJ,CAAC,CAAC;AA1FW,QAAA,qBAAqB,yBA0FhC"}
@@ -16,3 +16,4 @@ interface RecentChatsScreenProps {
16
16
  }
17
17
  export declare const RecentChatsScreen: React.FC<RecentChatsScreenProps>;
18
18
  export {};
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/RecentChatsScreen/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGrD,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;CACtG;AAED,UAAU,sBAAsB;IAC9B,KAAK,EAAU,UAAU,EAAE,CAAC;IAC5B,MAAM,EAAS,YAAY,CAAC;IAC5B,YAAY,EAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAWD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA2F9D,CAAC"}
@@ -1,6 +1,41 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useMemo, useRef, useEffect } from 'react';
3
- import { avatarColor, initials, formatTime } from '../../utils/chat';
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.RecentChatsScreen = void 0;
37
+ const react_1 = __importStar(require("react"));
38
+ const chat_1 = require("../../utils/chat");
4
39
  function matchesChat(chat, q) {
5
40
  if (!q.trim())
6
41
  return true;
@@ -8,23 +43,48 @@ function matchesChat(chat, q) {
8
43
  return (chat.user.name.toLowerCase().includes(s) ||
9
44
  chat.lastMessage.toLowerCase().includes(s));
10
45
  }
11
- export const RecentChatsScreen = ({ chats, config, onSelectChat, animateEntrance = false, }) => {
12
- const [query, setQuery] = useState('');
13
- const searchRef = useRef(null);
14
- useEffect(() => {
46
+ const RecentChatsScreen = ({ chats, config, onSelectChat, animateEntrance = false, }) => {
47
+ const [query, setQuery] = (0, react_1.useState)('');
48
+ const searchRef = (0, react_1.useRef)(null);
49
+ (0, react_1.useEffect)(() => {
15
50
  var _a;
16
51
  (_a = searchRef.current) === null || _a === void 0 ? void 0 : _a.focus();
17
52
  }, []);
18
- const filtered = useMemo(() => chats.filter(c => matchesChat(c, query)), [chats, query]);
19
- return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', height: '100%' }, children: [_jsxs("div", { style: { background: `linear-gradient(135deg,${config.primaryColor},${config.primaryColor}cc)`, padding: '18px 18px 14px', flexShrink: 0 }, children: [_jsx("h2", { style: { margin: 0, fontSize: 20, fontWeight: 800, color: '#fff', letterSpacing: '-0.02em' }, children: "Recent Chats" }), _jsx("p", { style: { margin: '3px 0 0', fontSize: 12, color: 'rgba(255,255,255,0.8)' }, children: "Your conversation history" })] }), _jsx("div", { style: { padding: '10px 14px', background: '#fff', borderBottom: '1px solid #eef0f5', flexShrink: 0 }, children: _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 8, padding: '0 12px', borderRadius: 10, border: '1.5px solid #e5e7eb', background: '#f8fafc' }, children: [_jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", style: { flexShrink: 0, opacity: 0.55 }, children: [_jsx("circle", { cx: "11", cy: "11", r: "7", stroke: "#64748b", strokeWidth: "2" }), _jsx("path", { d: "M20 20l-4-4", stroke: "#64748b", strokeWidth: "2", strokeLinecap: "round" })] }), _jsx("input", { ref: searchRef, type: "search", value: query, onChange: e => setQuery(e.target.value), placeholder: "Search chats\u2026", autoComplete: "off", "aria-label": "Search chats", style: {
20
- flex: 1,
21
- minWidth: 0,
22
- border: 'none',
23
- outline: 'none',
24
- background: 'transparent',
25
- fontSize: 14,
26
- padding: '10px 0',
27
- fontFamily: 'inherit',
28
- color: '#1a2332',
29
- } })] }) }), _jsx("div", { style: { flex: 1, overflowY: 'auto' }, children: filtered.length === 0 ? (_jsxs("div", { style: { padding: '50px 24px', textAlign: 'center' }, children: [_jsx("div", { style: { fontSize: 36, marginBottom: 10 }, children: query.trim() ? '🔍' : '💬' }), _jsx("div", { style: { fontWeight: 700, color: '#1a2332', marginBottom: 6 }, children: query.trim() ? 'No matches' : 'No chats yet' }), _jsx("div", { style: { fontSize: 13, color: '#7b8fa1' }, children: query.trim() ? 'Try a different search' : 'Start a conversation from home' })] })) : filtered.map((chat, i) => (_jsxs("button", { onClick: () => onSelectChat(chat.user), style: Object.assign(Object.assign({ width: '100%', padding: '13px 16px', display: 'flex', alignItems: 'center', gap: 13, background: 'transparent', border: 'none', borderBottom: '1px solid #f0f2f5', cursor: 'pointer', textAlign: 'left' }, (animateEntrance ? { animation: `cw-fadeUp 0.28s ease both`, animationDelay: `${i * 0.05}s` } : {})), { transition: 'background 0.14s' }), onMouseEnter: e => e.currentTarget.style.background = '#f8faff', onMouseLeave: e => e.currentTarget.style.background = 'transparent', children: [_jsxs("div", { style: { position: 'relative', flexShrink: 0 }, children: [_jsx("div", { style: { width: 46, height: 46, borderRadius: '50%', backgroundColor: avatarColor(chat.user.name), display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#fff', fontWeight: 700, fontSize: 15 }, children: initials(chat.user.name) }), chat.unread > 0 && (_jsx("span", { style: { position: 'absolute', top: -2, right: -2, width: 18, height: 18, borderRadius: '50%', background: '#ef4444', color: '#fff', fontSize: 10, fontWeight: 700, display: 'flex', alignItems: 'center', justifyContent: 'center', border: '2px solid #fff' }, children: chat.unread }))] }), _jsxs("div", { style: { flex: 1, minWidth: 0 }, children: [_jsxs("div", { style: { display: 'flex', justifyContent: 'space-between', marginBottom: 3 }, children: [_jsx("span", { style: { fontWeight: 700, fontSize: 14, color: '#1a2332' }, children: chat.user.name }), _jsx("span", { style: { fontSize: 11, color: '#b0bec5' }, children: formatTime(chat.lastTime) })] }), _jsxs("div", { style: { fontSize: 13, color: '#7b8fa1', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', display: 'flex', alignItems: 'center', gap: 5 }, children: [chat.isPaused && _jsx("span", { style: { fontSize: 10, background: '#fef3c7', color: '#92400e', padding: '1px 5px', borderRadius: 4, fontWeight: 700 }, children: "PAUSED" }), chat.lastMessage] })] })] }, chat.id))) })] }));
53
+ const filtered = (0, react_1.useMemo)(() => chats.filter(c => matchesChat(c, query)), [chats, query]);
54
+ return (react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', height: '100%' } },
55
+ react_1.default.createElement("div", { style: { background: `linear-gradient(135deg,${config.primaryColor},${config.primaryColor}cc)`, padding: '18px 18px 14px', flexShrink: 0 } },
56
+ react_1.default.createElement("h2", { style: { margin: 0, fontSize: 20, fontWeight: 800, color: '#fff', letterSpacing: '-0.02em' } }, "Recent Chats"),
57
+ react_1.default.createElement("p", { style: { margin: '3px 0 0', fontSize: 12, color: 'rgba(255,255,255,0.8)' } }, "Your conversation history")),
58
+ react_1.default.createElement("div", { style: { padding: '10px 14px', background: '#fff', borderBottom: '1px solid #eef0f5', flexShrink: 0 } },
59
+ react_1.default.createElement("div", { style: { display: 'flex', alignItems: 'center', gap: 8, padding: '0 12px', borderRadius: 10, border: '1.5px solid #e5e7eb', background: '#f8fafc' } },
60
+ react_1.default.createElement("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", style: { flexShrink: 0, opacity: 0.55 } },
61
+ react_1.default.createElement("circle", { cx: "11", cy: "11", r: "7", stroke: "#64748b", strokeWidth: "2" }),
62
+ react_1.default.createElement("path", { d: "M20 20l-4-4", stroke: "#64748b", strokeWidth: "2", strokeLinecap: "round" })),
63
+ react_1.default.createElement("input", { ref: searchRef, type: "search", value: query, onChange: e => setQuery(e.target.value), placeholder: "Search chats\u2026", autoComplete: "off", "aria-label": "Search chats", style: {
64
+ flex: 1,
65
+ minWidth: 0,
66
+ border: 'none',
67
+ outline: 'none',
68
+ background: 'transparent',
69
+ fontSize: 14,
70
+ padding: '10px 0',
71
+ fontFamily: 'inherit',
72
+ color: '#1a2332',
73
+ } }))),
74
+ react_1.default.createElement("div", { style: { flex: 1, overflowY: 'auto' } }, filtered.length === 0 ? (react_1.default.createElement("div", { style: { padding: '50px 24px', textAlign: 'center' } },
75
+ react_1.default.createElement("div", { style: { fontSize: 36, marginBottom: 10 } }, query.trim() ? '🔍' : '💬'),
76
+ react_1.default.createElement("div", { style: { fontWeight: 700, color: '#1a2332', marginBottom: 6 } }, query.trim() ? 'No matches' : 'No chats yet'),
77
+ react_1.default.createElement("div", { style: { fontSize: 13, color: '#7b8fa1' } }, query.trim() ? 'Try a different search' : 'Start a conversation from home'))) : filtered.map((chat, i) => (react_1.default.createElement("button", { key: chat.id, onClick: () => onSelectChat(chat.user), style: Object.assign(Object.assign({ width: '100%', padding: '13px 16px', display: 'flex', alignItems: 'center', gap: 13, background: 'transparent', border: 'none', borderBottom: '1px solid #f0f2f5', cursor: 'pointer', textAlign: 'left' }, (animateEntrance ? { animation: `cw-fadeUp 0.28s ease both`, animationDelay: `${i * 0.05}s` } : {})), { transition: 'background 0.14s' }), onMouseEnter: e => e.currentTarget.style.background = '#f8faff', onMouseLeave: e => e.currentTarget.style.background = 'transparent' },
78
+ react_1.default.createElement("div", { style: { position: 'relative', flexShrink: 0 } },
79
+ react_1.default.createElement("div", { style: { width: 46, height: 46, borderRadius: '50%', backgroundColor: (0, chat_1.avatarColor)(chat.user.name), display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#fff', fontWeight: 700, fontSize: 15 } }, (0, chat_1.initials)(chat.user.name)),
80
+ chat.unread > 0 && (react_1.default.createElement("span", { style: { position: 'absolute', top: -2, right: -2, width: 18, height: 18, borderRadius: '50%', background: '#ef4444', color: '#fff', fontSize: 10, fontWeight: 700, display: 'flex', alignItems: 'center', justifyContent: 'center', border: '2px solid #fff' } }, chat.unread))),
81
+ react_1.default.createElement("div", { style: { flex: 1, minWidth: 0 } },
82
+ react_1.default.createElement("div", { style: { display: 'flex', justifyContent: 'space-between', marginBottom: 3 } },
83
+ react_1.default.createElement("span", { style: { fontWeight: 700, fontSize: 14, color: '#1a2332' } }, chat.user.name),
84
+ react_1.default.createElement("span", { style: { fontSize: 11, color: '#b0bec5' } }, (0, chat_1.formatTime)(chat.lastTime))),
85
+ react_1.default.createElement("div", { style: { fontSize: 13, color: '#7b8fa1', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', display: 'flex', alignItems: 'center', gap: 5 } },
86
+ chat.isPaused && react_1.default.createElement("span", { style: { fontSize: 10, background: '#fef3c7', color: '#92400e', padding: '1px 5px', borderRadius: 4, fontWeight: 700 } }, "PAUSED"),
87
+ chat.lastMessage))))))));
30
88
  };
89
+ exports.RecentChatsScreen = RecentChatsScreen;
90
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/RecentChatsScreen/index.tsx"],"names":[],"mappings":"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"}
@@ -12,3 +12,4 @@ export interface SlideNavMenuProps {
12
12
  onBackHome?: () => void;
13
13
  }
14
14
  export declare const SlideNavMenu: React.FC<SlideNavMenuProps>;
15
+ //# sourceMappingURL=SlideNavMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlideNavMenu.d.ts","sourceRoot":"","sources":["../../src/components/SlideNavMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAClC,QAAQ,EAAE,CAAC,GAAG,EAAE,eAAe,GAAG,QAAQ,KAAK,IAAI,CAAC;IACpD,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA8HpD,CAAC"}