@ermis-network/ermis-chat-react 1.0.8 → 2.0.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.
- package/dist/index.cjs +15295 -4209
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +701 -195
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +862 -94
- package/dist/index.d.ts +862 -94
- package/dist/index.mjs +15246 -4186
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -4
- package/src/channelTypeUtils.ts +1 -1
- package/src/components/Avatar.tsx +2 -1
- package/src/components/Channel.tsx +6 -2
- package/src/components/ChannelActions.tsx +61 -2
- package/src/components/ChannelHeader.tsx +19 -5
- package/src/components/ChannelInfo/AddMemberModal.tsx +5 -1
- package/src/components/ChannelInfo/ChannelInfo.tsx +330 -187
- package/src/components/ChannelInfo/ChannelInfoTabs.tsx +59 -297
- package/src/components/ChannelInfo/ChannelSettingsPanel.tsx +30 -174
- package/src/components/ChannelInfo/EditChannelModal.tsx +4 -1
- package/src/components/ChannelInfo/MediaGridItem.tsx +12 -2
- package/src/components/ChannelInfo/MemberListItem.tsx +2 -3
- package/src/components/ChannelInfo/MessageSearchPanel.tsx +27 -126
- package/src/components/ChannelInfo/States.tsx +1 -1
- package/src/components/ChannelInfo/index.ts +3 -0
- package/src/components/ChannelInfo/useChannelInfoTabs.tsx +386 -0
- package/src/components/ChannelInfo/useChannelSettings.ts +212 -0
- package/src/components/ChannelInfo/useMessageSearch.tsx +141 -0
- package/src/components/ChannelList.tsx +177 -290
- package/src/components/CreateChannelModal.tsx +166 -88
- package/src/components/Dropdown.tsx +1 -16
- package/src/components/EditPreview.tsx +1 -0
- package/src/components/ErmisCallProvider.tsx +72 -17
- package/src/components/ErmisCallUI.tsx +43 -20
- package/src/components/FlatTopicGroupItem.tsx +232 -0
- package/src/components/ForwardMessageModal.tsx +31 -77
- package/src/components/MediaLightbox.tsx +62 -40
- package/src/components/MentionSuggestions.tsx +47 -35
- package/src/components/MessageActionsBox.tsx +4 -1
- package/src/components/MessageInput.tsx +137 -16
- package/src/components/MessageInputDefaults.tsx +127 -1
- package/src/components/MessageItem.tsx +93 -26
- package/src/components/MessageQuickReactions.tsx +153 -26
- package/src/components/MessageReactions.tsx +2 -1
- package/src/components/MessageRenderers.tsx +111 -39
- package/src/components/Panel.tsx +1 -14
- package/src/components/PinnedMessages.tsx +17 -5
- package/src/components/PreviewOverlay.tsx +24 -0
- package/src/components/ReadReceipts.tsx +2 -1
- package/src/components/TopicList.tsx +221 -0
- package/src/components/TopicModal.tsx +4 -1
- package/src/components/TypingIndicator.tsx +14 -5
- package/src/components/UserPicker.tsx +87 -10
- package/src/components/VirtualMessageList.tsx +106 -20
- package/src/context/ChatComponentsContext.tsx +14 -0
- package/src/context/ChatProvider.tsx +18 -14
- package/src/context/ErmisCallContext.tsx +4 -0
- package/src/hooks/useChannelCapabilities.ts +7 -4
- package/src/hooks/useChannelData.ts +10 -3
- package/src/hooks/useChannelListUpdates.ts +72 -20
- package/src/hooks/useChannelMessages.ts +72 -10
- package/src/hooks/useChannelRowUpdates.ts +24 -5
- package/src/hooks/useChatUser.ts +31 -0
- package/src/hooks/useContactChannels.ts +45 -0
- package/src/hooks/useContactCount.ts +50 -0
- package/src/hooks/useDownloadHandler.ts +36 -0
- package/src/hooks/useDragAndDrop.ts +79 -0
- package/src/hooks/useForwardMessage.ts +112 -0
- package/src/hooks/useInviteChannels.ts +88 -0
- package/src/hooks/useInviteCount.ts +104 -0
- package/src/hooks/useMentions.ts +0 -1
- package/src/hooks/useMessageActions.ts +13 -10
- package/src/hooks/usePendingState.ts +21 -4
- package/src/hooks/usePreviewState.ts +69 -0
- package/src/hooks/useStickerPicker.ts +62 -0
- package/src/hooks/useTopicGroupUpdates.ts +197 -0
- package/src/index.ts +56 -6
- package/src/messageTypeUtils.ts +13 -1
- package/src/styles/_base.css +0 -1
- package/src/styles/_call-ui.css +59 -2
- package/src/styles/_channel-info.css +41 -4
- package/src/styles/_channel-list.css +97 -57
- package/src/styles/_create-channel-modal.css +10 -0
- package/src/styles/_forward-modal.css +16 -1
- package/src/styles/_media-lightbox.css +32 -0
- package/src/styles/_mentions.css +1 -1
- package/src/styles/_message-actions.css +3 -4
- package/src/styles/_message-bubble.css +286 -107
- package/src/styles/_message-input.css +131 -0
- package/src/styles/_message-list.css +33 -17
- package/src/styles/_message-quick-reactions.css +40 -9
- package/src/styles/_message-reactions.css +4 -0
- package/src/styles/_modal.css +2 -1
- package/src/styles/_preview-overlay.css +38 -0
- package/src/styles/_tokens.css +17 -15
- package/src/styles/_typing-indicator.css +7 -1
- package/src/styles/index.css +1 -0
- package/src/types.ts +362 -14
- package/src/utils/avatarColors.ts +48 -0
- package/src/utils.ts +193 -10
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
padding: var(--ermis-spacing-xs) var(--ermis-spacing-sm);
|
|
7
7
|
border-left: 3px solid var(--ermis-accent);
|
|
8
8
|
background-color: var(--ermis-quote-other-bg);
|
|
9
|
-
border-radius:
|
|
9
|
+
border-radius: var(--ermis-radius-sm);
|
|
10
10
|
cursor: pointer;
|
|
11
11
|
max-width: 100%;
|
|
12
12
|
transition: background-color 0.15s;
|
|
@@ -17,26 +17,12 @@
|
|
|
17
17
|
background-color: var(--ermis-quote-other-bg-hover);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
.ermis-quoted-message--own {
|
|
21
|
-
border-left-color: var(--ermis-quote-own-border);
|
|
22
|
-
background-color: var(--ermis-quote-own-bg);
|
|
23
|
-
border-radius: var(--ermis-radius-sm);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.ermis-quoted-message--own:hover {
|
|
27
|
-
background-color: var(--ermis-quote-own-bg-hover);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
20
|
.ermis-quoted-message__author {
|
|
31
21
|
font-size: var(--ermis-font-size-xs);
|
|
32
22
|
font-weight: 600;
|
|
33
23
|
color: var(--ermis-accent);
|
|
34
24
|
}
|
|
35
25
|
|
|
36
|
-
.ermis-quoted-message--own .ermis-quoted-message__author {
|
|
37
|
-
color: var(--ermis-quote-own-author);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
26
|
.ermis-quoted-message__text {
|
|
41
27
|
font-size: var(--ermis-font-size-xs);
|
|
42
28
|
color: var(--ermis-text-muted);
|
|
@@ -45,10 +31,6 @@
|
|
|
45
31
|
white-space: nowrap;
|
|
46
32
|
}
|
|
47
33
|
|
|
48
|
-
.ermis-quoted-message--own .ermis-quoted-message__text {
|
|
49
|
-
color: var(--ermis-quote-own-text);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
34
|
/* Light theme: same approach works since we darken the accent bg */
|
|
53
35
|
|
|
54
36
|
/* Avatar column: fixed width for consistent alignment */
|
|
@@ -88,21 +70,28 @@
|
|
|
88
70
|
margin-bottom: 1px;
|
|
89
71
|
}
|
|
90
72
|
|
|
73
|
+
.ermis-message-list__item-user--clickable {
|
|
74
|
+
cursor: pointer;
|
|
75
|
+
transition: opacity 0.2s;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.ermis-message-list__item-user--clickable:hover {
|
|
79
|
+
opacity: 0.7;
|
|
80
|
+
}
|
|
81
|
+
|
|
91
82
|
/* Timestamp inside bubble — bottom right */
|
|
92
83
|
.ermis-message-list__item-time {
|
|
93
84
|
font-size: 0.625rem;
|
|
94
85
|
color: var(--ermis-text-muted);
|
|
95
|
-
margin-left:
|
|
96
|
-
padding-
|
|
86
|
+
margin-left: 0;
|
|
87
|
+
padding-top: 4px;
|
|
97
88
|
white-space: nowrap;
|
|
98
89
|
line-height: 1;
|
|
99
|
-
align-self: flex-
|
|
100
|
-
|
|
101
|
-
width: 100%;
|
|
102
|
-
text-align: right;
|
|
90
|
+
align-self: flex-start;
|
|
91
|
+
text-align: left;
|
|
103
92
|
display: inline-flex;
|
|
104
93
|
align-items: center;
|
|
105
|
-
justify-content: flex-
|
|
94
|
+
justify-content: flex-start;
|
|
106
95
|
gap: 3px;
|
|
107
96
|
}
|
|
108
97
|
|
|
@@ -143,26 +132,41 @@
|
|
|
143
132
|
}
|
|
144
133
|
|
|
145
134
|
.ermis-message-bubble--own .ermis-message-list__item-time {
|
|
146
|
-
color:
|
|
135
|
+
color: var(--ermis-bubble-own-text);
|
|
136
|
+
opacity: 0.6;
|
|
147
137
|
}
|
|
148
138
|
|
|
149
139
|
.ermis-message-list__item-text {
|
|
150
140
|
font-size: var(--ermis-font-size-sm);
|
|
151
141
|
line-height: 1.5;
|
|
152
142
|
word-break: break-word;
|
|
143
|
+
white-space: pre-wrap;
|
|
153
144
|
}
|
|
154
145
|
|
|
155
146
|
/* --- Mentions --- */
|
|
156
147
|
.ermis-mention {
|
|
157
148
|
color: var(--ermis-accent);
|
|
158
149
|
font-weight: 600;
|
|
150
|
+
cursor: default;
|
|
151
|
+
background-color: rgba(0, 122, 255, 0.1);
|
|
152
|
+
padding: 2px 6px;
|
|
153
|
+
border-radius: 4px;
|
|
154
|
+
margin: 0 1px;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.ermis-mention--clickable {
|
|
159
158
|
cursor: pointer;
|
|
159
|
+
transition: opacity 0.2s;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.ermis-mention--clickable:hover {
|
|
163
|
+
opacity: 0.8;
|
|
160
164
|
}
|
|
161
165
|
|
|
162
166
|
.ermis-message-bubble--own .ermis-mention {
|
|
163
167
|
color: rgba(255, 255, 255, 0.9);
|
|
164
|
-
|
|
165
|
-
text-
|
|
168
|
+
background-color: rgba(255, 255, 255, 0.2);
|
|
169
|
+
text-decoration: none;
|
|
166
170
|
}
|
|
167
171
|
|
|
168
172
|
/* Auto-detected URLs/emails in message text */
|
|
@@ -179,53 +183,82 @@
|
|
|
179
183
|
}
|
|
180
184
|
|
|
181
185
|
.ermis-message-bubble--own .ermis-text-link {
|
|
182
|
-
color:
|
|
186
|
+
color: var(--ermis-bubble-own-text);
|
|
187
|
+
text-decoration: underline;
|
|
183
188
|
}
|
|
184
189
|
|
|
185
190
|
.ermis-message-bubble--own .ermis-attachment__link-title {
|
|
186
|
-
color:
|
|
191
|
+
color: var(--ermis-bubble-own-text);
|
|
187
192
|
}
|
|
188
193
|
|
|
189
194
|
/* --- Message Bubble --- */
|
|
190
195
|
.ermis-message-bubble {
|
|
191
196
|
position: relative;
|
|
192
197
|
display: flex;
|
|
193
|
-
flex-
|
|
194
|
-
align-items: flex-
|
|
198
|
+
flex-direction: column;
|
|
199
|
+
align-items: flex-start;
|
|
195
200
|
padding: var(--ermis-spacing-sm) var(--ermis-spacing-md);
|
|
196
201
|
border-radius: var(--ermis-radius-lg);
|
|
197
202
|
/* width: 100%; */
|
|
198
203
|
word-break: break-word;
|
|
204
|
+
border: 1px solid var(--ermis-border);
|
|
199
205
|
}
|
|
200
206
|
|
|
201
207
|
.ermis-message-bubble--own {
|
|
202
208
|
background-color: var(--ermis-bubble-own-bg);
|
|
203
209
|
color: var(--ermis-bubble-own-text);
|
|
204
|
-
border-
|
|
210
|
+
border-color: var(--ermis-bubble-own-bg);
|
|
205
211
|
}
|
|
206
212
|
|
|
207
|
-
/* --- Override muted text inside own bubble
|
|
213
|
+
/* --- Override muted text inside own bubble --- */
|
|
208
214
|
.ermis-message-bubble--own .ermis-attachment__file-size,
|
|
209
215
|
.ermis-message-bubble--own .ermis-attachment__link-url,
|
|
210
216
|
.ermis-message-bubble--own .ermis-attachment__link-description,
|
|
211
217
|
.ermis-message-bubble--own .ermis-attachment__voice-duration,
|
|
212
218
|
.ermis-message-bubble--own .ermis-message-list__forwarded-indicator,
|
|
213
219
|
.ermis-message-bubble--own .ermis-attachment--file {
|
|
214
|
-
color:
|
|
220
|
+
color: var(--ermis-bubble-own-text);
|
|
221
|
+
opacity: 0.8;
|
|
215
222
|
}
|
|
216
223
|
|
|
217
224
|
.ermis-message-bubble--own .ermis-attachment--link-preview {
|
|
218
|
-
border-color:
|
|
225
|
+
border-color: var(--ermis-bubble-own-text);
|
|
226
|
+
opacity: 0.3;
|
|
219
227
|
}
|
|
220
228
|
|
|
221
229
|
.ermis-message-bubble--own .ermis-attachment--file {
|
|
222
|
-
background-color:
|
|
230
|
+
background-color: var(--ermis-bubble-own-text);
|
|
231
|
+
opacity: 0.1;
|
|
223
232
|
}
|
|
224
233
|
|
|
225
234
|
.ermis-message-bubble--other {
|
|
226
235
|
background-color: var(--ermis-bubble-other-bg);
|
|
227
236
|
color: var(--ermis-bubble-other-text);
|
|
228
|
-
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/* --- Dynamic Border Radius based on grouping --- */
|
|
240
|
+
/* Own messages (right side flat) */
|
|
241
|
+
.ermis-message-list__item--own.ermis-message-list__item--group-top .ermis-message-bubble {
|
|
242
|
+
border-bottom-right-radius: 4px;
|
|
243
|
+
}
|
|
244
|
+
.ermis-message-list__item--own.ermis-message-list__item--group-middle .ermis-message-bubble {
|
|
245
|
+
border-top-right-radius: 4px;
|
|
246
|
+
border-bottom-right-radius: 4px;
|
|
247
|
+
}
|
|
248
|
+
.ermis-message-list__item--own.ermis-message-list__item--group-bottom .ermis-message-bubble {
|
|
249
|
+
border-top-right-radius: 4px;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/* Other messages (left side flat) */
|
|
253
|
+
.ermis-message-list__item--other.ermis-message-list__item--group-top .ermis-message-bubble {
|
|
254
|
+
border-bottom-left-radius: 4px;
|
|
255
|
+
}
|
|
256
|
+
.ermis-message-list__item--other.ermis-message-list__item--group-middle .ermis-message-bubble {
|
|
257
|
+
border-top-left-radius: 4px;
|
|
258
|
+
border-bottom-left-radius: 4px;
|
|
259
|
+
}
|
|
260
|
+
.ermis-message-list__item--other.ermis-message-list__item--group-bottom .ermis-message-bubble {
|
|
261
|
+
border-top-left-radius: 4px;
|
|
229
262
|
}
|
|
230
263
|
|
|
231
264
|
/* --- System messages --- */
|
|
@@ -254,6 +287,7 @@
|
|
|
254
287
|
border-radius: var(--ermis-radius-md);
|
|
255
288
|
background-color: var(--ermis-signal-bg);
|
|
256
289
|
min-width: 180px;
|
|
290
|
+
position: relative;
|
|
257
291
|
}
|
|
258
292
|
|
|
259
293
|
.ermis-signal-message__icon {
|
|
@@ -281,6 +315,7 @@
|
|
|
281
315
|
flex-direction: column;
|
|
282
316
|
gap: 1px;
|
|
283
317
|
min-width: 0;
|
|
318
|
+
padding-right: 40px; /* Space for timestamp */
|
|
284
319
|
}
|
|
285
320
|
|
|
286
321
|
.ermis-signal-message__text {
|
|
@@ -303,39 +338,21 @@
|
|
|
303
338
|
line-height: 1.3;
|
|
304
339
|
}
|
|
305
340
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
/* --- Signal message inside own bubble (accent bg) --- */
|
|
315
|
-
.ermis-message-bubble--own .ermis-signal-message {
|
|
316
|
-
background-color: var(--ermis-signal-own-bg);
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
.ermis-message-bubble--own .ermis-signal-message__icon--success {
|
|
320
|
-
background-color: rgba(134, 239, 172, 0.2);
|
|
321
|
-
color: var(--ermis-signal-own-success);
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
.ermis-message-bubble--own .ermis-signal-message__icon--missed {
|
|
325
|
-
background-color: rgba(252, 165, 165, 0.2);
|
|
326
|
-
color: var(--ermis-signal-own-missed);
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
.ermis-message-bubble--own .ermis-signal-message__text--success {
|
|
330
|
-
color: var(--ermis-signal-own-success);
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
.ermis-message-bubble--own .ermis-signal-message__text--missed {
|
|
334
|
-
color: var(--ermis-signal-own-missed);
|
|
341
|
+
.ermis-signal-message__time {
|
|
342
|
+
position: absolute;
|
|
343
|
+
bottom: 8px;
|
|
344
|
+
right: 12px;
|
|
345
|
+
font-size: 10px;
|
|
346
|
+
color: var(--ermis-text-muted);
|
|
347
|
+
line-height: 1;
|
|
335
348
|
}
|
|
336
349
|
|
|
337
|
-
|
|
338
|
-
|
|
350
|
+
/* --- Signal Message Overrides --- */
|
|
351
|
+
.ermis-message-list__item--signal .ermis-message-bubble {
|
|
352
|
+
background: transparent !important;
|
|
353
|
+
box-shadow: none !important;
|
|
354
|
+
padding: 0 !important;
|
|
355
|
+
border: none !important;
|
|
339
356
|
}
|
|
340
357
|
|
|
341
358
|
/* --- Attachments --- */
|
|
@@ -610,57 +627,136 @@
|
|
|
610
627
|
}
|
|
611
628
|
|
|
612
629
|
.ermis-message-bubble--own .ermis-attachment__file-name {
|
|
613
|
-
color:
|
|
630
|
+
color: var(--ermis-bubble-own-text);
|
|
614
631
|
}
|
|
615
632
|
|
|
616
633
|
.ermis-message-bubble--own .ermis-attachment__file-icon {
|
|
617
|
-
background:
|
|
618
|
-
|
|
634
|
+
background: var(--ermis-bubble-own-text);
|
|
635
|
+
opacity: 0.2;
|
|
636
|
+
color: inherit;
|
|
619
637
|
}
|
|
620
638
|
|
|
621
639
|
.ermis-message-bubble--own .ermis-attachment__file-ext {
|
|
622
|
-
color:
|
|
640
|
+
color: var(--ermis-bubble-own-text);
|
|
641
|
+
opacity: 0.8;
|
|
623
642
|
}
|
|
624
643
|
|
|
625
644
|
.ermis-message-bubble--own .ermis-attachment__file-download {
|
|
626
|
-
color:
|
|
645
|
+
color: var(--ermis-bubble-own-text);
|
|
646
|
+
opacity: 0.8;
|
|
627
647
|
}
|
|
628
648
|
|
|
629
649
|
.ermis-message-bubble--own .ermis-attachment__file-download:hover {
|
|
630
|
-
background-color:
|
|
631
|
-
|
|
650
|
+
background-color: var(--ermis-bubble-own-text);
|
|
651
|
+
opacity: 0.15;
|
|
652
|
+
color: inherit;
|
|
632
653
|
}
|
|
633
654
|
|
|
634
|
-
/* ---
|
|
635
|
-
.ermis-
|
|
655
|
+
/* --- Custom Audio Player --- */
|
|
656
|
+
.ermis-custom-audio-player {
|
|
636
657
|
display: flex;
|
|
637
658
|
align-items: center;
|
|
638
659
|
gap: var(--ermis-spacing-sm);
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
background-color: var(--ermis-bg-hover);
|
|
642
|
-
overflow: hidden;
|
|
643
|
-
width: 100%;
|
|
644
|
-
box-sizing: border-box;
|
|
660
|
+
min-width: 240px; /* base comfortable width */
|
|
661
|
+
width: 100%; /* stretch to fill bubble if text makes it wider */
|
|
645
662
|
}
|
|
646
663
|
|
|
647
|
-
.ermis-
|
|
648
|
-
|
|
664
|
+
.ermis-custom-audio-play-btn {
|
|
665
|
+
display: flex;
|
|
666
|
+
align-items: center;
|
|
667
|
+
justify-content: center;
|
|
668
|
+
width: 36px;
|
|
669
|
+
height: 36px;
|
|
670
|
+
border-radius: 50%;
|
|
671
|
+
background-color: var(--ermis-accent);
|
|
672
|
+
border: none;
|
|
673
|
+
cursor: pointer;
|
|
674
|
+
color: white; /* solid white icon */
|
|
649
675
|
flex-shrink: 0;
|
|
676
|
+
transition: opacity 0.2s, transform 0.1s;
|
|
677
|
+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
650
678
|
}
|
|
651
679
|
|
|
652
|
-
.ermis-
|
|
680
|
+
.ermis-custom-audio-play-btn:hover {
|
|
681
|
+
opacity: 0.9;
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
.ermis-custom-audio-play-btn:active {
|
|
685
|
+
transform: scale(0.95);
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
.ermis-message-bubble--own .ermis-custom-audio-play-btn {
|
|
689
|
+
background-color: var(--ermis-bubble-own-text);
|
|
690
|
+
color: var(--ermis-accent);
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
.ermis-custom-audio-progress-container {
|
|
653
694
|
flex: 1;
|
|
654
|
-
|
|
695
|
+
display: flex;
|
|
696
|
+
align-items: center;
|
|
697
|
+
height: 24px;
|
|
698
|
+
padding: 0 6px; /* prevent thumb cutoff */
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
.ermis-custom-audio-progress-bg {
|
|
702
|
+
position: relative;
|
|
655
703
|
width: 100%;
|
|
656
|
-
|
|
657
|
-
|
|
704
|
+
height: 4px;
|
|
705
|
+
background-color: rgba(0, 0, 0, 0.1);
|
|
706
|
+
border-radius: 2px;
|
|
707
|
+
cursor: pointer;
|
|
658
708
|
}
|
|
659
709
|
|
|
660
|
-
.ermis-
|
|
661
|
-
|
|
662
|
-
|
|
710
|
+
.ermis-message-bubble--own .ermis-custom-audio-progress-bg {
|
|
711
|
+
background-color: rgba(255, 255, 255, 0.3);
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
.ermis-custom-audio-progress-fill {
|
|
715
|
+
position: absolute;
|
|
716
|
+
top: 0;
|
|
717
|
+
left: 0;
|
|
718
|
+
height: 100%;
|
|
719
|
+
background-color: var(--ermis-accent);
|
|
720
|
+
border-radius: 2px;
|
|
721
|
+
pointer-events: none;
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
.ermis-message-bubble--own .ermis-custom-audio-progress-fill {
|
|
725
|
+
background-color: var(--ermis-bubble-own-text);
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
.ermis-custom-audio-progress-thumb {
|
|
729
|
+
position: absolute;
|
|
730
|
+
top: 50%;
|
|
731
|
+
width: 12px;
|
|
732
|
+
height: 12px;
|
|
733
|
+
background-color: var(--ermis-accent);
|
|
734
|
+
border-radius: 50%;
|
|
735
|
+
transform: translate(-50%, -50%);
|
|
736
|
+
pointer-events: none;
|
|
737
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
.ermis-message-bubble--own .ermis-custom-audio-progress-thumb {
|
|
741
|
+
background-color: var(--ermis-bubble-own-text);
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
.ermis-custom-audio-duration {
|
|
745
|
+
font-size: var(--ermis-font-size-sm);
|
|
746
|
+
color: var(--ermis-text-primary);
|
|
747
|
+
font-weight: 500;
|
|
663
748
|
flex-shrink: 0;
|
|
749
|
+
min-width: 32px;
|
|
750
|
+
text-align: right;
|
|
751
|
+
opacity: 0.7;
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
.ermis-message-bubble--own .ermis-custom-audio-duration {
|
|
755
|
+
color: var(--ermis-bubble-own-text);
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
.ermis-custom-audio-hidden {
|
|
759
|
+
display: none;
|
|
664
760
|
}
|
|
665
761
|
|
|
666
762
|
/* --- Link preview --- */
|
|
@@ -754,9 +850,10 @@
|
|
|
754
850
|
/* --- Sticker message --- */
|
|
755
851
|
.ermis-message-sticker-wrapper {
|
|
756
852
|
position: relative;
|
|
757
|
-
width:
|
|
758
|
-
height:
|
|
853
|
+
width: 160px;
|
|
854
|
+
height: 160px;
|
|
759
855
|
overflow: hidden;
|
|
856
|
+
border-radius: 10px;
|
|
760
857
|
}
|
|
761
858
|
|
|
762
859
|
.ermis-message-sticker {
|
|
@@ -774,6 +871,42 @@
|
|
|
774
871
|
opacity: 1;
|
|
775
872
|
}
|
|
776
873
|
|
|
874
|
+
/* --- Sticker Message Overrides --- */
|
|
875
|
+
.ermis-message-list__item--sticker .ermis-message-bubble {
|
|
876
|
+
background: transparent !important;
|
|
877
|
+
box-shadow: none !important;
|
|
878
|
+
padding: 0 !important;
|
|
879
|
+
border: none !important;
|
|
880
|
+
position: relative;
|
|
881
|
+
border-radius: 0;
|
|
882
|
+
display: inline-block; /* Ensure bubble shrinks to fit sticker */
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
/* Timestamp overlay for stickers */
|
|
886
|
+
.ermis-message-list__item--sticker .ermis-message-list__item-time {
|
|
887
|
+
position: absolute;
|
|
888
|
+
bottom: 8px;
|
|
889
|
+
right: 8px;
|
|
890
|
+
color: #ffffff;
|
|
891
|
+
padding: 2px 8px;
|
|
892
|
+
border-radius: 12px;
|
|
893
|
+
font-size: 11px;
|
|
894
|
+
margin: 0;
|
|
895
|
+
line-height: 1.2;
|
|
896
|
+
font-weight: 500;
|
|
897
|
+
text-shadow: 0px 1px 3px rgba(0, 0, 0, 0.8), 0px 0px 1px rgba(0, 0, 0, 0.6);
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
/* Ensure edited indicator and inline status icon styling for sticker */
|
|
901
|
+
.ermis-message-list__item--sticker .ermis-message-list__item-time .ermis-message-list__edited-indicator {
|
|
902
|
+
color: rgba(255, 255, 255, 0.9);
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
.ermis-message-list__item--sticker .ermis-message-list__item-time svg {
|
|
906
|
+
color: #ffffff;
|
|
907
|
+
filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.8));
|
|
908
|
+
}
|
|
909
|
+
|
|
777
910
|
/* --- Error message --- */
|
|
778
911
|
.ermis-message-error {
|
|
779
912
|
font-size: var(--ermis-font-size-sm);
|
|
@@ -784,11 +917,19 @@
|
|
|
784
917
|
/* --- Read receipts --- */
|
|
785
918
|
.ermis-read-receipts {
|
|
786
919
|
display: flex;
|
|
787
|
-
justify-content: flex-end;
|
|
788
920
|
width: 100%;
|
|
789
921
|
padding-top: 2px;
|
|
790
922
|
}
|
|
791
923
|
|
|
924
|
+
.ermis-read-receipts--own {
|
|
925
|
+
justify-content: flex-end;
|
|
926
|
+
}
|
|
927
|
+
|
|
928
|
+
.ermis-read-receipts--other {
|
|
929
|
+
justify-content: flex-start;
|
|
930
|
+
padding-left: 36px; /* align with message content (avatar width 28px + gap 8px) */
|
|
931
|
+
}
|
|
932
|
+
|
|
792
933
|
@keyframes ermis-receipt-pop {
|
|
793
934
|
0% {
|
|
794
935
|
opacity: 0;
|
|
@@ -807,6 +948,7 @@
|
|
|
807
948
|
cursor: default;
|
|
808
949
|
position: relative;
|
|
809
950
|
animation: ermis-receipt-pop 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
|
|
951
|
+
z-index: 5;
|
|
810
952
|
}
|
|
811
953
|
|
|
812
954
|
.ermis-read-receipts__avatar {
|
|
@@ -843,10 +985,17 @@
|
|
|
843
985
|
display: none;
|
|
844
986
|
position: absolute;
|
|
845
987
|
bottom: calc(100% + 6px);
|
|
846
|
-
right: 0;
|
|
847
988
|
z-index: 50;
|
|
848
989
|
}
|
|
849
990
|
|
|
991
|
+
.ermis-read-receipts--own .ermis-read-receipts__tooltip-wrapper {
|
|
992
|
+
right: 0;
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
.ermis-read-receipts--other .ermis-read-receipts__tooltip-wrapper {
|
|
996
|
+
left: 0;
|
|
997
|
+
}
|
|
998
|
+
|
|
850
999
|
/* Invisible bridge to prevent hover loss when moving mouse from avatar to tooltip */
|
|
851
1000
|
.ermis-read-receipts__tooltip-wrapper::after {
|
|
852
1001
|
content: '';
|
|
@@ -858,11 +1007,23 @@
|
|
|
858
1007
|
background: transparent;
|
|
859
1008
|
}
|
|
860
1009
|
|
|
1010
|
+
/* Inner Tooltip with scrolling and styling */
|
|
1011
|
+
@keyframes ermis-tooltip-fade-in {
|
|
1012
|
+
from {
|
|
1013
|
+
opacity: 0;
|
|
1014
|
+
transform: translateY(6px);
|
|
1015
|
+
}
|
|
1016
|
+
to {
|
|
1017
|
+
opacity: 1;
|
|
1018
|
+
transform: translateY(0);
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
|
|
861
1022
|
.ermis-read-receipts__avatars:hover .ermis-read-receipts__tooltip-wrapper {
|
|
862
1023
|
display: flex;
|
|
1024
|
+
animation: ermis-tooltip-fade-in 0.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
|
863
1025
|
}
|
|
864
1026
|
|
|
865
|
-
/* Inner Tooltip with scrolling and styling */
|
|
866
1027
|
.ermis-read-receipts__tooltip {
|
|
867
1028
|
display: flex;
|
|
868
1029
|
flex-direction: column;
|
|
@@ -870,36 +1031,54 @@
|
|
|
870
1031
|
background-color: var(--ermis-bg-secondary);
|
|
871
1032
|
border: 1px solid var(--ermis-border);
|
|
872
1033
|
border-radius: var(--ermis-radius-md, 8px);
|
|
873
|
-
padding:
|
|
874
|
-
box-shadow:
|
|
875
|
-
width:
|
|
876
|
-
max-
|
|
1034
|
+
padding: 8px 12px;
|
|
1035
|
+
box-shadow: none;
|
|
1036
|
+
min-width: 140px;
|
|
1037
|
+
width: max-content;
|
|
1038
|
+
max-width: 220px;
|
|
1039
|
+
max-height: 250px;
|
|
877
1040
|
overflow-y: auto;
|
|
878
1041
|
}
|
|
879
1042
|
|
|
1043
|
+
/* Custom scrollbar for tooltip */
|
|
1044
|
+
.ermis-read-receipts__tooltip::-webkit-scrollbar {
|
|
1045
|
+
width: 4px;
|
|
1046
|
+
}
|
|
1047
|
+
.ermis-read-receipts__tooltip::-webkit-scrollbar-track {
|
|
1048
|
+
background: transparent;
|
|
1049
|
+
}
|
|
1050
|
+
.ermis-read-receipts__tooltip::-webkit-scrollbar-thumb {
|
|
1051
|
+
background: var(--ermis-border);
|
|
1052
|
+
border-radius: 4px;
|
|
1053
|
+
}
|
|
1054
|
+
|
|
880
1055
|
.ermis-read-receipts__tooltip-item {
|
|
881
1056
|
display: flex;
|
|
882
1057
|
align-items: center;
|
|
883
|
-
gap:
|
|
1058
|
+
gap: 10px;
|
|
1059
|
+
padding: 2px 0;
|
|
884
1060
|
}
|
|
885
1061
|
|
|
886
1062
|
.ermis-read-receipts__tooltip-info {
|
|
887
1063
|
display: flex;
|
|
888
1064
|
flex-direction: column;
|
|
889
|
-
gap:
|
|
1065
|
+
gap: 2px;
|
|
890
1066
|
min-width: 0;
|
|
891
1067
|
}
|
|
892
1068
|
|
|
893
1069
|
.ermis-read-receipts__tooltip-name {
|
|
894
|
-
font-size: var(--ermis-font-size-
|
|
1070
|
+
font-size: var(--ermis-font-size-sm, 0.875rem);
|
|
1071
|
+
font-weight: 500;
|
|
895
1072
|
color: var(--ermis-text-primary);
|
|
896
1073
|
white-space: nowrap;
|
|
897
1074
|
overflow: hidden;
|
|
898
1075
|
text-overflow: ellipsis;
|
|
1076
|
+
line-height: 1.2;
|
|
899
1077
|
}
|
|
900
1078
|
|
|
901
1079
|
.ermis-read-receipts__tooltip-time {
|
|
902
|
-
font-size: 0.
|
|
1080
|
+
font-size: 0.65rem;
|
|
903
1081
|
color: var(--ermis-text-muted);
|
|
904
1082
|
white-space: nowrap;
|
|
1083
|
+
line-height: 1.2;
|
|
905
1084
|
}
|