@realtimexsco/live-chat 1.4.2 → 1.4.3

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.mjs CHANGED
@@ -9,7 +9,7 @@ import { clsx } from 'clsx';
9
9
  import { twMerge } from 'tailwind-merge';
10
10
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
11
11
  import { flushSync } from 'react-dom';
12
- import { Sun, Moon, Search, X, Loader2, UserPlus, ChevronDown, ArrowLeft, Users, WifiOff, Wifi, Sparkles, MessageSquareText, ChevronRight, Pin, Star, Phone, Video, MoreVertical, Info, UserKey, ShieldUser, Paperclip, Clock, MessageSquareX, Trash2, LogOut, Ban, CheckCheck, Check, Camera, Save, Pencil, Mail, CornerUpLeft, CheckSquare, Smile, ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon, MessageCircleMore, History, Shield, Send, AlertCircle, ShieldCheck, UserMinus, MessageCircle, ExternalLink, Download, ChevronLeft, ZoomOut, ZoomIn, RotateCcw, Music, ArrowRight, MoreHorizontal, PinOff, StarOff, XIcon, ImageIcon, Film, Play, Pause, FileText, FileSpreadsheet, FileIcon, Eye, Captions } from 'lucide-react';
12
+ import { Sun, Moon, Search, X, Loader2, UserPlus, ChevronDown, ArrowLeft, Users, WifiOff, Wifi, Sparkles, MessageSquareText, ChevronRight, Pin, Star, MoreVertical, Info, UserKey, ShieldUser, Paperclip, Clock, MessageSquareX, Trash2, LogOut, Ban, CheckCheck, Check, Camera, Save, Pencil, Mail, CornerUpLeft, CheckSquare, Smile, ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon, MessageCircleMore, History, Shield, Send, AlertCircle, ShieldCheck, UserMinus, MessageCircle, Phone, Video, ExternalLink, Download, ChevronLeft, ZoomOut, ZoomIn, RotateCcw, Music, ArrowRight, MoreHorizontal, PinOff, StarOff, XIcon, ImageIcon, Film, Play, Pause, FileText, FileSpreadsheet, FileIcon, Eye, Captions } from 'lucide-react';
13
13
  import { cva } from 'class-variance-authority';
14
14
  import EmojiPicker, { Theme } from 'emoji-picker-react';
15
15
  import { getDefaultClassNames, DayPicker } from 'react-day-picker';
@@ -7620,6 +7620,76 @@ var HeaderSearchPopover = ({
7620
7620
  ] });
7621
7621
  };
7622
7622
  var HeaderSearchPopover_default = HeaderSearchPopover;
7623
+ var actionBtnClass = "size-8 rounded-lg text-(--chat-muted) transition-colors hover:bg-(--chat-surface) hover:text-(--chat-text)";
7624
+ var DefaultHeaderCallActions = ({
7625
+ activeChannel,
7626
+ conversationId,
7627
+ showPhoneCall = true,
7628
+ showVideoCall = true,
7629
+ onPhoneCall,
7630
+ onVideoCall,
7631
+ className
7632
+ }) => {
7633
+ const { components, slotClassName, features } = useChatCustomizationOptional();
7634
+ const PhoneSlot = components.PhoneCallButton;
7635
+ const VideoSlot = components.VideoCallButton;
7636
+ const hideInGroups = features.hideCallActionsInGroupChats ?? false;
7637
+ if (hideInGroups && activeChannel.isGroup) return null;
7638
+ if (!showPhoneCall && !showVideoCall) return null;
7639
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
7640
+ showPhoneCall && (PhoneSlot ? /* @__PURE__ */ jsx(
7641
+ PhoneSlot,
7642
+ {
7643
+ activeChannel,
7644
+ conversationId,
7645
+ onPhoneCall,
7646
+ className: cn(className, slotClassName("phoneCallButton"))
7647
+ }
7648
+ ) : /* @__PURE__ */ jsx(
7649
+ Button,
7650
+ {
7651
+ variant: "ghost",
7652
+ size: "icon",
7653
+ className: cn(actionBtnClass, className, slotClassName("phoneCallButton")),
7654
+ "aria-label": "Voice call",
7655
+ onClick: onPhoneCall,
7656
+ children: /* @__PURE__ */ jsx(Phone, { size: 15 })
7657
+ }
7658
+ )),
7659
+ showVideoCall && (VideoSlot ? /* @__PURE__ */ jsx(
7660
+ VideoSlot,
7661
+ {
7662
+ activeChannel,
7663
+ conversationId,
7664
+ onVideoCall,
7665
+ className: cn(className, slotClassName("videoCallButton"))
7666
+ }
7667
+ ) : /* @__PURE__ */ jsx(
7668
+ Button,
7669
+ {
7670
+ variant: "ghost",
7671
+ size: "icon",
7672
+ className: cn(actionBtnClass, className, slotClassName("videoCallButton")),
7673
+ "aria-label": "Video call",
7674
+ onClick: onVideoCall,
7675
+ children: /* @__PURE__ */ jsx(Video, { size: 15 })
7676
+ }
7677
+ ))
7678
+ ] });
7679
+ };
7680
+ var HeaderCallActions = (props) => {
7681
+ const { components, slotClassName, features } = useChatCustomizationOptional();
7682
+ const Custom = components.HeaderCallActions;
7683
+ if (!Custom) {
7684
+ const hideInGroups = features.hideCallActionsInGroupChats ?? false;
7685
+ const showPhoneCall = props.showPhoneCall ?? true;
7686
+ const showVideoCall = props.showVideoCall ?? true;
7687
+ if (hideInGroups && props.activeChannel.isGroup) return null;
7688
+ if (!showPhoneCall && !showVideoCall) return null;
7689
+ }
7690
+ return /* @__PURE__ */ jsx("div", { className: cn("flex items-center gap-0.5", slotClassName("headerCallActions")), children: Custom ? /* @__PURE__ */ jsx(Custom, { ...props }) : /* @__PURE__ */ jsx(DefaultHeaderCallActions, { ...props }) });
7691
+ };
7692
+ var HeaderCallActions_default = HeaderCallActions;
7623
7693
  function OptionsMenuItem({
7624
7694
  icon: Icon,
7625
7695
  label,
@@ -7640,6 +7710,7 @@ function OptionsMenuItem({
7640
7710
  }
7641
7711
  var HeaderRightSide = ({
7642
7712
  activeChannel,
7713
+ conversationId,
7643
7714
  isAdmin,
7644
7715
  canViewMembers,
7645
7716
  pinnedCount,
@@ -7669,6 +7740,15 @@ var HeaderRightSide = ({
7669
7740
  }) => {
7670
7741
  const { scopeClassName, themeStyles, showColorModeToggle } = useChatTheme();
7671
7742
  const { showDateTimeSettings } = useChatLocale();
7743
+ const features = useChatFeaturesOptional();
7744
+ const showPhoneCall = features.showPhoneCall ?? defaultChatFeatures.showPhoneCall;
7745
+ const showVideoCall = features.showVideoCall ?? defaultChatFeatures.showVideoCall;
7746
+ const handlePhoneCall = () => {
7747
+ features.onPhoneCall?.({ activeChannel, conversationId });
7748
+ };
7749
+ const handleVideoCall = () => {
7750
+ features.onVideoCall?.({ activeChannel, conversationId });
7751
+ };
7672
7752
  const headerItemGapClass = "gap-0.5";
7673
7753
  const headerIconBtnClass = "inline-flex size-6 shrink-0 items-center justify-center rounded-lg p-0 text-(--chat-muted) transition-colors hover:bg-(--chat-hover) hover:text-(--chat-text) has-[>svg]:p-0";
7674
7754
  const headerCountBtnClass = "inline-flex h-7 shrink-0 items-center justify-center gap-0.5 rounded-lg px-1.5 text-(--chat-muted) transition-colors hover:bg-(--chat-hover) hover:text-(--chat-text)";
@@ -7726,26 +7806,18 @@ var HeaderRightSide = ({
7726
7806
  triggerClassName: headerIconBtnClass
7727
7807
  }
7728
7808
  ),
7729
- /* @__PURE__ */ jsx(
7730
- Button,
7809
+ /* @__PURE__ */ jsx("div", { className: "hidden sm:contents", children: /* @__PURE__ */ jsx(
7810
+ HeaderCallActions_default,
7731
7811
  {
7732
- variant: "ghost",
7733
- size: "icon-xs",
7734
- className: cn(headerIconBtnClass, "hidden sm:inline-flex"),
7735
- "aria-label": "Voice call",
7736
- children: /* @__PURE__ */ jsx(Phone, { size: 15 })
7737
- }
7738
- ),
7739
- /* @__PURE__ */ jsx(
7740
- Button,
7741
- {
7742
- variant: "ghost",
7743
- size: "icon-xs",
7744
- className: cn(headerIconBtnClass, "hidden sm:inline-flex"),
7745
- "aria-label": "Video call",
7746
- children: /* @__PURE__ */ jsx(Video, { size: 15 })
7812
+ activeChannel,
7813
+ conversationId,
7814
+ showPhoneCall,
7815
+ showVideoCall,
7816
+ onPhoneCall: handlePhoneCall,
7817
+ onVideoCall: handleVideoCall,
7818
+ className: headerIconBtnClass
7747
7819
  }
7748
- ),
7820
+ ) }),
7749
7821
  /* @__PURE__ */ jsx("span", { className: headerDividerClass, "aria-hidden": true }),
7750
7822
  /* @__PURE__ */ jsxs(DropdownMenu, { children: [
7751
7823
  /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon-xs", className: headerIconBtnClass, "aria-label": "More options", children: /* @__PURE__ */ jsx(MoreVertical, { size: 15 }) }) }),
@@ -12883,6 +12955,7 @@ var ChannelHeaderView = (props) => {
12883
12955
  HeaderRightSideSlot,
12884
12956
  {
12885
12957
  activeChannel,
12958
+ conversationId,
12886
12959
  isAdmin,
12887
12960
  canViewMembers,
12888
12961
  pinnedCount,
@@ -17644,76 +17717,6 @@ var ChannelListItem2 = (props) => {
17644
17717
  return /* @__PURE__ */ jsx(ItemSlot, { ...props });
17645
17718
  };
17646
17719
  var ChannelListItem_default = ChannelListItem2;
17647
- var actionBtnClass = "size-8 rounded-lg text-(--chat-muted) transition-colors hover:bg-(--chat-surface) hover:text-(--chat-text)";
17648
- var DefaultHeaderCallActions = ({
17649
- activeChannel,
17650
- conversationId,
17651
- showPhoneCall = true,
17652
- showVideoCall = true,
17653
- onPhoneCall,
17654
- onVideoCall,
17655
- className
17656
- }) => {
17657
- const { components, slotClassName, features } = useChatCustomizationOptional();
17658
- const PhoneSlot = components.PhoneCallButton;
17659
- const VideoSlot = components.VideoCallButton;
17660
- const hideInGroups = features.hideCallActionsInGroupChats ?? false;
17661
- if (hideInGroups && activeChannel.isGroup) return null;
17662
- if (!showPhoneCall && !showVideoCall) return null;
17663
- return /* @__PURE__ */ jsxs(Fragment, { children: [
17664
- showPhoneCall && (PhoneSlot ? /* @__PURE__ */ jsx(
17665
- PhoneSlot,
17666
- {
17667
- activeChannel,
17668
- conversationId,
17669
- onPhoneCall,
17670
- className: cn(className, slotClassName("phoneCallButton"))
17671
- }
17672
- ) : /* @__PURE__ */ jsx(
17673
- Button,
17674
- {
17675
- variant: "ghost",
17676
- size: "icon",
17677
- className: cn(actionBtnClass, className, slotClassName("phoneCallButton")),
17678
- "aria-label": "Voice call",
17679
- onClick: onPhoneCall,
17680
- children: /* @__PURE__ */ jsx(Phone, { size: 15 })
17681
- }
17682
- )),
17683
- showVideoCall && (VideoSlot ? /* @__PURE__ */ jsx(
17684
- VideoSlot,
17685
- {
17686
- activeChannel,
17687
- conversationId,
17688
- onVideoCall,
17689
- className: cn(className, slotClassName("videoCallButton"))
17690
- }
17691
- ) : /* @__PURE__ */ jsx(
17692
- Button,
17693
- {
17694
- variant: "ghost",
17695
- size: "icon",
17696
- className: cn(actionBtnClass, className, slotClassName("videoCallButton")),
17697
- "aria-label": "Video call",
17698
- onClick: onVideoCall,
17699
- children: /* @__PURE__ */ jsx(Video, { size: 15 })
17700
- }
17701
- ))
17702
- ] });
17703
- };
17704
- var HeaderCallActions = (props) => {
17705
- const { components, slotClassName, features } = useChatCustomizationOptional();
17706
- const Custom = components.HeaderCallActions;
17707
- if (!Custom) {
17708
- const hideInGroups = features.hideCallActionsInGroupChats ?? false;
17709
- const showPhoneCall = props.showPhoneCall ?? true;
17710
- const showVideoCall = props.showVideoCall ?? true;
17711
- if (hideInGroups && props.activeChannel.isGroup) return null;
17712
- if (!showPhoneCall && !showVideoCall) return null;
17713
- }
17714
- return /* @__PURE__ */ jsx("div", { className: slotClassName("headerCallActions"), children: Custom ? /* @__PURE__ */ jsx(Custom, { ...props }) : /* @__PURE__ */ jsx(DefaultHeaderCallActions, { ...props }) });
17715
- };
17716
- var HeaderCallActions_default = HeaderCallActions;
17717
17720
 
17718
17721
  // src/chat/packageDefaultComponents.ts
17719
17722
  var packageDefaultComponents = {