@product7/feedback-sdk 1.3.7 → 1.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/feedback-sdk.js +3006 -2817
- package/dist/feedback-sdk.js.map +1 -1
- package/dist/feedback-sdk.min.js +1 -1
- package/dist/feedback-sdk.min.js.map +1 -1
- package/package.json +1 -1
- package/src/api/services/MessengerService.js +8 -2
- package/src/core/APIService.js +33 -14
- package/src/index.js +1 -1
- package/src/styles/base.js +1 -1
- package/src/styles/changelog.js +58 -40
- package/src/styles/components.js +19 -2
- package/src/styles/design-tokens.js +4 -4
- package/src/styles/feedback.js +3 -8
- package/src/styles/messenger-components.js +473 -0
- package/src/styles/messenger-core.js +37 -268
- package/src/styles/messenger-features.js +89 -267
- package/src/styles/messenger-views.js +391 -325
- package/src/styles/messenger.js +17 -558
- package/src/styles/styles.js +21 -24
- package/src/styles/{surveys.js → survey.js} +55 -20
- package/src/widgets/BaseWidget.js +1 -1
- package/src/widgets/ButtonWidget.js +1 -1
- package/src/widgets/ChangelogWidget.js +1 -1
- package/src/widgets/InlineWidget.js +1 -1
- package/src/widgets/MessengerWidget.js +74 -84
- package/src/widgets/SurveyWidget.js +1 -1
- package/src/widgets/TabWidget.js +1 -1
- package/src/widgets/messenger/MessengerState.js +50 -119
- package/src/widgets/messenger/components/MessengerLauncher.js +22 -18
- package/src/widgets/messenger/components/MessengerPanel.js +1 -1
- package/src/widgets/messenger/components/NavigationTabs.js +36 -15
- package/src/widgets/messenger/views/ChangelogView.js +8 -32
- package/src/widgets/messenger/views/ChatView.js +83 -219
- package/src/widgets/messenger/views/ConversationsView.js +67 -45
- package/src/widgets/messenger/views/HelpView.js +22 -32
- package/src/widgets/messenger/views/HomeView.js +58 -40
- package/src/widgets/messenger/views/PreChatFormView.js +47 -51
- package/src/styles/messenger-help.js +0 -298
- package/src/styles/messenger-themes.js +0 -500
|
@@ -24,39 +24,29 @@ export class HelpView {
|
|
|
24
24
|
_updateContent() {
|
|
25
25
|
const searchQuery = this.state.helpSearchQuery || '';
|
|
26
26
|
const collections = this.state.helpArticles || [];
|
|
27
|
-
const collectionCount = collections.length;
|
|
28
27
|
|
|
29
28
|
this.element.innerHTML = `
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
</div>
|
|
52
|
-
|
|
53
|
-
<div class="messenger-help-body">
|
|
54
|
-
<div class="messenger-help-collections-header">
|
|
55
|
-
${collectionCount} collections
|
|
56
|
-
</div>
|
|
57
|
-
<div class="messenger-help-collections"></div>
|
|
58
|
-
</div>
|
|
59
|
-
`;
|
|
29
|
+
<div class="messenger-help-header">
|
|
30
|
+
<div class="messenger-help-header-top">
|
|
31
|
+
<h2>Help</h2>
|
|
32
|
+
<button class="sdk-close-btn" aria-label="Close">
|
|
33
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 256 256">
|
|
34
|
+
<path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"></path>
|
|
35
|
+
</svg>
|
|
36
|
+
</button>
|
|
37
|
+
</div>
|
|
38
|
+
<input
|
|
39
|
+
type="text"
|
|
40
|
+
class="messenger-help-search-input"
|
|
41
|
+
placeholder="Search for help..."
|
|
42
|
+
value="${searchQuery}"
|
|
43
|
+
/>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<div class="messenger-help-body">
|
|
47
|
+
<div class="messenger-help-collections"></div>
|
|
48
|
+
</div>
|
|
49
|
+
`;
|
|
60
50
|
|
|
61
51
|
this._updateCollectionsList();
|
|
62
52
|
this._attachEvents();
|
|
@@ -189,4 +179,4 @@ export class HelpView {
|
|
|
189
179
|
this.element.parentNode.removeChild(this.element);
|
|
190
180
|
}
|
|
191
181
|
}
|
|
192
|
-
}
|
|
182
|
+
}
|
|
@@ -30,31 +30,30 @@ export class HomeView {
|
|
|
30
30
|
const recentChangelogHtml = this._renderRecentChangelog();
|
|
31
31
|
|
|
32
32
|
this.element.innerHTML = `
|
|
33
|
-
<div class="messenger-home-
|
|
34
|
-
<div class="messenger-home-header
|
|
35
|
-
<div class="messenger-home-
|
|
36
|
-
|
|
33
|
+
<div class="messenger-home-scroll">
|
|
34
|
+
<div class="messenger-home-header">
|
|
35
|
+
<div class="messenger-home-header-top">
|
|
36
|
+
<div class="messenger-home-logo">
|
|
37
|
+
${this.options.logoUrl ? `<img src="${this.options.logoUrl}" alt="${this.state.teamName}" />` : ''}
|
|
38
|
+
</div>
|
|
39
|
+
<div class="messenger-home-avatars">${avatarsHtml}</div>
|
|
40
|
+
<button class="sdk-close-btn" aria-label="Close">
|
|
41
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#000000" viewBox="0 0 256 256">
|
|
42
|
+
<path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"></path>
|
|
43
|
+
</svg>
|
|
44
|
+
</button>
|
|
45
|
+
</div>
|
|
46
|
+
<div class="messenger-home-welcome">
|
|
47
|
+
<span class="messenger-home-greeting">Hi there 👋</span>
|
|
48
|
+
<span class="messenger-home-question">${this.state.welcomeMessage}</span>
|
|
37
49
|
</div>
|
|
38
|
-
<div class="messenger-home-avatars">${avatarsHtml}</div>
|
|
39
|
-
<button class="sdk-close-btn" aria-label="Close">
|
|
40
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#000000" viewBox="0 0 256 256">
|
|
41
|
-
<path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"></path>
|
|
42
|
-
</svg>
|
|
43
|
-
</button>
|
|
44
|
-
</div>
|
|
45
|
-
<div class="messenger-home-welcome">
|
|
46
|
-
<span class="messenger-home-greeting">Hello there.</span>
|
|
47
|
-
<span class="messenger-home-question">${this.state.welcomeMessage}</span>
|
|
48
|
-
${this._renderAvailabilityStatus()}
|
|
49
50
|
</div>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
<div class="messenger-home-body">
|
|
53
|
-
${this._renderMessageButton()}
|
|
54
51
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
52
|
+
<div class="messenger-home-body">
|
|
53
|
+
${this._renderMessageButton()}
|
|
54
|
+
${this._renderFeaturedCard()}
|
|
55
|
+
${recentChangelogHtml}
|
|
56
|
+
</div>
|
|
58
57
|
</div>
|
|
59
58
|
`;
|
|
60
59
|
|
|
@@ -63,22 +62,24 @@ export class HomeView {
|
|
|
63
62
|
|
|
64
63
|
_renderAvatarStack() {
|
|
65
64
|
const avatars = this.state.teamAvatars;
|
|
65
|
+
const colors = ['#5856d6', '#007aff', '#34c759', '#ff9500'];
|
|
66
|
+
|
|
66
67
|
if (!avatars || avatars.length === 0) {
|
|
67
68
|
return `
|
|
68
69
|
<div class="messenger-avatar-stack">
|
|
69
|
-
<div class="sdk-avatar sdk-avatar-
|
|
70
|
-
<div class="sdk-avatar sdk-avatar-
|
|
70
|
+
<div class="sdk-avatar sdk-avatar-lg" style="background: ${colors[0]};">S</div>
|
|
71
|
+
<div class="sdk-avatar sdk-avatar-lg" style="background: ${colors[1]};">T</div>
|
|
71
72
|
</div>
|
|
72
73
|
`;
|
|
73
74
|
}
|
|
74
75
|
|
|
75
76
|
const avatarItems = avatars
|
|
76
|
-
.slice(0,
|
|
77
|
-
.map((avatar) => {
|
|
77
|
+
.slice(0, 4)
|
|
78
|
+
.map((avatar, index) => {
|
|
78
79
|
if (typeof avatar === 'string' && avatar.startsWith('http')) {
|
|
79
|
-
return `<div class="sdk-avatar sdk-avatar-
|
|
80
|
+
return `<div class="sdk-avatar sdk-avatar-lg"><img src="${avatar}" alt="Team member" /></div>`;
|
|
80
81
|
}
|
|
81
|
-
return `<div class="sdk-avatar sdk-avatar-
|
|
82
|
+
return `<div class="sdk-avatar sdk-avatar-lg" style="background: ${colors[index % colors.length]};">${avatar.charAt(0).toUpperCase()}</div>`;
|
|
82
83
|
})
|
|
83
84
|
.join('');
|
|
84
85
|
|
|
@@ -112,28 +113,48 @@ export class HomeView {
|
|
|
112
113
|
(c) => c.status === 'open'
|
|
113
114
|
);
|
|
114
115
|
|
|
116
|
+
const sendIcon = `
|
|
117
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 256 256" style="flex-shrink: 0;">
|
|
118
|
+
<rect width="256" height="256" fill="none"/>
|
|
119
|
+
<line x1="144" y1="128" x2="80" y2="128" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
120
|
+
<path d="M48.49,221.28A8,8,0,0,0,59.93,231l168-96.09a8,8,0,0,0,0-14l-168-95.85a8,8,0,0,0-11.44,9.67L80,128Z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
121
|
+
</svg>
|
|
122
|
+
`;
|
|
123
|
+
|
|
124
|
+
const caretIcon = `
|
|
125
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 256 256" style="flex-shrink: 0;">
|
|
126
|
+
<rect width="256" height="256" fill="none"/>
|
|
127
|
+
<polyline points="96 48 176 128 96 208" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/>
|
|
128
|
+
</svg>
|
|
129
|
+
`;
|
|
130
|
+
|
|
115
131
|
if (openConversation) {
|
|
116
132
|
const preview = openConversation.lastMessage
|
|
117
|
-
?
|
|
133
|
+
? openConversation.lastMessage.length > 40
|
|
118
134
|
? openConversation.lastMessage.substring(0, 40) + '...'
|
|
119
|
-
: openConversation.lastMessage
|
|
135
|
+
: openConversation.lastMessage
|
|
120
136
|
: 'Continue your conversation';
|
|
121
|
-
|
|
122
137
|
return `
|
|
123
138
|
<button class="messenger-home-message-btn messenger-home-continue-btn" data-conversation-id="${openConversation.id}">
|
|
124
139
|
<div class="messenger-home-continue-info">
|
|
125
140
|
<span class="messenger-home-continue-label">Continue conversation</span>
|
|
126
|
-
<span class="messenger-home-continue-preview">${preview}</span>
|
|
127
141
|
</div>
|
|
128
|
-
|
|
142
|
+
${sendIcon}
|
|
143
|
+
</button>
|
|
144
|
+
<button class="messenger-home-message-btn" data-action="feedback">
|
|
145
|
+
<span class="messenger-home-continue-label">Leave us feedback</span>
|
|
146
|
+
${caretIcon}
|
|
129
147
|
</button>
|
|
130
148
|
`;
|
|
131
149
|
}
|
|
132
|
-
|
|
133
150
|
return `
|
|
134
151
|
<button class="messenger-home-message-btn">
|
|
135
|
-
<span>
|
|
136
|
-
|
|
152
|
+
<span>Start a conversation</span>
|
|
153
|
+
${sendIcon}
|
|
154
|
+
</button>
|
|
155
|
+
<button class="messenger-home-message-btn" data-action="feedback">
|
|
156
|
+
<span>Leave us feedback</span>
|
|
157
|
+
${caretIcon}
|
|
137
158
|
</button>
|
|
138
159
|
`;
|
|
139
160
|
}
|
|
@@ -213,20 +234,17 @@ export class HomeView {
|
|
|
213
234
|
this.state.setOpen(false);
|
|
214
235
|
});
|
|
215
236
|
|
|
216
|
-
// Send message / continue conversation button
|
|
217
237
|
const msgBtn = this.element.querySelector('.messenger-home-message-btn');
|
|
218
238
|
if (msgBtn) {
|
|
219
239
|
msgBtn.addEventListener('click', () => {
|
|
220
240
|
const convId = msgBtn.dataset.conversationId;
|
|
221
241
|
if (convId) {
|
|
222
|
-
// Continue existing open conversation
|
|
223
242
|
this.state.setActiveConversation(convId);
|
|
224
243
|
this.state.setView('chat');
|
|
225
244
|
if (this.options.onSelectConversation) {
|
|
226
245
|
this.options.onSelectConversation(convId);
|
|
227
246
|
}
|
|
228
247
|
} else {
|
|
229
|
-
// No open conversation — start new
|
|
230
248
|
this.state.setActiveConversation(null);
|
|
231
249
|
this.state.setView('chat');
|
|
232
250
|
}
|
|
@@ -274,4 +292,4 @@ export class HomeView {
|
|
|
274
292
|
this.element.parentNode.removeChild(this.element);
|
|
275
293
|
}
|
|
276
294
|
}
|
|
277
|
-
}
|
|
295
|
+
}
|
|
@@ -99,7 +99,6 @@ export class PreChatFormView {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
_attachEvents() {
|
|
102
|
-
// Form validation
|
|
103
102
|
const form = this.element.querySelector('form');
|
|
104
103
|
const emailInput = this.element.querySelector('#messenger-prechat-email');
|
|
105
104
|
const submitBtn = this.element.querySelector('.messenger-prechat-submit');
|
|
@@ -164,62 +163,59 @@ export class PreChatFormView {
|
|
|
164
163
|
}
|
|
165
164
|
}
|
|
166
165
|
|
|
167
|
-
async _handleSubmit() {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
166
|
+
async _handleSubmit() {
|
|
167
|
+
const nameInput = this.element.querySelector('#messenger-prechat-name');
|
|
168
|
+
const emailInput = this.element.querySelector('#messenger-prechat-email');
|
|
169
|
+
const submitBtn = this.element.querySelector('.messenger-prechat-submit');
|
|
170
|
+
const submitText = submitBtn.querySelector(
|
|
171
|
+
'.messenger-prechat-submit-text'
|
|
172
|
+
);
|
|
173
|
+
const submitLoading = submitBtn.querySelector(
|
|
174
|
+
'.messenger-prechat-submit-loading'
|
|
175
|
+
);
|
|
176
|
+
|
|
177
|
+
const name = nameInput.value.trim();
|
|
178
|
+
const email = emailInput.value.trim();
|
|
179
|
+
|
|
180
|
+
this._isSubmitting = true;
|
|
181
|
+
submitBtn.disabled = true;
|
|
182
|
+
submitText.style.display = 'none';
|
|
183
|
+
submitLoading.style.display = 'inline-flex';
|
|
184
|
+
|
|
185
|
+
try {
|
|
186
|
+
if (this.options.onIdentifyContact) {
|
|
187
|
+
await this.options.onIdentifyContact({ name, email });
|
|
188
|
+
}
|
|
187
189
|
|
|
188
|
-
|
|
189
|
-
if (!this.state.userContext) {
|
|
190
|
-
this.state.userContext = {};
|
|
191
|
-
}
|
|
192
|
-
this.state.userContext.name = name;
|
|
193
|
-
this.state.userContext.email = email;
|
|
194
|
-
this.state.isIdentified = true;
|
|
190
|
+
this.state.setIdentified(true, { name, email });
|
|
195
191
|
|
|
196
|
-
|
|
192
|
+
this._isSubmitting = false;
|
|
197
193
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
194
|
+
const pendingMessage = this.state.pendingMessage;
|
|
195
|
+
if (pendingMessage && this.options.onStartConversation) {
|
|
196
|
+
this.state.pendingMessage = null;
|
|
197
|
+
this.state.setView('chat');
|
|
198
|
+
|
|
199
|
+
await this.options.onStartConversation(
|
|
200
|
+
pendingMessage.content,
|
|
201
|
+
pendingMessage.attachments
|
|
202
|
+
);
|
|
203
|
+
} else {
|
|
204
|
+
this.state.setView('chat');
|
|
205
|
+
}
|
|
206
|
+
} catch (error) {
|
|
207
|
+
console.error('[PreChatFormView] Error submitting form:', error);
|
|
208
|
+
this._showError(
|
|
209
|
+
'messenger-email-error',
|
|
210
|
+
'Something went wrong. Please try again.'
|
|
208
211
|
);
|
|
209
|
-
} else {
|
|
210
|
-
// No pending message, just go to chat
|
|
211
|
-
this.state.setView('chat');
|
|
212
|
-
}
|
|
213
|
-
} catch (error) {
|
|
214
|
-
console.error('[PreChatFormView] Error submitting form:', error);
|
|
215
|
-
this._showError('messenger-email-error', 'Something went wrong. Please try again.');
|
|
216
212
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
213
|
+
this._isSubmitting = false;
|
|
214
|
+
submitBtn.disabled = false;
|
|
215
|
+
submitText.style.display = 'inline';
|
|
216
|
+
submitLoading.style.display = 'none';
|
|
217
|
+
}
|
|
221
218
|
}
|
|
222
|
-
}
|
|
223
219
|
|
|
224
220
|
destroy() {
|
|
225
221
|
if (this.element && this.element.parentNode) {
|
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
export const messengerHelpStyles = `
|
|
2
|
-
|
|
3
|
-
.messenger-help-header {
|
|
4
|
-
display: flex;
|
|
5
|
-
align-items: center;
|
|
6
|
-
justify-content: center;
|
|
7
|
-
padding: 20px;
|
|
8
|
-
position: relative;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
.messenger-help-header h2 {
|
|
12
|
-
margin: 0;
|
|
13
|
-
font-size: 17px;
|
|
14
|
-
font-weight: 600;
|
|
15
|
-
color: white;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.messenger-help-header .messenger-close-btn {
|
|
19
|
-
position: absolute;
|
|
20
|
-
right: 16px;
|
|
21
|
-
top: 50%;
|
|
22
|
-
transform: translateY(-50%);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.messenger-help-search {
|
|
26
|
-
padding: 0 16px 16px;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.messenger-help-search-wrapper {
|
|
30
|
-
display: flex;
|
|
31
|
-
align-items: center;
|
|
32
|
-
background: #2c2c2e;
|
|
33
|
-
border-radius: 12px;
|
|
34
|
-
padding: 14px 16px;
|
|
35
|
-
position: relative;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.messenger-help-search-icon {
|
|
39
|
-
position: absolute;
|
|
40
|
-
right: 16px;
|
|
41
|
-
color: rgba(255, 255, 255, 0.4);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.messenger-help-search-input {
|
|
45
|
-
flex: 1;
|
|
46
|
-
background: transparent;
|
|
47
|
-
border: none;
|
|
48
|
-
outline: none;
|
|
49
|
-
color: white;
|
|
50
|
-
font-size: 16px;
|
|
51
|
-
font-family: inherit;
|
|
52
|
-
padding-right: 32px;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
.messenger-help-search-input::placeholder {
|
|
56
|
-
color: rgba(255, 255, 255, 0.4);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
.messenger-help-body {
|
|
60
|
-
flex: 1;
|
|
61
|
-
overflow-y: auto;
|
|
62
|
-
padding: 0;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
.messenger-help-collections-header {
|
|
66
|
-
font-size: 17px;
|
|
67
|
-
font-weight: 600;
|
|
68
|
-
color: white;
|
|
69
|
-
padding: 12px 16px 8px;
|
|
70
|
-
border-top: 1px solid rgba(255, 255, 255, 0.1);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
.messenger-help-collections {
|
|
74
|
-
padding: 0;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
.messenger-help-collection {
|
|
78
|
-
display: flex;
|
|
79
|
-
align-items: center;
|
|
80
|
-
padding: 10px 16px;
|
|
81
|
-
cursor: pointer;
|
|
82
|
-
transition: background 0.2s ease;
|
|
83
|
-
border-top: 1px solid rgba(255, 255, 255, 0.1);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
.messenger-help-collection:hover {
|
|
87
|
-
background: rgba(255, 255, 255, 0.05);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.messenger-help-collection-content {
|
|
91
|
-
flex: 1;
|
|
92
|
-
min-width: 0;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.messenger-help-collection-title {
|
|
96
|
-
margin: 0 0 2px;
|
|
97
|
-
font-size: 14px;
|
|
98
|
-
font-weight: 600;
|
|
99
|
-
color: white;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
.messenger-help-collection-desc {
|
|
103
|
-
margin: 0 0 2px;
|
|
104
|
-
font-size: 14px;
|
|
105
|
-
color: rgba(255, 255, 255, 0.7);
|
|
106
|
-
line-height: 1.3;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
.messenger-help-collection-count {
|
|
110
|
-
font-size: 14px;
|
|
111
|
-
color: rgba(255, 255, 255, 0.4);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
.messenger-help-collection-arrow {
|
|
115
|
-
color: rgba(255, 255, 255, 0.3);
|
|
116
|
-
flex-shrink: 0;
|
|
117
|
-
margin-left: 12px;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
.messenger-help-empty {
|
|
121
|
-
display: flex;
|
|
122
|
-
flex-direction: column;
|
|
123
|
-
align-items: center;
|
|
124
|
-
justify-content: center;
|
|
125
|
-
height: 100%;
|
|
126
|
-
text-align: center;
|
|
127
|
-
padding: 40px;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
.messenger-help-empty-icon {
|
|
131
|
-
color: rgba(255, 255, 255, 0.3);
|
|
132
|
-
margin-bottom: 16px;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
.messenger-help-empty h3 {
|
|
136
|
-
margin: 0 0 8px;
|
|
137
|
-
font-size: 18px;
|
|
138
|
-
font-weight: 600;
|
|
139
|
-
color: white;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
.messenger-help-empty p {
|
|
143
|
-
margin: 0;
|
|
144
|
-
font-size: 14px;
|
|
145
|
-
color: rgba(255, 255, 255, 0.5);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
.messenger-changelog-header {
|
|
150
|
-
display: flex;
|
|
151
|
-
align-items: center;
|
|
152
|
-
justify-content: space-between;
|
|
153
|
-
padding: 20px;
|
|
154
|
-
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
.messenger-changelog-header h2 {
|
|
158
|
-
margin: 0;
|
|
159
|
-
font-size: 20px;
|
|
160
|
-
font-weight: 600;
|
|
161
|
-
color: white;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
.messenger-changelog-subheader {
|
|
165
|
-
display: flex;
|
|
166
|
-
align-items: center;
|
|
167
|
-
justify-content: space-between;
|
|
168
|
-
padding: 12px 20px;
|
|
169
|
-
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
.messenger-changelog-latest {
|
|
173
|
-
font-size: 12px;
|
|
174
|
-
font-weight: 600;
|
|
175
|
-
color: rgba(255, 255, 255, 0.5);
|
|
176
|
-
text-transform: uppercase;
|
|
177
|
-
letter-spacing: 0.5px;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
.messenger-changelog-team {
|
|
181
|
-
display: flex;
|
|
182
|
-
align-items: center;
|
|
183
|
-
gap: 8px;
|
|
184
|
-
font-size: 13px;
|
|
185
|
-
color: rgba(255, 255, 255, 0.6);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
.messenger-changelog-body {
|
|
189
|
-
flex: 1;
|
|
190
|
-
overflow-y: auto;
|
|
191
|
-
padding: 16px;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
.messenger-changelog-card {
|
|
195
|
-
background: #2c2c2e;
|
|
196
|
-
border-radius: 12px;
|
|
197
|
-
overflow: hidden;
|
|
198
|
-
margin-bottom: 12px;
|
|
199
|
-
cursor: pointer;
|
|
200
|
-
transition: all 0.2s ease;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
.messenger-changelog-card:hover {
|
|
204
|
-
background: #3c3c3e;
|
|
205
|
-
transform: translateY(-2px);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
.messenger-changelog-cover {
|
|
209
|
-
height: 120px;
|
|
210
|
-
overflow: hidden;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
.messenger-changelog-cover img {
|
|
214
|
-
width: 100%;
|
|
215
|
-
height: 100%;
|
|
216
|
-
object-fit: cover;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
.messenger-changelog-content {
|
|
220
|
-
padding: 16px;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
.messenger-changelog-tags {
|
|
224
|
-
display: flex;
|
|
225
|
-
flex-wrap: wrap;
|
|
226
|
-
gap: 8px;
|
|
227
|
-
margin-bottom: 12px;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
.messenger-changelog-tag {
|
|
231
|
-
font-size: 11px;
|
|
232
|
-
font-weight: 600;
|
|
233
|
-
color: white;
|
|
234
|
-
background: rgba(88, 86, 214, 0.3);
|
|
235
|
-
padding: 4px 10px;
|
|
236
|
-
border-radius: 12px;
|
|
237
|
-
text-transform: uppercase;
|
|
238
|
-
letter-spacing: 0.3px;
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
.messenger-changelog-title {
|
|
242
|
-
margin: 0 0 8px;
|
|
243
|
-
font-size: 14px;
|
|
244
|
-
font-weight: 600;
|
|
245
|
-
color: white;
|
|
246
|
-
line-height: 1.3;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
.messenger-changelog-description {
|
|
250
|
-
margin: 0 0 12px;
|
|
251
|
-
font-size: 14px;
|
|
252
|
-
color: rgba(255, 255, 255, 0.6);
|
|
253
|
-
line-height: 1.4;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
.messenger-changelog-meta {
|
|
257
|
-
display: flex;
|
|
258
|
-
align-items: center;
|
|
259
|
-
justify-content: space-between;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
.messenger-changelog-date {
|
|
263
|
-
font-size: 12px;
|
|
264
|
-
color: rgba(255, 255, 255, 0.5);
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
.messenger-changelog-arrow {
|
|
268
|
-
color: rgba(255, 255, 255, 0.3);
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
.messenger-changelog-empty {
|
|
272
|
-
display: flex;
|
|
273
|
-
flex-direction: column;
|
|
274
|
-
align-items: center;
|
|
275
|
-
justify-content: center;
|
|
276
|
-
height: 100%;
|
|
277
|
-
text-align: center;
|
|
278
|
-
padding: 40px;
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
.messenger-changelog-empty-icon {
|
|
282
|
-
color: rgba(255, 255, 255, 0.3);
|
|
283
|
-
margin-bottom: 16px;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
.messenger-changelog-empty h3 {
|
|
287
|
-
margin: 0 0 8px;
|
|
288
|
-
font-size: 18px;
|
|
289
|
-
font-weight: 600;
|
|
290
|
-
color: white;
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
.messenger-changelog-empty p {
|
|
294
|
-
margin: 0;
|
|
295
|
-
font-size: 14px;
|
|
296
|
-
color: rgba(255, 255, 255, 0.5);
|
|
297
|
-
}
|
|
298
|
-
`;
|