@elliemae/ds-chat 2.0.0-alpha.10 → 2.0.0-alpha.14

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 (123) hide show
  1. package/cjs/ChatDataTestids.js +27 -0
  2. package/cjs/parts/bubble/ChatBubble.js +15 -12
  3. package/cjs/parts/bubble/ChatBubbleArrow.js +64 -61
  4. package/cjs/parts/bubble/config/useValidateProps.js +5 -6
  5. package/cjs/parts/bubble/props.js +1 -1
  6. package/cjs/parts/bubble/styled.js +2 -31
  7. package/cjs/parts/chat-card/props.js +2 -2
  8. package/cjs/parts/chat-composer/ChatContainerComposer.js +16 -8
  9. package/cjs/parts/chat-composer/props.js +5 -11
  10. package/cjs/parts/chat-composer/styled.js +4 -4
  11. package/cjs/parts/chat-container/ChatContainer.js +67 -20
  12. package/cjs/parts/chat-container/config/useValidateProps.js +2 -2
  13. package/cjs/parts/chat-container/props.js +7 -13
  14. package/cjs/parts/chat-container/styled.js +2 -2
  15. package/cjs/parts/chat-container-header/ChatContainerHeader.js +3 -3
  16. package/cjs/parts/chat-container-header/helpers.js +31 -0
  17. package/cjs/parts/chat-container-header/styled.js +6 -6
  18. package/cjs/parts/chat-container-messages-list/ChatContainerMessagesList.js +156 -40
  19. package/cjs/parts/chat-container-messages-list/config/useValidateProps.js +2 -2
  20. package/cjs/parts/chat-container-messages-list/props.js +5 -13
  21. package/cjs/parts/chat-container-messages-list/styled.js +2 -6
  22. package/cjs/parts/chat-empty-state/ChatEmptyState.js +2 -3
  23. package/cjs/parts/chat-sidebar/SideBarChat.js +57 -29
  24. package/cjs/parts/chat-sidebar/props.js +11 -1
  25. package/cjs/parts/chat-sidebar/styled.js +2 -2
  26. package/cjs/parts/floating-button/FloatingButton.js +18 -10
  27. package/cjs/parts/floating-button/props.js +6 -2
  28. package/cjs/parts/grid-influencer/styled.js +2 -6
  29. package/cjs/parts/message-delimiter/styled.js +1 -1
  30. package/cjs/parts/sidebar-button/SidebarButton.js +6 -1
  31. package/cjs/parts/sidebar-button/props.js +2 -3
  32. package/cjs/parts/system-message/style.js +1 -1
  33. package/cjs/parts/tile-button/TileButton.js +31 -28
  34. package/cjs/parts/tile-button/props.js +12 -8
  35. package/cjs/parts/tile-button/styled.js +12 -5
  36. package/cjs/styled.js +1 -1
  37. package/esm/ChatDataTestids.js +23 -0
  38. package/esm/parts/bubble/ChatBubble.js +14 -11
  39. package/esm/parts/bubble/ChatBubbleArrow.js +64 -61
  40. package/esm/parts/bubble/config/useValidateProps.js +5 -6
  41. package/esm/parts/bubble/props.js +1 -1
  42. package/esm/parts/bubble/styled.js +2 -31
  43. package/esm/parts/chat-card/props.js +2 -2
  44. package/esm/parts/chat-composer/ChatContainerComposer.js +15 -6
  45. package/esm/parts/chat-composer/props.js +5 -11
  46. package/esm/parts/chat-composer/styled.js +2 -2
  47. package/esm/parts/chat-container/ChatContainer.js +65 -18
  48. package/esm/parts/chat-container/config/useValidateProps.js +2 -2
  49. package/esm/parts/chat-container/props.js +7 -13
  50. package/esm/parts/chat-container/styled.js +2 -2
  51. package/esm/parts/chat-container-header/ChatContainerHeader.js +3 -2
  52. package/esm/parts/chat-container-header/helpers.js +23 -0
  53. package/esm/parts/chat-container-header/styled.js +6 -6
  54. package/esm/parts/chat-container-messages-list/ChatContainerMessagesList.js +154 -38
  55. package/esm/parts/chat-container-messages-list/config/useValidateProps.js +2 -2
  56. package/esm/parts/chat-container-messages-list/props.js +5 -13
  57. package/esm/parts/chat-container-messages-list/styled.js +2 -6
  58. package/esm/parts/chat-empty-state/ChatEmptyState.js +1 -1
  59. package/esm/parts/chat-sidebar/SideBarChat.js +57 -28
  60. package/esm/parts/chat-sidebar/props.js +11 -1
  61. package/esm/parts/chat-sidebar/styled.js +2 -2
  62. package/esm/parts/floating-button/FloatingButton.js +18 -9
  63. package/esm/parts/floating-button/props.js +6 -2
  64. package/esm/parts/grid-influencer/styled.js +2 -6
  65. package/esm/parts/message-delimiter/styled.js +1 -1
  66. package/esm/parts/sidebar-button/SidebarButton.js +6 -1
  67. package/esm/parts/sidebar-button/props.js +1 -1
  68. package/esm/parts/system-message/style.js +1 -1
  69. package/esm/parts/tile-button/TileButton.js +32 -27
  70. package/esm/parts/tile-button/props.js +11 -3
  71. package/esm/parts/tile-button/styled.js +12 -7
  72. package/esm/styled.js +1 -1
  73. package/package.json +29 -6
  74. package/types/ChatDataTestids.d.ts +21 -0
  75. package/types/parts/bubble/ChatBubble.d.ts +18 -5
  76. package/types/parts/bubble/props.d.ts +13 -4
  77. package/types/parts/bubble/styled.d.ts +9 -9
  78. package/types/parts/bubble/tests/ChatBubble.test.d.ts +1 -0
  79. package/types/parts/chat-card/ChatCard.d.ts +24 -4
  80. package/types/parts/chat-card/props.d.ts +19 -3
  81. package/types/parts/chat-card/styled.d.ts +6 -6
  82. package/types/parts/chat-composer/ChatContainerComposer.d.ts +48 -13
  83. package/types/parts/chat-composer/styled.d.ts +117 -24
  84. package/types/parts/chat-composer/tests/ChatContainerComposer.test.d.ts +1 -0
  85. package/types/parts/chat-container/ChatContainer.d.ts +54 -13
  86. package/types/parts/chat-container/config/useValidateProps.d.ts +1 -1
  87. package/types/parts/chat-container/styled.d.ts +4 -4
  88. package/types/parts/chat-container/tests/ChatContainer.test.d.ts +1 -0
  89. package/types/parts/chat-container-header/helpers.d.ts +6 -0
  90. package/types/parts/chat-container-header/styled.d.ts +3 -3
  91. package/types/parts/chat-container-messages-list/ChatContainerMessagesList.d.ts +39 -9
  92. package/types/parts/chat-container-messages-list/config/useValidateProps.d.ts +1 -1
  93. package/types/parts/chat-container-messages-list/styled.d.ts +7 -7
  94. package/types/parts/chat-empty-state/ChatEmptyState.d.ts +12 -3
  95. package/types/parts/chat-empty-state/props.d.ts +7 -2
  96. package/types/parts/chat-empty-state/styled.d.ts +2 -2
  97. package/types/parts/chat-sidebar/SideBarChat.d.ts +39 -9
  98. package/types/parts/chat-sidebar/props.d.ts +39 -9
  99. package/types/parts/chat-sidebar/styled.d.ts +2 -2
  100. package/types/parts/floating-button/FloatingButton.d.ts +11 -2
  101. package/types/parts/floating-button/props.d.ts +13 -1
  102. package/types/parts/floating-button/styled.d.ts +1 -1
  103. package/types/parts/floating-container/styled.d.ts +1 -2
  104. package/types/parts/grid-influencer/styled.d.ts +2 -2
  105. package/types/parts/message-delimiter/MessageDelimiter.d.ts +21 -4
  106. package/types/parts/message-delimiter/props.d.ts +16 -3
  107. package/types/parts/message-delimiter/styled.d.ts +3 -3
  108. package/types/parts/sidebar-button/SidebarButton.d.ts +16 -5
  109. package/types/parts/sidebar-button/props.d.ts +16 -5
  110. package/types/parts/sidebar-button/styled.d.ts +3 -3
  111. package/types/parts/system-message/SystemMessage.d.ts +12 -2
  112. package/types/parts/system-message/props.d.ts +7 -1
  113. package/types/parts/system-message/style.d.ts +5 -5
  114. package/types/parts/tile-button/TileButton.d.ts +66 -17
  115. package/types/parts/tile-button/props.d.ts +64 -16
  116. package/types/parts/tile-button/styled.d.ts +9 -8
  117. package/types/prop-types.d.ts +28 -9
  118. package/types/tests/utils.d.ts +27 -0
  119. package/cjs/package.json +0 -4
  120. package/esm/package.json +0 -4
  121. package/types/parts/chat-composer/props.d.ts +0 -35
  122. package/types/parts/chat-container/props.d.ts +0 -39
  123. package/types/parts/chat-container-messages-list/props.d.ts +0 -23
@@ -11,17 +11,27 @@ const defaultProps = {
11
11
  onHeaderClose: noop,
12
12
  footerButtonExtraProps: {
13
13
  'aria-label': 'expand or collapse button'
14
+ },
15
+ tooltipPlacement: 'right',
16
+ enableTooltipWhenIsClosed: false,
17
+ actionRef: {
18
+ current: {
19
+ listRef: []
20
+ }
14
21
  }
15
22
  };
16
23
  const chatSidebarProps = {
17
24
  sidebarItems: PropTypes.arrayOf(PropTypes.object).description('The array of out-of-the-box items you want to render inside the sidebar nav of the chat').defaultValue(defaultProps.sidebarItems),
18
25
  expanded: PropTypes.bool.description('Whether to show the chat expanded or collapsed').defaultValue(defaultProps.expanded),
19
26
  selectedItem: PropTypes.string.description('The id of the chat item you want to be opened').defaultValue(defaultProps.selectedItem),
27
+ tooltipPlacement: PropTypes.oneOf(['top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']).description('start placement preferences, as per popperjs placement option').defaultValue("'right'"),
28
+ enableTooltipWhenIsClosed: PropTypes.bool.description('Enable tooltip when is closed').defaultValue(defaultProps.onFooterExpand),
20
29
  onFooterExpand: PropTypes.func.description('The function to call when the chat is opened via the footer').defaultValue(defaultProps.onFooterExpand),
21
30
  onFooterClose: PropTypes.func.description('The function to call when the chat is closed via the footer').defaultValue(defaultProps.onFooterClose),
22
31
  onHeaderExpand: PropTypes.func.description('The function to call when the chat is opened via the header').defaultValue(defaultProps.onHeaderExpand),
23
32
  onHeaderClose: PropTypes.func.description('The function to call when the chat is closed via the header').defaultValue(defaultProps.onHeaderClose),
24
- footerButtonExtraProps: PropTypes.object.description('Expand/collapse footer button extra props').defaultValue(defaultProps.footerButtonExtraProps)
33
+ footerButtonExtraProps: PropTypes.object.description('Expand/collapse footer button extra props').defaultValue(defaultProps.footerButtonExtraProps),
34
+ actionRef: PropTypes.object.description("Action ref for sidebar\n {\n listRef: references to Tiles\n }\n ").defaultValue(defaultProps.actionRef)
25
35
  };
26
36
 
27
37
  export { chatSidebarProps, defaultProps };
@@ -4,9 +4,9 @@ import { MIN_WIDTH_SIDEBAR, BUTTON_SIDEBAR_HEIGHT } from '../../styled.js';
4
4
 
5
5
  const StyledSideBarContainer = /*#__PURE__*/styled(Grid).withConfig({
6
6
  componentId: "sc-16uijso-0"
7
- })(["height:100%;width:", "px;background:", ";border-right:1px solid ", ";"], MIN_WIDTH_SIDEBAR, props => props.theme.colors.neutral['050'], props => props.theme.colors.neutral['100']);
7
+ })(["height:100%;width:", "px;background:", ";border-right:1px solid ", ";overflow:hidden;"], MIN_WIDTH_SIDEBAR, props => props.theme.colors.neutral['050'], props => props.theme.colors.neutral['100']);
8
8
  const StyledSideBarButtonsContainer = /*#__PURE__*/styled(Grid).withConfig({
9
9
  componentId: "sc-16uijso-1"
10
- })(["overflow-y:auto;align-items:flex-start;justify-content:flex-start;grid-template-rows:repeat(auto-fill,", "px);"], BUTTON_SIDEBAR_HEIGHT);
10
+ })(["overflow-y:auto;align-items:flex-start;justify-content:flex-start;grid-template-rows:repeat(auto-fill,", "px);overflow-x:hidden;scrollbar-width:thin;&::-webkit-scrollbar{width:6px;}"], BUTTON_SIDEBAR_HEIGHT);
11
11
 
12
12
  export { StyledSideBarButtonsContainer, StyledSideBarContainer };
@@ -1,18 +1,27 @@
1
1
  import _jsx from '@babel/runtime/helpers/esm/jsx';
2
2
  import 'react';
3
- import Comments from '@elliemae/ds-icons/Comments';
3
+ import { Comments } from '@elliemae/ds-icons';
4
4
  import { StyledFloatingButton } from './styled.js';
5
5
  import { defaultFloatingButton } from './props.js';
6
+ import { jsx } from 'react/jsx-runtime';
6
7
 
7
8
  var _Comments;
8
- const FloatingButton = ({
9
- onClick
10
- }) => /*#__PURE__*/_jsx(StyledFloatingButton, {
11
- "data-testid": "chat-floating-button",
12
- onClick: onClick
13
- }, void 0, _Comments || (_Comments = /*#__PURE__*/_jsx(Comments, {
14
- size: "l"
15
- })));
9
+ const FloatingButton = _ref => {
10
+ let {
11
+ onClick,
12
+ onFocus,
13
+ innerRef
14
+ } = _ref;
15
+ return /*#__PURE__*/jsx(StyledFloatingButton, {
16
+ onFocus: onFocus,
17
+ ref: innerRef,
18
+ "data-testid": "chat-floating-button",
19
+ onClick: onClick,
20
+ children: _Comments || (_Comments = /*#__PURE__*/_jsx(Comments, {
21
+ size: "l"
22
+ }))
23
+ });
24
+ };
16
25
  FloatingButton.defaultProps = defaultFloatingButton;
17
26
 
18
27
  export { FloatingButton };
@@ -2,10 +2,14 @@ import { PropTypes } from 'react-desc';
2
2
  import { noop } from 'lodash';
3
3
 
4
4
  const defaultFloatingButton = {
5
- onClick: noop
5
+ onClick: noop,
6
+ onFocus: noop,
7
+ innerRef: null
6
8
  };
7
9
  const propsFloatingButton = {
8
- onClick: PropTypes.func.description('The function to call when the chat is opened via the footer').defaultValue(defaultFloatingButton.onClick)
10
+ onClick: PropTypes.func.description('The function to call when the chat is opened via the footer').defaultValue(defaultFloatingButton.onClick),
11
+ onFocus: PropTypes.func.description('The function to call when button is being focused').defaultValue(defaultFloatingButton.onFocus),
12
+ innerRef: PropTypes.object.description('Ref to the component container').defaultValue(null)
9
13
  };
10
14
 
11
15
  export { defaultFloatingButton, propsFloatingButton };
@@ -4,13 +4,9 @@ import { MIN_WIDTH_SIDEBAR } from '../../styled.js';
4
4
 
5
5
  const StyledChatContainer = /*#__PURE__*/styled(Grid).withConfig({
6
6
  componentId: "sc-b6t5vk-0"
7
- })(["height:100%;width:", ";background:", ";box-shadow:-1px 0 0 0 ", ";transition:width ", " 350ms;"], props => props.expanded ? `${props.expandedWidth}px` : `${MIN_WIDTH_SIDEBAR}px`, props => props.theme.colors.neutral['050'], props => props.theme.colors.neutral[100], props => props.expanded ? 'ease-out' : 'ease-in');
7
+ })(["height:100%;width:", ";background:", ";box-shadow:-1px 0 0 0 ", ";transition:width ", " 350ms;"], props => props.expanded ? "".concat(props.expandedWidth, "px") : "".concat(MIN_WIDTH_SIDEBAR, "px"), props => props.theme.colors.neutral['050'], props => props.theme.colors.neutral[100], props => props.expanded ? 'ease-out' : 'ease-in');
8
8
  const StyledChatContainerContent = /*#__PURE__*/styled(Grid).withConfig({
9
9
  componentId: "sc-b6t5vk-1"
10
- })(["height:100%;overflow:hidden;background:", ";", ""], props => props.theme.colors.neutral['050'], props => props.floating ? `
11
- width: ${props.expandedWidth}px;
12
- ` : `
13
- width: ${props.expandedWidth - MIN_WIDTH_SIDEBAR}px;
14
- `);
10
+ })(["height:100%;overflow:hidden;background:", ";", ""], props => props.theme.colors.neutral['050'], props => props.floating ? "\n width: ".concat(props.expandedWidth, "px;\n") : "\n width: ".concat(props.expandedWidth - MIN_WIDTH_SIDEBAR, "px;\n"));
15
11
 
16
12
  export { StyledChatContainer, StyledChatContainerContent };
@@ -9,6 +9,6 @@ const Line = /*#__PURE__*/styled.span.withConfig({
9
9
  })(["border-top:1px solid ", ";"], props => props.theme.colors.neutral['400']);
10
10
  const Text = /*#__PURE__*/styled.p.withConfig({
11
11
  componentId: "sc-upz0rt-2"
12
- })(["color:", ";font-size:", ";font-weight:", ";margin:", ";"], props => props.theme.colors.neutral['600'], props => props.size === 's' ? '12px' : '14px', props => props.theme.fontWeights.semibold, props => typeof props.verticalMargin === 'number' ? `${props.verticalMargin}px 8px` : `${props.verticalMargin} 8px`);
12
+ })(["color:", ";font-size:", ";font-weight:", ";margin:", ";"], props => props.theme.colors.neutral['600'], props => props.size === 's' ? '12px' : '14px', props => props.theme.fontWeights.semibold, props => typeof props.verticalMargin === 'number' ? "".concat(props.verticalMargin, "px 8px") : "".concat(props.verticalMargin, " 8px"));
13
13
 
14
14
  export { Line, Text, Wrapper };
@@ -1,3 +1,8 @@
1
+ import 'core-js/modules/esnext.async-iterator.filter.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.filter.js';
4
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
5
+ import 'core-js/modules/esnext.iterator.for-each.js';
1
6
  import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
7
  import _jsx from '@babel/runtime/helpers/esm/jsx';
3
8
  import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
@@ -24,7 +29,7 @@ const SidebarButton = _ref => {
24
29
  onClick(dsId);
25
30
  }, [onClick, dsId]);
26
31
  return /*#__PURE__*/jsxs(StyledSidebarButton, _objectSpread(_objectSpread({
27
- "data-testid": `sidebar-button-${dsId}`,
32
+ "data-testid": "sidebar-button-".concat(dsId),
28
33
  onClick: handleClick
29
34
  }, rest), {}, {
30
35
  children: [/*#__PURE__*/_jsx(StyledSidebarButtonIcon, {
@@ -1,7 +1,7 @@
1
1
  import propsTypes from 'prop-types';
2
2
  import { PropTypes } from 'react-desc';
3
3
  import { noop } from 'lodash';
4
- import Comments from '@elliemae/ds-icons/Comments';
4
+ import { Comments } from '@elliemae/ds-icons';
5
5
 
6
6
  const defaultSidebarButton = {
7
7
  Icon: Comments,
@@ -3,7 +3,7 @@ import { Grid } from '@elliemae/ds-grid';
3
3
 
4
4
  const Wrapper = /*#__PURE__*/styled(Grid).withConfig({
5
5
  componentId: "sc-80w41d-0"
6
- })(["align-items:center;justify-content:center;min-width:268px;max-width:100%;padding:0 8px 8px;border:1px solid ", ";border-radius:10px;background-color:", ";box-shadow:none;"], props => props.theme.colors.neutral['100'], props => props.theme.colors.neutral['080']);
6
+ })(["align-items:center;justify-content:center;max-width:100%;padding:0 8px 8px;border:1px solid ", ";border-radius:10px;background-color:", ";box-shadow:none;"], props => props.theme.colors.neutral['100'], props => props.theme.colors.neutral['080']);
7
7
  const Header = /*#__PURE__*/styled(Grid).withConfig({
8
8
  componentId: "sc-80w41d-1"
9
9
  })(["align-items:center;height:36px;"]);
@@ -2,17 +2,18 @@ import _jsx from '@babel/runtime/helpers/esm/jsx';
2
2
  import 'core-js/modules/web.url.to-json.js';
3
3
  import React from 'react';
4
4
  import { describe } from 'react-desc';
5
- import DSTooltip from '@elliemae/ds-tooltip';
5
+ import { DSTooltipV3 } from '@elliemae/ds-tooltip';
6
6
  import { Grid } from '@elliemae/ds-grid';
7
- import CloseXsmall from '@elliemae/ds-icons/CloseXsmall';
8
- import { StyledWrapperCentralContent, StyledTileButtonIcon, StyledStatusBadge, StyledTileButtonLabel, StyledTileButton, StyledWrapper, StyledWrapperLeftBorder, CloseButton } from './styled.js';
7
+ import { CloseXsmall } from '@elliemae/ds-icons';
8
+ import { StyledWrapperCentralContent, StyledTileButtonIcon, StyledStatusBadge, StyledTileButtonLabel, StyledTileButton, StyledWrapper, StyledWrapperLeftBorder, CloseButton, StyledTooltipV3ButtonWrapper } from './styled.js';
9
9
  import { propsTileButton, defaultTileButton } from './props.js';
10
10
  import { useValidateProps } from './config/useValidateProps.js';
11
+ import { jsx } from 'react/jsx-runtime';
11
12
 
12
13
  var _StyledWrapperLeftBor, _CloseXsmall;
13
14
 
14
15
  const TileButton = props => {
15
- var _Icon, _StyledStatusBadge, _StyledTileButtonLabe;
16
+ var _Icon, _StyledTileButtonLabe, _span;
16
17
 
17
18
  useValidateProps(props, TileButtonWithSchema.toJSON());
18
19
  const {
@@ -31,7 +32,10 @@ const TileButton = props => {
31
32
  disabled,
32
33
  selected,
33
34
  isHeader,
34
- ariaLabel
35
+ ariaLabel,
36
+ tooltipPlacement,
37
+ disableTooltip,
38
+ innerRef
35
39
  } = props;
36
40
  const handleClick = React.useCallback(() => {
37
41
  onClick(dsId, title);
@@ -47,17 +51,19 @@ const TileButton = props => {
47
51
  justifyContent: "center"
48
52
  }, void 0, _Icon || (_Icon = /*#__PURE__*/_jsx(Icon, {
49
53
  size: "m"
50
- })), badge ? _StyledStatusBadge || (_StyledStatusBadge = /*#__PURE__*/_jsx(StyledStatusBadge, {
54
+ })), badge ? /*#__PURE__*/_jsx(StyledStatusBadge, {
51
55
  badgeColor: badgeColor,
52
- badgePosition: badgePosition
53
- })) : null)), !isHeader ? /*#__PURE__*/_jsx(Grid, {
56
+ badgePosition: badgePosition,
57
+ "data-testid": "tile-badge-".concat(dsId)
58
+ }) : null)), !isHeader ? /*#__PURE__*/_jsx(Grid, {
54
59
  width: "100%",
55
60
  justifyContent: "center"
56
61
  }, void 0, label ? _StyledTileButtonLabe || (_StyledTileButtonLabe = /*#__PURE__*/_jsx(StyledTileButtonLabel, {}, void 0, label)) : null) : null), [isHeader, Icon, badge, badgeColor, badgePosition, label]);
57
- return /*#__PURE__*/_jsx(StyledTileButton, {
62
+ const Btn = React.useMemo(() => /*#__PURE__*/jsx(StyledTileButton, {
58
63
  isHeader: isHeader,
59
64
  value: dsId,
60
- "data-testid": `tile-button-${dsId}`,
65
+ "data-testid": "tile-button-".concat(dsId),
66
+ "data-key": dsId,
61
67
  onClick: handleClick,
62
68
  onFocus: onFocus,
63
69
  onBlur: onBlur,
@@ -66,23 +72,22 @@ const TileButton = props => {
66
72
  badgeColor: badgeColor,
67
73
  badgePosition: badgePosition,
68
74
  "aria-pressed": selected,
69
- "aria-label": ariaLabel
70
- }, dsId, /*#__PURE__*/_jsx(StyledWrapper, {
71
- alignItems: "center",
72
- justifyContent: "center"
73
- }, void 0, title ? /*#__PURE__*/_jsx(DSTooltip, {
74
- containerProps: {
75
- id: `ds-chat-tile-tooltip-button-${dsId}`,
76
- 'data-testid': `ds-chat-tile-tooltip-button-${dsId}`
77
- },
78
- interactionType: "hover",
79
- title: title,
80
- triggerComponent: /*#__PURE__*/_jsx("span", {}, void 0, MainContent),
81
- placement: "bottom"
82
- }) : MainContent, _StyledWrapperLeftBor || (_StyledWrapperLeftBor = /*#__PURE__*/_jsx(StyledWrapperLeftBorder, {})), showClose && !disabled ? /*#__PURE__*/_jsx(CloseButton, {
83
- onClick: onClose,
84
- value: dsId
85
- }, void 0, _CloseXsmall || (_CloseXsmall = /*#__PURE__*/_jsx(CloseXsmall, {}))) : null));
75
+ "aria-label": ariaLabel,
76
+ ref: innerRef,
77
+ children: /*#__PURE__*/_jsx(StyledWrapper, {
78
+ alignItems: "center",
79
+ justifyContent: "center"
80
+ }, void 0, _span || (_span = /*#__PURE__*/_jsx("span", {}, void 0, MainContent)), _StyledWrapperLeftBor || (_StyledWrapperLeftBor = /*#__PURE__*/_jsx(StyledWrapperLeftBorder, {})), showClose && !disabled ? /*#__PURE__*/_jsx(CloseButton, {
81
+ onClick: onClose,
82
+ value: dsId,
83
+ "data-testid": "tile-close-btn-".concat(dsId)
84
+ }, void 0, _CloseXsmall || (_CloseXsmall = /*#__PURE__*/_jsx(CloseXsmall, {}))) : null)
85
+ }, dsId), [MainContent, ariaLabel, badgeColor, badgePosition, disabled, dsId, handleClick, isHeader, onBlur, onClose, onFocus, selected, showClose, innerRef]);
86
+ return title && !disableTooltip ? /*#__PURE__*/_jsx(StyledTooltipV3ButtonWrapper, {}, void 0, /*#__PURE__*/_jsx(DSTooltipV3, {
87
+ id: "ds-chat-tile-tooltip-button-".concat(dsId),
88
+ text: title,
89
+ startPlacementPreference: tooltipPlacement
90
+ }, void 0, Btn)) : Btn;
86
91
  };
87
92
 
88
93
  TileButton.defaultProps = defaultTileButton;
@@ -1,6 +1,6 @@
1
1
  import { PropTypes } from 'react-desc';
2
2
  import { noop } from 'lodash';
3
- import Comments from '@elliemae/ds-icons/Comments';
3
+ import { Comments } from '@elliemae/ds-icons';
4
4
 
5
5
  const defaultTileButton = {
6
6
  Icon: Comments,
@@ -18,7 +18,10 @@ const defaultTileButton = {
18
18
  disabled: false,
19
19
  selected: false,
20
20
  isHeader: false,
21
- ariaLabel: 'Tile button'
21
+ ariaLabel: 'Tile button',
22
+ tooltipPlacement: 'right',
23
+ disableTooltip: false,
24
+ innerRef: noop
22
25
  };
23
26
  const propsTileButton = {
24
27
  Icon: PropTypes.func.description('Icon component').defaultValue(defaultTileButton.Icon),
@@ -36,7 +39,12 @@ const propsTileButton = {
36
39
  disabled: PropTypes.bool.description('It will disabled the button').defaultValue(defaultTileButton.disabled),
37
40
  selected: PropTypes.bool.description('Indicate that the button is selected').defaultValue(defaultTileButton.disabled),
38
41
  isHeader: PropTypes.bool.description("It won't render the label").defaultValue(defaultTileButton.disabled),
39
- ariaLabel: PropTypes.string.description('aria-label attribute').defaultValue(defaultTileButton.ariaLabel)
42
+ ariaLabel: PropTypes.string.description('aria-label attribute').defaultValue(defaultTileButton.ariaLabel),
43
+ tooltipPlacement: PropTypes.oneOf(['top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']).description('start placement preferences, as per popperjs placement option').defaultValue("'right'"),
44
+ disableTooltip: PropTypes.bool.description('Disable tooltip option').defaultValue(defaultTileButton.disableTooltip),
45
+ innerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
46
+ current: PropTypes.any
47
+ })]).description('reference to the component')
40
48
  };
41
49
 
42
50
  export { defaultTileButton, propsTileButton };
@@ -1,7 +1,9 @@
1
- import styled, { css } from 'styled-components';
1
+ import _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';
2
+ import styled from 'styled-components';
3
+ import { css } from '@elliemae/ds-system';
2
4
  import { Grid } from '@elliemae/ds-grid';
3
5
 
4
- /* eslint-disable indent */
6
+ var _templateObject;
5
7
  const MIN_WIDTH_SIDEBAR = 48;
6
8
  const BUTTON_SIDEBAR_HEIGHT = 48; // Buttons
7
9
 
@@ -46,9 +48,12 @@ const CloseButton = /*#__PURE__*/styled.button.withConfig({
46
48
  componentId: "sc-1ebp1zs-5"
47
49
  })(["outline:none;background:none;height:9px;width:9px;position:absolute;top:1px;right:1px;overflow:hidden;padding:0;border:none;span{position:absolute;left:-3px;top:-4px;}&:focus,&:hover{svg{fill:", ";}&:after{display:block;content:'';position:absolute;top:0;left:0;width:100%;height:100%;border:solid 1px ", ";border-radius:2px;}}cursor:pointer;"], props => props.theme.colors.brand[600], props => props.theme.colors.brand[600]); // MAIN WRAPPER
48
50
 
49
- const StyledTileButton = /*#__PURE__*/styled.button.withConfig({
51
+ const StyledTooltipV3ButtonWrapper = /*#__PURE__*/styled.div.withConfig({
50
52
  componentId: "sc-1ebp1zs-6"
51
- })(["outline:none;background:transparent;height:", "px;width:", "px;position:relative;padding:0;border:none;cursor:pointer;border-bottom:", ";&:focus,&:hover,&:active,&:disabled{background:", ";& ", "{border:2px solid ", ";margin-top:-2px;", ";}}&:focus,&:hover{& ", "{background:", ";}& ", "{color:", ";}& svg{fill:", ";}}&:active:not(:disabled){background:", ";& ", "{background:", ";}& ", "{color:", ";font-weight:600;}& svg{fill:", ";}& ", "{border:2px solid ", ";}}&:disabled{background:", ";", "{background:", ";}& ", "{background:", ";border:2px solid ", ";}", "{svg{fill:", ";}}", "{color:", ";}}", ""], BUTTON_SIDEBAR_HEIGHT, MIN_WIDTH_SIDEBAR, props => props.isHeader ? `1px solid ${props.theme.colors.neutral['200']}` : 'none', props => props.theme.colors.neutral['080'], StyledStatusBadge, props => props.theme.colors.neutral['080'], props => {
53
+ })(["height:", "px;width:", "px;"], BUTTON_SIDEBAR_HEIGHT, MIN_WIDTH_SIDEBAR);
54
+ const StyledTileButton = /*#__PURE__*/styled.button.withConfig({
55
+ componentId: "sc-1ebp1zs-7"
56
+ })(["outline:none;background:transparent;height:", "px;width:", "px;position:relative;padding:0;border:none;cursor:pointer;border-bottom:", ";&:focus,&:hover,&:active,&:disabled{background:", ";& ", "{border:2px solid ", ";margin-top:-2px;", ";}}&:focus,&:hover{& ", "{background:", ";}& ", "{color:", ";}& svg{fill:", ";}}&:active:not(:disabled){background:", ";& ", "{background:", ";}& ", "{color:", ";font-weight:600;}& svg{fill:", ";}& ", "{border:2px solid ", ";}}&:disabled{background:", ";", "{background:", ";}& ", "{background:", ";border:2px solid ", ";}", "{svg{fill:", ";}}", "{color:", ";}}", ""], BUTTON_SIDEBAR_HEIGHT, MIN_WIDTH_SIDEBAR, props => props.isHeader ? "1px solid ".concat(props.theme.colors.neutral['200']) : 'none', props => props.theme.colors.neutral['080'], StyledStatusBadge, props => props.theme.colors.neutral['080'], props => {
52
57
  switch (props.badgePosition) {
53
58
  case 'left':
54
59
  return 'margin-left: -2px;';
@@ -61,13 +66,13 @@ const StyledTileButton = /*#__PURE__*/styled.button.withConfig({
61
66
  }
62
67
  }, StyledWrapperLeftBorder, props => props.theme.colors.brand[800], StyledTileButtonLabel, props => props.theme.colors.neutral[600], props => props.theme.colors.brand[800], props => props.theme.colors.neutral['050'], StyledWrapperLeftBorder, props => props.theme.colors.brand[600], StyledTileButtonLabel, props => props.theme.colors.neutral[600], props => props.theme.colors.brand[600], StyledStatusBadge, props => props.theme.colors.neutral['050'], props => props.theme.colors.neutral['080'], StyledWrapperLeftBorder, props => props.theme.colors.neutral['400'], StyledStatusBadge, props => props.theme.colors.neutral['500'], props => props.theme.colors.neutral['080'], StyledTileButtonIcon, props => props.theme.colors.neutral[400], StyledTileButtonLabel, props => props.theme.colors.neutral[400], props => {
63
68
  if (props.selected) {
64
- return css(["& ", "{background:", ";}"], StyledWrapperLeftBorder, nestedProps => nestedProps.theme.colors.brand[600]);
69
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n & ", " {\n background: ", ";\n }\n "])), StyledWrapperLeftBorder, nestedProps => nestedProps.theme.colors.brand[600]);
65
70
  }
66
71
 
67
72
  return '';
68
73
  });
69
74
  const StyledWrapper = /*#__PURE__*/styled(Grid).withConfig({
70
- componentId: "sc-1ebp1zs-7"
75
+ componentId: "sc-1ebp1zs-8"
71
76
  })(["height:100%;width:100%;position:relative;"]);
72
77
 
73
- export { CloseButton, StyledStatusBadge, StyledTileButton, StyledTileButtonIcon, StyledTileButtonLabel, StyledWrapper, StyledWrapperCentralContent, StyledWrapperLeftBorder };
78
+ export { CloseButton, StyledStatusBadge, StyledTileButton, StyledTileButtonIcon, StyledTileButtonLabel, StyledTooltipV3ButtonWrapper, StyledWrapper, StyledWrapperCentralContent, StyledWrapperLeftBorder };
package/esm/styled.js CHANGED
@@ -3,6 +3,6 @@ const BUTTON_SIDEBAR_HEIGHT = 48;
3
3
  const BUTTON_FLOATING = 56;
4
4
  const BOX_SHADOW = '0 5px 8px 0 rgba(53,60,70,0.55)';
5
5
  const BOX_SHADOW_FLOATING = '0 5px 8px 0 rgba(53,60,70,0.35)';
6
- const BOX_SHADOW_INSET = `inset 100px 3px 4px 0 rgba(53,60,70,0.50)`;
6
+ const BOX_SHADOW_INSET = "inset 100px 3px 4px 0 rgba(53,60,70,0.50)";
7
7
 
8
8
  export { BOX_SHADOW, BOX_SHADOW_FLOATING, BOX_SHADOW_INSET, BUTTON_FLOATING, BUTTON_SIDEBAR_HEIGHT, MIN_WIDTH_SIDEBAR };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-chat",
3
- "version": "2.0.0-alpha.10",
3
+ "version": "2.0.0-alpha.14",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - Chat",
6
6
  "module": "./esm/index.js",
@@ -11,6 +11,10 @@
11
11
  "import": "./esm/index.js",
12
12
  "require": "./cjs/index.js"
13
13
  },
14
+ "./tests/utils": {
15
+ "import": "./esm/tests/utils.js",
16
+ "require": "./cjs/tests/utils.js"
17
+ },
14
18
  "./styled": {
15
19
  "import": "./esm/styled.js",
16
20
  "require": "./cjs/styled.js"
@@ -203,6 +207,10 @@
203
207
  "import": "./esm/parts/chat-container-header/styled.js",
204
208
  "require": "./cjs/parts/chat-container-header/styled.js"
205
209
  },
210
+ "./parts/chat-container-header/helpers": {
211
+ "import": "./esm/parts/chat-container-header/helpers.js",
212
+ "require": "./cjs/parts/chat-container-header/helpers.js"
213
+ },
206
214
  "./parts/chat-container-header/ChatContainerHeader": {
207
215
  "import": "./esm/parts/chat-container-header/ChatContainerHeader.js",
208
216
  "require": "./cjs/parts/chat-container-header/ChatContainerHeader.js"
@@ -270,6 +278,10 @@
270
278
  "./parts/bubble/ChatBubble": {
271
279
  "import": "./esm/parts/bubble/ChatBubble.js",
272
280
  "require": "./cjs/parts/bubble/ChatBubble.js"
281
+ },
282
+ "./ChatDataTestids": {
283
+ "import": "./esm/ChatDataTestids.js",
284
+ "require": "./cjs/ChatDataTestids.js"
273
285
  }
274
286
  },
275
287
  "repository": {
@@ -293,19 +305,30 @@
293
305
  "generateSubmodules": true
294
306
  },
295
307
  "dependencies": {
296
- "@elliemae/ds-basic": "2.0.0-alpha.10",
297
- "@elliemae/ds-icons": "2.0.0-alpha.10",
298
- "@elliemae/ds-system": "2.0.0-alpha.10",
308
+ "@elliemae/ds-banner": "2.0.0-alpha.14",
309
+ "@elliemae/ds-button": "2.0.0-alpha.14",
310
+ "@elliemae/ds-grid": "2.0.0-alpha.14",
311
+ "@elliemae/ds-icons": "2.0.0-alpha.14",
312
+ "@elliemae/ds-indeterminate-progress-indicator": "2.0.0-alpha.14",
313
+ "@elliemae/ds-props-helpers": "2.0.0-alpha.14",
314
+ "@elliemae/ds-system": "2.0.0-alpha.14",
315
+ "@elliemae/ds-tooltip": "2.0.0-alpha.14",
316
+ "@elliemae/ds-truncated-tooltip-text": "2.0.0-alpha.14",
299
317
  "prop-types": "~15.7.2",
318
+ "react-desc": "~4.1.2",
300
319
  "react-virtual": "~2.3.2"
301
320
  },
302
321
  "devDependencies": {
303
- "styled-components": "~5.3.1"
322
+ "@testing-library/dom": "~8.11.1",
323
+ "@testing-library/jest-dom": "~5.15.1",
324
+ "@testing-library/react": "~12.1.2",
325
+ "@testing-library/user-event": "~13.5.0",
326
+ "styled-components": "~5.3.3"
304
327
  },
305
328
  "peerDependencies": {
306
329
  "lodash": "^4.17.21",
307
330
  "react": "^16.14.0",
308
331
  "react-dom": "^16.14.0",
309
- "styled-components": "^5.3.1"
332
+ "styled-components": "^5.3.3"
310
333
  }
311
334
  }
@@ -0,0 +1,21 @@
1
+ export declare const ChatDataTestIds: {
2
+ COMPOSER_TEXTAREA: string;
3
+ COMPOSER_SEND_BUTTON: string;
4
+ CARD_TITLE: string;
5
+ CARD_WRAPPER: string;
6
+ CARD_TIME: string;
7
+ CARD_RIGHT_ADDON: string;
8
+ CARD_CONTENT: string;
9
+ LOADING_INDICATOR: string;
10
+ HEADER_TITLE: string;
11
+ HEADER_CHILDREN: string;
12
+ THREAD_CONTAINER: string;
13
+ LOAD_MORE_BUTTON: string;
14
+ FLOATING_BUTTON: string;
15
+ SYSTEM_MSG_TITLE: string;
16
+ SYSTEM_MSG_BODY: string;
17
+ SYSTEM_MSG_TIME: string;
18
+ BUBBLE: string;
19
+ BUBBLE_TITLE: string;
20
+ BUBBLE_BODY: string;
21
+ };
@@ -1,17 +1,30 @@
1
+ /// <reference path="../../../../../../shared/typings/react-desc.d.ts" />
1
2
  /// <reference types="react" />
2
3
  import { BubbleProps } from './props';
3
4
  declare const ChatBubble: {
4
5
  (props: BubbleProps): JSX.Element;
5
6
  propTypes: {
6
- dsId: any;
7
+ dsId: {
8
+ deprecated: import("react-desc").PropTypesDescValidator;
9
+ };
7
10
  type: any;
8
11
  title: any;
9
12
  time: any;
10
13
  body: any;
11
- onClick: any;
12
- errorMessage: any;
13
- helpMessage: any;
14
+ onClick: {
15
+ deprecated: import("react-desc").PropTypesDescValidator;
16
+ };
17
+ errorMessage: {
18
+ deprecated: import("react-desc").PropTypesDescValidator;
19
+ };
20
+ helpMessage: {
21
+ deprecated: import("react-desc").PropTypesDescValidator;
22
+ };
14
23
  };
15
24
  };
16
- declare const ChatBubbleWithSchema: any;
25
+ declare const ChatBubbleWithSchema: {
26
+ (props?: BubbleProps | undefined): JSX.Element;
27
+ propTypes: unknown;
28
+ toTypescript: () => import("react-desc").TypescriptSchema;
29
+ };
17
30
  export { ChatBubble, ChatBubbleWithSchema };
@@ -1,3 +1,4 @@
1
+ /// <reference path="../../../../../../shared/typings/react-desc.d.ts" />
1
2
  import React from 'react';
2
3
  /**
3
4
  *
@@ -24,14 +25,22 @@ export interface BubbleProps {
24
25
  }
25
26
  export declare const defaultBubbleProps: BubbleProps;
26
27
  export declare const propsBubbles: {
27
- dsId: any;
28
+ dsId: {
29
+ deprecated: import("react-desc").PropTypesDescValidator;
30
+ };
28
31
  type: any;
29
32
  title: any;
30
33
  time: any;
31
34
  body: any;
32
- onClick: any;
33
- errorMessage: any;
34
- helpMessage: any;
35
+ onClick: {
36
+ deprecated: import("react-desc").PropTypesDescValidator;
37
+ };
38
+ errorMessage: {
39
+ deprecated: import("react-desc").PropTypesDescValidator;
40
+ };
41
+ helpMessage: {
42
+ deprecated: import("react-desc").PropTypesDescValidator;
43
+ };
35
44
  };
36
45
  /**
37
46
  *
@@ -1,10 +1,10 @@
1
1
  /// <reference types="react" />
2
- export declare const StyledWrapper: import("styled-components").StyledComponent<"div", any, any, never>;
3
- export declare const StyledTitleBubble: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("react").RefAttributes<unknown>>, any, {}, never>;
4
- export declare const StyledTitleLeftBubble: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("react").RefAttributes<unknown>>, any, {}, never>;
5
- export declare const StyledTitleRightBubble: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("react").RefAttributes<unknown>>, any, {}, never>;
6
- export declare const StyleBodyWrapper: import("styled-components").StyledComponent<"div", any, any, never>;
7
- export declare const StyleErrorMessage: import("styled-components").StyledComponent<"div", any, any, never>;
8
- export declare const StyleHelpMessage: import("styled-components").StyledComponent<"div", any, any, never>;
9
- export declare const StyledBubbleArrow: import("styled-components").StyledComponent<"div", any, any, never>;
10
- export declare const StyledColoredBubble: import("styled-components").StyledComponent<"div", any, any, never>;
2
+ export declare const StyledWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, any, never>;
3
+ export declare const StyledTitleBubble: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("@elliemae/ds-grid/types/types").GridPropsT & import("react").RefAttributes<HTMLDivElement>>, import("styled-components").DefaultTheme, {}, never>;
4
+ export declare const StyledTitleLeftBubble: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("@elliemae/ds-grid/types/types").GridPropsT & import("react").RefAttributes<HTMLDivElement>>, import("styled-components").DefaultTheme, {}, never>;
5
+ export declare const StyledTitleRightBubble: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("@elliemae/ds-grid/types/types").GridPropsT & import("react").RefAttributes<HTMLDivElement>>, import("styled-components").DefaultTheme, {}, never>;
6
+ export declare const StyleBodyWrapper: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, any, never>;
7
+ export declare const StyleErrorMessage: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, any, never>;
8
+ export declare const StyleHelpMessage: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, any, never>;
9
+ export declare const StyledBubbleArrow: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, any, never>;
10
+ export declare const StyledColoredBubble: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, any, never>;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,13 +1,33 @@
1
+ /// <reference path="../../../../../../shared/typings/react-desc.d.ts" />
1
2
  /// <reference types="react" />
2
3
  import { CardPropTypes } from './props';
3
4
  declare const ChatCard: {
4
5
  (props: CardPropTypes): JSX.Element;
5
6
  propTypes: {
6
7
  title: any;
7
- content: any;
8
- time: any;
9
- rightAddon: any;
8
+ content: {
9
+ defaultValue<T = unknown>(arg: T): {
10
+ deprecated: import("react-desc").PropTypesDescValidator;
11
+ };
12
+ isRequired: import("react-desc").PropTypesDescValidator;
13
+ };
14
+ time: {
15
+ defaultValue<T = unknown>(arg: T): {
16
+ deprecated: import("react-desc").PropTypesDescValidator;
17
+ };
18
+ isRequired: import("react-desc").PropTypesDescValidator;
19
+ };
20
+ rightAddon: {
21
+ defaultValue<T = unknown>(arg: T): {
22
+ deprecated: import("react-desc").PropTypesDescValidator;
23
+ };
24
+ isRequired: import("react-desc").PropTypesDescValidator;
25
+ };
10
26
  };
11
27
  };
12
- declare const ChatCardWithSchema: any;
28
+ declare const ChatCardWithSchema: {
29
+ (props?: CardPropTypes | undefined): JSX.Element;
30
+ propTypes: unknown;
31
+ toTypescript: () => import("react-desc").TypescriptSchema;
32
+ };
13
33
  export { ChatCard, ChatCardWithSchema };
@@ -1,9 +1,25 @@
1
+ /// <reference path="../../../../../../shared/typings/react-desc.d.ts" />
1
2
  /// <reference types="react" />
2
3
  export declare const propTypes: {
3
4
  title: any;
4
- content: any;
5
- time: any;
6
- rightAddon: any;
5
+ content: {
6
+ defaultValue<T = unknown>(arg: T): {
7
+ deprecated: import("react-desc").PropTypesDescValidator;
8
+ };
9
+ isRequired: import("react-desc").PropTypesDescValidator;
10
+ };
11
+ time: {
12
+ defaultValue<T = unknown>(arg: T): {
13
+ deprecated: import("react-desc").PropTypesDescValidator;
14
+ };
15
+ isRequired: import("react-desc").PropTypesDescValidator;
16
+ };
17
+ rightAddon: {
18
+ defaultValue<T = unknown>(arg: T): {
19
+ deprecated: import("react-desc").PropTypesDescValidator;
20
+ };
21
+ isRequired: import("react-desc").PropTypesDescValidator;
22
+ };
7
23
  };
8
24
  export interface CardPropTypes {
9
25
  title: string;