@atlaskit/smart-card 27.4.1 → 27.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/messages.js +10 -0
  3. package/dist/cjs/state/hooks/use-incoming-outgoing-links/index.js +100 -0
  4. package/dist/cjs/state/hooks/use-incoming-outgoing-links/query.js +11 -0
  5. package/dist/cjs/state/hooks/use-resolve/index.js +15 -120
  6. package/dist/cjs/state/hooks/use-response/index.js +132 -0
  7. package/dist/cjs/utils/analytics/analytics.js +1 -1
  8. package/dist/cjs/view/LinkUrl/index.js +1 -1
  9. package/dist/cjs/view/RelatedLinksModal/components/EmptyState.js +41 -0
  10. package/dist/cjs/view/RelatedLinksModal/views/errored/error-svg/index.js +62 -0
  11. package/dist/cjs/view/RelatedLinksModal/views/errored/index.js +22 -0
  12. package/dist/es2019/messages.js +10 -0
  13. package/dist/es2019/state/hooks/use-incoming-outgoing-links/index.js +44 -0
  14. package/dist/es2019/state/hooks/use-incoming-outgoing-links/query.js +23 -0
  15. package/dist/es2019/state/hooks/use-resolve/index.js +9 -112
  16. package/dist/es2019/state/hooks/use-response/index.js +126 -0
  17. package/dist/es2019/utils/analytics/analytics.js +1 -1
  18. package/dist/es2019/view/LinkUrl/index.js +1 -1
  19. package/dist/es2019/view/RelatedLinksModal/components/EmptyState.js +35 -0
  20. package/dist/es2019/view/RelatedLinksModal/views/errored/error-svg/index.js +54 -0
  21. package/dist/es2019/view/RelatedLinksModal/views/errored/index.js +13 -0
  22. package/dist/esm/messages.js +10 -0
  23. package/dist/esm/state/hooks/use-incoming-outgoing-links/index.js +93 -0
  24. package/dist/esm/state/hooks/use-incoming-outgoing-links/query.js +5 -0
  25. package/dist/esm/state/hooks/use-resolve/index.js +13 -118
  26. package/dist/esm/state/hooks/use-response/index.js +126 -0
  27. package/dist/esm/utils/analytics/analytics.js +1 -1
  28. package/dist/esm/view/LinkUrl/index.js +1 -1
  29. package/dist/esm/view/RelatedLinksModal/components/EmptyState.js +34 -0
  30. package/dist/esm/view/RelatedLinksModal/views/errored/error-svg/index.js +54 -0
  31. package/dist/esm/view/RelatedLinksModal/views/errored/index.js +15 -0
  32. package/dist/types/messages.d.ts +1 -1
  33. package/dist/types/state/hooks/use-incoming-outgoing-links/index.d.ts +9 -0
  34. package/dist/types/state/hooks/use-incoming-outgoing-links/query.d.ts +5 -0
  35. package/dist/types/state/hooks/use-response/index.d.ts +7 -0
  36. package/dist/types/view/RelatedLinksModal/components/EmptyState.d.ts +9 -0
  37. package/dist/types/view/RelatedLinksModal/views/errored/error-svg/index.d.ts +3 -0
  38. package/dist/types/view/RelatedLinksModal/views/errored/index.d.ts +2 -0
  39. package/dist/types-ts4.5/messages.d.ts +1 -1
  40. package/dist/types-ts4.5/state/hooks/use-incoming-outgoing-links/index.d.ts +9 -0
  41. package/dist/types-ts4.5/state/hooks/use-incoming-outgoing-links/query.d.ts +5 -0
  42. package/dist/types-ts4.5/state/hooks/use-response/index.d.ts +7 -0
  43. package/dist/types-ts4.5/view/RelatedLinksModal/components/EmptyState.d.ts +9 -0
  44. package/dist/types-ts4.5/view/RelatedLinksModal/views/errored/error-svg/index.d.ts +3 -0
  45. package/dist/types-ts4.5/view/RelatedLinksModal/views/errored/index.d.ts +2 -0
  46. package/package.json +4 -6
@@ -1,133 +1,28 @@
1
1
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _regeneratorRuntime from "@babel/runtime/regenerator";
3
3
  import { useCallback } from 'react';
4
- import { unstable_batchedUpdates } from 'react-dom';
5
4
  import { addMetadataToExperience } from '../../analytics';
6
- import { ACTION_ERROR, ACTION_ERROR_FALLBACK, ACTION_RELOADING, ACTION_RESOLVED, ACTION_UPDATE_METADATA_STATUS, APIError, cardAction, getStatus } from '@atlaskit/linking-common';
7
- import { ERROR_MESSAGE_FATAL, ERROR_MESSAGE_METADATA, ERROR_MESSAGE_OAUTH } from '../../actions/constants';
8
- import { getUnauthorizedJsonLd } from '../../../utils/jsonld';
9
5
  import { SmartLinkStatus } from '../../../constants';
10
6
  import { useSmartLinkContext } from '@atlaskit/link-provider';
7
+ import useResponse from '../use-response';
11
8
  var useResolve = function useResolve() {
12
9
  // Request JSON-LD data for the card from ORS, if it has extended
13
10
  // its cache lifespan OR there is no data for it currently. Once the data
14
- // has come back asynchronously, dispatch the resolved action for the card.
11
+ // has come back asynchronously, call the useResponse callback to
12
+ // dispatch the resolved action for the card.
15
13
  var _useSmartLinkContext = useSmartLinkContext(),
16
14
  store = _useSmartLinkContext.store,
17
- connections = _useSmartLinkContext.connections,
18
- config = _useSmartLinkContext.config;
19
- var getState = store.getState,
20
- dispatch = store.dispatch;
21
- var hasAuthFlowSupported = config.authFlow !== 'disabled';
22
- var setMetadataStatus = useCallback(function (url, metadataStatus) {
23
- dispatch(cardAction(ACTION_UPDATE_METADATA_STATUS, {
24
- url: url
25
- }, undefined, undefined, metadataStatus));
26
- }, [dispatch]);
27
- var handleResolvedLinkError = useCallback(function (url, error, response, isMetadataRequest) {
28
- var _ref = getState()[url] || {
29
- status: SmartLinkStatus.Pending,
30
- details: undefined
31
- },
32
- details = _ref.details;
33
- var hasData = !!(details && details.data);
34
-
35
- // If metadata request then set metadata status, return and do not alter link status
36
- if (isMetadataRequest) {
37
- setMetadataStatus(url, 'errored');
38
- return;
39
- }
40
- if (error.kind === 'fatal') {
41
- // If there's no previous data in the store for this URL, then bail
42
- // out and let the editor handle fallbacks (returns to a blue link).
43
- if (!hasData && status !== 'resolved') {
44
- dispatch(cardAction(ACTION_ERROR, {
45
- url: url
46
- }, details, error));
47
- throw error;
48
- }
49
- // If we already have resolved data for this URL in the store, then
50
- // simply fallback to the previous data.
51
- if (hasData) {
52
- dispatch(cardAction(ACTION_RESOLVED, {
53
- url: url
54
- }, details));
55
- }
56
- // Handle AuthErrors (user did not have access to resource) -
57
- // Missing AAID in ASAP claims, or missing UserContext, or 403 from downstream
58
- } else if (error.kind === 'auth') {
59
- dispatch(cardAction(ACTION_RESOLVED, {
60
- url: url
61
- }, getUnauthorizedJsonLd()));
62
- } else {
63
- if (error.kind === 'fallback') {
64
- // Fallback to blue link with smart link formatting. Not part of reliability.
65
- dispatch(cardAction(ACTION_ERROR_FALLBACK, {
66
- url: url
67
- }, response, error));
68
- } else {
69
- // Fallback to blue link with smart link formatting. Part of reliability.
70
- dispatch(cardAction(ACTION_ERROR, {
71
- url: url
72
- }, undefined, error));
73
- }
74
- }
75
- }, [getState, setMetadataStatus, dispatch]);
76
- var handleResolvedLinkSuccess = useCallback(function (resourceUrl, response, isReloading, isMetadataRequest) {
77
- //if a link resolves normally, metadata will also always be resolved
78
- setMetadataStatus(resourceUrl, 'resolved');
79
- // Dispatch Analytics and resolved card action - including unauthorized states.
80
- if (isReloading) {
81
- dispatch(cardAction(ACTION_RELOADING, {
82
- url: resourceUrl
83
- }, response));
84
- } else {
85
- dispatch(cardAction(ACTION_RESOLVED, {
86
- url: resourceUrl
87
- }, response, undefined, undefined, isMetadataRequest));
88
- }
89
- }, [setMetadataStatus, dispatch]);
90
- var handleResolvedLinkResponse = useCallback(function (resourceUrl, response) {
91
- var isReloading = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
92
- var isMetadataRequest = arguments.length > 3 ? arguments[3] : undefined;
93
- var hostname = new URL(resourceUrl).hostname;
94
- var nextStatus = response ? getStatus(response) : 'fatal';
95
-
96
- // If we require authorization & do not have an authFlow available,
97
- // throw an error and render as a normal blue link.
98
- if ((nextStatus === 'unauthorized' || nextStatus === 'forbidden') && !hasAuthFlowSupported) {
99
- handleResolvedLinkError(resourceUrl, new APIError('fallback', hostname, ERROR_MESSAGE_OAUTH), response, isMetadataRequest);
100
- return;
101
- }
102
-
103
- // Handle any other errors
104
- if (nextStatus === 'fatal') {
105
- handleResolvedLinkError(resourceUrl, new APIError('fatal', hostname, ERROR_MESSAGE_FATAL), undefined, isMetadataRequest);
106
- return;
107
- }
108
-
109
- // Handle errors of any other kind in the metadata request response
110
- if (isMetadataRequest && nextStatus !== 'resolved') {
111
- handleResolvedLinkError(resourceUrl, new APIError('error', hostname, ERROR_MESSAGE_METADATA), response, isMetadataRequest);
112
- return;
113
- }
114
-
115
- /**
116
- * Using unstable_batchedUpdates because this store update happens async and trigers a rerender
117
- * more info:
118
- * https://github.com/facebook/react/blob/v18.2.0/packages/use-sync-external-store/src/useSyncExternalStoreShimClient.js#L113
119
- * https://react-redux.js.org/api/batch
120
- */
121
- unstable_batchedUpdates(function () {
122
- handleResolvedLinkSuccess(resourceUrl, response, isReloading, isMetadataRequest);
123
- });
124
- }, [handleResolvedLinkError, handleResolvedLinkSuccess, hasAuthFlowSupported]);
15
+ connections = _useSmartLinkContext.connections;
16
+ var getState = store.getState;
17
+ var _useResponse = useResponse(),
18
+ handleResolvedLinkResponse = _useResponse.handleResolvedLinkResponse,
19
+ handleResolvedLinkError = _useResponse.handleResolvedLinkError;
125
20
  return useCallback( /*#__PURE__*/function () {
126
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(url) {
21
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(url) {
127
22
  var isReloading,
128
23
  isMetadataRequest,
129
24
  id,
130
- _ref3,
25
+ _ref2,
131
26
  details,
132
27
  hasData,
133
28
  _args = arguments;
@@ -137,10 +32,10 @@ var useResolve = function useResolve() {
137
32
  isReloading = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;
138
33
  isMetadataRequest = _args.length > 2 && _args[2] !== undefined ? _args[2] : false;
139
34
  id = _args.length > 3 && _args[3] !== undefined ? _args[3] : '';
140
- _ref3 = getState()[url] || {
35
+ _ref2 = getState()[url] || {
141
36
  status: SmartLinkStatus.Pending,
142
37
  details: undefined
143
- }, details = _ref3.details;
38
+ }, details = _ref2.details;
144
39
  hasData = !!(details && details.data);
145
40
  if (!(isReloading || !hasData || isMetadataRequest)) {
146
41
  _context.next = 9;
@@ -162,7 +57,7 @@ var useResolve = function useResolve() {
162
57
  }, _callee);
163
58
  }));
164
59
  return function (_x) {
165
- return _ref2.apply(this, arguments);
60
+ return _ref.apply(this, arguments);
166
61
  };
167
62
  }(), [connections.client, getState, handleResolvedLinkError, handleResolvedLinkResponse]);
168
63
  };
@@ -0,0 +1,126 @@
1
+ import { useCallback, useMemo } from 'react';
2
+ import { ACTION_ERROR, ACTION_ERROR_FALLBACK, ACTION_RELOADING, ACTION_RESOLVED, ACTION_UPDATE_METADATA_STATUS, APIError, cardAction, getStatus } from '@atlaskit/linking-common';
3
+ import { SmartLinkStatus } from '../../../constants';
4
+ import { getUnauthorizedJsonLd } from '../../../utils/jsonld';
5
+ import { ERROR_MESSAGE_FATAL, ERROR_MESSAGE_METADATA, ERROR_MESSAGE_OAUTH } from '../../actions/constants';
6
+ import { unstable_batchedUpdates } from 'react-dom';
7
+ import { useSmartLinkContext } from '@atlaskit/link-provider';
8
+ var useResponse = function useResponse() {
9
+ // Takes in the JSON-LD response and dispatch the resolved action for the card.
10
+ // It will dispatch a successful or error action
11
+ var _useSmartLinkContext = useSmartLinkContext(),
12
+ store = _useSmartLinkContext.store,
13
+ config = _useSmartLinkContext.config;
14
+ var getState = store.getState,
15
+ dispatch = store.dispatch;
16
+ var hasAuthFlowSupported = config.authFlow !== 'disabled';
17
+ var setMetadataStatus = useCallback(function (url, metadataStatus) {
18
+ dispatch(cardAction(ACTION_UPDATE_METADATA_STATUS, {
19
+ url: url
20
+ }, undefined, undefined, metadataStatus));
21
+ }, [dispatch]);
22
+ var handleResolvedLinkError = useCallback(function (url, error, response, isMetadataRequest) {
23
+ var _ref = getState()[url] || {
24
+ status: SmartLinkStatus.Pending,
25
+ details: undefined
26
+ },
27
+ details = _ref.details;
28
+ var hasData = !!(details && details.data);
29
+ // If metadata request then set metadata status, return and do not alter link status
30
+ if (isMetadataRequest) {
31
+ setMetadataStatus(url, 'errored');
32
+ return;
33
+ }
34
+ if (error.kind === 'fatal') {
35
+ // If there's no previous data in the store for this URL, then bail
36
+ // out and let the editor handle fallbacks (returns to a blue link).
37
+ if (!hasData && status !== 'resolved') {
38
+ dispatch(cardAction(ACTION_ERROR, {
39
+ url: url
40
+ }, details, error));
41
+ throw error;
42
+ }
43
+ // If we already have resolved data for this URL in the store, then
44
+ // simply fallback to the previous data.
45
+ if (hasData) {
46
+ dispatch(cardAction(ACTION_RESOLVED, {
47
+ url: url
48
+ }, details));
49
+ }
50
+ // Handle AuthErrors (user did not have access to resource) -
51
+ // Missing AAID in ASAP claims, or missing UserContext, or 403 from downstream
52
+ } else if (error.kind === 'auth') {
53
+ dispatch(cardAction(ACTION_RESOLVED, {
54
+ url: url
55
+ }, getUnauthorizedJsonLd()));
56
+ } else {
57
+ if (error.kind === 'fallback') {
58
+ // Fallback to blue link with smart link formatting. Not part of reliability.
59
+ dispatch(cardAction(ACTION_ERROR_FALLBACK, {
60
+ url: url
61
+ }, response, error));
62
+ } else {
63
+ // Fallback to blue link with smart link formatting. Part of reliability.
64
+ dispatch(cardAction(ACTION_ERROR, {
65
+ url: url
66
+ }, undefined, error));
67
+ }
68
+ }
69
+ }, [getState, setMetadataStatus, dispatch]);
70
+ var handleResolvedLinkSuccess = useCallback(function (resourceUrl, response, isReloading, isMetadataRequest) {
71
+ //if a link resolves normally, metadata will also always be resolved
72
+ setMetadataStatus(resourceUrl, 'resolved');
73
+ // Dispatch Analytics and resolved card action - including unauthorized states.
74
+ if (isReloading) {
75
+ dispatch(cardAction(ACTION_RELOADING, {
76
+ url: resourceUrl
77
+ }, response));
78
+ } else {
79
+ dispatch(cardAction(ACTION_RESOLVED, {
80
+ url: resourceUrl
81
+ }, response, undefined, undefined, isMetadataRequest));
82
+ }
83
+ }, [setMetadataStatus, dispatch]);
84
+ var handleResolvedLinkResponse = useCallback(function (resourceUrl, response) {
85
+ var isReloading = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
86
+ var isMetadataRequest = arguments.length > 3 ? arguments[3] : undefined;
87
+ var hostname = new URL(resourceUrl).hostname;
88
+ var nextStatus = response ? getStatus(response) : 'fatal';
89
+
90
+ // If we require authorization & do not have an authFlow available,
91
+ // throw an error and render as a normal blue link.
92
+ if ((nextStatus === 'unauthorized' || nextStatus === 'forbidden') && !hasAuthFlowSupported) {
93
+ handleResolvedLinkError(resourceUrl, new APIError('fallback', hostname, ERROR_MESSAGE_OAUTH), response, isMetadataRequest);
94
+ return;
95
+ }
96
+
97
+ // Handle any other errors
98
+ if (nextStatus === 'fatal') {
99
+ handleResolvedLinkError(resourceUrl, new APIError('fatal', hostname, ERROR_MESSAGE_FATAL), undefined, isMetadataRequest);
100
+ return;
101
+ }
102
+
103
+ // Handle errors of any other kind in the metadata request response
104
+ if (isMetadataRequest && nextStatus !== 'resolved') {
105
+ handleResolvedLinkError(resourceUrl, new APIError('error', hostname, ERROR_MESSAGE_METADATA), response, isMetadataRequest);
106
+ return;
107
+ }
108
+
109
+ /**
110
+ * Using unstable_batchedUpdates because this store update happens async and triggers a rerender
111
+ * more info:
112
+ * https://github.com/facebook/react/blob/v18.2.0/packages/use-sync-external-store/src/useSyncExternalStoreShimClient.js#L113
113
+ * https://react-redux.js.org/api/batch
114
+ */
115
+ unstable_batchedUpdates(function () {
116
+ handleResolvedLinkSuccess(resourceUrl, response, isReloading, isMetadataRequest);
117
+ });
118
+ }, [handleResolvedLinkError, handleResolvedLinkSuccess, hasAuthFlowSupported]);
119
+ return useMemo(function () {
120
+ return {
121
+ handleResolvedLinkError: handleResolvedLinkError,
122
+ handleResolvedLinkResponse: handleResolvedLinkResponse
123
+ };
124
+ }, [handleResolvedLinkError, handleResolvedLinkResponse]);
125
+ };
126
+ export default useResponse;
@@ -15,7 +15,7 @@ export var ANALYTICS_CHANNEL = 'media';
15
15
  export var context = {
16
16
  componentName: 'smart-cards',
17
17
  packageName: "@atlaskit/smart-card",
18
- packageVersion: "27.4.1"
18
+ packageVersion: "27.4.3"
19
19
  };
20
20
  export var TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
21
21
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -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: "27.4.1",
13
+ packageVersion: "27.4.3",
14
14
  componentName: 'linkUrl'
15
15
  };
16
16
  var Link = withLinkClickedEvent('a');
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import Heading from '@atlaskit/heading';
3
+ import { Box, xcss } from '@atlaskit/primitives';
4
+ var emptyStateStyles = xcss({
5
+ alignItems: "center",
6
+ display: 'flex',
7
+ flexDirection: 'column',
8
+ gap: "space.100",
9
+ height: '100%',
10
+ justifyContent: 'center',
11
+ marginLeft: 'space.300',
12
+ marginRight: 'space.300',
13
+ textAlign: 'center'
14
+ });
15
+ var descriptionStyles = xcss({
16
+ marginTop: "var(--ds-space-0, 0px)",
17
+ marginBottom: "var(--ds-space-300, 24px)",
18
+ color: 'color.text'
19
+ });
20
+ export var EmptyState = function EmptyState(_ref) {
21
+ var testId = _ref.testId,
22
+ header = _ref.header,
23
+ description = _ref.description,
24
+ renderImage = _ref.renderImage;
25
+ return /*#__PURE__*/React.createElement(Box, {
26
+ xcss: emptyStateStyles,
27
+ testId: testId
28
+ }, renderImage === null || renderImage === void 0 ? void 0 : renderImage(), /*#__PURE__*/React.createElement(Heading, {
29
+ size: "small"
30
+ }, header), description && /*#__PURE__*/React.createElement(Box, {
31
+ as: "p",
32
+ xcss: descriptionStyles
33
+ }, description));
34
+ };
@@ -0,0 +1,54 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ /** @jsx jsx */
3
+ import { css, jsx } from '@emotion/react';
4
+ var errorStyles = css({
5
+ width: '80px',
6
+ margin: "0 auto ".concat("var(--ds-space-300, 24px)"),
7
+ display: 'block'
8
+ });
9
+ export var ErrorSVG = function ErrorSVG(props) {
10
+ var id = 'related-links-error-svg';
11
+ return jsx("svg", _extends({
12
+ "data-testid": id,
13
+ viewBox: "0 0 164 212",
14
+ fill: "none",
15
+ xmlns: "http://www.w3.org/2000/svg",
16
+ css: errorStyles
17
+ }, props), jsx("path", {
18
+ d: "m95.43 74.16 66.44 115.08c5.84 10.12-1.46 22.76-13.14 22.76H15.85c-11.68 0-18.98-12.65-13.14-22.76L69.15 74.16c5.84-10.12 20.44-10.12 26.28 0Zm-7.56 83.55 2.88-44.35c.34-5.29-3.86-9.78-9.16-9.78-5.31 0-9.51 4.48-9.16 9.78l2.88 44.35a6.3 6.3 0 0 0 6.28 5.89c3.31 0 6.06-2.58 6.28-5.89Zm-15.84 23.54c0 5.66 4.76 10.1 10.39 9.58 4.85-.45 8.73-4.5 8.83-9.37.11-5.45-4.31-9.94-9.73-9.94-5.23-.01-9.49 4.37-9.49 9.73Z",
19
+ fill: "url(#".concat(id, ")")
20
+ }), jsx("path", {
21
+ opacity: ".6",
22
+ d: "M93.35 27.17 85.94.45c-.17-.62-1.07-.58-1.19.05l-4.66 25.1-5.8-1.08a.612.612 0 0 0-.7.76L81 52c.17.62 1.07.58 1.19-.05l4.66-25.1 5.8 1.08c.45.08.82-.33.7-.76ZM66.77 41.81 55.9 33.26c-.22-.18-.53.07-.41.33l5.53 11.43-2.66 1.29c-.18.09-.2.33-.05.45l10.87 8.55c.22.18.53-.07.41-.33l-5.53-11.43 2.66-1.29c.17-.08.2-.33.05-.45Z",
23
+ fill: "#C1C7D0"
24
+ }), jsx("path", {
25
+ opacity: ".6",
26
+ d: "M102.78 56.75a.993.993 0 0 1-.92-1.38c-.24-.77-2.29-2.85-3.54-4.11-2.97-3.01-4.93-5-3.84-6.49 1.09-1.48 3.58-.22 7.35 1.7 1.32.67 3.35 1.7 4.45 2.03-.64-.95-2.24-2.58-3.28-3.63-2.97-3.01-4.93-5-3.84-6.49 1.08-1.48 3.58-.22 7.34 1.7 1.32.67 3.34 1.7 4.45 2.03-.64-.95-2.24-2.57-3.28-3.62-2.97-3.01-4.93-5-3.84-6.49 1.08-1.48 3.57-.22 7.34 1.7 1.58.8 4.18 2.13 4.98 2.13a1.005 1.005 0 0 1 1.46 1.36c-1.09 1.48-3.57.22-7.34-1.7-1.32-.67-3.34-1.7-4.44-2.03.64.95 2.24 2.57 3.28 3.62 2.97 3.01 4.93 5 3.84 6.49-1.08 1.48-3.57.22-7.34-1.7-1.32-.67-3.35-1.7-4.45-2.03.64.95 2.24 2.57 3.28 3.63 2.97 3.01 4.93 5 3.84 6.49-1.09 1.48-3.58.22-7.35-1.7-1.32-.67-3.35-1.71-4.45-2.03.64.95 2.24 2.58 3.28 3.63 2.97 3.01 4.93 5 3.84 6.49-.21.26-.51.4-.82.4Zm5.56 14.32c-.35 0-.69-.19-.88-.52-1.04-1.88-2.22-4.02-.91-5.21 1.31-1.2 3.34.18 5.49 1.63.87.59 2.26 1.53 2.93 1.71-.12-.68-.93-2.15-1.45-3.07-1.26-2.27-2.45-4.41-1.14-5.61 1.31-1.2 3.34.18 5.49 1.63.96.65 2.54 1.72 3.1 1.74a1 1 0 0 1 1.27 1.54c-1.31 1.2-3.34-.17-5.49-1.63-.87-.59-2.26-1.53-2.93-1.71.12.68.93 2.15 1.45 3.07 1.26 2.27 2.45 4.41 1.14 5.61-1.31 1.2-3.34-.18-5.49-1.63-.87-.59-2.26-1.53-2.93-1.71.12.68.93 2.14 1.22 2.67.27.48.09 1.09-.39 1.36-.15.09-.32.13-.48.13Zm-54.32-2.89c-.22 0-.44-.04-.67-.14-1.64-.69-1.24-3.11-.81-5.67.17-1.04.45-2.7.33-3.38-.57.39-1.56 1.75-2.18 2.6-1.53 2.09-2.99 4.07-4.62 3.38a.991.991 0 0 1-.53-1.31c.2-.48.73-.72 1.21-.57.52-.21 1.65-1.75 2.34-2.68 1.53-2.09 2.98-4.08 4.62-3.38 1.64.69 1.24 3.11.81 5.67-.17 1.04-.45 2.7-.33 3.38.57-.39 1.56-1.75 2.18-2.6 1.53-2.09 2.98-4.08 4.62-3.38 1.63.69 1.24 3.09.89 5.21-.09.54-.6.91-1.15.83-.54-.09-.92-.6-.83-1.15.1-.59.37-2.24.26-2.92-.57.39-1.56 1.75-2.18 2.6-1.33 1.79-2.59 3.51-3.96 3.51Z",
27
+ fill: "#B3BAC5"
28
+ }), jsx("defs", null, jsx("linearGradient", {
29
+ id: id,
30
+ x1: "26.169",
31
+ y1: "228.621",
32
+ x2: "138.408",
33
+ y2: "116.382",
34
+ gradientUnits: "userSpaceOnUse"
35
+ }, jsx("stop", {
36
+ stopColor: "#C1C7D0"
37
+ }), jsx("stop", {
38
+ offset: ".297",
39
+ stopColor: "#C6CBD4",
40
+ stopOpacity: ".881"
41
+ }), jsx("stop", {
42
+ offset: ".63",
43
+ stopColor: "#D3D7DE",
44
+ stopOpacity: ".748"
45
+ }), jsx("stop", {
46
+ offset: ".98",
47
+ stopColor: "#E9EBEF",
48
+ stopOpacity: ".608"
49
+ }), jsx("stop", {
50
+ offset: "1",
51
+ stopColor: "#EBECF0",
52
+ stopOpacity: ".6"
53
+ }))));
54
+ };
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { FormattedMessage, useIntl } from "react-intl-next";
3
+ import { messages } from '../../../../messages';
4
+ import { ErrorSVG } from "./error-svg";
5
+ import { EmptyState } from '../../components/EmptyState';
6
+ export var RelatedLinksErroredView = function RelatedLinksErroredView() {
7
+ var intl = useIntl();
8
+ return /*#__PURE__*/React.createElement(EmptyState, {
9
+ renderImage: function renderImage() {
10
+ return /*#__PURE__*/React.createElement(ErrorSVG, null);
11
+ },
12
+ header: intl.formatMessage(messages.related_links_modal_error_header),
13
+ description: /*#__PURE__*/React.createElement(FormattedMessage, messages.related_links_modal_error_message)
14
+ });
15
+ };
@@ -1,6 +1,6 @@
1
1
  import { type MessageDescriptor } from 'react-intl-next';
2
2
  export type RequestAccessMessageKey = 'click_to_join' | 'click_to_join_description' | 'forbidden_description' | 'request_access' | 'request_access_description' | 'request_access_pending' | 'request_access_pending_title' | 'request_access_pending_description' | 'request_denied_description' | 'default_no_access_title' | 'direct_access_title' | 'direct_access_description' | 'direct_access' | 'access_exists_description' | 'not_found_description' | 'not_found_title';
3
- export type MessageKey = 'assigned_to' | 'ai_summarize' | 'ai_summarized' | 'ai_summarized_abbreviation' | 'ai_summarized_info' | 'ai_summarized_info_short' | 'ai_summarizing' | 'ai_summary_error_generic' | 'ai_summary_error_acceptable_use_violation' | 'ai_summary_error_hipaa_content_detected' | 'ai_summary_error_exceeding_context_length_error' | 'ai_summary_action' | 'ai_summary_action_description' | 'automation_action_title' | 'automation_action_tooltip' | 'automation_action_icon_label' | 'automation_action_confluence_page_modal_title' | 'automation_action_confluence_page_modal_description' | 'copy_summary_action' | 'copy_summary_action_description' | 'copied_summary_action_description' | 'beta' | 'cannot_find_link' | 'connect_link_account_card' | 'connect_link_account_card_name' | 'connect_link_account_card_description' | 'connect_unauthorised_account_action' | 'connect_unauthorised_account_description' | 'connect_unauthorised_account_description_no_provider' | 'continue' | 'copy_url_to_clipboard' | 'copied_url_to_clipboard' | 'could_not_load_link' | 'download' | 'download_description' | 'download_file' | 'follow' | 'follow_project_description' | 'follow_project' | 'follow_goal' | 'follow_goal_description' | 'follow_project_error' | 'follow_goal_error' | 'go_back' | 'invalid_permissions' | 'invalid_permissions_description' | 'join_to_view' | 'connect_link_account' | 'created_by' | 'created_on_relative' | 'created_on_absolute' | 'check_this_link' | 'delete' | 'edit' | 'learn_more_about_smart_links' | 'learn_more_about_connecting_account' | 'loading' | 'link_safety_warning_message' | 'modified_by' | 'modified_on_relative' | 'modified_on_absolute' | 'more_actions' | 'not_found_title' | 'not_found_description' | 'open_issue_in_jira' | 'open_link_in_a_new_tab' | 'owned_by' | 'preview_description' | 'preview_improved' | 'preview_close' | 'preview_max_size' | 'preview_min_size' | 'priority_blocker' | 'priority_critical' | 'priority_high' | 'priority_highest' | 'priority_low' | 'priority_lowest' | 'priority_major' | 'priority_medium' | 'priority_minor' | 'priority_trivial' | 'priority_undefined' | 'forbidden_access' | 'pending_request' | 'read_time' | 'restricted_link' | 'request_access_to_view' | 'request_denied' | 'sent_on_relative' | 'sent_on_absolute' | 'status_change_load_error' | 'status_change_permission_error' | 'status_change_update_error' | 'try_again' | 'try_another_account' | 'unauthorised_account_description' | 'unauthorised_account_description_no_provider' | 'unauthorised_account_name' | 'unauthorised_account_name_no_provider' | 'unassigned' | 'unfollow' | 'unfollow_project_description' | 'unfollow_project' | 'unfollow_project_error' | 'unfollow_goal' | 'unfollow_goal_description' | 'unfollow_goal_error' | 'view' | 'viewIn' | 'viewOriginal' | 'actions' | 'add_account' | 'cancel' | 'close' | 'connect_to' | 'connect_account_description' | 'retry' | 'save' | 'unlink_account' | RequestAccessMessageKey | 'related_work_items_not_found' | 'last_mentioned_in' | 'related' | 'generic_error_message' | 'related_links_modal_title' | 'related_links_view_related_urls' | 'related_links_found_in' | 'related_links_includes_links_to' | 'related_links_not_found';
3
+ export type MessageKey = 'assigned_to' | 'ai_summarize' | 'ai_summarized' | 'ai_summarized_abbreviation' | 'ai_summarized_info' | 'ai_summarized_info_short' | 'ai_summarizing' | 'ai_summary_error_generic' | 'ai_summary_error_acceptable_use_violation' | 'ai_summary_error_hipaa_content_detected' | 'ai_summary_error_exceeding_context_length_error' | 'ai_summary_action' | 'ai_summary_action_description' | 'automation_action_title' | 'automation_action_tooltip' | 'automation_action_icon_label' | 'automation_action_confluence_page_modal_title' | 'automation_action_confluence_page_modal_description' | 'copy_summary_action' | 'copy_summary_action_description' | 'copied_summary_action_description' | 'beta' | 'cannot_find_link' | 'connect_link_account_card' | 'connect_link_account_card_name' | 'connect_link_account_card_description' | 'connect_unauthorised_account_action' | 'connect_unauthorised_account_description' | 'connect_unauthorised_account_description_no_provider' | 'continue' | 'copy_url_to_clipboard' | 'copied_url_to_clipboard' | 'could_not_load_link' | 'download' | 'download_description' | 'download_file' | 'follow' | 'follow_project_description' | 'follow_project' | 'follow_goal' | 'follow_goal_description' | 'follow_project_error' | 'follow_goal_error' | 'go_back' | 'invalid_permissions' | 'invalid_permissions_description' | 'join_to_view' | 'connect_link_account' | 'created_by' | 'created_on_relative' | 'created_on_absolute' | 'check_this_link' | 'delete' | 'edit' | 'learn_more_about_smart_links' | 'learn_more_about_connecting_account' | 'loading' | 'link_safety_warning_message' | 'modified_by' | 'modified_on_relative' | 'modified_on_absolute' | 'more_actions' | 'not_found_title' | 'not_found_description' | 'open_issue_in_jira' | 'open_link_in_a_new_tab' | 'owned_by' | 'preview_description' | 'preview_improved' | 'preview_close' | 'preview_max_size' | 'preview_min_size' | 'priority_blocker' | 'priority_critical' | 'priority_high' | 'priority_highest' | 'priority_low' | 'priority_lowest' | 'priority_major' | 'priority_medium' | 'priority_minor' | 'priority_trivial' | 'priority_undefined' | 'forbidden_access' | 'pending_request' | 'read_time' | 'restricted_link' | 'request_access_to_view' | 'request_denied' | 'sent_on_relative' | 'sent_on_absolute' | 'status_change_load_error' | 'status_change_permission_error' | 'status_change_update_error' | 'try_again' | 'try_another_account' | 'unauthorised_account_description' | 'unauthorised_account_description_no_provider' | 'unauthorised_account_name' | 'unauthorised_account_name_no_provider' | 'unassigned' | 'unfollow' | 'unfollow_project_description' | 'unfollow_project' | 'unfollow_project_error' | 'unfollow_goal' | 'unfollow_goal_description' | 'unfollow_goal_error' | 'view' | 'viewIn' | 'viewOriginal' | 'actions' | 'add_account' | 'cancel' | 'close' | 'connect_to' | 'connect_account_description' | 'retry' | 'save' | 'unlink_account' | RequestAccessMessageKey | 'related_work_items_not_found' | 'last_mentioned_in' | 'related' | 'generic_error_message' | 'related_links_modal_error_header' | 'related_links_modal_error_message' | 'related_links_modal_title' | 'related_links_view_related_urls' | 'related_links_found_in' | 'related_links_includes_links_to' | 'related_links_not_found';
4
4
  type Messages = {
5
5
  [K in MessageKey]: MessageDescriptor;
6
6
  };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @param baseUriWithNoTrailingSlash base url which will then be appended with /gateway/api/graphql to make requests to AGG
3
+ */
4
+ export declare const useIncomingOutgoingAri: (baseUriWithNoTrailingSlash?: string) => {
5
+ getIncomingOutgoingAris: (ari: string, firstIncoming?: number, firstOutgoing?: number) => Promise<{
6
+ incomingAris: string[];
7
+ outgoingAris: string[];
8
+ }>;
9
+ };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * AGG query to retrieve incoming/outgoing links from AGS
3
+ * https://developer.atlassian.com/cloud/ari-graph-store/relationships/content-referenced-entity/#batch-query
4
+ */
5
+ export declare const queryIncomingOutgoingLinks = "\n query SmartCard_ContentReferencedEntityBatchQuery_V1($ids: [ID!]!, $firstIncoming: Int = 50, $firstOutgoing: Int = 50) {\n graphStore @optIn(to: \"GraphStore\") {\n incoming: contentReferencedEntityInverseBatch(ids: $ids, first: $firstIncoming) @optIn(to: \"GraphStoreContentReferencedEntity\") {\n nodes {\n from {\n id\n }\n }\n }\n outgoing: contentReferencedEntityBatch(ids: $ids, first: $firstOutgoing) @optIn(to: \"GraphStoreContentReferencedEntity\") {\n nodes {\n to {\n id\n }\n }\n }\n }\n }";
@@ -0,0 +1,7 @@
1
+ import { APIError } from '@atlaskit/linking-common';
2
+ import { type JsonLd } from 'json-ld-types';
3
+ declare const useResponse: () => {
4
+ handleResolvedLinkError: (url: string, error: APIError, response?: JsonLd.Response, isMetadataRequest?: boolean) => void;
5
+ handleResolvedLinkResponse: (resourceUrl: string, response: JsonLd.Response, isReloading?: any, isMetadataRequest?: boolean) => void;
6
+ };
7
+ export default useResponse;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ type EmptyStateProps = {
3
+ header: string;
4
+ testId?: string;
5
+ description?: React.ReactNode;
6
+ renderImage?: () => React.ReactNode;
7
+ };
8
+ export declare const EmptyState: ({ testId, header, description, renderImage, }: EmptyStateProps) => JSX.Element;
9
+ export {};
@@ -0,0 +1,3 @@
1
+ /** @jsx jsx */
2
+ import { jsx } from '@emotion/react';
3
+ export declare const ErrorSVG: (props: React.SVGProps<SVGSVGElement>) => jsx.JSX.Element;
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const RelatedLinksErroredView: () => JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import { type MessageDescriptor } from 'react-intl-next';
2
2
  export type RequestAccessMessageKey = 'click_to_join' | 'click_to_join_description' | 'forbidden_description' | 'request_access' | 'request_access_description' | 'request_access_pending' | 'request_access_pending_title' | 'request_access_pending_description' | 'request_denied_description' | 'default_no_access_title' | 'direct_access_title' | 'direct_access_description' | 'direct_access' | 'access_exists_description' | 'not_found_description' | 'not_found_title';
3
- export type MessageKey = 'assigned_to' | 'ai_summarize' | 'ai_summarized' | 'ai_summarized_abbreviation' | 'ai_summarized_info' | 'ai_summarized_info_short' | 'ai_summarizing' | 'ai_summary_error_generic' | 'ai_summary_error_acceptable_use_violation' | 'ai_summary_error_hipaa_content_detected' | 'ai_summary_error_exceeding_context_length_error' | 'ai_summary_action' | 'ai_summary_action_description' | 'automation_action_title' | 'automation_action_tooltip' | 'automation_action_icon_label' | 'automation_action_confluence_page_modal_title' | 'automation_action_confluence_page_modal_description' | 'copy_summary_action' | 'copy_summary_action_description' | 'copied_summary_action_description' | 'beta' | 'cannot_find_link' | 'connect_link_account_card' | 'connect_link_account_card_name' | 'connect_link_account_card_description' | 'connect_unauthorised_account_action' | 'connect_unauthorised_account_description' | 'connect_unauthorised_account_description_no_provider' | 'continue' | 'copy_url_to_clipboard' | 'copied_url_to_clipboard' | 'could_not_load_link' | 'download' | 'download_description' | 'download_file' | 'follow' | 'follow_project_description' | 'follow_project' | 'follow_goal' | 'follow_goal_description' | 'follow_project_error' | 'follow_goal_error' | 'go_back' | 'invalid_permissions' | 'invalid_permissions_description' | 'join_to_view' | 'connect_link_account' | 'created_by' | 'created_on_relative' | 'created_on_absolute' | 'check_this_link' | 'delete' | 'edit' | 'learn_more_about_smart_links' | 'learn_more_about_connecting_account' | 'loading' | 'link_safety_warning_message' | 'modified_by' | 'modified_on_relative' | 'modified_on_absolute' | 'more_actions' | 'not_found_title' | 'not_found_description' | 'open_issue_in_jira' | 'open_link_in_a_new_tab' | 'owned_by' | 'preview_description' | 'preview_improved' | 'preview_close' | 'preview_max_size' | 'preview_min_size' | 'priority_blocker' | 'priority_critical' | 'priority_high' | 'priority_highest' | 'priority_low' | 'priority_lowest' | 'priority_major' | 'priority_medium' | 'priority_minor' | 'priority_trivial' | 'priority_undefined' | 'forbidden_access' | 'pending_request' | 'read_time' | 'restricted_link' | 'request_access_to_view' | 'request_denied' | 'sent_on_relative' | 'sent_on_absolute' | 'status_change_load_error' | 'status_change_permission_error' | 'status_change_update_error' | 'try_again' | 'try_another_account' | 'unauthorised_account_description' | 'unauthorised_account_description_no_provider' | 'unauthorised_account_name' | 'unauthorised_account_name_no_provider' | 'unassigned' | 'unfollow' | 'unfollow_project_description' | 'unfollow_project' | 'unfollow_project_error' | 'unfollow_goal' | 'unfollow_goal_description' | 'unfollow_goal_error' | 'view' | 'viewIn' | 'viewOriginal' | 'actions' | 'add_account' | 'cancel' | 'close' | 'connect_to' | 'connect_account_description' | 'retry' | 'save' | 'unlink_account' | RequestAccessMessageKey | 'related_work_items_not_found' | 'last_mentioned_in' | 'related' | 'generic_error_message' | 'related_links_modal_title' | 'related_links_view_related_urls' | 'related_links_found_in' | 'related_links_includes_links_to' | 'related_links_not_found';
3
+ export type MessageKey = 'assigned_to' | 'ai_summarize' | 'ai_summarized' | 'ai_summarized_abbreviation' | 'ai_summarized_info' | 'ai_summarized_info_short' | 'ai_summarizing' | 'ai_summary_error_generic' | 'ai_summary_error_acceptable_use_violation' | 'ai_summary_error_hipaa_content_detected' | 'ai_summary_error_exceeding_context_length_error' | 'ai_summary_action' | 'ai_summary_action_description' | 'automation_action_title' | 'automation_action_tooltip' | 'automation_action_icon_label' | 'automation_action_confluence_page_modal_title' | 'automation_action_confluence_page_modal_description' | 'copy_summary_action' | 'copy_summary_action_description' | 'copied_summary_action_description' | 'beta' | 'cannot_find_link' | 'connect_link_account_card' | 'connect_link_account_card_name' | 'connect_link_account_card_description' | 'connect_unauthorised_account_action' | 'connect_unauthorised_account_description' | 'connect_unauthorised_account_description_no_provider' | 'continue' | 'copy_url_to_clipboard' | 'copied_url_to_clipboard' | 'could_not_load_link' | 'download' | 'download_description' | 'download_file' | 'follow' | 'follow_project_description' | 'follow_project' | 'follow_goal' | 'follow_goal_description' | 'follow_project_error' | 'follow_goal_error' | 'go_back' | 'invalid_permissions' | 'invalid_permissions_description' | 'join_to_view' | 'connect_link_account' | 'created_by' | 'created_on_relative' | 'created_on_absolute' | 'check_this_link' | 'delete' | 'edit' | 'learn_more_about_smart_links' | 'learn_more_about_connecting_account' | 'loading' | 'link_safety_warning_message' | 'modified_by' | 'modified_on_relative' | 'modified_on_absolute' | 'more_actions' | 'not_found_title' | 'not_found_description' | 'open_issue_in_jira' | 'open_link_in_a_new_tab' | 'owned_by' | 'preview_description' | 'preview_improved' | 'preview_close' | 'preview_max_size' | 'preview_min_size' | 'priority_blocker' | 'priority_critical' | 'priority_high' | 'priority_highest' | 'priority_low' | 'priority_lowest' | 'priority_major' | 'priority_medium' | 'priority_minor' | 'priority_trivial' | 'priority_undefined' | 'forbidden_access' | 'pending_request' | 'read_time' | 'restricted_link' | 'request_access_to_view' | 'request_denied' | 'sent_on_relative' | 'sent_on_absolute' | 'status_change_load_error' | 'status_change_permission_error' | 'status_change_update_error' | 'try_again' | 'try_another_account' | 'unauthorised_account_description' | 'unauthorised_account_description_no_provider' | 'unauthorised_account_name' | 'unauthorised_account_name_no_provider' | 'unassigned' | 'unfollow' | 'unfollow_project_description' | 'unfollow_project' | 'unfollow_project_error' | 'unfollow_goal' | 'unfollow_goal_description' | 'unfollow_goal_error' | 'view' | 'viewIn' | 'viewOriginal' | 'actions' | 'add_account' | 'cancel' | 'close' | 'connect_to' | 'connect_account_description' | 'retry' | 'save' | 'unlink_account' | RequestAccessMessageKey | 'related_work_items_not_found' | 'last_mentioned_in' | 'related' | 'generic_error_message' | 'related_links_modal_error_header' | 'related_links_modal_error_message' | 'related_links_modal_title' | 'related_links_view_related_urls' | 'related_links_found_in' | 'related_links_includes_links_to' | 'related_links_not_found';
4
4
  type Messages = {
5
5
  [K in MessageKey]: MessageDescriptor;
6
6
  };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @param baseUriWithNoTrailingSlash base url which will then be appended with /gateway/api/graphql to make requests to AGG
3
+ */
4
+ export declare const useIncomingOutgoingAri: (baseUriWithNoTrailingSlash?: string) => {
5
+ getIncomingOutgoingAris: (ari: string, firstIncoming?: number, firstOutgoing?: number) => Promise<{
6
+ incomingAris: string[];
7
+ outgoingAris: string[];
8
+ }>;
9
+ };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * AGG query to retrieve incoming/outgoing links from AGS
3
+ * https://developer.atlassian.com/cloud/ari-graph-store/relationships/content-referenced-entity/#batch-query
4
+ */
5
+ export declare const queryIncomingOutgoingLinks = "\n query SmartCard_ContentReferencedEntityBatchQuery_V1($ids: [ID!]!, $firstIncoming: Int = 50, $firstOutgoing: Int = 50) {\n graphStore @optIn(to: \"GraphStore\") {\n incoming: contentReferencedEntityInverseBatch(ids: $ids, first: $firstIncoming) @optIn(to: \"GraphStoreContentReferencedEntity\") {\n nodes {\n from {\n id\n }\n }\n }\n outgoing: contentReferencedEntityBatch(ids: $ids, first: $firstOutgoing) @optIn(to: \"GraphStoreContentReferencedEntity\") {\n nodes {\n to {\n id\n }\n }\n }\n }\n }";
@@ -0,0 +1,7 @@
1
+ import { APIError } from '@atlaskit/linking-common';
2
+ import { type JsonLd } from 'json-ld-types';
3
+ declare const useResponse: () => {
4
+ handleResolvedLinkError: (url: string, error: APIError, response?: JsonLd.Response, isMetadataRequest?: boolean) => void;
5
+ handleResolvedLinkResponse: (resourceUrl: string, response: JsonLd.Response, isReloading?: any, isMetadataRequest?: boolean) => void;
6
+ };
7
+ export default useResponse;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ type EmptyStateProps = {
3
+ header: string;
4
+ testId?: string;
5
+ description?: React.ReactNode;
6
+ renderImage?: () => React.ReactNode;
7
+ };
8
+ export declare const EmptyState: ({ testId, header, description, renderImage, }: EmptyStateProps) => JSX.Element;
9
+ export {};
@@ -0,0 +1,3 @@
1
+ /** @jsx jsx */
2
+ import { jsx } from '@emotion/react';
3
+ export declare const ErrorSVG: (props: React.SVGProps<SVGSVGElement>) => jsx.JSX.Element;
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const RelatedLinksErroredView: () => JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "27.4.1",
3
+ "version": "27.4.3",
4
4
  "description": "Smart card component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -36,7 +36,7 @@
36
36
  "@atlaskit/button": "^17.17.0",
37
37
  "@atlaskit/checkbox": "^13.4.0",
38
38
  "@atlaskit/dropdown-menu": "^12.10.0",
39
- "@atlaskit/form": "^10.2.0",
39
+ "@atlaskit/form": "^10.3.0",
40
40
  "@atlaskit/frontend-utilities": "^2.7.0",
41
41
  "@atlaskit/heading": "^2.3.0",
42
42
  "@atlaskit/icon": "^22.3.0",
@@ -55,7 +55,7 @@
55
55
  "@atlaskit/outbound-auth-flow-client": "^3.4.0",
56
56
  "@atlaskit/platform-feature-flags": "^0.2.1",
57
57
  "@atlaskit/popup": "^1.17.0",
58
- "@atlaskit/primitives": "^6.3.0",
58
+ "@atlaskit/primitives": "^6.4.0",
59
59
  "@atlaskit/section-message": "^6.5.0",
60
60
  "@atlaskit/select": "^17.10.0",
61
61
  "@atlaskit/spinner": "^16.1.0",
@@ -97,7 +97,6 @@
97
97
  "@atlaskit/ssr": "*",
98
98
  "@atlaskit/visual-regression": "*",
99
99
  "@atlassian/analytics-tooling": "*",
100
- "@atlassian/atlassian-frontend-prettier-config-1.0.1": "npm:@atlassian/atlassian-frontend-prettier-config@1.0.1",
101
100
  "@atlassian/feature-flags-test-utils": "^0.2.0",
102
101
  "@testing-library/dom": "^8.17.1",
103
102
  "@testing-library/jest-dom": "^5.16.5",
@@ -192,6 +191,5 @@
192
191
  "platform.linking-platform.smart-card.enable-view-related-urls-action": {
193
192
  "type": "boolean"
194
193
  }
195
- },
196
- "prettier": "@atlassian/atlassian-frontend-prettier-config-1.0.1"
194
+ }
197
195
  }