@trii/components 2.0.13 → 2.0.15

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/cjs/index.js CHANGED
@@ -7071,7 +7071,7 @@ var require$$1 = /*@__PURE__*/getAugmentedNamespace(formatMuiErrorMessage);
7071
7071
 
7072
7072
  var require$$2 = /*@__PURE__*/getAugmentedNamespace(clamp);
7073
7073
 
7074
- var _interopRequireDefault$2 = interopRequireDefaultExports;
7074
+ var _interopRequireDefault$3 = interopRequireDefaultExports;
7075
7075
  Object.defineProperty(colorManipulator, "__esModule", {
7076
7076
  value: true
7077
7077
  });
@@ -7093,8 +7093,8 @@ colorManipulator.private_safeEmphasize = private_safeEmphasize;
7093
7093
  colorManipulator.private_safeLighten = private_safeLighten;
7094
7094
  colorManipulator.recomposeColor = recomposeColor;
7095
7095
  colorManipulator.rgbToHex = rgbToHex;
7096
- var _formatMuiErrorMessage2 = _interopRequireDefault$2(require$$1);
7097
- var _clamp = _interopRequireDefault$2(require$$2);
7096
+ var _formatMuiErrorMessage2 = _interopRequireDefault$3(require$$1);
7097
+ var _clamp = _interopRequireDefault$3(require$$2);
7098
7098
  /* eslint-disable @typescript-eslint/naming-convention */
7099
7099
 
7100
7100
  /**
@@ -8216,21 +8216,21 @@ var require$$7 = /*@__PURE__*/getAugmentedNamespace(createTheme$1);
8216
8216
 
8217
8217
  var require$$8 = /*@__PURE__*/getAugmentedNamespace(styleFunctionSx);
8218
8218
 
8219
- var _interopRequireDefault$1 = interopRequireDefaultExports;
8219
+ var _interopRequireDefault$2 = interopRequireDefaultExports;
8220
8220
  Object.defineProperty(createStyled$1, "__esModule", {
8221
8221
  value: true
8222
8222
  });
8223
8223
  var _default = createStyled$1.default = createStyled;
8224
8224
  createStyled$1.shouldForwardProp = shouldForwardProp;
8225
8225
  createStyled$1.systemDefaultTheme = void 0;
8226
- var _extends2 = _interopRequireDefault$1(require_extends());
8227
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault$1(requireObjectWithoutPropertiesLoose());
8226
+ var _extends2 = _interopRequireDefault$2(require_extends());
8227
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault$2(requireObjectWithoutPropertiesLoose());
8228
8228
  var _styledEngine = _interopRequireWildcard(require$$3);
8229
8229
  var _deepmerge = require$$4;
8230
- var _capitalize = _interopRequireDefault$1(require$$5);
8231
- var _getDisplayName = _interopRequireDefault$1(require$$6);
8232
- var _createTheme = _interopRequireDefault$1(require$$7);
8233
- var _styleFunctionSx = _interopRequireDefault$1(require$$8);
8230
+ var _capitalize = _interopRequireDefault$2(require$$5);
8231
+ var _getDisplayName = _interopRequireDefault$2(require$$6);
8232
+ var _createTheme = _interopRequireDefault$2(require$$7);
8233
+ var _styleFunctionSx = _interopRequireDefault$2(require$$8);
8234
8234
  const _excluded$1 = ["ownerState"],
8235
8235
  _excluded2 = ["variants"],
8236
8236
  _excluded3 = ["name", "slot", "skipVariantsResolver", "skipSx", "overridesResolver"];
@@ -8729,10 +8729,6 @@ var Instagram = createSvgIcon$1( /*#__PURE__*/jsxRuntimeExports.jsx("path", {
8729
8729
  d: "M7.8 2h8.4C19.4 2 22 4.6 22 7.8v8.4a5.8 5.8 0 0 1-5.8 5.8H7.8C4.6 22 2 19.4 2 16.2V7.8A5.8 5.8 0 0 1 7.8 2m-.2 2A3.6 3.6 0 0 0 4 7.6v8.8C4 18.39 5.61 20 7.6 20h8.8a3.6 3.6 0 0 0 3.6-3.6V7.6C20 5.61 18.39 4 16.4 4H7.6m9.65 1.5a1.25 1.25 0 0 1 1.25 1.25A1.25 1.25 0 0 1 17.25 8 1.25 1.25 0 0 1 16 6.75a1.25 1.25 0 0 1 1.25-1.25M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3z"
8730
8730
  }), 'Instagram');
8731
8731
 
8732
- var OpenInNew = createSvgIcon$1( /*#__PURE__*/jsxRuntimeExports.jsx("path", {
8733
- d: "M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3z"
8734
- }), 'OpenInNew');
8735
-
8736
8732
  var PhoneEnabled = createSvgIcon$1( /*#__PURE__*/jsxRuntimeExports.jsx("path", {
8737
8733
  d: "m17.38 10.79-2.2-2.2c-.28-.28-.36-.67-.25-1.02.37-1.12.57-2.32.57-3.57 0-.55.45-1 1-1H20c.55 0 1 .45 1 1 0 9.39-7.61 17-17 17-.55 0-1-.45-1-1v-3.49c0-.55.45-1 1-1 1.24 0 2.45-.2 3.57-.57.35-.12.75-.03 1.02.24l2.2 2.2c2.83-1.45 5.15-3.76 6.59-6.59"
8738
8734
  }), 'PhoneEnabled');
@@ -8745,7 +8741,7 @@ var WhatsApp = createSvgIcon$1( /*#__PURE__*/jsxRuntimeExports.jsx("path", {
8745
8741
  d: "M16.75 13.96c.25.13.41.2.46.3.06.11.04.61-.21 1.18-.2.56-1.24 1.1-1.7 1.12-.46.02-.47.36-2.96-.73-2.49-1.09-3.99-3.75-4.11-3.92-.12-.17-.96-1.38-.92-2.61.05-1.22.69-1.8.95-2.04.24-.26.51-.29.68-.26h.47c.15 0 .36-.06.55.45l.69 1.87c.06.13.1.28.01.44l-.27.41-.39.42c-.12.12-.26.25-.12.5.12.26.62 1.09 1.32 1.78.91.88 1.71 1.17 1.95 1.3.24.14.39.12.54-.04l.81-.94c.19-.25.35-.19.58-.11l1.67.88M12 2a10 10 0 0 1 10 10 10 10 0 0 1-10 10c-1.97 0-3.8-.57-5.35-1.55L2 22l1.55-4.65A9.969 9.969 0 0 1 2 12 10 10 0 0 1 12 2m0 2a8 8 0 0 0-8 8c0 1.72.54 3.31 1.46 4.61L4.5 19.5l2.89-.96A7.95 7.95 0 0 0 12 20a8 8 0 0 0 8-8 8 8 0 0 0-8-8z"
8746
8742
  }), 'WhatsApp');
8747
8743
 
8748
- var Message = {};
8744
+ var ArrowForward = {};
8749
8745
 
8750
8746
  var createSvgIcon = {};
8751
8747
 
@@ -8773,6 +8769,19 @@ function requireCreateSvgIcon () {
8773
8769
  return createSvgIcon;
8774
8770
  }
8775
8771
 
8772
+ var _interopRequireDefault$1 = interopRequireDefaultExports;
8773
+ Object.defineProperty(ArrowForward, "__esModule", {
8774
+ value: true
8775
+ });
8776
+ var default_1$1 = ArrowForward.default = void 0;
8777
+ var _createSvgIcon$1 = _interopRequireDefault$1(requireCreateSvgIcon());
8778
+ var _jsxRuntime$1 = jsxRuntimeExports;
8779
+ default_1$1 = ArrowForward.default = (0, _createSvgIcon$1.default)( /*#__PURE__*/(0, _jsxRuntime$1.jsx)("path", {
8780
+ d: "m12 4-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"
8781
+ }), 'ArrowForward');
8782
+
8783
+ var Message = {};
8784
+
8776
8785
  var _interopRequireDefault = interopRequireDefaultExports;
8777
8786
  Object.defineProperty(Message, "__esModule", {
8778
8787
  value: true
@@ -8803,6 +8812,7 @@ const HeaderContainer = material.styled(material.Box)({
8803
8812
  flexDirection: 'column',
8804
8813
  alignItems: 'center',
8805
8814
  marginBottom: '16px',
8815
+ position: 'relative',
8806
8816
  });
8807
8817
  const ContactAvatar = material.styled(material.Avatar)({
8808
8818
  width: 60,
@@ -8816,21 +8826,39 @@ const ContactName = material.styled(material.Typography)({
8816
8826
  maxWidth: 200,
8817
8827
  textAlign: 'center',
8818
8828
  });
8819
- const Header = ({ imgUrl, name, contactId, navigate }) => {
8820
- const handleOpenInNewTab = (event) => {
8821
- event.preventDefault();
8822
- event.stopPropagation();
8823
- const url = `/a/contacts/contacts/${contactId}`;
8824
- window.open(url, '_blank');
8825
- };
8826
- const handleNavigateToConversations = (event) => {
8827
- event.preventDefault();
8828
- event.stopPropagation();
8829
- const url = `/a/conversations/conversations`;
8830
- // Navigate in the same tab
8831
- navigate(url);
8832
- };
8833
- return (jsxRuntimeExports.jsxs(HeaderContainer, { children: [jsxRuntimeExports.jsxs(ButtonsContainer, { children: [jsxRuntimeExports.jsx(SmallIconButton, { color: "info", size: "small", onClick: handleOpenInNewTab, children: jsxRuntimeExports.jsx(OpenInNew, { fontSize: "small" }) }), jsxRuntimeExports.jsx(SmallIconButton, { color: "info", size: "small", onClick: handleNavigateToConversations, children: jsxRuntimeExports.jsx(default_1, { fontSize: "small" }) })] }), jsxRuntimeExports.jsx(ContactAvatar, { src: imgUrl, alt: "Contact Avatar" }), jsxRuntimeExports.jsx(ContactName, { variant: "h6", children: name })] }));
8829
+ const LoadingContainer = material.styled(material.Box)({
8830
+ display: 'flex',
8831
+ justifyContent: 'center',
8832
+ alignItems: 'center',
8833
+ width: 60,
8834
+ height: 60,
8835
+ marginBottom: 8,
8836
+ });
8837
+ const Header = ({ imgUrl, name, contactId, navigate, isLoading = false, onError, }) => {
8838
+ const handleNavigation = React.useCallback((url) => (event) => {
8839
+ try {
8840
+ event.preventDefault();
8841
+ event.stopPropagation();
8842
+ if (!url) {
8843
+ throw new Error('Navigation URL is required');
8844
+ }
8845
+ const isNewTab = event.ctrlKey || event.metaKey || event.button === 1; // Ctrl+Click, Cmd+Click, Middle Mouse
8846
+ if (isNewTab) {
8847
+ window.open(url, '_blank', 'noopener,noreferrer');
8848
+ }
8849
+ else {
8850
+ navigate(url);
8851
+ }
8852
+ }
8853
+ catch (error) {
8854
+ onError?.(error instanceof Error ? error : new Error('Navigation failed'));
8855
+ }
8856
+ }, [navigate, onError]);
8857
+ const handleNavigateToContacts = handleNavigation(`/a/contacts/contacts/${contactId}`);
8858
+ const handleNavigateToConversations = handleNavigation('/a/conversations/conversations');
8859
+ const displayName = name || 'Unknown Contact';
8860
+ const avatarAlt = `Avatar for ${displayName}`;
8861
+ return (jsxRuntimeExports.jsxs(HeaderContainer, { children: [jsxRuntimeExports.jsxs(ButtonsContainer, { children: [jsxRuntimeExports.jsx(SmallIconButton, { color: "info", size: "small", onClick: handleNavigateToContacts, disabled: !contactId, "aria-label": "View contact details", children: jsxRuntimeExports.jsx(default_1$1, { fontSize: "small" }) }), jsxRuntimeExports.jsx(SmallIconButton, { color: "info", size: "small", onClick: handleNavigateToConversations, "aria-label": "Go to conversations", children: jsxRuntimeExports.jsx(default_1, { fontSize: "small" }) })] }), isLoading ? (jsxRuntimeExports.jsx(LoadingContainer, { children: jsxRuntimeExports.jsx(material.CircularProgress, { size: 24 }) })) : (jsxRuntimeExports.jsx(ContactAvatar, { src: imgUrl, alt: avatarAlt, onError: () => onError?.(new Error('Failed to load avatar')) })), jsxRuntimeExports.jsx(ContactName, { variant: "h6", title: displayName, children: displayName })] }));
8834
8862
  };
8835
8863
 
8836
8864
  const Container$1 = material.styled(material.Box)({
@@ -14759,7 +14787,9 @@ const LabelsSection = ({ contactData, title }) => {
14759
14787
  return null;
14760
14788
  if (!contactData.tags?.length)
14761
14789
  return null;
14762
- return (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(SectionTitle$2, { gutterBottom: true, mt: 2, variant: "subtitle1", children: title }), jsxRuntimeExports.jsx(TagContainer, { children: contactData?.tags?.map((tag) => (jsxRuntimeExports.jsx(StyledChip, { label: tag.name, color: "primary", size: "small" }, tag.id))) })] }));
14790
+ return (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(SectionTitle$2, { gutterBottom: true, mt: 2, variant: "subtitle1", children: title }), jsxRuntimeExports.jsx(TagContainer, { children: contactData?.tags
14791
+ ?.filter((tag) => tag.name?.trim())
14792
+ .map((tag) => (jsxRuntimeExports.jsx(StyledChip, { label: tag.name, color: "primary", size: "small" }, tag.id))) })] }));
14763
14793
  };
14764
14794
 
14765
14795
  /**
@@ -14917,7 +14947,7 @@ const ContactInfoPopup = ({ open, anchorEl, onClose, contactData, avatarImgUrl,
14917
14947
  window.removeEventListener('keydown', handleKeyDown);
14918
14948
  };
14919
14949
  }, [open, onClose]);
14920
- return (jsxRuntimeExports.jsx(material.Popper, { sx: { zIndex: 1300 }, open: open, anchorEl: anchorEl, placement: "bottom-start", "data-popper-child": "true", children: jsxRuntimeExports.jsx(material.ClickAwayListener, { onClickAway: onClose, children: jsxRuntimeExports.jsx(PopupContainer, { children: jsxRuntimeExports.jsxs(material.CardContent, { children: [jsxRuntimeExports.jsx(Header, { navigate: navigate, contactId: contactData?.id, imgUrl: avatarImgUrl, name: contactData?.name }), jsxRuntimeExports.jsx(LabelsSection, { contactData: contactData, title: t('labels') }), dataIsContact && (jsxRuntimeExports.jsx(BusinessSection, { contactData: contactData, title: t('business') })), dataIsBusiness && (jsxRuntimeExports.jsx(MembersSection, { contactData: contactData, title: t('businessMembers') })), contactMethods.map((method, index) => (jsxRuntimeExports.jsx(ContactMethod, { icon: method.icon, title: method.title, contactList: method.contactList, showTitle: method.showTitle }, index))), jsxRuntimeExports.jsx(Properties, { properties: contactData?.properties, title: t('global.properties') })] }) }) }) }));
14950
+ return (jsxRuntimeExports.jsx(material.Popper, { sx: { zIndex: 1300 }, open: open, anchorEl: anchorEl, placement: "bottom-start", "data-popper-child": "true", children: jsxRuntimeExports.jsx(material.ClickAwayListener, { onClickAway: onClose, children: jsxRuntimeExports.jsx(PopupContainer, { children: jsxRuntimeExports.jsxs(material.CardContent, { children: [jsxRuntimeExports.jsx(Header, { navigate: navigate, contactId: contactData?.id, imgUrl: avatarImgUrl, name: contactData?.name }), jsxRuntimeExports.jsx(LabelsSection, { contactData: contactData, title: t('labels') }), dataIsContact && (jsxRuntimeExports.jsx(BusinessSection, { contactData: contactData, title: t('business') })), dataIsBusiness && (jsxRuntimeExports.jsx(MembersSection, { contactData: contactData, title: t('businessMembers') })), contactMethods.map((method, index) => (jsxRuntimeExports.jsx(ContactMethod, { icon: method.icon, title: method.title, contactList: method.contactList, showTitle: method.showTitle }, index))), jsxRuntimeExports.jsx(Properties, { properties: contactData?.properties, title: t('properties') })] }) }) }) }));
14921
14951
  };
14922
14952
 
14923
14953
  exports.ContactInfoPopup = ContactInfoPopup;