@linktr.ee/messaging-react 4.4.3 → 4.4.4-rc-1788181757

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 (58) hide show
  1. package/dist/AttachmentCard-BbsjzdLJ.cjs +2 -0
  2. package/dist/AttachmentCard-BbsjzdLJ.cjs.map +1 -0
  3. package/dist/{AttachmentCard-BqwWgqvi.js → AttachmentCard-DSekwIOA.js} +35 -20
  4. package/dist/AttachmentCard-DSekwIOA.js.map +1 -0
  5. package/dist/{Card-BIbqWagz.cjs → Card-BS6Fza2a.cjs} +2 -2
  6. package/dist/{Card-BIbqWagz.cjs.map → Card-BS6Fza2a.cjs.map} +1 -1
  7. package/dist/{Card-f51K6V7Y.js → Card-BhwBkgxI.js} +2 -2
  8. package/dist/{Card-f51K6V7Y.js.map → Card-BhwBkgxI.js.map} +1 -1
  9. package/dist/index.cjs +2 -2
  10. package/dist/index.cjs.map +1 -1
  11. package/dist/index.js +36 -3
  12. package/dist/index.js.map +1 -1
  13. package/package.json +3 -3
  14. package/src/components/AttachmentCard/MediaPlayer.test.tsx +62 -85
  15. package/src/components/AttachmentCard/MediaPlayer.tsx +14 -2
  16. package/src/components/AttachmentCard/Thumbnail.test.tsx +37 -46
  17. package/src/components/AttachmentCard/index.test.tsx +18 -46
  18. package/src/components/AttachmentCard/index.tsx +8 -2
  19. package/src/components/AttachmentCard/utils/icons.ts +11 -1
  20. package/src/components/Avatar/Avatar.test.tsx +37 -64
  21. package/src/components/Avatar/index.tsx +8 -1
  22. package/src/components/ChannelList/CustomChannelPreview.test.tsx +19 -19
  23. package/src/components/ChannelList/CustomChannelPreview.tsx +8 -2
  24. package/src/components/ChannelView.outbound-resolution.integration.test.tsx +25 -30
  25. package/src/components/ChannelView.test.tsx +17 -31
  26. package/src/components/ChannelView.tsx +1 -0
  27. package/src/components/CustomLinkPreviewList/CustomLinkPreviewList.test.tsx +8 -5
  28. package/src/components/CustomLinkPreviewList/index.tsx +4 -1
  29. package/src/components/CustomMessage/StreamAttachmentMessage.test.tsx +26 -21
  30. package/src/components/CustomMessage/StreamAttachmentMessage.tsx +2 -0
  31. package/src/components/CustomMessageInput/CustomMessageInput.test.tsx +43 -56
  32. package/src/components/CustomMessageInput/index.tsx +25 -5
  33. package/src/components/CustomSystemMessage/CustomSystemMessage.test.tsx +17 -23
  34. package/src/components/FaqList/FaqList.test.tsx +5 -4
  35. package/src/components/FaqList/index.tsx +6 -1
  36. package/src/components/LinkAttachment/LinkAttachment.test.tsx +70 -81
  37. package/src/components/LinkAttachment/components/_shared/BubbleTail.test.tsx +1 -0
  38. package/src/components/LinkAttachment/components/_shared/CardBody.test.tsx +20 -61
  39. package/src/components/LinkAttachment/components/_shared/CardBody.tsx +10 -2
  40. package/src/components/LinkAttachment/components/_shared/CardCta.test.tsx +1 -21
  41. package/src/components/LinkAttachment/components/_shared/CardShell.test.tsx +11 -37
  42. package/src/components/LinkAttachment/components/_shared/CardShell.tsx +5 -2
  43. package/src/components/LinkAttachment/components/_shared/CardThumbnail.test.tsx +65 -72
  44. package/src/components/LinkAttachment/components/_shared/CardThumbnail.tsx +13 -2
  45. package/src/components/MessageAttachment/MessageAttachment.test.tsx +25 -8
  46. package/src/components/MessageAttachment/_shared/CompactDocumentRow.test.tsx +5 -19
  47. package/src/components/MessageAttachment/_shared/MediaStackGrid.test.tsx +7 -9
  48. package/src/components/MessageAttachment/_shared/VideoViewer.test.tsx +9 -2
  49. package/src/components/MessageAttachment/_shared/VideoViewer.tsx +1 -0
  50. package/src/components/MessageAttachment/_shared/ViewerShell.test.tsx +2 -2
  51. package/src/components/MessageBubble/MessageBubble.test.tsx +0 -1
  52. package/src/components/RichCard/RichCard.test.tsx +24 -54
  53. package/src/components/RichCard/RichCardBody.tsx +4 -1
  54. package/src/logging/index.test.tsx +1 -0
  55. package/src/providers/MessagingProvider.test.tsx +37 -41
  56. package/dist/AttachmentCard-BqwWgqvi.js.map +0 -1
  57. package/dist/AttachmentCard-DUrgGRsq.cjs +0 -2
  58. package/dist/AttachmentCard-DUrgGRsq.cjs.map +0 -1
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as e, i as t, n, o as r, r as i, s as a } from "./AttachmentCard-BqwWgqvi.js";
1
+ import { a as e, i as t, n, o as r, r as i, s as a } from "./AttachmentCard-DSekwIOA.js";
2
2
  import o, { Suspense as s, createContext as c, useCallback as l, useContext as u, useEffect as d, useId as f, useMemo as p, useRef as m, useState as h } from "react";
3
3
  import { StreamChatService as g } from "@linktr.ee/messaging-core";
4
4
  import { LinkPreviewsManager as _, StreamChat as v } from "stream-chat";
@@ -364,6 +364,7 @@ function gt(e) {
364
364
  //#region src/components/Avatar/index.tsx
365
365
  var _t = ({ id: e, image: t, size: n = 40, className: r, starred: i = !1, shape: a = "squircle", dmAgentEnabled: o = !1 }) => {
366
366
  let s = ht(e), c = gt(e), l = n < 32 ? Math.round(n * .45) : n < 56 ? 14 : n < 120 ? 18 : 36, u = n >= 40 ? 2 : 1, d = a === "circle" ? { borderRadius: "50%" } : { borderRadius: "1rem" }, f = /* @__PURE__ */ U("div", {
367
+ "data-testid": "avatar-inner",
367
368
  className: "h-full w-full overflow-hidden",
368
369
  style: d,
369
370
  children: t ? /* @__PURE__ */ U("img", {
@@ -372,6 +373,7 @@ var _t = ({ id: e, image: t, size: n = 40, className: r, starred: i = !1, shape:
372
373
  className: "h-full w-full object-cover"
373
374
  }) : /* @__PURE__ */ U("div", {
374
375
  "aria-hidden": "true",
376
+ "data-testid": "avatar-fallback",
375
377
  className: J("avatar-fallback flex h-full w-full items-center justify-center font-semibold select-none transition-colors"),
376
378
  style: {
377
379
  fontSize: l,
@@ -381,6 +383,7 @@ var _t = ({ id: e, image: t, size: n = 40, className: r, starred: i = !1, shape:
381
383
  })
382
384
  });
383
385
  return /* @__PURE__ */ W("div", {
386
+ "data-testid": "avatar",
384
387
  className: J("relative flex-shrink-0", r),
385
388
  style: {
386
389
  "--str-chat__avatar-size": `${n}px`,
@@ -391,6 +394,7 @@ var _t = ({ id: e, image: t, size: n = 40, className: r, starred: i = !1, shape:
391
394
  },
392
395
  children: [i && /* @__PURE__ */ U("div", {
393
396
  "aria-hidden": "true",
397
+ "data-testid": "avatar-star",
394
398
  className: "absolute -left-1.5 -top-1.5 z-10 flex size-5 items-center justify-center rounded-full bg-white shadow-[0_0_0_1px_rgba(0,0,0,0.04),0_4px_8px_rgba(0,0,0,0.06)]",
395
399
  children: /* @__PURE__ */ U(We, {
396
400
  className: "size-3 text-yellow-600",
@@ -711,7 +715,7 @@ function Nt(e) {
711
715
  }
712
716
  //#endregion
713
717
  //#region src/components/CustomMessage/LockedAttachment/index.tsx
714
- var Pt = o.lazy(() => import("./Card-C7uLQbYz.js")), Ft = o.lazy(() => import("./Card-f51K6V7Y.js")), It = () => /* @__PURE__ */ U("div", {
718
+ var Pt = o.lazy(() => import("./Card-C7uLQbYz.js")), Ft = o.lazy(() => import("./Card-BhwBkgxI.js")), It = () => /* @__PURE__ */ U("div", {
715
719
  className: "w-[280px] min-h-[200px] animate-pulse rounded-md bg-black/[0.06] 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)]",
716
720
  "aria-hidden": !0
717
721
  }), Lt = (e) => /* @__PURE__ */ U(s, {
@@ -951,9 +955,11 @@ var fn = {
951
955
  children: /* @__PURE__ */ W("div", {
952
956
  className: "flex min-w-0 flex-col gap-[2px]",
953
957
  children: [/* @__PURE__ */ U("div", {
958
+ "data-testid": "card-body-skeleton-bar",
954
959
  className: J("h-5 w-3/4", t),
955
960
  "aria-hidden": !0
956
961
  }), /* @__PURE__ */ U("div", {
962
+ "data-testid": "card-body-skeleton-bar",
957
963
  className: J("h-4 w-1/2", t),
958
964
  "aria-hidden": !0
959
965
  })]
@@ -1006,12 +1012,13 @@ var fn = {
1006
1012
  cta: l
1007
1013
  })]
1008
1014
  });
1009
- }, yn = "Loading link preview", bn = J("relative w-[var(--lt-msg-card-width,290px)] max-w-full select-none overflow-hidden", "rounded-[20px]"), xn = "flex h-[250px] flex-col", Sn = ({ variant: e, children: t, href: n, onClick: r, ariaLabel: i, rootRef: a, topRight: o, bgClassName: s, accentHex: c, fixedHeight: l = !1, busy: u = !1, "data-testid": d }) => {
1015
+ }, yn = "Loading link preview", bn = J("relative w-[var(--lt-msg-card-width,290px)] max-w-full select-none overflow-hidden", "rounded-[20px]"), xn = "flex h-[250px] flex-col", Sn = ({ variant: e, children: t, href: n, onClick: r, ariaLabel: i, rootRef: a, topRight: o, bgClassName: s, accentHex: c, fixedHeight: l = !1, busy: u = !1, "data-testid": d = "link-card" }) => {
1010
1016
  let f = J("messaging-link-card", bn, l ? xn : "block", s ?? (e === "dark" ? "bg-[#1e2330]" : "bg-[#f1f0ee]"), n != null || r != null ? "cursor-pointer no-underline focus-ring" : null), p = u ? {
1011
1017
  role: "status",
1012
1018
  "aria-busy": !0,
1013
1019
  "aria-label": yn
1014
1020
  } : void 0, m = c ? { "--accent": c } : void 0, h = o ? /* @__PURE__ */ U("div", {
1021
+ "data-testid": "card-shell-top-right",
1015
1022
  className: "pointer-events-auto absolute right-3 top-3 z-10",
1016
1023
  children: o
1017
1024
  }) : null;
@@ -1063,6 +1070,7 @@ var fn = {
1063
1070
  className: "p-3",
1064
1071
  children: /* @__PURE__ */ U("audio", {
1065
1072
  ...e,
1073
+ "data-testid": "card-thumbnail-audio",
1066
1074
  src: o,
1067
1075
  controls: !0,
1068
1076
  preload: "metadata",
@@ -1070,12 +1078,15 @@ var fn = {
1070
1078
  children: /* @__PURE__ */ U("track", { kind: "captions" })
1071
1079
  })
1072
1080
  }) : /* @__PURE__ */ W("div", {
1081
+ "data-testid": "card-thumbnail-hero",
1073
1082
  className: J("relative min-h-0 w-full flex-1 overflow-hidden", m && "bg-black"),
1074
1083
  children: [
1075
1084
  d ? /* @__PURE__ */ U("div", {
1085
+ "data-testid": "card-thumbnail-skeleton",
1076
1086
  className: J("h-full w-full animate-pulse", Cn[r]),
1077
1087
  "aria-hidden": !0
1078
1088
  }) : m ? /* @__PURE__ */ W(H, { children: [/* @__PURE__ */ U("video", {
1089
+ "data-testid": "card-thumbnail-video",
1079
1090
  src: o,
1080
1091
  poster: h,
1081
1092
  controls: !0,
@@ -1098,6 +1109,7 @@ var fn = {
1098
1109
  onError: f,
1099
1110
  className: "absolute inset-0 h-full w-full object-cover"
1100
1111
  }) : /* @__PURE__ */ U("div", {
1112
+ "data-testid": "card-thumbnail-placeholder",
1101
1113
  className: J("flex h-full w-full items-center justify-center", Cn[r]),
1102
1114
  children: n(c, {
1103
1115
  className: wn[r],
@@ -1105,10 +1117,12 @@ var fn = {
1105
1117
  })
1106
1118
  }),
1107
1119
  l ? /* @__PURE__ */ U("div", {
1120
+ "data-testid": "card-thumbnail-top-left",
1108
1121
  className: "pointer-events-auto absolute left-3 top-3 z-10",
1109
1122
  children: l
1110
1123
  }) : null,
1111
1124
  u ? /* @__PURE__ */ U("div", {
1125
+ "data-testid": "card-thumbnail-top-right",
1112
1126
  className: "pointer-events-auto absolute right-3 top-3 z-10",
1113
1127
  children: u
1114
1128
  }) : null
@@ -2144,6 +2158,7 @@ var cr = ({ src: e, filename: t, fileSize: n, mimeType: r, title: i, items: a })
2144
2158
  "data-testid": "video-viewer",
2145
2159
  children: [u ? /* @__PURE__ */ U("video", {
2146
2160
  ref: c,
2161
+ "data-testid": "video-viewer-media",
2147
2162
  src: g.src,
2148
2163
  poster: g.poster,
2149
2164
  controls: !0,
@@ -2477,6 +2492,7 @@ var fi = ({ groupPosition: e, isMyMessage: t, message: n, renderText: r }) => {
2477
2492
  children: [/* @__PURE__ */ W("div", {
2478
2493
  className: "str-chat__message-bubble",
2479
2494
  "data-attachment-bubble": "true",
2495
+ "data-testid": "message-attachment-bubble",
2480
2496
  style: {
2481
2497
  background: "transparent",
2482
2498
  borderRadius: 0,
@@ -2485,6 +2501,7 @@ var fi = ({ groupPosition: e, isMyMessage: t, message: n, renderText: r }) => {
2485
2501
  },
2486
2502
  children: [d, !l && /* @__PURE__ */ U(M, {})]
2487
2503
  }), l ? /* @__PURE__ */ W("div", {
2504
+ "data-testid": "message-caption-bubble",
2488
2505
  className: J("str-chat__message-bubble", { "relative isolate": p }),
2489
2506
  children: [
2490
2507
  /* @__PURE__ */ U(R, {
@@ -2729,6 +2746,7 @@ var fi = ({ groupPosition: e, isMyMessage: t, message: n, renderText: r }) => {
2729
2746
  e.dismissPreview(t);
2730
2747
  };
2731
2748
  return t.length > 0 ? /* @__PURE__ */ U("div", {
2749
+ "data-testid": "link-preview-list",
2732
2750
  className: "messaging-link-preview-list flex flex-col items-stretch w-full gap-2",
2733
2751
  children: t.map((e) => {
2734
2752
  let t = _.previewIsLoading(e);
@@ -2771,9 +2789,11 @@ var fi = ({ groupPosition: e, isMyMessage: t, message: n, renderText: r }) => {
2771
2789
  return e.addEventListener("paste", t), () => e.removeEventListener("paste", t);
2772
2790
  }, []), /* @__PURE__ */ W("div", {
2773
2791
  ref: s,
2792
+ "data-testid": "composer-card",
2774
2793
  className: "central-container flex flex-col min-w-0 w-full max-h-[calc(var(--messaging-surface-height,100dvh)*0.5)] overflow-y-auto overscroll-contain bg-white rounded-[1.5rem] shadow-[0_4px_16px_0_rgba(0,0,0,0.08),0_1px_2px_0_rgba(0,0,0,0.04),0_0_0_1px_rgba(0,0,0,0.04)] [&>:not(.messaging-composer-previews):not(.messaging-composer-row)]:p-2",
2775
2794
  "data-dd-privacy": "mask",
2776
2795
  children: [/* @__PURE__ */ W("div", {
2796
+ "data-testid": "composer-previews",
2777
2797
  className: "messaging-composer-previews empty:hidden flex flex-col gap-2 px-2 pt-2",
2778
2798
  children: [
2779
2799
  /* @__PURE__ */ U(te, {}),
@@ -2781,6 +2801,7 @@ var fi = ({ groupPosition: e, isMyMessage: t, message: n, renderText: r }) => {
2781
2801
  /* @__PURE__ */ U(a, {})
2782
2802
  ]
2783
2803
  }), /* @__PURE__ */ W("div", {
2804
+ "data-testid": "composer-row",
2784
2805
  className: "messaging-composer-row flex items-start",
2785
2806
  children: [/* @__PURE__ */ U(ie, {
2786
2807
  "aria-disabled": e || void 0,
@@ -2792,6 +2813,7 @@ var fi = ({ groupPosition: e, isMyMessage: t, message: n, renderText: r }) => {
2792
2813
  readOnly: e,
2793
2814
  tabIndex: e ? -1 : void 0
2794
2815
  }), /* @__PURE__ */ U("div", {
2816
+ "data-testid": "send-button-wrapper",
2795
2817
  className: "sticky bottom-2 mt-auto mb-2 mr-2 shrink-0 pt-2",
2796
2818
  children: /* @__PURE__ */ U(i, {
2797
2819
  sendMessage: t,
@@ -2834,12 +2856,14 @@ var fi = ({ groupPosition: e, isMyMessage: t, message: n, renderText: r }) => {
2834
2856
  };
2835
2857
  }, [l]), r ? l ? /* @__PURE__ */ W("div", {
2836
2858
  ref: u,
2859
+ "data-testid": "composer-chrome",
2837
2860
  className: "messaging-composer-chrome messaging-composer-chrome--floating",
2838
2861
  children: [/* @__PURE__ */ U(Ti, {}), /* @__PURE__ */ W("div", {
2839
2862
  className: "relative z-10 flex flex-col",
2840
2863
  children: [
2841
2864
  t?.(),
2842
2865
  /* @__PURE__ */ U("div", {
2866
+ "data-testid": "composer-locked-panel",
2843
2867
  className: "messaging-composer-locked-panel flex w-full flex-col items-center justify-center gap-3 px-6 py-4",
2844
2868
  children: i ? /* @__PURE__ */ U("p", {
2845
2869
  className: "max-w-[345px] text-center text-xs font-normal leading-[1.3] tracking-[0.12px] text-black/40",
@@ -2852,6 +2876,7 @@ var fi = ({ groupPosition: e, isMyMessage: t, message: n, renderText: r }) => {
2852
2876
  }) : /* @__PURE__ */ W(H, { children: [
2853
2877
  t?.(),
2854
2878
  /* @__PURE__ */ U("div", {
2879
+ "data-testid": "composer-locked-panel",
2855
2880
  className: "messaging-composer-locked-panel flex w-full flex-col items-center justify-center gap-3 px-6 py-4",
2856
2881
  children: i ? /* @__PURE__ */ U("p", {
2857
2882
  className: "max-w-[345px] text-center text-xs font-normal leading-[1.3] tracking-[0.12px] text-black/40",
@@ -2861,6 +2886,7 @@ var fi = ({ groupPosition: e, isMyMessage: t, message: n, renderText: r }) => {
2861
2886
  n?.()
2862
2887
  ] }) : l ? /* @__PURE__ */ W("div", {
2863
2888
  ref: u,
2889
+ "data-testid": "composer-chrome",
2864
2890
  className: "messaging-composer-chrome messaging-composer-chrome--floating",
2865
2891
  children: [/* @__PURE__ */ U(Ti, {}), /* @__PURE__ */ W("div", {
2866
2892
  className: "relative z-10 flex min-h-0 flex-col",
@@ -2869,6 +2895,7 @@ var fi = ({ groupPosition: e, isMyMessage: t, message: n, renderText: r }) => {
2869
2895
  children: [/* @__PURE__ */ W("div", {
2870
2896
  inert: c ? "" : void 0,
2871
2897
  "aria-disabled": c || void 0,
2898
+ "data-testid": "message-input",
2872
2899
  className: "message-input flex min-h-0 items-end gap-4 aria-disabled:opacity-40",
2873
2900
  children: [e && /* @__PURE__ */ U("div", {
2874
2901
  className: "flex h-12 shrink-0 items-center justify-center",
@@ -2887,6 +2914,7 @@ var fi = ({ groupPosition: e, isMyMessage: t, message: n, renderText: r }) => {
2887
2914
  /* @__PURE__ */ W("div", {
2888
2915
  inert: c ? "" : void 0,
2889
2916
  "aria-disabled": c || void 0,
2917
+ "data-testid": "message-input",
2890
2918
  className: "message-input flex min-h-0 items-end gap-4 aria-disabled:opacity-40",
2891
2919
  children: [e && /* @__PURE__ */ U("div", {
2892
2920
  className: "flex h-12 shrink-0 items-center justify-center",
@@ -3290,6 +3318,7 @@ var Ki = ({ onBack: e, showBackButton: t, renderMessageInputActions: n, renderMe
3290
3318
  let te = we(e.type) ? { "--lt-msg-card-width": "368px" } : void 0;
3291
3319
  return /* @__PURE__ */ U("div", {
3292
3320
  ref: ee,
3321
+ "data-testid": "channel-view",
3293
3322
  className: J("messaging-channel-view h-full flex flex-col", c),
3294
3323
  style: te,
3295
3324
  children: /* @__PURE__ */ U(Li.Provider, {
@@ -3573,6 +3602,7 @@ var Zi = o.createContext({
3573
3602
  children: "Starred conversation. "
3574
3603
  }), h]
3575
3604
  }), y && /* @__PURE__ */ U("span", {
3605
+ "data-testid": "channel-preview-timestamp",
3576
3606
  className: "text-xs text-[#717070] flex-shrink-0",
3577
3607
  children: y
3578
3608
  })]
@@ -3582,6 +3612,7 @@ var Zi = o.createContext({
3582
3612
  className: "text-sm text-[#717070] flex-1 line-clamp-1",
3583
3613
  children: x
3584
3614
  }), S > 0 && /* @__PURE__ */ U("span", {
3615
+ "data-testid": "channel-preview-unread-badge",
3585
3616
  className: "bg-[#7f22fe] text-white text-[10px] rounded-full h-4 flex items-center justify-center p-1 min-w-4 text-center flex-shrink-0",
3586
3617
  children: S > 99 ? "99+" : S
3587
3618
  })]
@@ -3694,6 +3725,7 @@ var aa = "line-clamp-2 text-[14px] font-medium leading-5 tracking-[0.02em]", oa
3694
3725
  return /* @__PURE__ */ U("div", {
3695
3726
  className: "shrink-0 px-4 py-3",
3696
3727
  children: f ? /* @__PURE__ */ W("div", {
3728
+ "data-testid": "rich-card-chin-row",
3697
3729
  className: "flex items-center justify-between gap-3",
3698
3730
  children: [p, /* @__PURE__ */ U(la, {
3699
3731
  surface: e,
@@ -3911,6 +3943,7 @@ var aa = "line-clamp-2 text-[14px] font-medium leading-5 tracking-[0.02em]", oa
3911
3943
  className: "flex-1 flex flex-col gap-3 rounded-lg p-4",
3912
3944
  style: { backgroundColor: "#F1F0EE" },
3913
3945
  children: [r && /* @__PURE__ */ U("p", {
3946
+ "data-testid": "faq-list-header",
3914
3947
  className: "text-md text-charcoal mb-4",
3915
3948
  children: r
3916
3949
  }), s.map((e) => /* @__PURE__ */ U(Da, {