@atlaskit/smart-card 26.46.5 → 26.47.1

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 (103) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/extractors/common/meta/extractIsTrusted.js +0 -7
  3. package/dist/cjs/utils/analytics/analytics.js +1 -1
  4. package/dist/cjs/utils/index.js +0 -5
  5. package/dist/cjs/view/BlockCard/components/Content.js +6 -0
  6. package/dist/cjs/view/BlockCard/components/ContentHeader.js +6 -0
  7. package/dist/cjs/view/BlockCard/components/Name.js +6 -0
  8. package/dist/cjs/view/BlockCard/views/ErroredView.js +6 -0
  9. package/dist/cjs/view/BlockCard/views/ForbiddenView.js +13 -0
  10. package/dist/cjs/view/BlockCard/views/NotFoundView.js +6 -0
  11. package/dist/cjs/view/BlockCard/views/ResolvedView.js +12 -0
  12. package/dist/cjs/view/BlockCard/views/ResolvingView.js +6 -0
  13. package/dist/cjs/view/CardWithUrl/component.js +3 -2
  14. package/dist/cjs/view/CardWithUrl/loader.js +4 -2
  15. package/dist/cjs/view/HoverCard/components/ContentContainer.js +43 -0
  16. package/dist/cjs/view/HoverCard/components/CustomPopupContainer.js +7 -1
  17. package/dist/cjs/view/HoverCard/components/HoverCardContent.js +18 -3
  18. package/dist/cjs/view/HoverCard/components/views/resolved/index.js +6 -7
  19. package/dist/cjs/view/HoverCard/styled.js +4 -2
  20. package/dist/cjs/view/HoverCard/utils.js +7 -1
  21. package/dist/cjs/view/LinkUrl/index.js +1 -1
  22. package/dist/cjs/view/common/Icon.js +6 -0
  23. package/dist/es2019/extractors/common/meta/extractIsTrusted.js +0 -7
  24. package/dist/es2019/utils/analytics/analytics.js +1 -1
  25. package/dist/es2019/utils/index.js +0 -5
  26. package/dist/es2019/view/BlockCard/components/Content.js +6 -0
  27. package/dist/es2019/view/BlockCard/components/ContentHeader.js +6 -0
  28. package/dist/es2019/view/BlockCard/components/Name.js +6 -0
  29. package/dist/es2019/view/BlockCard/views/ErroredView.js +6 -0
  30. package/dist/es2019/view/BlockCard/views/ForbiddenView.js +13 -0
  31. package/dist/es2019/view/BlockCard/views/NotFoundView.js +6 -0
  32. package/dist/es2019/view/BlockCard/views/ResolvedView.js +12 -0
  33. package/dist/es2019/view/BlockCard/views/ResolvingView.js +6 -0
  34. package/dist/es2019/view/CardWithUrl/component.js +3 -2
  35. package/dist/es2019/view/CardWithUrl/loader.js +4 -2
  36. package/dist/es2019/view/HoverCard/components/ContentContainer.js +33 -0
  37. package/dist/es2019/view/HoverCard/components/CustomPopupContainer.js +8 -1
  38. package/dist/es2019/view/HoverCard/components/HoverCardContent.js +18 -6
  39. package/dist/es2019/view/HoverCard/components/views/resolved/index.js +6 -8
  40. package/dist/es2019/view/HoverCard/styled.js +4 -1
  41. package/dist/es2019/view/HoverCard/utils.js +4 -0
  42. package/dist/es2019/view/LinkUrl/index.js +1 -1
  43. package/dist/es2019/view/common/Icon.js +6 -0
  44. package/dist/esm/extractors/common/meta/extractIsTrusted.js +0 -7
  45. package/dist/esm/utils/analytics/analytics.js +1 -1
  46. package/dist/esm/utils/index.js +0 -5
  47. package/dist/esm/view/BlockCard/components/Content.js +6 -0
  48. package/dist/esm/view/BlockCard/components/ContentHeader.js +6 -0
  49. package/dist/esm/view/BlockCard/components/Name.js +6 -0
  50. package/dist/esm/view/BlockCard/views/ErroredView.js +6 -0
  51. package/dist/esm/view/BlockCard/views/ForbiddenView.js +13 -0
  52. package/dist/esm/view/BlockCard/views/NotFoundView.js +6 -0
  53. package/dist/esm/view/BlockCard/views/ResolvedView.js +12 -0
  54. package/dist/esm/view/BlockCard/views/ResolvingView.js +6 -0
  55. package/dist/esm/view/CardWithUrl/component.js +3 -2
  56. package/dist/esm/view/CardWithUrl/loader.js +4 -2
  57. package/dist/esm/view/HoverCard/components/ContentContainer.js +36 -0
  58. package/dist/esm/view/HoverCard/components/CustomPopupContainer.js +8 -1
  59. package/dist/esm/view/HoverCard/components/HoverCardContent.js +21 -6
  60. package/dist/esm/view/HoverCard/components/views/resolved/index.js +6 -7
  61. package/dist/esm/view/HoverCard/styled.js +4 -1
  62. package/dist/esm/view/HoverCard/utils.js +6 -0
  63. package/dist/esm/view/LinkUrl/index.js +1 -1
  64. package/dist/esm/view/common/Icon.js +6 -0
  65. package/dist/types/utils/index.d.ts +1 -1
  66. package/dist/types/view/BlockCard/components/Content.d.ts +6 -0
  67. package/dist/types/view/BlockCard/components/ContentHeader.d.ts +6 -0
  68. package/dist/types/view/BlockCard/components/Name.d.ts +6 -0
  69. package/dist/types/view/BlockCard/views/ErroredView.d.ts +6 -0
  70. package/dist/types/view/BlockCard/views/ForbiddenView.d.ts +12 -0
  71. package/dist/types/view/BlockCard/views/NotFoundView.d.ts +6 -0
  72. package/dist/types/view/BlockCard/views/ResolvedView.d.ts +12 -0
  73. package/dist/types/view/BlockCard/views/ResolvingView.d.ts +6 -0
  74. package/dist/types/view/Card/index.d.ts +1 -1
  75. package/dist/types/view/Card/types.d.ts +6 -0
  76. package/dist/types/view/CardWithUrl/types.d.ts +1 -0
  77. package/dist/types/view/HoverCard/components/ContentContainer.d.ts +4 -0
  78. package/dist/types/view/HoverCard/components/CustomPopupContainer.d.ts +5 -0
  79. package/dist/types/view/HoverCard/components/views/resolved/types.d.ts +3 -0
  80. package/dist/types/view/HoverCard/styled.d.ts +1 -0
  81. package/dist/types/view/HoverCard/types.d.ts +5 -0
  82. package/dist/types/view/HoverCard/utils.d.ts +2 -1
  83. package/dist/types/view/common/Icon.d.ts +6 -0
  84. package/dist/types-ts4.5/utils/index.d.ts +1 -1
  85. package/dist/types-ts4.5/view/BlockCard/components/Content.d.ts +6 -0
  86. package/dist/types-ts4.5/view/BlockCard/components/ContentHeader.d.ts +6 -0
  87. package/dist/types-ts4.5/view/BlockCard/components/Name.d.ts +6 -0
  88. package/dist/types-ts4.5/view/BlockCard/views/ErroredView.d.ts +6 -0
  89. package/dist/types-ts4.5/view/BlockCard/views/ForbiddenView.d.ts +12 -0
  90. package/dist/types-ts4.5/view/BlockCard/views/NotFoundView.d.ts +6 -0
  91. package/dist/types-ts4.5/view/BlockCard/views/ResolvedView.d.ts +12 -0
  92. package/dist/types-ts4.5/view/BlockCard/views/ResolvingView.d.ts +6 -0
  93. package/dist/types-ts4.5/view/Card/index.d.ts +1 -1
  94. package/dist/types-ts4.5/view/Card/types.d.ts +6 -0
  95. package/dist/types-ts4.5/view/CardWithUrl/types.d.ts +1 -0
  96. package/dist/types-ts4.5/view/HoverCard/components/ContentContainer.d.ts +4 -0
  97. package/dist/types-ts4.5/view/HoverCard/components/CustomPopupContainer.d.ts +5 -0
  98. package/dist/types-ts4.5/view/HoverCard/components/views/resolved/types.d.ts +3 -0
  99. package/dist/types-ts4.5/view/HoverCard/styled.d.ts +1 -0
  100. package/dist/types-ts4.5/view/HoverCard/types.d.ts +5 -0
  101. package/dist/types-ts4.5/view/HoverCard/utils.d.ts +2 -1
  102. package/dist/types-ts4.5/view/common/Icon.d.ts +6 -0
  103. package/package.json +2 -8
@@ -1,17 +1,19 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
1
2
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
3
  import _regeneratorRuntime from "@babel/runtime/regenerator";
3
4
  /** @jsx jsx */
4
5
  import { jsx } from '@emotion/react';
5
6
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
6
7
  import CopyIcon from '@atlaskit/icon/glyph/copy';
7
- import React, { useCallback, useEffect, useMemo, useRef } from 'react';
8
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
9
+ import { useSmartLinkContext } from '@atlaskit/link-provider';
8
10
  import { ActionName, CardDisplay, SmartLinkPosition, SmartLinkSize } from '../../../constants';
9
11
  import { extractMetadata } from '../../../extractors/hover/extractMetadata';
10
12
  import { useSmartLinkAnalytics } from '../../../state/analytics';
11
13
  import { getExtensionKey, getServices } from '../../../state/helpers';
12
14
  import { isSpecialEvent } from '../../../utils';
13
- import { HoverCardContainer, flexibleUiOptions, titleBlockCss } from '../styled';
14
- import { getSimulatedMetadata } from '../utils';
15
+ import { flexibleUiOptions, titleBlockCss } from '../styled';
16
+ import { getSimulatedMetadata, getIsAISummaryEnabled } from '../utils';
15
17
  import HoverCardLoadingView from './views/resolving';
16
18
  import HoverCardUnauthorisedView from './views/unauthorised';
17
19
  import HoverCardResolvedView from './views/resolved';
@@ -20,6 +22,7 @@ import { messages } from '../../../messages';
20
22
  import { fireLinkClickedEvent } from '../../../utils/analytics/click';
21
23
  import { useSmartCardState } from '../../../state/store';
22
24
  import HoverCardForbiddenView from './views/forbidden';
25
+ import ContentContainer from './ContentContainer';
23
26
  export var hoverCardClassName = 'smart-links-hover-preview';
24
27
  export var getCopyAction = function getCopyAction(url) {
25
28
  return {
@@ -77,9 +80,16 @@ var HoverCardContent = function HoverCardContent(_ref) {
77
80
  }, [cardState.details]);
78
81
  var linkState = useSmartCardState(url);
79
82
  var linkStatus = (_linkState$status = linkState.status) !== null && _linkState$status !== void 0 ? _linkState$status : 'pending';
83
+ var _useSmartLinkContext = useSmartLinkContext(),
84
+ isAdminHubAIEnabled = _useSmartLinkContext.isAdminHubAIEnabled;
85
+ var isAISummaryEnabled = getIsAISummaryEnabled(isAdminHubAIEnabled, cardState.details);
80
86
  var services = getServices(linkState.details);
81
87
  var statusRef = useRef(linkStatus);
82
88
  var analyticsRef = useRef(analytics);
89
+ var _useState = useState(false),
90
+ _useState2 = _slicedToArray(_useState, 2),
91
+ showPrism = _useState2[0],
92
+ setShowPrism = _useState2[1];
83
93
  useEffect(function () {
84
94
  /**
85
95
  * Must access current analytics object value via ref because its not stable
@@ -152,6 +162,9 @@ var HoverCardContent = function HoverCardContent(_ref) {
152
162
  var onClickStopPropagation = useCallback(function (e) {
153
163
  return e.stopPropagation();
154
164
  }, []);
165
+ var onAIActionChange = useCallback(function (state) {
166
+ setShowPrism(state === 'loading');
167
+ }, []);
155
168
  var getCardView = function getCardView(cardState) {
156
169
  if (cardState.metadataStatus === 'pending') {
157
170
  return jsx(HoverCardLoadingView, {
@@ -182,19 +195,21 @@ var HoverCardContent = function HoverCardContent(_ref) {
182
195
  cardActions: cardActions,
183
196
  cardState: cardState,
184
197
  flexibleCardProps: flexibleCardProps,
198
+ isAISummaryEnabled: isAISummaryEnabled,
185
199
  onActionClick: onActionClick,
200
+ onAIActionChange: onAIActionChange,
186
201
  titleBlockProps: titleBlockProps
187
202
  });
188
203
  }
189
204
  return null;
190
205
  };
191
206
  var cardView = getCardView(cardState);
192
- return cardView ? jsx("div", {
207
+ return cardView ? jsx(ContentContainer, {
193
208
  onMouseEnter: onMouseEnter,
194
209
  onMouseLeave: onMouseLeave,
195
210
  onClick: onClickStopPropagation,
196
- className: hoverCardClassName,
197
- css: HoverCardContainer
211
+ isAIEnabled: isAISummaryEnabled,
212
+ showPrism: showPrism
198
213
  }, cardView) : null;
199
214
  };
200
215
  export default HoverCardContent;
@@ -12,7 +12,6 @@ import { messages } from '../../../../../messages';
12
12
  import { FormattedMessage } from 'react-intl-next';
13
13
  import { getBooleanFF } from '@atlaskit/platform-feature-flags';
14
14
  import { getCanBeDatasource } from '../../../../../state/helpers';
15
- import { useSmartLinkContext } from '../../../../../state';
16
15
  export var toFooterActions = function toFooterActions(cardActions, onActionClick) {
17
16
  var followAction = {
18
17
  hideIcon: true,
@@ -48,14 +47,16 @@ export var toFooterActions = function toFooterActions(cardActions, onActionClick
48
47
  return [followAction].concat(_toConsumableArray(actions));
49
48
  };
50
49
  var HoverCardResolvedView = function HoverCardResolvedView(_ref) {
51
- var _cardState$details, _cardState$details2;
50
+ var _cardState$details;
52
51
  var flexibleCardProps = _ref.flexibleCardProps,
53
52
  titleBlockProps = _ref.titleBlockProps,
54
53
  analytics = _ref.analytics,
55
54
  cardState = _ref.cardState,
56
55
  _ref$cardActions = _ref.cardActions,
57
56
  cardActions = _ref$cardActions === void 0 ? [] : _ref$cardActions,
57
+ isAISummaryEnabled = _ref.isAISummaryEnabled,
58
58
  onActionClick = _ref.onActionClick,
59
+ onAIActionChange = _ref.onAIActionChange,
59
60
  extensionKey = _ref.extensionKey,
60
61
  url = _ref.url;
61
62
  var canBeDatasource = getCanBeDatasource(cardState.details);
@@ -93,9 +94,6 @@ var HoverCardResolvedView = function HoverCardResolvedView(_ref) {
93
94
  data: data,
94
95
  fallbackElementHeight: snippetHeight.current
95
96
  });
96
- var _useSmartLinkContext = useSmartLinkContext(),
97
- isAdminHubAIEnabled = _useSmartLinkContext.isAdminHubAIEnabled;
98
- var showAiView = getBooleanFF('platform.linking-platform.smart-card.hover-card-ai-summaries') && isAdminHubAIEnabled && ((_cardState$details2 = cardState.details) === null || _cardState$details2 === void 0 || (_cardState$details2 = _cardState$details2.meta) === null || _cardState$details2 === void 0 || (_cardState$details2 = _cardState$details2.supportedFeatures) === null || _cardState$details2 === void 0 ? void 0 : _cardState$details2.includes('AISummary'));
99
97
  return /*#__PURE__*/React.createElement(FlexibleCard, flexibleCardProps, imagePreview, /*#__PURE__*/React.createElement(TitleBlock, _extends({}, titleBlockProps, {
100
98
  metadataPosition: SmartLinkPosition.Top
101
99
  })), /*#__PURE__*/React.createElement(MetadataBlock, {
@@ -117,11 +115,12 @@ var HoverCardResolvedView = function HoverCardResolvedView(_ref) {
117
115
  }), getBooleanFF('platform.linking-platform.smart-card.enable-hover-card-related-urls') && /*#__PURE__*/React.createElement(RelatedUrlsBlock, {
118
116
  url: url,
119
117
  size: SmartLinkSize.Small
120
- }), showAiView ? /*#__PURE__*/React.createElement(AISummaryBlock, {
118
+ }), isAISummaryEnabled ? /*#__PURE__*/React.createElement(AISummaryBlock, {
121
119
  metadata: [{
122
120
  name: ElementName.Provider
123
121
  }],
124
- actions: footerActions
122
+ actions: footerActions,
123
+ onAIActionChange: onAIActionChange
125
124
  }) : /*#__PURE__*/React.createElement(FooterBlock, {
126
125
  actions: footerActions,
127
126
  size: SmartLinkSize.Large,
@@ -4,6 +4,8 @@ import { css } from '@emotion/react';
4
4
  import { loadingPlaceholderClassName } from '../../index';
5
5
  import { SmartLinkSize } from '../../constants';
6
6
  import { layers } from '@atlaskit/theme/constants';
7
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
8
+
7
9
  // Temporary fix for Confluence inline comment on editor mod has z-index of 500, Jira issue view has z-index of 510
8
10
  export var HOVER_CARD_Z_INDEX = layers.modal();
9
11
  export var flexibleUiOptions = {
@@ -14,12 +16,13 @@ export var flexibleUiOptions = {
14
16
  zIndex: HOVER_CARD_Z_INDEX + 1
15
17
  };
16
18
  export var CARD_WIDTH_REM = 24;
19
+ export var NEW_CARD_WIDTH_REM = 28;
17
20
  // gap between mouse cursor and hover card
18
21
  export var CARD_GAP_PX = 10;
19
22
  var blockGap = '0.5rem';
20
23
  var elementGap = '0.5rem';
21
24
  export var separatorCss = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n [data-separator] + [data-separator]:before {\n margin-right: ", ";\n }\n"])), elementGap);
22
- export var HoverCardContainer = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n background: none;\n border-width: 0;\n box-sizing: border-box;\n width: ", "rem;\n\n .", " {\n display: none;\n }\n"])), CARD_WIDTH_REM, loadingPlaceholderClassName);
25
+ export var HoverCardContainer = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n background: none;\n border-width: 0;\n box-sizing: border-box;\n width: ", "rem;\n\n .", " {\n display: none;\n }\n"])), getBooleanFF('platform.linking-platform.smart-card.hover-card-ai-summaries') ? NEW_CARD_WIDTH_REM : CARD_WIDTH_REM, loadingPlaceholderClassName);
23
26
  export var titleBlockCss = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n gap: ", ";\n\n ", "\n\n // title and subtitle element group\n [data-smart-element-group] {\n // gap between title and subtitle\n gap: 0.06rem;\n display: flex;\n /* subtitle element group */\n > [data-smart-element-group] {\n > span {\n margin-right: ", ";\n }\n }\n }\n\n [data-smart-element='Title'] {\n font-weight: 600;\n }\n"])), blockGap, separatorCss, elementGap);
24
27
  export var getTransitionStyles = function getTransitionStyles(snippetHeight) {
25
28
  return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n transition: height 300ms ease-in-out;\n height: ", "px;\n"])), snippetHeight);
@@ -198,4 +198,10 @@ export var getSimulatedBetterMetadata = function getSimulatedBetterMetadata() {
198
198
  default:
199
199
  return defaultMetadata;
200
200
  }
201
+ };
202
+ export var getIsAISummaryEnabled = function getIsAISummaryEnabled() {
203
+ var _response$meta;
204
+ var isAdminHubAIEnabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
205
+ var response = arguments.length > 1 ? arguments[1] : undefined;
206
+ return Boolean(getBooleanFF('platform.linking-platform.smart-card.hover-card-ai-summaries') && isAdminHubAIEnabled && (response === null || response === void 0 || (_response$meta = response.meta) === null || _response$meta === void 0 || (_response$meta = _response$meta.supportedFeatures) === null || _response$meta === void 0 ? void 0 : _response$meta.includes('AISummary')));
201
207
  };
@@ -10,7 +10,7 @@ import { useLinkWarningModal } from './LinkWarningModal/hooks/use-link-warning-m
10
10
  import LinkWarningModal from './LinkWarningModal';
11
11
  var PACKAGE_DATA = {
12
12
  packageName: "@atlaskit/smart-card",
13
- packageVersion: "26.46.5",
13
+ packageVersion: "26.47.1",
14
14
  componentName: 'linkUrl'
15
15
  };
16
16
  var Link = withLinkClickedEvent('a');
@@ -6,6 +6,12 @@ import React from 'react';
6
6
  import ImageLoader from 'react-render-image';
7
7
  import LinkIcon from '@atlaskit/icon/glyph/link';
8
8
  import { gs } from './utils';
9
+ /**
10
+ * Class name for selecting non-flexible block card icon image
11
+ *
12
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
13
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
14
+ */
9
15
  export var blockCardIconImageClassName = 'block-card-icon-image';
10
16
  var getImageStyles = function getImageStyles(isFlexibleUi) {
11
17
  if (isFlexibleUi) {
@@ -16,7 +16,7 @@ export declare const isSpecialKey: (event: React.MouseEvent | React.KeyboardEven
16
16
  export declare const isSpecialClick: (event: React.MouseEvent) => boolean;
17
17
  export declare const getIconForFileType: (fileMimeType: string) => React.ReactNode | undefined;
18
18
  export declare const getLabelForFileType: (fileMimeType: string) => React.ReactNode | undefined;
19
- export declare const getIframeSandboxAttribute: (isTrusted: boolean) => string | undefined;
19
+ export declare const getIframeSandboxAttribute: (isTrusted: boolean) => "allow-downloads allow-forms allow-popups allow-popups-to-escape-sandbox allow-presentation allow-same-origin allow-scripts" | undefined;
20
20
  export declare const handleOnClick: (handler: Function) => (e: React.BaseSyntheticEvent) => void;
21
21
  export declare const isIntersectionObserverSupported: () => boolean;
22
22
  export declare const sleep: (ms: number) => Promise<void>;
@@ -5,5 +5,11 @@ export interface ContentProps {
5
5
  children: React.ReactNode;
6
6
  isCompact?: boolean;
7
7
  }
8
+ /**
9
+ * Class name for selecting non-flexible block card content
10
+ *
11
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
12
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
13
+ */
8
14
  export declare const blockCardContentClassName = "block-card-content";
9
15
  export declare const Content: ({ children, isCompact }: ContentProps) => jsx.JSX.Element;
@@ -6,5 +6,11 @@ export interface ContentHeaderProps {
6
6
  link: string;
7
7
  children: React.ReactNode;
8
8
  }
9
+ /**
10
+ * Class name for selecting non-flexible block card header
11
+ *
12
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
13
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
14
+ */
9
15
  export declare const blockCardContentHeaderClassName = "block-card-content-header";
10
16
  export declare const ContentHeader: ({ onClick, link, children, }: ContentHeaderProps) => jsx.JSX.Element;
@@ -8,5 +8,11 @@ export interface NameProps {
8
8
  children?: React.ReactNode;
9
9
  textColor?: string;
10
10
  }
11
+ /**
12
+ * Class name for selecting non-flexible block card header name
13
+ *
14
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
15
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
16
+ */
11
17
  export declare const blockCardContentHeaderNameClassName = "block-card-content-header-name";
12
18
  export declare const Name: ({ name, isLeftPadded, testId, textColor, }: NameProps) => jsx.JSX.Element;
@@ -10,5 +10,11 @@ export interface ErroredViewProps {
10
10
  testId?: string;
11
11
  inheritDimensions?: boolean;
12
12
  }
13
+ /**
14
+ * Class name for selecting non-flexible errored block card
15
+ *
16
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
17
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
18
+ */
13
19
  export declare const blockCardErroredViewClassName = "block-card-errored-view";
14
20
  export declare const ErroredView: ({ isSelected, testId, link, onClick, onRetry, inheritDimensions, }: ErroredViewProps) => jsx.JSX.Element;
@@ -19,6 +19,18 @@ export interface PermissionDeniedProps {
19
19
  actionOptions?: CardActionOptions;
20
20
  requestAccessContext?: RequestAccessContextProps;
21
21
  }
22
+ /**
23
+ * Class name for selecting non-flexible forbidden block card
24
+ *
25
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
26
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
27
+ */
22
28
  export declare const blockCardForbiddenViewClassName = "block-card-forbidden-view";
29
+ /**
30
+ * Class name for selecting link inside non-flexible forbidden block card
31
+ *
32
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
33
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
34
+ */
23
35
  export declare const blockCardForbiddenViewLinkClassName = "block-card-forbidden-view-link";
24
36
  export declare const ForbiddenView: ({ context, isSelected, actions, testId, link, onClick, requestAccessContext, actionOptions, }: PermissionDeniedProps) => jsx.JSX.Element;
@@ -13,5 +13,11 @@ export interface NotFoundProps {
13
13
  icon: IconProps;
14
14
  testId?: string;
15
15
  }
16
+ /**
17
+ * Class name for selecting non-flexible not-found block card
18
+ *
19
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
20
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
21
+ */
16
22
  export declare const blockCardNotFoundViewClassName = "block-card-not-found-view";
17
23
  export declare const NotFoundView: ({ context, isSelected, testId, link, onClick, }: NotFoundProps) => jsx.JSX.Element;
@@ -30,6 +30,18 @@ export interface ResolvedViewProps {
30
30
  /** It determines whether a link source supports different design theme modes */
31
31
  isSupportTheming?: boolean;
32
32
  }
33
+ /**
34
+ * Class name for selecting non-flexible resolved block card
35
+ *
36
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
37
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
38
+ */
33
39
  export declare const blockCardResolvedViewClassName = "block-card-resolved-view";
40
+ /**
41
+ * Class name for selecting non-flexible resolved byline
42
+ *
43
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
44
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
45
+ */
34
46
  export declare const blockCardResolvedViewByClassName = "block-card-resolved-view-by";
35
47
  export declare const ResolvedView: ({ icon, actions, thumbnail, context, title, titleTextColor, titlePrefix, isSelected, users, handleAvatarClick, handleMoreAvatarsClick, onClick, link, byline, lozenge, details, testId, }: ResolvedViewProps) => jsx.JSX.Element;
@@ -5,5 +5,11 @@ export interface ResolvingProps {
5
5
  testId?: string;
6
6
  inheritDimensions?: boolean;
7
7
  }
8
+ /**
9
+ * Class name for selecting non-flexible resolving block card
10
+ *
11
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
12
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
13
+ */
8
14
  export declare const blockCardResolvingViewClassName = "block-card-resolving-view";
9
15
  export declare const ResolvingView: ({ isSelected, testId, inheritDimensions, }: ResolvingProps) => jsx.JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import { CardAppearance, CardPlatform, CardProps } from './types';
3
3
  import { WrappedComponentProps } from 'react-intl-next';
4
- export declare const Card: React.ForwardRefExoticComponent<Pick<Omit<React.PropsWithChildren<import("react-intl-next").WithIntlProps<CardProps & WrappedComponentProps<"intl">>>, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps> & React.RefAttributes<any> & import("@atlaskit/analytics-next").WithContextProps, "url" | "children" | "data" | "key" | "id" | "placeholder" | "onError" | "onClick" | "appearance" | "container" | "testId" | "analyticsContext" | "isSelected" | "inheritDimensions" | "actionOptions" | "onResolve" | "ui" | "showHoverPreview" | "showAuthTooltip" | "platform" | "isHovered" | "isFrameVisible" | "frameStyle" | "importer" | "showActions" | "showServerActions" | "fallbackComponent" | "embedIframeRef" | "embedIframeUrlType" | "inlinePreloaderStyle" | "analyticsEvents" | "forwardedRef"> & React.RefAttributes<any>>;
4
+ export declare const Card: React.ForwardRefExoticComponent<Pick<Omit<React.PropsWithChildren<import("react-intl-next").WithIntlProps<CardProps & WrappedComponentProps<"intl">>>, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps> & React.RefAttributes<any> & import("@atlaskit/analytics-next").WithContextProps, "url" | "children" | "data" | "key" | "id" | "placeholder" | "onError" | "onClick" | "appearance" | "container" | "testId" | "analyticsContext" | "isSelected" | "inheritDimensions" | "actionOptions" | "onResolve" | "ui" | "showHoverPreview" | "showAuthTooltip" | "platform" | "isHovered" | "isFrameVisible" | "frameStyle" | "importer" | "showActions" | "showServerActions" | "fallbackComponent" | "embedIframeRef" | "embedIframeUrlType" | "inlinePreloaderStyle" | "analyticsEvents" | "useLegacyBlockCard" | "forwardedRef"> & React.RefAttributes<any>>;
5
5
  export type { CardAppearance, CardProps, CardPlatform };
@@ -101,4 +101,10 @@ export interface CardProps extends WithAnalyticsEventsProps {
101
101
  */
102
102
  analyticsEvents?: AnalyticsFacade;
103
103
  placeholder?: string;
104
+ /**
105
+ * When enabled the legacy block card is always used, even if the enableFlexibleBlockCard flag is set to true.
106
+ * Usage is strongly discouraged. This should only be used if there is a specific reason you're
107
+ * unable to use the new flexible block cards.
108
+ */
109
+ useLegacyBlockCard?: boolean;
104
110
  }
@@ -47,4 +47,5 @@ export type CardWithUrlContentProps = {
47
47
  showAuthTooltip?: boolean;
48
48
  analyticsEvents?: AnalyticsFacade;
49
49
  placeholder?: string;
50
+ useLegacyBlockCard?: boolean;
50
51
  };
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { ContentContainerProps } from '../types';
3
+ declare const ContentContainer: React.FC<ContentContainerProps>;
4
+ export default ContentContainer;
@@ -1,5 +1,10 @@
1
1
  /** @jsx jsx */
2
2
  import React from 'react';
3
3
  import { PopupComponentProps } from '@atlaskit/popup';
4
+ /**
5
+ * The purpose of this component is to hide the default Popup border.
6
+ * HoverCard border implementation is in ContentContainer where it can
7
+ * change between the default border and prism border during runtime.
8
+ */
4
9
  declare const CustomPopupContainer: React.ForwardRefExoticComponent<Pick<PopupComponentProps, "children" | "style" | "id" | "tabIndex" | "data-testid" | "shouldRenderToParent" | "data-placement"> & React.RefAttributes<HTMLDivElement>>;
5
10
  export default CustomPopupContainer;
@@ -2,6 +2,7 @@ import { AnalyticsFacade } from '../../../../../state/analytics';
2
2
  import { LinkAction } from '../../../../../state/hooks-external/useSmartLinkActions';
3
3
  import { CardState } from '@atlaskit/linking-common';
4
4
  import { HoverCardLoadingViewProps } from '../resolving/types';
5
+ import { AISummaryBlockProps } from '../../../../FlexibleCard/components/blocks/ai-summary-block/types';
5
6
  export type HoverCardResolvedProps = {
6
7
  extensionKey?: string;
7
8
  id?: string;
@@ -9,5 +10,7 @@ export type HoverCardResolvedProps = {
9
10
  analytics: AnalyticsFacade;
10
11
  cardActions?: LinkAction[];
11
12
  cardState: CardState;
13
+ isAISummaryEnabled?: boolean;
12
14
  onActionClick: (actionId: string) => void;
15
+ onAIActionChange?: AISummaryBlockProps['onAIActionChange'];
13
16
  } & HoverCardLoadingViewProps;
@@ -2,6 +2,7 @@ import { FlexibleUiOptions } from '../FlexibleCard/types';
2
2
  export declare const HOVER_CARD_Z_INDEX: 510;
3
3
  export declare const flexibleUiOptions: FlexibleUiOptions;
4
4
  export declare const CARD_WIDTH_REM = 24;
5
+ export declare const NEW_CARD_WIDTH_REM = 28;
5
6
  export declare const CARD_GAP_PX = 10;
6
7
  export declare const separatorCss: import("@emotion/react").SerializedStyles;
7
8
  export declare const HoverCardContainer: import("@emotion/react").SerializedStyles;
@@ -99,6 +99,11 @@ export type HoverCardContentProps = {
99
99
  onMouseLeave?: MouseEventHandler;
100
100
  actionOptions?: CardActionOptions;
101
101
  };
102
+ export type ContentContainerProps = React.HTMLAttributes<HTMLDivElement> & {
103
+ isAIEnabled?: boolean;
104
+ showPrism?: boolean;
105
+ testId?: string;
106
+ };
102
107
  export type ImagePreviewProps = {
103
108
  data: JsonLd.Data.BaseData;
104
109
  fallbackElementHeight: number;
@@ -1,3 +1,4 @@
1
- import { JsonLd } from 'json-ld-types';
1
+ import type { JsonLd } from 'json-ld-types';
2
2
  export declare const getSimulatedMetadata: (extensionKey: string | undefined, data: JsonLd.Data.BaseData) => JsonLd.Primitives.Property<any>;
3
3
  export declare const getSimulatedBetterMetadata: (extensionKey: string | undefined, data: JsonLd.Data.BaseData) => JsonLd.Primitives.Property<any>;
4
+ export declare const getIsAISummaryEnabled: (isAdminHubAIEnabled?: boolean, response?: JsonLd.Response) => boolean;
@@ -8,5 +8,11 @@ export interface IconProps {
8
8
  testId?: string;
9
9
  isFlexibleUi?: boolean;
10
10
  }
11
+ /**
12
+ * Class name for selecting non-flexible block card icon image
13
+ *
14
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
15
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
16
+ */
11
17
  export declare const blockCardIconImageClassName = "block-card-icon-image";
12
18
  export declare const Icon: ({ url, icon, defaultIcon, testId, isFlexibleUi, }: IconProps) => jsx.JSX.Element;
@@ -16,7 +16,7 @@ export declare const isSpecialKey: (event: React.MouseEvent | React.KeyboardEven
16
16
  export declare const isSpecialClick: (event: React.MouseEvent) => boolean;
17
17
  export declare const getIconForFileType: (fileMimeType: string) => React.ReactNode | undefined;
18
18
  export declare const getLabelForFileType: (fileMimeType: string) => React.ReactNode | undefined;
19
- export declare const getIframeSandboxAttribute: (isTrusted: boolean) => string | undefined;
19
+ export declare const getIframeSandboxAttribute: (isTrusted: boolean) => "allow-downloads allow-forms allow-popups allow-popups-to-escape-sandbox allow-presentation allow-same-origin allow-scripts" | undefined;
20
20
  export declare const handleOnClick: (handler: Function) => (e: React.BaseSyntheticEvent) => void;
21
21
  export declare const isIntersectionObserverSupported: () => boolean;
22
22
  export declare const sleep: (ms: number) => Promise<void>;
@@ -5,5 +5,11 @@ export interface ContentProps {
5
5
  children: React.ReactNode;
6
6
  isCompact?: boolean;
7
7
  }
8
+ /**
9
+ * Class name for selecting non-flexible block card content
10
+ *
11
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
12
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
13
+ */
8
14
  export declare const blockCardContentClassName = "block-card-content";
9
15
  export declare const Content: ({ children, isCompact }: ContentProps) => jsx.JSX.Element;
@@ -6,5 +6,11 @@ export interface ContentHeaderProps {
6
6
  link: string;
7
7
  children: React.ReactNode;
8
8
  }
9
+ /**
10
+ * Class name for selecting non-flexible block card header
11
+ *
12
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
13
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
14
+ */
9
15
  export declare const blockCardContentHeaderClassName = "block-card-content-header";
10
16
  export declare const ContentHeader: ({ onClick, link, children, }: ContentHeaderProps) => jsx.JSX.Element;
@@ -8,5 +8,11 @@ export interface NameProps {
8
8
  children?: React.ReactNode;
9
9
  textColor?: string;
10
10
  }
11
+ /**
12
+ * Class name for selecting non-flexible block card header name
13
+ *
14
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
15
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
16
+ */
11
17
  export declare const blockCardContentHeaderNameClassName = "block-card-content-header-name";
12
18
  export declare const Name: ({ name, isLeftPadded, testId, textColor, }: NameProps) => jsx.JSX.Element;
@@ -10,5 +10,11 @@ export interface ErroredViewProps {
10
10
  testId?: string;
11
11
  inheritDimensions?: boolean;
12
12
  }
13
+ /**
14
+ * Class name for selecting non-flexible errored block card
15
+ *
16
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
17
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
18
+ */
13
19
  export declare const blockCardErroredViewClassName = "block-card-errored-view";
14
20
  export declare const ErroredView: ({ isSelected, testId, link, onClick, onRetry, inheritDimensions, }: ErroredViewProps) => jsx.JSX.Element;
@@ -19,6 +19,18 @@ export interface PermissionDeniedProps {
19
19
  actionOptions?: CardActionOptions;
20
20
  requestAccessContext?: RequestAccessContextProps;
21
21
  }
22
+ /**
23
+ * Class name for selecting non-flexible forbidden block card
24
+ *
25
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
26
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
27
+ */
22
28
  export declare const blockCardForbiddenViewClassName = "block-card-forbidden-view";
29
+ /**
30
+ * Class name for selecting link inside non-flexible forbidden block card
31
+ *
32
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
33
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
34
+ */
23
35
  export declare const blockCardForbiddenViewLinkClassName = "block-card-forbidden-view-link";
24
36
  export declare const ForbiddenView: ({ context, isSelected, actions, testId, link, onClick, requestAccessContext, actionOptions, }: PermissionDeniedProps) => jsx.JSX.Element;
@@ -13,5 +13,11 @@ export interface NotFoundProps {
13
13
  icon: IconProps;
14
14
  testId?: string;
15
15
  }
16
+ /**
17
+ * Class name for selecting non-flexible not-found block card
18
+ *
19
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
20
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
21
+ */
16
22
  export declare const blockCardNotFoundViewClassName = "block-card-not-found-view";
17
23
  export declare const NotFoundView: ({ context, isSelected, testId, link, onClick, }: NotFoundProps) => jsx.JSX.Element;
@@ -30,6 +30,18 @@ export interface ResolvedViewProps {
30
30
  /** It determines whether a link source supports different design theme modes */
31
31
  isSupportTheming?: boolean;
32
32
  }
33
+ /**
34
+ * Class name for selecting non-flexible resolved block card
35
+ *
36
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
37
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
38
+ */
33
39
  export declare const blockCardResolvedViewClassName = "block-card-resolved-view";
40
+ /**
41
+ * Class name for selecting non-flexible resolved byline
42
+ *
43
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
44
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
45
+ */
34
46
  export declare const blockCardResolvedViewByClassName = "block-card-resolved-view-by";
35
47
  export declare const ResolvedView: ({ icon, actions, thumbnail, context, title, titleTextColor, titlePrefix, isSelected, users, handleAvatarClick, handleMoreAvatarsClick, onClick, link, byline, lozenge, details, testId, }: ResolvedViewProps) => jsx.JSX.Element;
@@ -5,5 +5,11 @@ export interface ResolvingProps {
5
5
  testId?: string;
6
6
  inheritDimensions?: boolean;
7
7
  }
8
+ /**
9
+ * Class name for selecting non-flexible resolving block card
10
+ *
11
+ * @deprecated {@link https://hello.jira.atlassian.cloud/browse/ENGHEALTH-6878 Internal documentation for deprecation (no external access)}
12
+ * Using this selctor is deprecated as once the flexible block card feature flag is removed, this class will no longer be used.
13
+ */
8
14
  export declare const blockCardResolvingViewClassName = "block-card-resolving-view";
9
15
  export declare const ResolvingView: ({ isSelected, testId, inheritDimensions, }: ResolvingProps) => jsx.JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import { CardAppearance, CardPlatform, CardProps } from './types';
3
3
  import { WrappedComponentProps } from 'react-intl-next';
4
- export declare const Card: React.ForwardRefExoticComponent<Pick<Omit<React.PropsWithChildren<import("react-intl-next").WithIntlProps<CardProps & WrappedComponentProps<"intl">>>, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps> & React.RefAttributes<any> & import("@atlaskit/analytics-next").WithContextProps, "url" | "children" | "data" | "key" | "id" | "placeholder" | "onError" | "onClick" | "appearance" | "container" | "testId" | "analyticsContext" | "isSelected" | "inheritDimensions" | "actionOptions" | "onResolve" | "ui" | "showHoverPreview" | "showAuthTooltip" | "platform" | "isHovered" | "isFrameVisible" | "frameStyle" | "importer" | "showActions" | "showServerActions" | "fallbackComponent" | "embedIframeRef" | "embedIframeUrlType" | "inlinePreloaderStyle" | "analyticsEvents" | "forwardedRef"> & React.RefAttributes<any>>;
4
+ export declare const Card: React.ForwardRefExoticComponent<Pick<Omit<React.PropsWithChildren<import("react-intl-next").WithIntlProps<CardProps & WrappedComponentProps<"intl">>>, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps> & React.RefAttributes<any> & import("@atlaskit/analytics-next").WithContextProps, "url" | "children" | "data" | "key" | "id" | "placeholder" | "onError" | "onClick" | "appearance" | "container" | "testId" | "analyticsContext" | "isSelected" | "inheritDimensions" | "actionOptions" | "onResolve" | "ui" | "showHoverPreview" | "showAuthTooltip" | "platform" | "isHovered" | "isFrameVisible" | "frameStyle" | "importer" | "showActions" | "showServerActions" | "fallbackComponent" | "embedIframeRef" | "embedIframeUrlType" | "inlinePreloaderStyle" | "analyticsEvents" | "useLegacyBlockCard" | "forwardedRef"> & React.RefAttributes<any>>;
5
5
  export type { CardAppearance, CardProps, CardPlatform };
@@ -101,4 +101,10 @@ export interface CardProps extends WithAnalyticsEventsProps {
101
101
  */
102
102
  analyticsEvents?: AnalyticsFacade;
103
103
  placeholder?: string;
104
+ /**
105
+ * When enabled the legacy block card is always used, even if the enableFlexibleBlockCard flag is set to true.
106
+ * Usage is strongly discouraged. This should only be used if there is a specific reason you're
107
+ * unable to use the new flexible block cards.
108
+ */
109
+ useLegacyBlockCard?: boolean;
104
110
  }
@@ -47,4 +47,5 @@ export type CardWithUrlContentProps = {
47
47
  showAuthTooltip?: boolean;
48
48
  analyticsEvents?: AnalyticsFacade;
49
49
  placeholder?: string;
50
+ useLegacyBlockCard?: boolean;
50
51
  };
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { ContentContainerProps } from '../types';
3
+ declare const ContentContainer: React.FC<ContentContainerProps>;
4
+ export default ContentContainer;
@@ -1,5 +1,10 @@
1
1
  /** @jsx jsx */
2
2
  import React from 'react';
3
3
  import { PopupComponentProps } from '@atlaskit/popup';
4
+ /**
5
+ * The purpose of this component is to hide the default Popup border.
6
+ * HoverCard border implementation is in ContentContainer where it can
7
+ * change between the default border and prism border during runtime.
8
+ */
4
9
  declare const CustomPopupContainer: React.ForwardRefExoticComponent<Pick<PopupComponentProps, "children" | "style" | "id" | "tabIndex" | "data-testid" | "shouldRenderToParent" | "data-placement"> & React.RefAttributes<HTMLDivElement>>;
5
10
  export default CustomPopupContainer;