stream-chat-react 14.0.0-beta.5 → 14.0.0-beta.6

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 (33) hide show
  1. package/dist/cjs/{WithAudioPlayback.0c10cb67.js → WithAudioPlayback.f9abf707.js} +43 -33
  2. package/dist/cjs/WithAudioPlayback.f9abf707.js.map +1 -0
  3. package/dist/cjs/emojis.js +1 -1
  4. package/dist/cjs/index.js +54 -52
  5. package/dist/cjs/index.js.map +1 -1
  6. package/dist/css/index.css +149 -544
  7. package/dist/css/index.css.map +1 -1
  8. package/dist/es/{WithAudioPlayback.e7821fd4.mjs → WithAudioPlayback.d90f1a99.mjs} +43 -33
  9. package/dist/es/WithAudioPlayback.d90f1a99.mjs.map +1 -0
  10. package/dist/es/emojis.mjs +1 -1
  11. package/dist/es/index.mjs +55 -53
  12. package/dist/es/index.mjs.map +1 -1
  13. package/dist/types/components/Avatar/Avatar.d.ts +1 -1
  14. package/dist/types/components/Avatar/Avatar.d.ts.map +1 -1
  15. package/dist/types/components/Avatar/AvatarStack.d.ts +2 -2
  16. package/dist/types/components/Avatar/AvatarStack.d.ts.map +1 -1
  17. package/dist/types/components/Avatar/ChannelAvatar.d.ts +2 -6
  18. package/dist/types/components/Avatar/ChannelAvatar.d.ts.map +1 -1
  19. package/dist/types/components/Avatar/GroupAvatar.d.ts +6 -7
  20. package/dist/types/components/Avatar/GroupAvatar.d.ts.map +1 -1
  21. package/dist/types/components/ChannelHeader/ChannelHeader.d.ts.map +1 -1
  22. package/dist/types/components/ChannelListItem/ChannelListItemUI.d.ts.map +1 -1
  23. package/dist/types/components/ChannelListItem/utils.d.ts.map +1 -1
  24. package/dist/types/components/Icons/createIcon.d.ts +1 -1
  25. package/dist/types/components/Icons/createIcon.d.ts.map +1 -1
  26. package/dist/types/components/Icons/icons.d.ts +3 -3
  27. package/dist/types/components/Icons/icons.d.ts.map +1 -1
  28. package/dist/types/components/TypingIndicator/TypingIndicator.d.ts.map +1 -1
  29. package/dist/types/context/ComponentContext.d.ts +2 -2
  30. package/dist/types/context/ComponentContext.d.ts.map +1 -1
  31. package/package.json +1 -1
  32. package/dist/cjs/WithAudioPlayback.0c10cb67.js.map +0 -1
  33. package/dist/es/WithAudioPlayback.e7821fd4.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { useState, useEffect } from "react";
3
3
  import Picker from "@emoji-mart/react";
4
- import { c as useTranslationContext, X as useMessageComposerContext, a as useMessageComposerController, Y as useIsCooldownActive, r as usePopoverPosition, aG as IconEmoji, B as Button } from "./WithAudioPlayback.e7821fd4.mjs";
4
+ import { c as useTranslationContext, X as useMessageComposerContext, a as useMessageComposerController, Y as useIsCooldownActive, r as usePopoverPosition, aG as IconEmoji, B as Button } from "./WithAudioPlayback.d90f1a99.mjs";
5
5
  import mergeWith from "lodash.mergewith";
6
6
  import { insertItemWithTrigger, getTriggerCharWithToken, replaceWordWithEntity, BaseSearchSource, getTokenizedSuggestionDisplayName } from "stream-chat";
7
7
  const isShadowRoot = (node) => !!node.host;
package/dist/es/index.mjs CHANGED
@@ -3,8 +3,8 @@ import clsx from "clsx";
3
3
  import { nanoid } from "nanoid";
4
4
  import React, { useState, useEffect, useCallback, useLayoutEffect, useMemo, useContext, createContext, useRef, forwardRef, createElement, Component, Fragment as Fragment$1 } from "react";
5
5
  import { u as useHandleFileChangeWrapper, d as dataTransferItemsToFiles, r as renderAudio, t as toAudioBuffer, c as createFileFromBlobs, g as getExtensionFromMimeType, a as getRecordedMediaTypeFromMimeType } from "./audioProcessing.21cb49e1.mjs";
6
- import { u as useStateStore, a as useMessageComposerController, i as isMessageBounced, b as useChannelActionContext, C as ComponentContext, c as useTranslationContext, d as useChannelStateContext, e as useChatContext, f as isNotificationForPanel, B as Button, I as IconPauseFill, g as IconPlayFill, h as getDefaultExportFromCjs, j as defaultTranslatorFunction, p as predefinedFormatters, L as LocalizedFormat, k as calendar, l as IconLoading, m as isNetworkSendFailure, v as validateAndGetMessage, n as isUserMuted, o as defaultPinPermissions, q as useThreadContext, r as usePopoverPosition, s as useComponentContext, t as IconXmark, w as IconUser, x as IconExclamationMarkFill, y as IconChevronRight, z as IconChevronLeft, A as IconArrowLeft, D as IconExclamationMark, E as IconNoSign, F as isMessageErrorRetryable, G as ACTIONS_NOT_WORKING_IN_THREAD, H as useNotificationTarget, J as IconArrowUpRight, K as addNotificationTargetTag, M as IconPin, N as mapToUserNameOrId, O as IconClock, P as IconCheckmark1Small, Q as IconChecks, R as getReadByTooltipText, S as messageHasAttachments, T as messageTextHasEmojisOnly, U as isDate, V as getDateString, W as IconTranslate, X as useMessageComposerContext, Y as useIsCooldownActive, Z as IconCrossSmall, _ as IconImage, $ as IconPoll, a0 as IconLocation, a1 as IconFile, a2 as IconLink, a3 as IconVideo, a4 as IconVideoFill, a5 as IconVoice, a6 as IconSave, a7 as IconBell, a8 as IconChevronDown, a9 as IconPlusSmall, aa as IconCheckmark, ab as DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD, ac as IconTrophy, ad as IconReorder, ae as IconMinusCircle, af as IconSend, ag as IconAudio, ah as IconUserAdd, ai as IconMute, aj as IconGiphy, ak as IconFlag, al as IconUserRemove, am as IconAttachment, an as IconCommand, ao as CHANNEL_CONTAINER_ID, ap as IconPlus, aq as IconExclamationTriangle, ar as useAudioPlayer, as as IconRetry, at as IconArrowDownCircle, au as IconBolt, av as IconDelete, aw as IconUpload, ax as MessageComposerContextProvider, ay as useTypingContext, az as defaultDateTimeParser, aA as isLanguageSupported, aB as IconSidebar, aC as useChatViewContext, aD as MESSAGE_ACTIONS, aE as LegacyThreadContext, aF as IconReply, aG as IconEmoji, aH as IconMore, aI as IconUserCheck, aJ as IconUnsave, aK as IconBellOff, aL as IconNotification, aM as IconEdit, aN as IconCopy, aO as IconUnpin, aP as IconQuote, aQ as IconThread, aR as areMessageUIPropsEqual, aS as isDateSeparatorMessage, aT as isMessageBlocked, aU as messageHasSingleAttachment, aV as messageHasGiphyAttachment, aW as messageHasReactions, aX as isMessageEdited, aY as countEmojis, aZ as areMessagePropsEqual, a_ as getMessageActions, a$ as processMessages, b0 as insertIntro, b1 as getGroupStyles, b2 as getLastReceived, b3 as IconArrowUp, b4 as isIntroMessage, b5 as isLocalMessage, b6 as getIsFirstUnreadMessage, b7 as IconArrowDown, b8 as DEFAULT_NEXT_CHANNEL_PAGE_SIZE, b9 as EmptyStateIndicator, ba as getChannel, bb as IconSearch, bc as IconXCircle, bd as useChannelListContext, be as DEFAULT_JUMP_TO_PAGE_SIZE, bf as ChannelListContextProvider, bg as IconArchive, bh as IconLeave, bi as IconCamera, bj as IconExclamationCircleFill, bk as ChatProvider, bl as TranslationProvider, bm as useThreadsViewContext, bn as IconMessageBubbles, bo as IconRefresh, bp as IconEyeOpen } from "./WithAudioPlayback.e7821fd4.mjs";
7
- import { bu, bx, bY, bZ, b_, b$, c0, c1, bz, bC, by, bB, bD, c2, bG, bH, bI, bJ, bK, c3, bL, bW, bX, c4, c5, c6, br, bF, bE, bs, bt, bM, bN, bT, bU, bQ, bR, c7, bS, c8, bP, bO, bq, bA, bv, bw, bV } from "./WithAudioPlayback.e7821fd4.mjs";
6
+ import { u as useStateStore, a as useMessageComposerController, i as isMessageBounced, b as useChannelActionContext, C as ComponentContext, c as useTranslationContext, d as useChannelStateContext, e as useChatContext, f as isNotificationForPanel, B as Button, I as IconPauseFill, g as IconPlayFill, h as getDefaultExportFromCjs, j as defaultTranslatorFunction, p as predefinedFormatters, L as LocalizedFormat, k as calendar, l as IconLoading, m as isNetworkSendFailure, v as validateAndGetMessage, n as isUserMuted, o as defaultPinPermissions, q as useThreadContext, r as usePopoverPosition, s as useComponentContext, t as IconXmark, w as IconUser, x as IconExclamationMarkFill, y as IconChevronRight, z as IconChevronLeft, A as IconArrowLeft, D as IconExclamationMark, E as IconNoSign, F as isMessageErrorRetryable, G as ACTIONS_NOT_WORKING_IN_THREAD, H as useNotificationTarget, J as IconArrowUpRight, K as addNotificationTargetTag, M as IconPin, N as mapToUserNameOrId, O as IconClock, P as IconCheckmark1Small, Q as IconChecks, R as getReadByTooltipText, S as messageHasAttachments, T as messageTextHasEmojisOnly, U as isDate, V as getDateString, W as IconTranslate, X as useMessageComposerContext, Y as useIsCooldownActive, Z as IconXmarkSmall, _ as IconImage, $ as IconPoll, a0 as IconLocation, a1 as IconFile, a2 as IconLink, a3 as IconVideo, a4 as IconVideoFill, a5 as IconVoice, a6 as IconSave, a7 as IconBell, a8 as IconChevronDown, a9 as IconPlusSmall, aa as IconCheckmark, ab as DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD, ac as IconTrophy, ad as IconReorder, ae as IconMinusCircle, af as IconSend, ag as IconAudio, ah as IconUserAdd, ai as IconMute, aj as IconGiphy, ak as IconFlag, al as IconUserRemove, am as IconAttachment, an as IconCommand, ao as CHANNEL_CONTAINER_ID, ap as IconPlus, aq as IconExclamationTriangleFill, ar as useAudioPlayer, as as IconRetry, at as IconArrowDownCircle, au as IconBolt, av as IconDelete, aw as IconUpload, ax as MessageComposerContextProvider, ay as useTypingContext, az as defaultDateTimeParser, aA as isLanguageSupported, aB as IconSidebar, aC as useChatViewContext, aD as MESSAGE_ACTIONS, aE as LegacyThreadContext, aF as IconReply, aG as IconEmoji, aH as IconMore, aI as IconUserCheck, aJ as IconUnsave, aK as IconBellOff, aL as IconNotification, aM as IconEdit, aN as IconCopy, aO as IconUnpin, aP as IconQuote, aQ as IconThread, aR as areMessageUIPropsEqual, aS as isDateSeparatorMessage, aT as isMessageBlocked, aU as messageHasSingleAttachment, aV as messageHasGiphyAttachment, aW as messageHasReactions, aX as isMessageEdited, aY as countEmojis, aZ as areMessagePropsEqual, a_ as getMessageActions, a$ as processMessages, b0 as insertIntro, b1 as getGroupStyles, b2 as getLastReceived, b3 as IconArrowUp, b4 as isIntroMessage, b5 as isLocalMessage, b6 as getIsFirstUnreadMessage, b7 as IconArrowDown, b8 as DEFAULT_NEXT_CHANNEL_PAGE_SIZE, b9 as EmptyStateIndicator, ba as getChannel, bb as IconSearch, bc as IconXCircle, bd as useChannelListContext, be as DEFAULT_JUMP_TO_PAGE_SIZE, bf as ChannelListContextProvider, bg as IconArchive, bh as IconLeave, bi as IconCamera, bj as IconExclamationCircleFill, bk as ChatProvider, bl as TranslationProvider, bm as useThreadsViewContext, bn as IconMessageBubbles, bo as IconRefresh, bp as IconEyeFill } from "./WithAudioPlayback.d90f1a99.mjs";
7
+ import { bu, bx, bY, bZ, b_, b$, c0, c1, bz, bC, by, bB, bD, c2, bG, bH, bI, bJ, bK, c3, bL, bW, bX, c4, c5, c6, br, bF, bE, bs, bt, bM, bN, bT, bU, bQ, bR, c7, bS, c8, bP, bO, bq, bA, bv, bw, bV } from "./WithAudioPlayback.d90f1a99.mjs";
8
8
  import { StateStore, formatMessage, MessageComposer as MessageComposer$1, isGiphyAttachment, isScrapedContent, isLocalVideoAttachment, isVideoAttachment, isLocalImageAttachment, isImageAttachment, isAudioAttachment, isVoiceRecordingAttachment, isFileAttachment, isVoteAnswer, VotingVisibility, isLocalVoiceRecordingAttachment, isLocalAudioAttachment, isLocalFileAttachment, isLocalAttachment, LinkPreviewsManager, SearchController, ChannelSearchSource, UserSearchSource, MessageSearchSource, StreamChat, isSharedLocationResponse, LiveLocationManager } from "stream-chat";
9
9
  import throttle from "lodash.throttle";
10
10
  import * as linkify from "linkifyjs";
@@ -9292,12 +9292,17 @@ const ErrorBadge = ({
9292
9292
  }) => /* @__PURE__ */ jsx(Badge, { ...rest, className, size, variant: "error", children: /* @__PURE__ */ jsx(IconExclamationMarkFill, {}) });
9293
9293
  function AvatarStack({
9294
9294
  badgeSize,
9295
+ capLimit = 3,
9295
9296
  component: Component2 = "div",
9296
9297
  displayInfo = [],
9297
- overflowCount,
9298
9298
  size
9299
9299
  }) {
9300
9300
  const { Avatar: Avatar$1 = Avatar } = useComponentContext(AvatarStack.name);
9301
+ const displayInfoToRender = useMemo(
9302
+ () => displayInfo.length > capLimit ? displayInfo.slice(0, capLimit) : displayInfo,
9303
+ [displayInfo, capLimit]
9304
+ );
9305
+ const overflowCount = displayInfo.length - displayInfoToRender.length;
9301
9306
  if (!displayInfo.length) {
9302
9307
  return null;
9303
9308
  }
@@ -9307,8 +9312,9 @@ function AvatarStack({
9307
9312
  className: clsx("str-chat__avatar-stack", {
9308
9313
  [`str-chat__avatar-stack--size-${size}`]: typeof size === "string"
9309
9314
  }),
9315
+ "data-testid": "avatar-stack",
9310
9316
  children: [
9311
- displayInfo.map((info, index) => /* @__PURE__ */ jsx(
9317
+ displayInfoToRender.map((info, index) => /* @__PURE__ */ jsx(
9312
9318
  Avatar$1,
9313
9319
  {
9314
9320
  imageUrl: info.imageUrl,
@@ -9321,6 +9327,7 @@ function AvatarStack({
9321
9327
  Badge,
9322
9328
  {
9323
9329
  className: "str-chat__avatar-stack__count-badge",
9330
+ "data-testid": "avatar-stack-count-badge",
9324
9331
  size: badgeSize ?? size,
9325
9332
  variant: "counter",
9326
9333
  children: [
@@ -9336,34 +9343,36 @@ function AvatarStack({
9336
9343
  const ChannelAvatar = ({
9337
9344
  displayMembers,
9338
9345
  imageUrl,
9339
- overflowCount,
9340
9346
  size,
9341
9347
  userName,
9342
9348
  ...sharedProps
9343
9349
  }) => {
9344
- if ((displayMembers?.length ?? 0) >= 2) {
9345
- return /* @__PURE__ */ jsx(
9346
- GroupAvatar,
9350
+ const displayInfo = useMemo(() => {
9351
+ if (displayMembers && displayMembers.length > 0) {
9352
+ return displayMembers;
9353
+ }
9354
+ return [
9347
9355
  {
9348
- displayMembers,
9349
- overflowCount,
9350
- size,
9351
- ...sharedProps
9356
+ imageUrl,
9357
+ userName
9352
9358
  }
9353
- );
9354
- }
9355
- return /* @__PURE__ */ jsx(Avatar, { imageUrl, size, userName, ...sharedProps });
9359
+ ];
9360
+ }, [displayMembers, imageUrl, userName]);
9361
+ return /* @__PURE__ */ jsx(GroupAvatar, { displayMembers: displayInfo, size, ...sharedProps });
9356
9362
  };
9357
9363
  const GroupAvatar = ({
9358
9364
  badgeSize,
9359
9365
  className,
9360
9366
  displayMembers = [],
9361
9367
  isOnline,
9362
- overflowCount,
9363
9368
  size,
9364
9369
  ...rest
9365
9370
  }) => {
9366
- const displayCountBadge = typeof overflowCount === "number" && overflowCount > 0;
9371
+ const displayMembersToRender = useMemo(
9372
+ () => displayMembers.length > 4 ? displayMembers.slice(0, 2) : displayMembers,
9373
+ [displayMembers]
9374
+ );
9375
+ const overflowCount = displayMembers.length - displayMembersToRender.length;
9367
9376
  if (displayMembers.length < 2) {
9368
9377
  const firstUser = displayMembers[0];
9369
9378
  return /* @__PURE__ */ jsx(
@@ -9401,19 +9410,20 @@ const GroupAvatar = ({
9401
9410
  role: "button",
9402
9411
  ...rest,
9403
9412
  children: [
9404
- displayMembers.slice(0, displayCountBadge ? 2 : 4).map(({ imageUrl, userName }, index) => /* @__PURE__ */ jsx(
9413
+ displayMembersToRender.map(({ id, imageUrl, userName }, index) => /* @__PURE__ */ jsx(
9405
9414
  Avatar,
9406
9415
  {
9407
9416
  imageUrl,
9408
9417
  size: avatarSize,
9409
9418
  userName
9410
9419
  },
9411
- `${userName}-${imageUrl}-${index}`
9420
+ id || `${userName}-${imageUrl}-${index}`
9412
9421
  )),
9413
- displayCountBadge && /* @__PURE__ */ jsxs(
9422
+ typeof overflowCount === "number" && overflowCount > 0 && /* @__PURE__ */ jsxs(
9414
9423
  Badge,
9415
9424
  {
9416
9425
  className: "str-chat__avatar-group__count-badge",
9426
+ "data-testid": "group-avatar-count-badge",
9417
9427
  size: badgeSize,
9418
9428
  variant: "counter",
9419
9429
  children: [
@@ -12011,7 +12021,7 @@ const RemoveAttachmentPreviewButton = ({
12011
12021
  "data-testid": "preview-item-delete-button",
12012
12022
  disabled: uploadState === "uploading",
12013
12023
  ...props,
12014
- children: /* @__PURE__ */ jsx(IconCrossSmall, {})
12024
+ children: /* @__PURE__ */ jsx(IconXmarkSmall, {})
12015
12025
  }
12016
12026
  );
12017
12027
  };
@@ -16227,7 +16237,7 @@ const FileAttachmentPreview = ({
16227
16237
  /* @__PURE__ */ jsx("span", { children: hasSizeLimitError ? t("File too large") : uploadState === "blocked" ? t("Upload blocked") : t("Upload failed") })
16228
16238
  ] }),
16229
16239
  hasRetriableError && /* @__PURE__ */ jsxs("div", { className: "str-chat__attachment-preview-file__retriable-error", children: [
16230
- /* @__PURE__ */ jsx(IconExclamationTriangle, {}),
16240
+ /* @__PURE__ */ jsx(IconExclamationTriangleFill, {}),
16231
16241
  /* @__PURE__ */ jsx("span", { children: t("Upload error") }),
16232
16242
  /* @__PURE__ */ jsx(
16233
16243
  "button",
@@ -16447,7 +16457,7 @@ const ProgressBar = ({ className, progress, seek }) => {
16447
16457
  {
16448
16458
  className: "str-chat__message-attachment-audio-widget--progress-indicator",
16449
16459
  ref: setProgressIndicator,
16450
- style: { left: `${indicatorLeft}px` }
16460
+ style: { insetInlineStart: `${indicatorLeft}px` }
16451
16461
  }
16452
16462
  )
16453
16463
  }
@@ -16683,7 +16693,7 @@ const WaveProgressBar = ({
16683
16693
  "data-testid": "wave-progress-bar-progress-indicator",
16684
16694
  ref: setProgressIndicator,
16685
16695
  style: {
16686
- left: `${indicatorLeft}px`
16696
+ insetInlineStart: `${indicatorLeft}px`
16687
16697
  }
16688
16698
  }
16689
16699
  )
@@ -16782,7 +16792,7 @@ const AudioAttachmentPreview = ({
16782
16792
  /* @__PURE__ */ jsx(IconExclamationMark, {}),
16783
16793
  /* @__PURE__ */ jsx("span", { children: hasSizeLimitError ? t("File too large") : uploadState === "blocked" ? t("Upload blocked") : t("Upload failed") })
16784
16794
  ] }) : /* @__PURE__ */ jsxs("div", { className: "str-chat__attachment-preview-file__retriable-error", children: [
16785
- /* @__PURE__ */ jsx(IconExclamationTriangle, {}),
16795
+ /* @__PURE__ */ jsx(IconExclamationTriangleFill, {}),
16786
16796
  /* @__PURE__ */ jsx("span", { children: t("Upload error") }),
16787
16797
  /* @__PURE__ */ jsx(
16788
16798
  "button",
@@ -16825,7 +16835,7 @@ const MediaAttachmentPreview = ({
16825
16835
  removeAttachments
16826
16836
  }) => {
16827
16837
  const { t } = useTranslationContext();
16828
- const { BaseImage: BaseImage$1 = BaseImage, LoadingIndicator: LoadingIndicator2 = LoadingIndicatorIcon } = useComponentContext();
16838
+ const { BaseImage: BaseImage$1 = BaseImage, LoadingIndicator: LoadingIndicator$1 = LoadingIndicator } = useComponentContext();
16829
16839
  const [thumbnailPreviewError, setThumbnailPreviewError] = useState(false);
16830
16840
  const { id, uploadPermissionCheck, uploadState } = attachment.localMetadata ?? {};
16831
16841
  const isUploading = uploadState === "uploading";
@@ -16876,7 +16886,7 @@ const MediaAttachmentPreview = ({
16876
16886
  }
16877
16887
  ),
16878
16888
  /* @__PURE__ */ jsxs("div", { className: clsx("str-chat__attachment-preview-media__overlay"), children: [
16879
- isUploading && /* @__PURE__ */ jsx(LoadingIndicator2, {}),
16889
+ isUploading && /* @__PURE__ */ jsx(LoadingIndicator$1, { "data-testid": "loading-indicator" }),
16880
16890
  isVideoAttachment(attachment) && !hasUploadError && uploadState !== "uploading" && /* @__PURE__ */ jsxs("div", { className: "str-chat__attachment-preview-media__video-indicator", children: [
16881
16891
  /* @__PURE__ */ jsx(IconVideoFill, {}),
16882
16892
  attachment.duration && /* @__PURE__ */ jsx("div", { children: attachment.duration })
@@ -18968,8 +18978,7 @@ const getGroupChannelDisplayInfo = (channel) => {
18968
18978
  memberList.push({ imageUrl: user.image, userName: user.name });
18969
18979
  }
18970
18980
  return {
18971
- members: memberList,
18972
- overflowCount: memberList.length > 4 ? memberList.length - 2 : void 0
18981
+ members: memberList
18973
18982
  };
18974
18983
  };
18975
18984
  function computeChannelDisplayName(channel, directMessageLabel) {
@@ -19175,7 +19184,7 @@ const useChat = ({
19175
19184
  };
19176
19185
  useEffect(() => {
19177
19186
  if (!client) return;
19178
- const version = "14.0.0-beta.5";
19187
+ const version = "14.0.0-beta.6";
19179
19188
  const userAgent = client.getUserAgent();
19180
19189
  if (!userAgent.includes("stream-chat-react")) {
19181
19190
  client.setUserAgent(`stream-chat-react-${version}-${userAgent}`);
@@ -22318,7 +22327,6 @@ const InfiniteScroll = (props) => {
22318
22327
  children
22319
22328
  ] });
22320
22329
  };
22321
- const MAX_AVATARS = 3;
22322
22330
  const UnMemoizedTypingIndicator = (props) => {
22323
22331
  const { isMessageListScrolledToBottom = true, scrollToBottom, threadList } = props;
22324
22332
  const { channelConfig, thread } = useChannelStateContext("TypingIndicator");
@@ -22335,11 +22343,16 @@ const UnMemoizedTypingIndicator = (props) => {
22335
22343
  const typingUsers = threadList ? typingInThread : typingInChannel;
22336
22344
  const { displayUsers } = useDebouncedTypingActive(typingUsers);
22337
22345
  const showIndicator = displayUsers.length > 0;
22338
- const displayInfo = displayUsers.slice(0, MAX_AVATARS).map(({ user }) => ({
22339
- id: user?.id,
22340
- imageUrl: user?.image,
22341
- userName: user?.name ?? ""
22342
- }));
22346
+ const displayInfo = useMemo(
22347
+ () => displayUsers.map(
22348
+ ({ user }) => ({
22349
+ id: user?.id,
22350
+ imageUrl: user?.image,
22351
+ userName: user?.name
22352
+ })
22353
+ ),
22354
+ [displayUsers]
22355
+ );
22343
22356
  useEffect(() => {
22344
22357
  if (showIndicator && isMessageListScrolledToBottom) scrollToBottom();
22345
22358
  }, [scrollToBottom, isMessageListScrolledToBottom, showIndicator]);
@@ -22349,7 +22362,6 @@ const UnMemoizedTypingIndicator = (props) => {
22349
22362
  if (!showIndicator || !isMessageListScrolledToBottom) {
22350
22363
  return null;
22351
22364
  }
22352
- const overflowCount = displayUsers.length > MAX_AVATARS ? displayUsers.length - MAX_AVATARS : 0;
22353
22365
  return /* @__PURE__ */ jsxs(
22354
22366
  "div",
22355
22367
  {
@@ -22362,15 +22374,7 @@ const UnMemoizedTypingIndicator = (props) => {
22362
22374
  ),
22363
22375
  "data-testid": "typing-indicator",
22364
22376
  children: [
22365
- displayInfo.length > 0 && /* @__PURE__ */ jsx(
22366
- AvatarStack,
22367
- {
22368
- badgeSize: "md",
22369
- displayInfo,
22370
- overflowCount: overflowCount > 0 ? overflowCount : void 0,
22371
- size: "md"
22372
- }
22373
- ),
22377
+ displayInfo.length > 0 && /* @__PURE__ */ jsx(AvatarStack, { badgeSize: "md", displayInfo, size: "md" }),
22374
22378
  /* @__PURE__ */ jsx("div", { className: "str-chat__typing-indicator__bubble", children: /* @__PURE__ */ jsx("div", { className: "str-chat__typing-indicator__dots", children: /* @__PURE__ */ jsx(TypingIndicatorDots, {}) }) })
22375
22379
  ]
22376
22380
  }
@@ -26213,7 +26217,6 @@ const UnMemoizedChannelListItemUI = (props) => {
26213
26217
  {
26214
26218
  displayMembers: groupChannelDisplayInfo?.members,
26215
26219
  imageUrl: displayImage,
26216
- overflowCount: groupChannelDisplayInfo?.overflowCount,
26217
26220
  size: "xl",
26218
26221
  userName: avatarName
26219
26222
  }
@@ -26894,7 +26897,7 @@ const IconsBySeverity = {
26894
26897
  info: null,
26895
26898
  loading: IconRefresh,
26896
26899
  success: IconCheckmark,
26897
- warning: IconExclamationTriangle
26900
+ warning: IconExclamationTriangleFill
26898
26901
  };
26899
26902
  const DefaultNotificationIcon = ({ notification }) => {
26900
26903
  if (!notification.severity) return null;
@@ -27834,7 +27837,7 @@ const UnsupportedAttachment = ({ attachment }) => {
27834
27837
  const VisibilityDisclaimer = () => {
27835
27838
  const { t } = useTranslationContext();
27836
27839
  return /* @__PURE__ */ jsxs("div", { className: "str-chat__visibility-disclaimer", children: [
27837
- /* @__PURE__ */ jsx(IconEyeOpen, {}),
27840
+ /* @__PURE__ */ jsx(IconEyeFill, {}),
27838
27841
  t("Only visible to you")
27839
27842
  ] });
27840
27843
  };
@@ -28295,7 +28298,6 @@ const ChannelHeader = (props) => {
28295
28298
  className: "str-chat__avatar--channel-header",
28296
28299
  displayMembers: groupChannelDisplayInfo?.members,
28297
28300
  imageUrl: displayImage,
28298
- overflowCount: groupChannelDisplayInfo?.overflowCount,
28299
28301
  size: "lg",
28300
28302
  userName: displayTitle
28301
28303
  }
@@ -28443,15 +28445,14 @@ export {
28443
28445
  IconClock,
28444
28446
  IconCommand,
28445
28447
  IconCopy,
28446
- IconCrossSmall,
28447
28448
  IconDelete,
28448
28449
  IconEdit,
28449
28450
  IconEmoji,
28450
28451
  IconExclamationCircleFill,
28451
28452
  IconExclamationMark,
28452
28453
  IconExclamationMarkFill,
28453
- IconExclamationTriangle,
28454
- IconEyeOpen,
28454
+ IconExclamationTriangleFill,
28455
+ IconEyeFill,
28455
28456
  IconFile,
28456
28457
  IconFlag,
28457
28458
  IconGiphy,
@@ -28499,6 +28500,7 @@ export {
28499
28500
  IconVoice,
28500
28501
  IconXCircle,
28501
28502
  IconXmark,
28503
+ IconXmarkSmall,
28502
28504
  ImageComponent,
28503
28505
  ImageContainer,
28504
28506
  ImagePlaceholder,