@product7/feedback-sdk 1.3.3 → 1.3.5

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 (39) hide show
  1. package/dist/feedback-sdk.js +2441 -3240
  2. package/dist/feedback-sdk.js.map +1 -1
  3. package/dist/feedback-sdk.min.js +1 -1
  4. package/dist/feedback-sdk.min.js.map +1 -1
  5. package/package.json +1 -1
  6. package/src/api/services/MessengerService.js +76 -0
  7. package/src/core/BaseAPIService.js +4 -0
  8. package/src/index.js +2 -3
  9. package/src/styles/base.js +27 -52
  10. package/src/styles/changelog.js +152 -269
  11. package/src/styles/components.js +489 -0
  12. package/src/styles/design-tokens.js +104 -0
  13. package/src/styles/feedback.js +59 -369
  14. package/src/styles/messenger-core.js +390 -0
  15. package/src/styles/messenger-features.js +347 -0
  16. package/src/styles/messenger-help.js +298 -0
  17. package/src/styles/messenger-themes.js +500 -0
  18. package/src/styles/messenger-views.js +618 -0
  19. package/src/styles/messenger.js +558 -0
  20. package/src/styles/styles.js +24 -2
  21. package/src/styles/surveys.js +354 -0
  22. package/src/widgets/BaseWidget.js +25 -58
  23. package/src/widgets/ButtonWidget.js +3 -18
  24. package/src/widgets/ChangelogWidget.js +7 -48
  25. package/src/widgets/InlineWidget.js +16 -13
  26. package/src/widgets/MessengerWidget.js +37 -51
  27. package/src/widgets/SurveyWidget.js +42 -146
  28. package/src/widgets/TabWidget.js +2 -22
  29. package/src/widgets/messenger/MessengerState.js +49 -46
  30. package/src/widgets/messenger/components/MessengerLauncher.js +10 -5
  31. package/src/widgets/messenger/components/MessengerPanel.js +5 -27
  32. package/src/widgets/messenger/components/NavigationTabs.js +5 -14
  33. package/src/widgets/messenger/views/ChangelogView.js +13 -14
  34. package/src/widgets/messenger/views/ChatView.js +43 -36
  35. package/src/widgets/messenger/views/ConversationsView.js +16 -21
  36. package/src/widgets/messenger/views/HelpView.js +10 -10
  37. package/src/widgets/messenger/views/HomeView.js +11 -16
  38. package/src/widgets/messenger/views/PreChatFormView.js +18 -30
  39. package/src/styles/messengerStyles.js +0 -2328
@@ -0,0 +1,390 @@
1
+ export const messengerCoreStyles = `
2
+
3
+ .messenger-launcher {
4
+ position: fixed;
5
+ z-index: 999999;
6
+ }
7
+
8
+ .messenger-launcher-bottom-right {
9
+ bottom: 20px;
10
+ right: 20px;
11
+ }
12
+
13
+ .messenger-launcher-bottom-left {
14
+ bottom: 20px;
15
+ left: 20px;
16
+ }
17
+
18
+ .messenger-launcher-btn {
19
+ width: 60px;
20
+ height: 60px;
21
+ border-radius: 50%;
22
+ border: none;
23
+ background: #1c1c1e;
24
+ color: white;
25
+ cursor: pointer;
26
+ display: flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
30
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
31
+ position: relative;
32
+ }
33
+
34
+ .messenger-launcher-btn:hover {
35
+ transform: scale(1.05);
36
+ box-shadow: 0 6px 24px rgba(0, 0, 0, 0.4);
37
+ }
38
+
39
+ .messenger-launcher-btn:active {
40
+ transform: scale(0.95);
41
+ }
42
+
43
+ .messenger-launcher-icon {
44
+ display: flex;
45
+ align-items: center;
46
+ justify-content: center;
47
+ transition: opacity 0.2s ease, transform 0.2s ease;
48
+ }
49
+
50
+ .messenger-launcher-open .messenger-launcher-icon-chat {
51
+ opacity: 0;
52
+ transform: rotate(-90deg);
53
+ }
54
+
55
+ .messenger-launcher-open .messenger-launcher-icon-close {
56
+ opacity: 1;
57
+ transform: rotate(0deg);
58
+ }
59
+
60
+ .messenger-launcher-badge {
61
+ position: absolute;
62
+ top: -4px;
63
+ right: -4px;
64
+ min-width: 20px;
65
+ height: 20px;
66
+ background: #ef4444;
67
+ color: white;
68
+ font-size: 11px;
69
+ font-weight: 600;
70
+ border-radius: 10px;
71
+ display: flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ padding: 0 6px;
75
+ border: 2px solid white;
76
+ }
77
+
78
+
79
+ .messenger-panel {
80
+ position: fixed;
81
+ z-index: 999998;
82
+ width: 400px;
83
+ height: 680px;
84
+ max-height: calc(100vh - 100px);
85
+ display: none;
86
+ opacity: 0;
87
+ transform: translateY(20px) scale(0.95);
88
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
89
+ }
90
+
91
+ .messenger-panel.open {
92
+ opacity: 1;
93
+ transform: translateY(0) scale(1);
94
+ }
95
+
96
+ .messenger-panel-bottom-right {
97
+ bottom: 90px;
98
+ right: 20px;
99
+ }
100
+
101
+ .messenger-panel-bottom-left {
102
+ bottom: 90px;
103
+ left: 20px;
104
+ }
105
+
106
+ .messenger-panel-content {
107
+ background: #1c1c1e;
108
+ height: 100%;
109
+ border-radius: 16px;
110
+ overflow: hidden;
111
+ display: flex;
112
+ flex-direction: column;
113
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
114
+ }
115
+
116
+ .messenger-panel-views {
117
+ flex: 1;
118
+ overflow: hidden;
119
+ display: flex;
120
+ flex-direction: column;
121
+ }
122
+
123
+ .messenger-view {
124
+ height: 100%;
125
+ display: flex;
126
+ flex-direction: column;
127
+ overflow: hidden;
128
+ }
129
+
130
+
131
+ .messenger-close-btn,
132
+ .messenger-back-btn {
133
+ background: none;
134
+ border: none;
135
+ padding: 8px;
136
+ cursor: pointer;
137
+ color: rgba(255, 255, 255, 0.6);
138
+ border-radius: 8px;
139
+ display: flex;
140
+ align-items: center;
141
+ justify-content: center;
142
+ transition: all 0.2s ease;
143
+ }
144
+
145
+ .messenger-close-btn:hover,
146
+ .messenger-back-btn:hover {
147
+ background: rgba(255, 255, 255, 0.1);
148
+ color: white;
149
+ }
150
+
151
+ /* Avatar Stack */
152
+ .messenger-avatar-stack {
153
+ display: flex;
154
+ align-items: center;
155
+ }
156
+
157
+ .messenger-avatar {
158
+ width: 32px;
159
+ height: 32px;
160
+ border-radius: 50%;
161
+ border: 2px solid #1c1c1e;
162
+ background: #5856d6;
163
+ color: white;
164
+ font-size: 13px;
165
+ font-weight: 600;
166
+ display: flex;
167
+ align-items: center;
168
+ justify-content: center;
169
+ margin-left: -8px;
170
+ object-fit: cover;
171
+ }
172
+
173
+ .messenger-avatar:first-child {
174
+ margin-left: 0;
175
+ }
176
+
177
+ .messenger-avatar-small {
178
+ width: 28px;
179
+ height: 28px;
180
+ font-size: 11px;
181
+ }
182
+
183
+ .messenger-avatar-medium {
184
+ width: 40px;
185
+ height: 40px;
186
+ font-size: 15px;
187
+ font-weight: 600;
188
+ }
189
+
190
+ .messenger-avatar-tiny {
191
+ width: 20px;
192
+ height: 20px;
193
+ font-size: 9px;
194
+ border-width: 1.5px;
195
+ margin-left: -6px;
196
+ }
197
+
198
+ .messenger-avatar-tiny:first-child {
199
+ margin-left: 0;
200
+ }
201
+
202
+ .messenger-panel-nav {
203
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
204
+ background: #1c1c1e;
205
+ }
206
+
207
+ .messenger-nav {
208
+ display: flex;
209
+ padding: 4px 8px;
210
+ gap: 4px;
211
+ }
212
+
213
+ .messenger-nav-tab {
214
+ flex: 1;
215
+ display: flex;
216
+ flex-direction: column;
217
+ align-items: center;
218
+ gap: 4px;
219
+ padding: 8px 4px;
220
+ background: none;
221
+ border: none;
222
+ cursor: pointer;
223
+ border-radius: 8px;
224
+ transition: all 0.2s ease;
225
+ position: relative;
226
+ }
227
+
228
+ .messenger-nav-tab:hover {
229
+ background: rgba(255, 255, 255, 0.05);
230
+ }
231
+
232
+ .messenger-nav-icon {
233
+ color: rgba(255, 255, 255, 0.5);
234
+ transition: color 0.2s ease;
235
+ }
236
+
237
+ .messenger-nav-home-icon {
238
+ position: relative;
239
+ display: inline-flex;
240
+ align-items: center;
241
+ justify-content: center;
242
+ }
243
+
244
+ .messenger-nav-home-icon > i:first-child {
245
+ position: relative;
246
+ }
247
+
248
+ .messenger-nav-home-icon > i:last-child {
249
+ position: absolute;
250
+ top: 8px;
251
+ left: 50%;
252
+ transform: translateX(-50%);
253
+ transition: color 0.2s ease, filter 0.2s ease;
254
+ }
255
+
256
+ .messenger-nav-tab:hover .messenger-nav-home-icon > i:last-child {
257
+ color: #ffd700;
258
+ filter: drop-shadow(0 0 4px #ffd700);
259
+ }
260
+
261
+ .messenger-nav-label {
262
+ font-size: 11px;
263
+ font-weight: 500;
264
+ color: rgba(255, 255, 255, 0.5);
265
+ transition: color 0.2s ease;
266
+ }
267
+
268
+ .messenger-nav-tab.active .messenger-nav-icon {
269
+ color: white;
270
+ }
271
+
272
+ .messenger-nav-tab.active .messenger-nav-label {
273
+ color: white;
274
+ font-weight: 400;
275
+ }
276
+
277
+ .messenger-nav-badge {
278
+ position: absolute;
279
+ top: 4px;
280
+ right: calc(50% - 16px);
281
+ min-width: 16px;
282
+ height: 16px;
283
+ background: #ef4444;
284
+ color: white;
285
+ font-size: 10px;
286
+ font-weight: 600;
287
+ border-radius: 8px;
288
+ display: flex;
289
+ align-items: center;
290
+ justify-content: center;
291
+ padding: 0 4px;
292
+ }
293
+
294
+ .messenger-home-availability,
295
+ .messenger-chat-availability {
296
+ display: flex;
297
+ align-items: center;
298
+ gap: 6px;
299
+ margin-top: 8px;
300
+ font-size: 13px;
301
+ color: rgba(255, 255, 255, 0.7);
302
+ }
303
+
304
+ .messenger-availability-dot {
305
+ width: 8px;
306
+ height: 8px;
307
+ border-radius: 50%;
308
+ flex-shrink: 0;
309
+ }
310
+
311
+ .messenger-availability-online {
312
+ background: #22c55e;
313
+ box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.2);
314
+ }
315
+
316
+ .messenger-availability-away {
317
+ background: #9ca3af;
318
+ }
319
+
320
+ .messenger-availability-text {
321
+ opacity: 0.9;
322
+ }
323
+
324
+ .messenger-typing-indicator {
325
+ display: flex;
326
+ align-items: center;
327
+ gap: 8px;
328
+ padding: 8px 12px;
329
+ margin: 4px 0;
330
+ }
331
+
332
+ .messenger-typing-dots {
333
+ display: flex;
334
+ align-items: center;
335
+ gap: 4px;
336
+ background: #374151;
337
+ padding: 8px 12px;
338
+ border-radius: 16px;
339
+ }
340
+
341
+ .messenger-typing-dots span {
342
+ width: 6px;
343
+ height: 6px;
344
+ background: #9ca3af;
345
+ border-radius: 50%;
346
+ animation: messenger-typing-bounce 1.4s infinite ease-in-out;
347
+ }
348
+
349
+ .messenger-typing-dots span:nth-child(1) {
350
+ animation-delay: -0.32s;
351
+ }
352
+
353
+ .messenger-typing-dots span:nth-child(2) {
354
+ animation-delay: -0.16s;
355
+ }
356
+
357
+ .messenger-typing-dots span:nth-child(3) {
358
+ animation-delay: 0s;
359
+ }
360
+
361
+ .messenger-typing-text {
362
+ font-size: 12px;
363
+ color: #9ca3af;
364
+ }
365
+
366
+ @media (max-width: 480px) {
367
+ .messenger-panel {
368
+ width: 100%;
369
+ height: 100%;
370
+ max-height: 100%;
371
+ bottom: 0;
372
+ right: 0;
373
+ left: 0;
374
+ border-radius: 0;
375
+ }
376
+
377
+ .messenger-panel-content {
378
+ border-radius: 0;
379
+ }
380
+
381
+ .messenger-launcher {
382
+ bottom: 16px;
383
+ right: 16px;
384
+ }
385
+
386
+ .messenger-launcher-bottom-left {
387
+ left: 16px;
388
+ }
389
+ }
390
+ `;
@@ -0,0 +1,347 @@
1
+ export const messengerFeaturesStyles = `
2
+
3
+ .messenger-compose-attachments-preview {
4
+ display: none;
5
+ flex-wrap: wrap;
6
+ gap: 8px;
7
+ padding: 8px 16px;
8
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
9
+ background: #1c1c1e;
10
+ }
11
+
12
+ .messenger-attachment-preview {
13
+ position: relative;
14
+ width: 56px;
15
+ height: 56px;
16
+ border-radius: 8px;
17
+ overflow: hidden;
18
+ border: 1px solid rgba(255, 255, 255, 0.15);
19
+ }
20
+
21
+ .messenger-attachment-thumb {
22
+ width: 100%;
23
+ height: 100%;
24
+ object-fit: cover;
25
+ display: block;
26
+ }
27
+
28
+ .messenger-attachment-file-icon {
29
+ display: flex;
30
+ align-items: center;
31
+ justify-content: center;
32
+ background: #2c2c2e;
33
+ color: rgba(255, 255, 255, 0.5);
34
+ }
35
+
36
+ .messenger-attachment-remove {
37
+ position: absolute;
38
+ top: 2px;
39
+ right: 2px;
40
+ width: 18px;
41
+ height: 18px;
42
+ background: rgba(0, 0, 0, 0.7);
43
+ border: none;
44
+ border-radius: 50%;
45
+ color: white;
46
+ font-size: 12px;
47
+ line-height: 1;
48
+ cursor: pointer;
49
+ display: flex;
50
+ align-items: center;
51
+ justify-content: center;
52
+ padding: 0;
53
+ transition: background 0.15s ease;
54
+ }
55
+
56
+ .messenger-attachment-remove:hover {
57
+ background: rgba(255, 59, 48, 0.85);
58
+ }
59
+
60
+
61
+ .messenger-message-image {
62
+ max-width: 220px;
63
+ max-height: 200px;
64
+ width: auto;
65
+ height: auto;
66
+ border-radius: 8px;
67
+ margin-top: 4px;
68
+ cursor: pointer;
69
+ object-fit: contain;
70
+ display: block;
71
+ }
72
+
73
+ .messenger-message-file {
74
+ display: inline-flex;
75
+ align-items: center;
76
+ gap: 6px;
77
+ margin-top: 4px;
78
+ padding: 8px 12px;
79
+ border-radius: 8px;
80
+ background: #2c2c2e;
81
+ color: #60a5fa;
82
+ text-decoration: none;
83
+ font-size: 13px;
84
+ transition: background 0.15s ease;
85
+ max-width: 100%;
86
+ word-break: break-all;
87
+ cursor: pointer;
88
+ }
89
+
90
+ .messenger-message-file:hover {
91
+ background: #3c3c3e;
92
+ }
93
+
94
+ .messenger-file-download-icon {
95
+ margin-left: auto;
96
+ opacity: 0.5;
97
+ flex-shrink: 0;
98
+ }
99
+
100
+ .messenger-message-file:hover .messenger-file-download-icon {
101
+ opacity: 1;
102
+ }
103
+
104
+ .messenger-prechat-view {
105
+ background: transparent;
106
+ position: relative;
107
+ }
108
+
109
+ .messenger-prechat-overlay {
110
+ position: absolute;
111
+ top: 0;
112
+ left: 0;
113
+ right: 0;
114
+ bottom: 0;
115
+ background: rgba(0, 0, 0, 0.5);
116
+ backdrop-filter: blur(2px);
117
+ display: flex;
118
+ align-items: flex-end;
119
+ padding: 16px;
120
+ animation: messenger-fade-in 0.2s ease;
121
+ }
122
+
123
+ .messenger-prechat-card {
124
+ background: #1c1c1e;
125
+ border-radius: 16px;
126
+ padding: 20px;
127
+ width: 100%;
128
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
129
+ animation: messenger-slide-up 0.25s ease;
130
+ }
131
+
132
+ .messenger-prechat-card h4 {
133
+ margin: 0 0 14px;
134
+ font-size: 15px;
135
+ font-weight: 600;
136
+ color: white;
137
+ text-align: center;
138
+ }
139
+
140
+ .messenger-prechat-form {
141
+ display: flex;
142
+ flex-direction: column;
143
+ gap: 10px;
144
+ }
145
+
146
+ .messenger-prechat-fields {
147
+ display: flex;
148
+ flex-direction: column;
149
+ gap: 8px;
150
+ }
151
+
152
+ .messenger-prechat-input {
153
+ width: 100%;
154
+ padding: 11px 14px;
155
+ background: #2c2c2e;
156
+ border: 1px solid rgba(255, 255, 255, 0.1);
157
+ border-radius: 10px;
158
+ color: white;
159
+ font-size: 14px;
160
+ font-family: inherit;
161
+ outline: none;
162
+ transition: border-color 0.2s ease;
163
+ }
164
+
165
+ .messenger-prechat-input:focus {
166
+ border-color: #007aff;
167
+ }
168
+
169
+ .messenger-prechat-input::placeholder {
170
+ color: rgba(255, 255, 255, 0.4);
171
+ }
172
+
173
+ .messenger-prechat-error {
174
+ font-size: 12px;
175
+ color: #ef4444;
176
+ display: none;
177
+ text-align: center;
178
+ }
179
+
180
+ .messenger-prechat-actions {
181
+ display: flex;
182
+ gap: 10px;
183
+ margin-top: 4px;
184
+ }
185
+
186
+ .messenger-prechat-skip {
187
+ flex: 1;
188
+ padding: 11px 14px;
189
+ background: transparent;
190
+ border: 1px solid rgba(255, 255, 255, 0.2);
191
+ border-radius: 20px;
192
+ color: rgba(255, 255, 255, 0.7);
193
+ font-size: 14px;
194
+ font-weight: 500;
195
+ cursor: pointer;
196
+ transition: all 0.2s ease;
197
+ }
198
+
199
+ .messenger-prechat-skip:hover {
200
+ background: rgba(255, 255, 255, 0.05);
201
+ border-color: rgba(255, 255, 255, 0.3);
202
+ }
203
+
204
+ .messenger-prechat-submit {
205
+ flex: 1;
206
+ display: flex;
207
+ align-items: center;
208
+ justify-content: center;
209
+ gap: 6px;
210
+ padding: 11px 14px;
211
+ background: #007aff;
212
+ border: none;
213
+ border-radius: 20px;
214
+ color: white;
215
+ font-size: 14px;
216
+ font-weight: 600;
217
+ cursor: pointer;
218
+ transition: all 0.2s ease;
219
+ }
220
+
221
+ .messenger-prechat-submit:hover:not(:disabled) {
222
+ background: #0066d6;
223
+ }
224
+
225
+ .messenger-prechat-submit:disabled {
226
+ background: #3c3c3e;
227
+ color: rgba(255, 255, 255, 0.4);
228
+ cursor: not-allowed;
229
+ }
230
+
231
+ .messenger-prechat-submit-loading {
232
+ display: inline-flex;
233
+ align-items: center;
234
+ animation: messenger-spin 1s linear infinite;
235
+ }
236
+
237
+ .messenger-email-overlay {
238
+ position: absolute;
239
+ bottom: -56px;
240
+ left: 0;
241
+ right: 0;
242
+ top: 0;
243
+ display: flex;
244
+ align-items: flex-end;
245
+ z-index: 20;
246
+ background: rgba(0, 0, 0, 0.08);
247
+ pointer-events: auto;
248
+ }
249
+
250
+ .messenger-email-card {
251
+ width: 100%;
252
+ background: #ffffff;
253
+ border-radius: 0;
254
+ padding: 16px 16px 72px;
255
+ box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.08);
256
+ animation: messenger-slide-up 0.25s ease;
257
+ }
258
+
259
+ .messenger-email-card h4 {
260
+ margin: 0 0 2px;
261
+ font-size: 13px;
262
+ font-weight: 600;
263
+ color: #1d1d1f;
264
+ text-align: center;
265
+ }
266
+
267
+ .messenger-email-card p {
268
+ margin: 0 0 10px;
269
+ font-size: 11px;
270
+ color: #6b7280;
271
+ text-align: center;
272
+ }
273
+
274
+ .messenger-email-name,
275
+ .messenger-email-input {
276
+ width: 100%;
277
+ padding: 8px 10px;
278
+ background: #f3f4f6;
279
+ border: 1px solid transparent;
280
+ border-radius: 8px;
281
+ color: #1d1d1f;
282
+ font-size: 12px;
283
+ font-family: inherit;
284
+ outline: none;
285
+ margin-bottom: 6px;
286
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
287
+ }
288
+
289
+ .messenger-email-name:focus,
290
+ .messenger-email-input:focus {
291
+ border-color: #007aff;
292
+ box-shadow: 0 0 0 2px rgba(0, 122, 255, 0.12);
293
+ background: #ffffff;
294
+ }
295
+
296
+ .messenger-email-name::placeholder,
297
+ .messenger-email-input::placeholder {
298
+ color: #9ca3af;
299
+ }
300
+
301
+ .messenger-email-actions {
302
+ display: flex;
303
+ gap: 8px;
304
+ margin-top: 4px;
305
+ }
306
+
307
+ .messenger-email-submit {
308
+ flex: 1.2;
309
+ padding: 7px 12px;
310
+ background: #007aff;
311
+ border: none;
312
+ border-radius: 8px;
313
+ color: white;
314
+ font-size: 12px;
315
+ font-weight: 600;
316
+ cursor: pointer;
317
+ transition: all 0.2s ease;
318
+ }
319
+
320
+ .messenger-email-submit:hover:not(:disabled) {
321
+ background: #0066d6;
322
+ }
323
+
324
+ .messenger-email-submit:disabled {
325
+ background: #d1d5db;
326
+ color: #9ca3af;
327
+ cursor: not-allowed;
328
+ }
329
+
330
+ .messenger-email-skip {
331
+ flex: 0.8;
332
+ padding: 7px 12px;
333
+ background: #ffffff;
334
+ border: 1px solid #e5e5e7;
335
+ border-radius: 8px;
336
+ color: #4b5563;
337
+ font-size: 12px;
338
+ font-weight: 500;
339
+ cursor: pointer;
340
+ transition: all 0.2s ease;
341
+ }
342
+
343
+ .messenger-email-skip:hover {
344
+ background: #f9fafb;
345
+ border-color: #d1d5db;
346
+ }
347
+ `;