.message {
white-space: normal;
overflow: hidden;
border-radius: 0.75rem;
border-width: 1px;
border-style: solid;
word-wrap: break-word;
position: relative;
display: inline-block;
max-width: calc(100% - 6rem - 0.25rem - 0.25rem);
border-color: #F2F2F2;
background-color: #F2F2F2;
color: #171717;
}
.has-avatar-spacer .message {
max-width: calc(100% - 3rem - 0.25rem - 0.25rem);
}
.by-me .message {
border-color: #EC4899;
background-color: #EC4899;
color: #fff;
margin-right: 0.50rem;
}


<template>
<t:set showAvatars="{{true}}"/>
<div class="message-row {{ sender.isMe | then: 'by-me' | else: 'by-other' }} {{ body.type }}">
<Avatar photoUrl="{{ sender.photoUrl }}" />
<ActionMenu class="action-menu"><Icon type="horizontalDots" /></ActionMenu>
<div class="message {{ body.hasThumbnail | then: 'has-thumbnail' }}">
<div class="message-meta">
<div class="message-author" style="color: {{ sender.id | random_color }}">
{{ sender.name }}
</div>
<div class="message-time">
<TimeAgo timestamp="{{ timestamp }}"/>
</div>
</div>
<MessageBody
body="{{ body }}"
timestamp="{{ timestamp }}"
isLongEmailMessage="{{isLongEmailMessage}}"
hasReferencedMessage="{{ hasReferencedMessage }}"
/>
</div>
</div>
</template>We’re thrilled to have a seamless chat experience in our marketplace. TalkJS was incredibly easy to set up, and the result both looks and performs beautifully.
The power of TalkJS is its high customisability and ease of use. We can offer our customers a plug-and-play solution while giving them the flexibility to adjust the chat widget to their needs.