@linktr.ee/messaging-react 3.5.5-rc-1782987115 → 3.5.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/{Card-B6Jplpgi.js → Card-Bb26YfI4.js} +2 -2
  2. package/dist/{Card-B6Jplpgi.js.map → Card-Bb26YfI4.js.map} +1 -1
  3. package/dist/{Card-CwENIQHI.cjs → Card-BrKZ-lbW.cjs} +2 -2
  4. package/dist/{Card-CwENIQHI.cjs.map → Card-BrKZ-lbW.cjs.map} +1 -1
  5. package/dist/{Card-rMhzAqC4.js → Card-CHvZlG79.js} +2 -2
  6. package/dist/{Card-rMhzAqC4.js.map → Card-CHvZlG79.js.map} +1 -1
  7. package/dist/{Card-hIM2Pu2w.js → Card-DN-Wvpia.js} +3 -3
  8. package/dist/{Card-hIM2Pu2w.js.map → Card-DN-Wvpia.js.map} +1 -1
  9. package/dist/{Card-jw-FEk_j.cjs → Card-S1vPBCzV.cjs} +2 -2
  10. package/dist/{Card-jw-FEk_j.cjs.map → Card-S1vPBCzV.cjs.map} +1 -1
  11. package/dist/{Card-CH1lN2DQ.cjs → Card-vLf8WYOu.cjs} +2 -2
  12. package/dist/{Card-CH1lN2DQ.cjs.map → Card-vLf8WYOu.cjs.map} +1 -1
  13. package/dist/{LockedThumbnail-NSvs1btu.cjs → LockedThumbnail-BE4DGTl8.cjs} +2 -2
  14. package/dist/{LockedThumbnail-NSvs1btu.cjs.map → LockedThumbnail-BE4DGTl8.cjs.map} +1 -1
  15. package/dist/{LockedThumbnail-C68EUgjg.js → LockedThumbnail-Jl0brl9S.js} +3 -3
  16. package/dist/{LockedThumbnail-C68EUgjg.js.map → LockedThumbnail-Jl0brl9S.js.map} +1 -1
  17. package/dist/assets/index.css +1 -1
  18. package/dist/{index-Bo9wjHNl.js → index-6Q-jnVFS.js} +587 -580
  19. package/dist/index-6Q-jnVFS.js.map +1 -0
  20. package/dist/index-Cjf7FPAs.cjs +2 -0
  21. package/dist/index-Cjf7FPAs.cjs.map +1 -0
  22. package/dist/index.cjs +1 -1
  23. package/dist/index.js +1 -1
  24. package/package.json +2 -2
  25. package/src/components/AttachmentCard/index.tsx +1 -1
  26. package/src/components/Avatar/getAvatarEmoji.test.ts +32 -0
  27. package/src/components/Avatar/getAvatarEmoji.ts +32 -19
  28. package/src/components/Avatar/index.tsx +6 -3
  29. package/src/components/CustomLinkPreviewList/CustomLinkPreviewCard.tsx +1 -1
  30. package/src/components/CustomMessage/MessageAttachmentConversations.stories.tsx +1 -1
  31. package/src/components/CustomMessage/MessageTag.stories.tsx +2 -2
  32. package/src/components/LinkAttachment/components/_shared/CardShell.tsx +1 -1
  33. package/src/components/LockedAttachment/components/_shared/LockedCardShell.tsx +1 -1
  34. package/src/components/MediaMessage/index.tsx +1 -1
  35. package/src/components/MessageAttachment/_shared/Bubble.tsx +3 -3
  36. package/src/styles.css +6 -51
  37. package/dist/index-Bo9wjHNl.js.map +0 -1
  38. package/dist/index-Bt9H9JKb.cjs +0 -2
  39. package/dist/index-Bt9H9JKb.cjs.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-Bt9H9JKb.cjs");exports.ActionButton=e.ActionButton;exports.Avatar=e.Avatar;exports.ChannelEmptyState=e.ChannelEmptyState;exports.ChannelList=e.ChannelList;exports.ChannelView=e.ChannelView;exports.CustomMessageProvider=e.CustomMessageProvider;exports.FaqList=e.FaqList;exports.FaqListItem=e.FaqListItem;exports.LinkAttachment=e.LinkAttachment;exports.LockedAttachment=e.LockedAttachment;exports.MediaMessage=e.MediaMessage;exports.MessageAttachment=e.MessageAttachment;exports.MessageVoteButtons=e.MessageVoteButtons;exports.MessagingProvider=e.MessagingProvider;exports.MessagingShell=e.MessagingShell;exports.buildCompactMetaLabel=e.buildCompactMetaLabel;exports.formatFileSize=e.formatFileSize;exports.formatRelativeTime=e.formatRelativeTime;exports.getFileExtensionLabel=e.getFileExtensionLabel;exports.getMessageDisplayText=e.getMessageDisplayText;exports.isLinkAttachment=e.isLinkAttachment;exports.isUuidLike=e.isUuidLike;exports.messageAttachmentGroupPositionFromStream=e.bubbleGroupPositionFromStream;exports.normalizeLanguageCode=e.normalizeLanguageCode;exports.resolveConversationParticipant=e.resolveConversationParticipant;exports.resolveLinkAttachment=e.resolveLinkAttachment;exports.resolveMediaFromMessage=e.resolveMediaFromMessage;exports.resolveParticipantDisplayName=e.resolveParticipantDisplayName;exports.useComposerLocked=e.useComposerLocked;exports.useCustomMessage=e.useCustomMessage;exports.useMessageVote=e.useMessageVote;exports.useMessaging=e.useMessaging;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-Cjf7FPAs.cjs");exports.ActionButton=e.ActionButton;exports.Avatar=e.Avatar;exports.ChannelEmptyState=e.ChannelEmptyState;exports.ChannelList=e.ChannelList;exports.ChannelView=e.ChannelView;exports.CustomMessageProvider=e.CustomMessageProvider;exports.FaqList=e.FaqList;exports.FaqListItem=e.FaqListItem;exports.LinkAttachment=e.LinkAttachment;exports.LockedAttachment=e.LockedAttachment;exports.MediaMessage=e.MediaMessage;exports.MessageAttachment=e.MessageAttachment;exports.MessageVoteButtons=e.MessageVoteButtons;exports.MessagingProvider=e.MessagingProvider;exports.MessagingShell=e.MessagingShell;exports.buildCompactMetaLabel=e.buildCompactMetaLabel;exports.formatFileSize=e.formatFileSize;exports.formatRelativeTime=e.formatRelativeTime;exports.getFileExtensionLabel=e.getFileExtensionLabel;exports.getMessageDisplayText=e.getMessageDisplayText;exports.isLinkAttachment=e.isLinkAttachment;exports.isUuidLike=e.isUuidLike;exports.messageAttachmentGroupPositionFromStream=e.bubbleGroupPositionFromStream;exports.normalizeLanguageCode=e.normalizeLanguageCode;exports.resolveConversationParticipant=e.resolveConversationParticipant;exports.resolveLinkAttachment=e.resolveLinkAttachment;exports.resolveMediaFromMessage=e.resolveMediaFromMessage;exports.resolveParticipantDisplayName=e.resolveParticipantDisplayName;exports.useComposerLocked=e.useComposerLocked;exports.useCustomMessage=e.useCustomMessage;exports.useMessageVote=e.useMessageVote;exports.useMessaging=e.useMessaging;
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as e, b as t, C as i, c as o, d as n, e as m, F as r, f as g, L as l, h as M, M as c, i as u, j as L, k as h, l as d, m as p, n as v, o as C, p as A, q as k, s as F, t as P, u as b, v as f, w as x, x as y, y as S, z as q, B as z, D as B, E as D, G as E } from "./index-Bo9wjHNl.js";
1
+ import { a as e, b as t, C as i, c as o, d as n, e as m, F as r, f as g, L as l, h as M, M as c, i as u, j as L, k as h, l as d, m as p, n as v, o as C, p as A, q as k, s as F, t as P, u as b, v as f, w as x, x as y, y as S, z as q, B as z, D as B, E as D, G as E } from "./index-6Q-jnVFS.js";
2
2
  export {
3
3
  e as ActionButton,
4
4
  t as Avatar,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@linktr.ee/messaging-react",
3
- "version": "3.5.5-rc-1782987115",
3
+ "version": "3.5.5",
4
4
  "description": "React messaging components built on messaging-core for web applications",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -38,7 +38,7 @@
38
38
  },
39
39
  "dependencies": {
40
40
  "@linktr.ee/component-library": "11.8.6",
41
- "@linktr.ee/messaging-core": "2.3.0-rc-1782987115",
41
+ "@linktr.ee/messaging-core": "^2.2.0",
42
42
  "@phosphor-icons/react": "^2.1.10"
43
43
  },
44
44
  "devDependencies": {
@@ -57,7 +57,7 @@ const AttachmentCard: React.FC<AttachmentCardProps> = ({
57
57
  data-testid={dataTestId}
58
58
  className={classNames(
59
59
  'relative w-[280px] select-none overflow-hidden rounded-[24px] shadow-[0_0_0_1px_rgba(0,0,0,0.04),0_4px_8px_rgba(0,0,0,0.06)]',
60
- isDark ? 'bg-[#1e2330]' : 'bg-white'
60
+ isDark ? 'bg-[#121110]' : 'bg-white'
61
61
  )}
62
62
  >
63
63
  {topLeft ? (
@@ -0,0 +1,32 @@
1
+ import { describe, expect, it } from 'vitest'
2
+
3
+ import { getAvatarBgColor, getAvatarEmoji } from './getAvatarEmoji'
4
+
5
+ const emojiBgColors: Record<string, string> = {
6
+ '🍉': '#D6EBFF',
7
+ '🍎': '#FFD1DD',
8
+ '🍓': '#FFE0AE',
9
+ '🍋': '#CAEEB5',
10
+ '🍌': '#FFF1C9',
11
+ '🍇': '#E6D9FF',
12
+ '🍊': '#D6F4FF',
13
+ '🥥': '#F7E7D8',
14
+ '🍒': '#DFF4D8',
15
+ '🥭': '#FFD8C2',
16
+ '🥝': '#FFE7C7',
17
+ '🫒': '#F6E3B4',
18
+ '🍈': '#D9F7E1',
19
+ }
20
+
21
+ describe('getAvatarBgColor', () => {
22
+ it('returns the mapped color for the avatar emoji and stays consistent for the same id', () => {
23
+ const id = 'user-123'
24
+
25
+ const emoji = getAvatarEmoji(id)
26
+ const color = getAvatarBgColor(id)
27
+
28
+ expect(getAvatarEmoji(id)).toBe(emoji)
29
+ expect(color).toBe(emojiBgColors[emoji])
30
+ expect(getAvatarBgColor(id)).toBe(color)
31
+ })
32
+ })
@@ -1,21 +1,21 @@
1
1
  /**
2
- * Generate a fruit emoji based on a string id
3
- * Returns a consistent fruit emoji for the same id
2
+ * Fruit emojis paired with their avatar background color.
3
+ * Single source of truth for both `getAvatarEmoji` and `getAvatarBgColor`.
4
4
  */
5
- const EMOJIS = [
6
- '🍎', // Apple
7
- '🍌', // Banana
8
- '🍇', // Grape
9
- '🍊', // Orange
10
- '🍓', // Strawberry
11
- '🥥', // Coconut
12
- '🍒', // Cherry
13
- '🥭', // Mango
14
- '🍉', // Watermelon
15
- '🍋', // Lemon
16
- '🥝', // Kiwi
17
- '🫒', // Olive
18
- '🍈', // Melon
5
+ const FRUITS = [
6
+ { emoji: '🍎', bgColor: '#FFD1DD' }, // Apple
7
+ { emoji: '🍌', bgColor: '#FFF1C9' }, // Banana
8
+ { emoji: '🍇', bgColor: '#E6D9FF' }, // Grape
9
+ { emoji: '🍊', bgColor: '#D6F4FF' }, // Orange
10
+ { emoji: '🍓', bgColor: '#FFE0AE' }, // Strawberry
11
+ { emoji: '🥥', bgColor: '#F7E7D8' }, // Coconut
12
+ { emoji: '🍒', bgColor: '#DFF4D8' }, // Cherry
13
+ { emoji: '🥭', bgColor: '#FFD8C2' }, // Mango
14
+ { emoji: '🍉', bgColor: '#D6EBFF' }, // Watermelon
15
+ { emoji: '🍋', bgColor: '#CAEEB5' }, // Lemon
16
+ { emoji: '🥝', bgColor: '#FFE7C7' }, // Kiwi
17
+ { emoji: '🫒', bgColor: '#F6E3B4' }, // Olive
18
+ { emoji: '🍈', bgColor: '#D9F7E1' }, // Melon
19
19
  ]
20
20
 
21
21
  /**
@@ -31,14 +31,27 @@ function hashString(str: string): number {
31
31
  return Math.abs(hash)
32
32
  }
33
33
 
34
+ /**
35
+ * Pick a consistent fruit for an id string
36
+ */
37
+ function getFruit(id: string) {
38
+ return FRUITS[hashString(id) % FRUITS.length]
39
+ }
40
+
34
41
  /**
35
42
  * Get a fruit emoji based on an id string
36
43
  * @param id - The string id to generate emoji from
37
44
  * @returns A fruit emoji string
38
45
  */
39
46
  export function getAvatarEmoji(id: string): string {
40
- const hash = hashString(id)
41
- const index = hash % EMOJIS.length
42
- return EMOJIS[index]
47
+ return getFruit(id).emoji
43
48
  }
44
49
 
50
+ /**
51
+ * Get the background color paired with an id's fruit emoji
52
+ * @param id - The string id to generate the color from
53
+ * @returns A hex color string
54
+ */
55
+ export function getAvatarBgColor(id: string): string {
56
+ return getFruit(id).bgColor
57
+ }
@@ -2,7 +2,7 @@ import { StarIcon } from '@phosphor-icons/react'
2
2
  import classNames from 'classnames'
3
3
  import React from 'react'
4
4
 
5
- import { getAvatarEmoji } from './getAvatarEmoji'
5
+ import { getAvatarBgColor, getAvatarEmoji } from './getAvatarEmoji'
6
6
 
7
7
  export interface AvatarProps {
8
8
  id: string
@@ -28,6 +28,7 @@ export const Avatar = ({
28
28
  dmAgentEnabled = false,
29
29
  }: AvatarProps) => {
30
30
  const emoji = getAvatarEmoji(id)
31
+ const bgColor = getAvatarBgColor(id)
31
32
 
32
33
  // Small avatars scale the emoji with the avatar so it doesn't overpower a
33
34
  // tiny circle — a fixed floor read ~60% of a 17px avatar vs ~35% at 40px.
@@ -62,7 +63,7 @@ export const Avatar = ({
62
63
  <div
63
64
  aria-hidden="true"
64
65
  className={classNames(
65
- 'avatar-fallback flex h-full w-full items-center justify-center bg-[#E6E5E3] font-semibold select-none transition-colors'
66
+ 'avatar-fallback flex h-full w-full items-center justify-center font-semibold select-none transition-colors'
66
67
  )}
67
68
  style={{ fontSize, lineHeight: 1 }}
68
69
  >
@@ -75,13 +76,15 @@ export const Avatar = ({
75
76
  return (
76
77
  <div
77
78
  className={classNames(
78
- 'relative flex-shrink-0 !bg-transparent',
79
+ 'relative flex-shrink-0',
79
80
  className
80
81
  )}
81
82
  style={{
82
83
  '--str-chat__avatar-size': `${size}px`,
83
84
  width: `${size}px`,
84
85
  height: `${size}px`,
86
+ backgroundColor: image ? undefined : bgColor,
87
+ ...borderStyle,
85
88
  } as React.CSSProperties}
86
89
  >
87
90
  {starred && (
@@ -23,7 +23,7 @@ const CustomLinkPreviewCard: React.FC<CustomLinkPreviewCardProps> = ({
23
23
  href={og_scrape_url}
24
24
  target="_blank"
25
25
  rel="noopener noreferrer"
26
- className="relative block w-full rounded-[24px] bg-[#1e2330] p-2 no-underline transition-opacity hover:opacity-90"
26
+ className="relative block w-full rounded-[24px] bg-[#121110] p-2 no-underline transition-opacity hover:opacity-90"
27
27
  >
28
28
  {image_url && (
29
29
  <img
@@ -42,7 +42,7 @@ interface ChatNode {
42
42
  }
43
43
 
44
44
  const TEXT_BG_BY_ROLE: Record<ChatRole, string> = {
45
- sender: 'bg-[#1e2330] text-white',
45
+ sender: 'bg-[#121110] text-white',
46
46
  receiver: 'bg-[#e9eaed] text-[#080707]',
47
47
  }
48
48
 
@@ -83,7 +83,7 @@ ChatbotReceiverText.parameters = skipInChromatic
83
83
  export const ChatbotSenderText: StoryFn<ComponentProps> = (args) => {
84
84
  return (
85
85
  <div className="p-12">
86
- <div className="bg-[#1e2330] rounded-[24px] px-4 py-3 w-[280px]">
86
+ <div className="bg-[#121110] rounded-[24px] px-4 py-3 w-[280px]">
87
87
  <MessageTag {...args} />
88
88
  </div>
89
89
  </div>
@@ -150,7 +150,7 @@ export const AllVariants: StoryFn = () => {
150
150
  </div>
151
151
  <div className="flex items-center gap-4">
152
152
  <span className="text-sm w-32">Chatbot (sender):</span>
153
- <div className="bg-[#1e2330] rounded-[24px] px-4 py-3 w-[280px]">
153
+ <div className="bg-[#121110] rounded-[24px] px-4 py-3 w-[280px]">
154
154
  <MessageTag
155
155
  message={createMockMessage({
156
156
  metadata: { custom_type: 'MESSAGE_CHATBOT' },
@@ -64,7 +64,7 @@ const CardShell: React.FC<CardShellProps> = ({
64
64
  const isInteractive = href != null || onClick != null
65
65
  const className = classNames(
66
66
  SHELL_CLASS,
67
- bgClassName ?? (variant === 'dark' ? 'bg-[#1e2330]' : 'bg-white'),
67
+ bgClassName ?? (variant === 'dark' ? 'bg-[#121110]' : 'bg-white'),
68
68
  // `focus-ring` is a design-system utility from the component-library
69
69
  // tailwind preset — outline-none + a black 2px focus-visible ring
70
70
  // with offset, so keyboard users can see the focused card.
@@ -26,7 +26,7 @@ const LockedCardShell: React.FC<LockedCardShellProps> = ({
26
26
  className={classNames(
27
27
  'relative w-[280px] select-none overflow-hidden rounded-md',
28
28
  'shadow-[0_0_0_1px_rgba(0,0,0,0.04),0_1px_2px_rgba(0,0,0,0.04),0_8px_32px_rgba(0,0,0,0.1)]',
29
- variant === 'dark' ? 'bg-[#1e2330]' : 'bg-white'
29
+ variant === 'dark' ? 'bg-[#121110]' : 'bg-white'
30
30
  )}
31
31
  >
32
32
  {children}
@@ -15,7 +15,7 @@ function formatBytes(bytes: number): string {
15
15
  }
16
16
 
17
17
  function linkCardShellClass(isMyMessage: boolean) {
18
- const bg = isMyMessage ? 'bg-[#1e2330]' : 'bg-[#F3F3F1]'
18
+ const bg = isMyMessage ? 'bg-[#121110]' : 'bg-[#F3F3F1]'
19
19
  return `w-[280px] select-none overflow-hidden rounded-[24px] ${bg} shadow-[0_0_0_1px_rgba(0,0,0,0.04),0_4px_8px_rgba(0,0,0,0.06)]`
20
20
  }
21
21
 
@@ -30,7 +30,7 @@ export interface BubbleProps {
30
30
  // `.str-chat__message-bubble` token set so attachments visually drop
31
31
  // into a normal `CustomMessage` thread without any seams:
32
32
  // - light → `--str-chat__secondary-surface-color` = grey200 (#e9eaed)
33
- // - dark → `.str-chat__message--me` override in `styles.css` (#1e2330)
33
+ // - dark → `.str-chat__message--me` override in `styles.css` (#121110)
34
34
  // - text padding → `--str-chat__spacing-2 --str-chat__spacing-4` = 8px 16px
35
35
  // - border-radius → `--str-chat__border-radius-md` = 18px
36
36
  //
@@ -41,7 +41,7 @@ export interface BubbleProps {
41
41
  // rebrand would need to touch every site. A central token would
42
42
  // collapse the migration to one definition.
43
43
  const BUBBLE_BG_BY_VARIANT: Record<BubbleVariant, string> = {
44
- dark: 'bg-[#1e2330]',
44
+ dark: 'bg-[#121110]',
45
45
  light: 'bg-[#e9eaed]',
46
46
  }
47
47
 
@@ -104,7 +104,7 @@ const CORNER_CLASSES_BY_SIDE_AND_POSITION: Record<
104
104
  * is the file', 'Here is the image').
105
105
  *
106
106
  * Two visual variants:
107
- * - `dark` — sender-side (Composer / Sent), white text on `#1e2330`.
107
+ * - `dark` — sender-side (Composer / Sent), white text on `#121110`.
108
108
  * - `light` — recipient-side (Received), dark text on `#e9eaed`.
109
109
  *
110
110
  * Background colors, padding, border-radius, and inherited font come
package/src/styles.css CHANGED
@@ -8,10 +8,10 @@
8
8
  --str-chat__font-family: inherit;
9
9
 
10
10
  --str-chat__message-bubble-border-radius: 1.5rem;
11
- --str-chat__message-bubble-background-color: #f2f1ef;
12
- --str-chat__message-bubble-color: #000000;
11
+ --str-chat__message-bubble-background-color: #f1f0ee;
12
+ --str-chat__message-bubble-color: #181818;
13
13
 
14
- --str-chat__own-message-bubble-background-color: #1e2330;
14
+ --str-chat__own-message-bubble-background-color: #121110;
15
15
  --str-chat__own-message-bubble-color: #fff;
16
16
  }
17
17
 
@@ -560,8 +560,7 @@
560
560
 
561
561
  .str-chat__message .str-chat__message-bubble {
562
562
  font-size: 0.875rem;
563
- line-height: 1.3125rem;
564
- letter-spacing: 0.14px;
563
+ line-height: 1.25rem;
565
564
  }
566
565
 
567
566
  /* Chatbot reply markdown — restore semantics that consumer Tailwind preflight
@@ -675,55 +674,11 @@
675
674
  }
676
675
 
677
676
  .str-chat__message--other .str-chat__message-bubble {
678
- border-end-start-radius: 0;
679
- }
680
-
681
- .str-chat__message--other
682
- .str-chat__message-bubble-wrapper
683
- > .str-chat__message-bubble:last-child {
684
- position: relative;
685
-
686
- &::after {
687
- content: '';
688
- position: absolute;
689
- inset-block-end: 0;
690
- inset-inline-start: calc(-1 * 0.25rem);
691
- width: 1.375rem;
692
- height: 1.5rem;
693
- background-color: var(--str-chat__message-bubble-background-color);
694
- pointer-events: none;
695
- -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='25 22 20 23'%3E%3Cpath d='M45 22H30C30 32.1934 29.1413 37.2345 25.8323 43.4893C25.4732 44.168 25.9613 44.9917 26.7255 44.9178C39.8236 43.6506 44.6803 28.0737 45 22Z'/%3E%3C/svg%3E")
696
- no-repeat center / 100% 100%;
697
- mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='25 22 20 23'%3E%3Cpath d='M45 22H30C30 32.1934 29.1413 37.2345 25.8323 43.4893C25.4732 44.168 25.9613 44.9917 26.7255 44.9178C39.8236 43.6506 44.6803 28.0737 45 22Z'/%3E%3C/svg%3E")
698
- no-repeat center / 100% 100%;
699
- }
700
- }
701
-
702
- .str-chat__message--me
703
- .str-chat__message-bubble-wrapper
704
- > .str-chat__message-bubble:last-child {
705
- position: relative;
706
-
707
- &::after {
708
- content: '';
709
- position: absolute;
710
- inset-block-end: 0;
711
- inset-inline-end: calc(-1 * 0.25rem);
712
- width: 1.375rem;
713
- height: 1.5rem;
714
- background-color: var(--str-chat__own-message-bubble-background-color);
715
- pointer-events: none;
716
- transform: scaleX(-1);
717
- transform-origin: center;
718
- -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='25 22 20 23'%3E%3Cpath d='M45 22H30C30 32.1934 29.1413 37.2345 25.8323 43.4893C25.4732 44.168 25.9613 44.9917 26.7255 44.9178C39.8236 43.6506 44.6803 28.0737 45 22Z'/%3E%3C/svg%3E")
719
- no-repeat center / 100% 100%;
720
- mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='25 22 20 23'%3E%3Cpath d='M45 22H30C30 32.1934 29.1413 37.2345 25.8323 43.4893C25.4732 44.168 25.9613 44.9917 26.7255 44.9178C39.8236 43.6506 44.6803 28.0737 45 22Z'/%3E%3C/svg%3E")
721
- no-repeat center / 100% 100%;
722
- }
677
+ border-end-start-radius: var(--str-chat__message-bubble-border-radius);
723
678
  }
724
679
 
725
680
  .str-chat__message--me .str-chat__message-bubble {
726
- border-end-end-radius: 0;
681
+ border-end-end-radius: var(--str-chat__message-bubble-border-radius);
727
682
  }
728
683
  }
729
684