@atlaskit/smart-card 26.46.2 → 26.46.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 (63) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cjs/constants.js +2 -2
  3. package/dist/cjs/messages.js +15 -0
  4. package/dist/cjs/utils/analytics/analytics.js +1 -1
  5. package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-indicator-container.js +28 -0
  6. package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-indicator-tooltip.js +35 -0
  7. package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-learn-more-anchor.js +22 -0
  8. package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-state-done.js +116 -0
  9. package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-state-loading.js +35 -0
  10. package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/index.js +35 -0
  11. package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/types.js +5 -0
  12. package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/resolved/index.js +37 -28
  13. package/dist/cjs/view/LinkUrl/index.js +1 -1
  14. package/dist/cjs/view/common/ai-icon-loading/index.js +60 -0
  15. package/dist/es2019/constants.js +1 -1
  16. package/dist/es2019/messages.js +15 -0
  17. package/dist/es2019/utils/analytics/analytics.js +1 -1
  18. package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-indicator-container.js +22 -0
  19. package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-indicator-tooltip.js +29 -0
  20. package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-learn-more-anchor.js +12 -0
  21. package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-state-done.js +105 -0
  22. package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-state-loading.js +29 -0
  23. package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/index.js +26 -0
  24. package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/types.js +1 -0
  25. package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/resolved/index.js +36 -31
  26. package/dist/es2019/view/LinkUrl/index.js +1 -1
  27. package/dist/es2019/view/common/ai-icon-loading/index.js +64 -0
  28. package/dist/esm/constants.js +1 -1
  29. package/dist/esm/messages.js +15 -0
  30. package/dist/esm/utils/analytics/analytics.js +1 -1
  31. package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-indicator-container.js +21 -0
  32. package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-indicator-tooltip.js +25 -0
  33. package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-learn-more-anchor.js +15 -0
  34. package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-state-done.js +108 -0
  35. package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-state-loading.js +28 -0
  36. package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/index.js +27 -0
  37. package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/types.js +1 -0
  38. package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/resolved/index.js +40 -31
  39. package/dist/esm/view/LinkUrl/index.js +1 -1
  40. package/dist/esm/view/common/ai-icon-loading/index.js +54 -0
  41. package/dist/types/constants.d.ts +1 -0
  42. package/dist/types/messages.d.ts +1 -1
  43. package/dist/types/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-indicator-container.d.ts +4 -0
  44. package/dist/types/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-indicator-tooltip.d.ts +4 -0
  45. package/dist/types/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-learn-more-anchor.d.ts +3 -0
  46. package/dist/types/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-state-done.d.ts +5 -0
  47. package/dist/types/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-state-loading.d.ts +4 -0
  48. package/dist/types/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/index.d.ts +4 -0
  49. package/dist/types/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/types.d.ts +18 -0
  50. package/dist/types/view/FlexibleCard/components/blocks/ai-summary-block/types.d.ts +2 -1
  51. package/dist/types/view/common/ai-icon-loading/index.d.ts +7 -0
  52. package/dist/types-ts4.5/constants.d.ts +1 -0
  53. package/dist/types-ts4.5/messages.d.ts +1 -1
  54. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-indicator-container.d.ts +4 -0
  55. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-indicator-tooltip.d.ts +4 -0
  56. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-learn-more-anchor.d.ts +3 -0
  57. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-state-done.d.ts +5 -0
  58. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-state-loading.d.ts +4 -0
  59. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/index.d.ts +4 -0
  60. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/types.d.ts +18 -0
  61. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/ai-summary-block/types.d.ts +2 -1
  62. package/dist/types-ts4.5/view/common/ai-icon-loading/index.d.ts +7 -0
  63. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 26.46.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [#70839](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/70839) [`520f2cf9a4e6`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/520f2cf9a4e6) - Add AI summary state indicator component
8
+
3
9
  ## 26.46.2
4
10
 
5
11
  ### Patch Changes
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.SmartLinkWidth = exports.SmartLinkTheme = exports.SmartLinkStatus = exports.SmartLinkSize = exports.SmartLinkPosition = exports.SmartLinkInternalTheme = exports.SmartLinkDirection = exports.SmartLinkAlignment = exports.MediaType = exports.MediaPlacement = exports.IconType = exports.ElementName = exports.CardDisplay = exports.CONTENT_URL_SECURITY_AND_PERMISSIONS = exports.CONTENT_URL_3P_ACCOUNT_AUTH = exports.ActionName = void 0;
6
+ exports.SmartLinkWidth = exports.SmartLinkTheme = exports.SmartLinkStatus = exports.SmartLinkSize = exports.SmartLinkPosition = exports.SmartLinkInternalTheme = exports.SmartLinkDirection = exports.SmartLinkAlignment = exports.MediaType = exports.MediaPlacement = exports.IconType = exports.ElementName = exports.CardDisplay = exports.CONTENT_URL_SECURITY_AND_PERMISSIONS = exports.CONTENT_URL_AI = exports.CONTENT_URL_3P_ACCOUNT_AUTH = exports.ActionName = void 0;
7
7
  var CONTENT_URL_SECURITY_AND_PERMISSIONS = exports.CONTENT_URL_SECURITY_AND_PERMISSIONS = 'https://support.atlassian.com/confluence-cloud/docs/insert-links-and-anchors/#Smart-links';
8
8
  var CONTENT_URL_3P_ACCOUNT_AUTH = exports.CONTENT_URL_3P_ACCOUNT_AUTH = 'https://support.atlassian.com/confluence-cloud/docs/what-data-is-sent-and-received-when-pasting-a-smart-link/';
9
-
9
+ var CONTENT_URL_AI = exports.CONTENT_URL_AI = 'https://www.atlassian.com/trust/atlassian-intelligence';
10
10
  /**
11
11
  * The alignment of Flexible UI component.
12
12
  */
@@ -24,6 +24,21 @@ var messages = exports.messages = (0, _reactIntlNext.defineMessages)({
24
24
  defaultMessage: 'Summarize',
25
25
  description: 'Action to summarize link resource content with AI'
26
26
  },
27
+ ai_summarized: {
28
+ id: 'fabric.linking.ai_summarized',
29
+ defaultMessage: 'Summarized by Atlassian Intelligence',
30
+ description: 'Shown with the content summarised by AI.'
31
+ },
32
+ ai_summarized_info: {
33
+ id: 'fabric.linking.ai_summarized_info',
34
+ defaultMessage: 'Information quality may vary. <a>Learn more</a>',
35
+ description: 'Additional info about the content summarised by AI.'
36
+ },
37
+ ai_summarizing: {
38
+ id: 'fabric.linking.ai_summarizing',
39
+ defaultMessage: 'Atlassian Intelligence is working...',
40
+ description: 'Shown when AI summary is summarising the link resource content.'
41
+ },
27
42
  assigned_to: {
28
43
  id: 'fabric.linking.assigned_to',
29
44
  defaultMessage: 'Assigned to {context}',
@@ -22,7 +22,7 @@ var ANALYTICS_CHANNEL = exports.ANALYTICS_CHANNEL = 'media';
22
22
  var context = exports.context = {
23
23
  componentName: 'smart-cards',
24
24
  packageName: "@atlaskit/smart-card",
25
- packageVersion: "26.46.2"
25
+ packageVersion: "26.46.3"
26
26
  };
27
27
  var TrackQuickActionType = exports.TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
28
28
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _primitives = require("@atlaskit/primitives");
10
+ var contentStyles = (0, _primitives.xcss)({
11
+ color: 'color.text.subtle',
12
+ fontSize: '12px',
13
+ fontWeight: '400',
14
+ lineHeight: '16px'
15
+ });
16
+ var AIIndicatorContainer = function AIIndicatorContainer(_ref) {
17
+ var icon = _ref.icon,
18
+ content = _ref.content,
19
+ testId = _ref.testId;
20
+ return /*#__PURE__*/_react.default.createElement(_primitives.Inline, {
21
+ alignBlock: "center",
22
+ alignInline: "start",
23
+ space: "space.050",
24
+ xcss: contentStyles,
25
+ testId: testId
26
+ }, icon, content);
27
+ };
28
+ var _default = exports.default = AIIndicatorContainer;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
+ var _react = _interopRequireDefault(require("react"));
12
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
13
+ var _tooltip = _interopRequireWildcard(require("@atlaskit/tooltip"));
14
+ var _primitives = require("@atlaskit/primitives");
15
+ var _templateObject;
16
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
+ var AIIndicatorTooltipPrimitive = (0, _styled.default)(_tooltip.TooltipPrimitive)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n border-radius: ", ";\n background-color: ", ";\n box-shadow: ", ";\n box-sizing: content-box;\n padding: ", ";\n max-width: 350px;\n"])), "var(--ds-border-radius, 3px)", "var(--ds-surface-raised, white)", "var(--ds-shadow-overlay, 0px 8px 12px rgba(9, 30, 66, 0.15),0px 0px 1px rgba(9, 30, 66, 0.31))", "var(--ds-space-200, 16px)");
19
+ var triggerStyles = (0, _primitives.xcss)({
20
+ display: 'inline-flex'
21
+ });
22
+ var AIIndicatorTooltip = function AIIndicatorTooltip(_ref) {
23
+ var content = _ref.content,
24
+ trigger = _ref.trigger;
25
+ return /*#__PURE__*/_react.default.createElement(_tooltip.default, {
26
+ component: AIIndicatorTooltipPrimitive,
27
+ content: content,
28
+ tag: "span"
29
+ }, function (tooltipProps) {
30
+ return /*#__PURE__*/_react.default.createElement(_primitives.Box, (0, _extends2.default)({
31
+ xcss: triggerStyles
32
+ }, tooltipProps), trigger);
33
+ });
34
+ };
35
+ var _default = exports.default = AIIndicatorTooltip;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
+ var _react = _interopRequireDefault(require("react"));
11
+ var _constants = require("../../../../../../constants");
12
+ var _excluded = ["children"];
13
+ var AILearnMoreAnchor = function AILearnMoreAnchor(_ref) {
14
+ var children = _ref.children,
15
+ props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
16
+ return /*#__PURE__*/_react.default.createElement("a", (0, _extends2.default)({
17
+ href: _constants.CONTENT_URL_AI,
18
+ target: "_blank",
19
+ rel: "noopener noreferrer"
20
+ }, props), children);
21
+ };
22
+ var _default = exports.default = AILearnMoreAnchor;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _reactIntlNext = require("react-intl-next");
11
+ var _react2 = require("@emotion/react");
12
+ var _panel = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/panel"));
13
+ var _primitives = require("@atlaskit/primitives");
14
+ var _messages = require("../../../../../../messages");
15
+ var _aiIcon = _interopRequireDefault(require("../../../../../common/ai-icon"));
16
+ var _aiIndicatorTooltip = _interopRequireDefault(require("./ai-indicator-tooltip"));
17
+ var _aiIndicatorContainer = _interopRequireDefault(require("./ai-indicator-container"));
18
+ var _aiLearnMoreAnchor = _interopRequireDefault(require("./ai-learn-more-anchor"));
19
+ /** @jsx jsx */
20
+
21
+ var tooltipMsgStyles = (0, _primitives.xcss)({
22
+ color: 'color.text',
23
+ fontSize: '14px',
24
+ fontWeight: '400',
25
+ lineHeight: '20px'
26
+ });
27
+ var iconTooltipLinkStyles = (0, _react2.css)({
28
+ color: "var(--ds-text-subtlest, #626F86)",
29
+ '&:link, :visited': {
30
+ color: "var(--ds-text-subtlest, #626F86)"
31
+ },
32
+ '&:hover': {
33
+ color: "var(--ds-text-subtle, #44546F)"
34
+ },
35
+ '&:active': {
36
+ color: "var(--ds-text, #172B4D)"
37
+ },
38
+ textDecoration: 'underline'
39
+ });
40
+ var iconTooltipTitleStyles = (0, _primitives.xcss)({
41
+ color: 'color.text',
42
+ fontSize: '12px',
43
+ fontWeight: '400',
44
+ lineHeight: '16px'
45
+ });
46
+ var iconTooltipDescStyles = (0, _primitives.xcss)({
47
+ color: 'color.text.subtlest',
48
+ fontSize: '11px',
49
+ fontWeight: '400',
50
+ lineHeight: '14px'
51
+ });
52
+ var AIStateDone = function AIStateDone(_ref) {
53
+ var appearance = _ref.appearance,
54
+ testId = _ref.testId;
55
+ var icon = (0, _react2.jsx)(_aiIcon.default, {
56
+ label: "AI",
57
+ size: "small",
58
+ testId: "".concat(testId, "-done-icon")
59
+ });
60
+ switch (appearance) {
61
+ case 'icon-only':
62
+ return (0, _react2.jsx)(_aiIndicatorTooltip.default, {
63
+ content: (0, _react2.jsx)(_primitives.Inline, {
64
+ alignBlock: "center",
65
+ space: "space.100"
66
+ }, (0, _react2.jsx)(_aiIcon.default, {
67
+ label: "AI",
68
+ size: "medium",
69
+ testId: "".concat(testId, "-done-tooltip-icon")
70
+ }), (0, _react2.jsx)(_primitives.Stack, null, (0, _react2.jsx)(_primitives.Box, {
71
+ xcss: iconTooltipTitleStyles,
72
+ testId: "".concat(testId, "-done-tooltip-title")
73
+ }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.messages.ai_summarized)), (0, _react2.jsx)(_primitives.Box, {
74
+ xcss: iconTooltipDescStyles
75
+ }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _messages.messages.ai_summarized_info, {
76
+ values: {
77
+ a: function a(chunks) {
78
+ return (0, _react2.jsx)(_aiLearnMoreAnchor.default, {
79
+ css: iconTooltipLinkStyles
80
+ }, chunks);
81
+ }
82
+ }
83
+ }))))),
84
+ trigger: icon
85
+ });
86
+ default:
87
+ return (0, _react2.jsx)(_aiIndicatorContainer.default, {
88
+ icon: icon,
89
+ content: (0, _react2.jsx)(_primitives.Inline, {
90
+ alignBlock: "center",
91
+ alignInline: "start",
92
+ space: "space.050"
93
+ }, (0, _react2.jsx)(_primitives.Box, {
94
+ testId: "".concat(testId, "-done-message")
95
+ }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.messages.ai_summarized)), (0, _react2.jsx)(_aiIndicatorTooltip.default, {
96
+ content: (0, _react2.jsx)(_primitives.Box, {
97
+ xcss: tooltipMsgStyles,
98
+ testId: "".concat(testId, "-done-tooltip")
99
+ }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _messages.messages.ai_summarized_info, {
100
+ values: {
101
+ a: function a(chunks) {
102
+ return (0, _react2.jsx)(_aiLearnMoreAnchor.default, null, chunks);
103
+ }
104
+ }
105
+ }))),
106
+ trigger: (0, _react2.jsx)(_panel.default, {
107
+ label: "Info",
108
+ size: "small",
109
+ testId: "".concat(testId, "-done-info")
110
+ })
111
+ })),
112
+ testId: "".concat(testId, "-done")
113
+ });
114
+ }
115
+ };
116
+ var _default = exports.default = AIStateDone;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _reactIntlNext = require("react-intl-next");
10
+ var _primitives = require("@atlaskit/primitives");
11
+ var _messages = require("../../../../../../messages");
12
+ var _aiIconLoading = _interopRequireDefault(require("../../../../../common/ai-icon-loading"));
13
+ var _aiIndicatorContainer = _interopRequireDefault(require("./ai-indicator-container"));
14
+ var AIStateLoading = function AIStateLoading(_ref) {
15
+ var appearance = _ref.appearance,
16
+ testId = _ref.testId;
17
+ var icon = /*#__PURE__*/_react.default.createElement(_aiIconLoading.default, {
18
+ label: "AI",
19
+ size: "small",
20
+ testId: "".concat(testId, "-loading-icon")
21
+ });
22
+ switch (appearance) {
23
+ case 'icon-only':
24
+ return icon;
25
+ default:
26
+ return /*#__PURE__*/_react.default.createElement(_aiIndicatorContainer.default, {
27
+ icon: icon,
28
+ content: /*#__PURE__*/_react.default.createElement(_primitives.Box, {
29
+ testId: "".concat(testId, "-loading-message")
30
+ }, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.ai_summarizing)),
31
+ testId: "".concat(testId, "-loading")
32
+ });
33
+ }
34
+ };
35
+ var _default = exports.default = AIStateLoading;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = require("@emotion/react");
9
+ var _react2 = _interopRequireDefault(require("react"));
10
+ var _aiStateLoading = _interopRequireDefault(require("./ai-state-loading"));
11
+ var _aiStateDone = _interopRequireDefault(require("./ai-state-done"));
12
+ /** @jsx jsx */
13
+
14
+ var AIStateIndicator = function AIStateIndicator(_ref) {
15
+ var state = _ref.state,
16
+ _ref$appearance = _ref.appearance,
17
+ appearance = _ref$appearance === void 0 ? 'default' : _ref$appearance,
18
+ _ref$testId = _ref.testId,
19
+ testId = _ref$testId === void 0 ? 'ai-state-indicator' : _ref$testId;
20
+ switch (state) {
21
+ case 'loading':
22
+ return (0, _react.jsx)(_aiStateLoading.default, {
23
+ appearance: appearance,
24
+ testId: testId
25
+ });
26
+ case 'done':
27
+ return (0, _react.jsx)(_aiStateDone.default, {
28
+ appearance: appearance,
29
+ testId: testId
30
+ });
31
+ default:
32
+ return null;
33
+ }
34
+ };
35
+ var _default = exports.default = AIStateIndicator;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -8,13 +8,15 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
12
  var _react = _interopRequireWildcard(require("react"));
12
13
  var _reactIntlNext = require("react-intl-next");
14
+ var _primitives = require("@atlaskit/primitives");
13
15
  var _constants = require("../../../../../../constants");
14
- var _flexibleUiContext = require("../../../../../../state/flexible-ui-context");
15
16
  var _actionGroup = _interopRequireDefault(require("../../action-group"));
16
17
  var _block = _interopRequireDefault(require("../../block"));
17
18
  var _elementGroup = _interopRequireDefault(require("../../element-group"));
19
+ var _aiStateIndicator = _interopRequireDefault(require("../ai-state-indicator"));
18
20
  var _utils = require("../../utils");
19
21
  var _messages = require("../../../../../../messages");
20
22
  var _aiIcon = _interopRequireDefault(require("../../../../../common/ai-icon"));
@@ -29,29 +31,32 @@ var AISummaryBlockResolvedView = function AISummaryBlockResolvedView(props) {
29
31
  onAIActionChange = props.onAIActionChange,
30
32
  _props$size = props.size,
31
33
  size = _props$size === void 0 ? _constants.SmartLinkSize.Medium : _props$size;
32
- var context = (0, _flexibleUiContext.useFlexibleUiContext)();
34
+ var _useState = (0, _react.useState)('ready'),
35
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
36
+ aiState = _useState2[0],
37
+ setAIState = _useState2[1];
33
38
  var metadataElements = (0, _utils.renderElementItems)(metadata);
34
39
  var onAIActionClick = (0, _react.useCallback)(function () {
40
+ setAIState('loading');
35
41
  if (onAIActionChange) {
36
- onAIActionChange();
42
+ onAIActionChange('loading');
37
43
  }
38
44
  }, [onAIActionChange]);
39
45
  var combinedActions = (0, _react.useMemo)(function () {
40
- var aiAction = {
41
- content: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.ai_summarize),
42
- name: _constants.ActionName.CustomAction,
43
- onClick: onAIActionClick,
44
- testId: "".concat(testId, "-ai-summary-action"),
45
- icon: /*#__PURE__*/_react.default.createElement(_aiIcon.default, {
46
- label: "AiIcon"
47
- })
48
- };
49
- return [aiAction].concat((0, _toConsumableArray2.default)(actions));
50
- }, [actions, onAIActionClick, testId]);
51
- var hasActions = (0, _react.useMemo)(function () {
52
- var _filterActionItems;
53
- return ((_filterActionItems = (0, _utils.filterActionItems)(combinedActions, context)) === null || _filterActionItems === void 0 ? void 0 : _filterActionItems.length) > 0;
54
- }, [combinedActions, context]);
46
+ if (aiState === 'ready') {
47
+ var aiAction = {
48
+ content: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.ai_summarize),
49
+ name: _constants.ActionName.CustomAction,
50
+ onClick: onAIActionClick,
51
+ testId: "".concat(testId, "-ai-summary-action"),
52
+ icon: /*#__PURE__*/_react.default.createElement(_aiIcon.default, {
53
+ label: "AiIcon"
54
+ })
55
+ };
56
+ return [aiAction].concat((0, _toConsumableArray2.default)(actions));
57
+ }
58
+ return actions;
59
+ }, [actions, aiState, onAIActionClick, testId]);
55
60
  var onDropdownOpenChange = (0, _react.useCallback)(function (isOpen) {
56
61
  if (onActionMenuOpenChange) {
57
62
  onActionMenuOpenChange({
@@ -61,17 +66,21 @@ var AISummaryBlockResolvedView = function AISummaryBlockResolvedView(props) {
61
66
  }, [onActionMenuOpenChange]);
62
67
  return /*#__PURE__*/_react.default.createElement(_block.default, (0, _extends2.default)({}, props, {
63
68
  testId: "".concat(testId, "-resolved-view")
64
- }), /*#__PURE__*/_react.default.createElement(_elementGroup.default, {
65
- width: _constants.SmartLinkWidth.Flexible
66
- }, metadataElements), hasActions && /*#__PURE__*/_react.default.createElement(_elementGroup.default, {
67
- testId: "smart-element-group-actions",
68
- align: _constants.SmartLinkAlignment.Right,
69
- overrideCss: (0, _utils.getActionGroupStyles)(size),
70
- width: _constants.SmartLinkWidth.Flexible
71
- }, /*#__PURE__*/_react.default.createElement(_actionGroup.default, {
69
+ }), /*#__PURE__*/_react.default.createElement(_primitives.Inline, {
70
+ alignBlock: "center",
71
+ alignInline: "end",
72
+ grow: "fill",
73
+ spread: "space-between"
74
+ }, /*#__PURE__*/_react.default.createElement(_primitives.Box, null, aiState === 'loading' || aiState === 'done' ? /*#__PURE__*/_react.default.createElement(_aiStateIndicator.default, {
75
+ state: aiState,
76
+ testId: testId
77
+ }) : /*#__PURE__*/_react.default.createElement(_elementGroup.default, {
78
+ width: _constants.SmartLinkWidth.FitToContent
79
+ }, metadataElements)), /*#__PURE__*/_react.default.createElement(_primitives.Box, null, /*#__PURE__*/_react.default.createElement(_actionGroup.default, {
72
80
  onDropdownOpenChange: onDropdownOpenChange,
73
81
  items: combinedActions,
74
- appearance: "default"
75
- })));
82
+ appearance: "default",
83
+ size: size
84
+ }))));
76
85
  };
77
86
  var _default = exports.default = AISummaryBlockResolvedView;
@@ -17,7 +17,7 @@ var _excluded = ["href", "children", "checkSafety", "onClick", "testId"],
17
17
  _excluded2 = ["isLinkSafe", "showSafetyWarningModal"];
18
18
  var PACKAGE_DATA = {
19
19
  packageName: "@atlaskit/smart-card",
20
- packageVersion: "26.46.2",
20
+ packageVersion: "26.46.3",
21
21
  componentName: 'linkUrl'
22
22
  };
23
23
  var Link = (0, _click.withLinkClickedEvent)('a');
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
+ var _react = require("@emotion/react");
10
+ var _svg = _interopRequireDefault(require("@atlaskit/icon/svg"));
11
+ var _constants = require("../ai-prism/constants");
12
+ var _templateObject;
13
+ /** @jsx jsx */
14
+ /**
15
+ * The bulk of this file is originally from
16
+ * https://bitbucket.org/atlassian/barrel/src/master/ui/platform/ui-kit/ai
17
+ * with modifications
18
+ */
19
+
20
+ var bounce = (0, _react.keyframes)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n from {\n transform: translateY(0);\n }\n\n // 200ms of 1200ms = 16.67%\n 16.67% {\n transform: translateY(-2px);\n }\n\n // 400ms of 1200ms = 33.33%\n 33.33% {\n transform: translateY(0px);\n }\n"])));
21
+ var BASE_DELAY = 400;
22
+ var QUEUE_DELAY = 200;
23
+ var animationStyles = (0, _react.css)({
24
+ animation: "".concat(bounce, " 1.2s linear infinite normal")
25
+ });
26
+ var firstDelayStyles = (0, _react.css)({
27
+ animationDelay: "".concat(BASE_DELAY + QUEUE_DELAY, "ms")
28
+ });
29
+ var secondDelayStyles = (0, _react.css)({
30
+ animationDelay: "".concat(BASE_DELAY + QUEUE_DELAY * 2, "ms")
31
+ });
32
+ var thirdDelayStyles = (0, _react.css)({
33
+ animationDelay: "".concat(BASE_DELAY + QUEUE_DELAY * 3, "ms")
34
+ });
35
+
36
+ /**
37
+ * this icon is theme agnostic, no need for tokens
38
+ */
39
+ var AIIconLoading = function AIIconLoading(props) {
40
+ return (0, _react.jsx)(_svg.default, props, (0, _react.jsx)("circle", {
41
+ css: [animationStyles, firstDelayStyles],
42
+ cx: "6",
43
+ cy: "12",
44
+ r: "1.5",
45
+ fill: _constants.aiThemeTokens.blue700
46
+ }), (0, _react.jsx)("circle", {
47
+ css: [animationStyles, secondDelayStyles],
48
+ cx: "12",
49
+ cy: "12",
50
+ r: "1.5",
51
+ fill: _constants.aiThemeTokens.blue600
52
+ }), (0, _react.jsx)("circle", {
53
+ css: [animationStyles, thirdDelayStyles],
54
+ cx: "17.5",
55
+ cy: "12",
56
+ r: "1.5",
57
+ fill: _constants.aiThemeTokens.blue500
58
+ }));
59
+ };
60
+ var _default = exports.default = AIIconLoading;
@@ -1,6 +1,6 @@
1
1
  export const CONTENT_URL_SECURITY_AND_PERMISSIONS = 'https://support.atlassian.com/confluence-cloud/docs/insert-links-and-anchors/#Smart-links';
2
2
  export const CONTENT_URL_3P_ACCOUNT_AUTH = 'https://support.atlassian.com/confluence-cloud/docs/what-data-is-sent-and-received-when-pasting-a-smart-link/';
3
-
3
+ export const CONTENT_URL_AI = 'https://www.atlassian.com/trust/atlassian-intelligence';
4
4
  /**
5
5
  * The alignment of Flexible UI component.
6
6
  */
@@ -18,6 +18,21 @@ export const messages = defineMessages({
18
18
  defaultMessage: 'Summarize',
19
19
  description: 'Action to summarize link resource content with AI'
20
20
  },
21
+ ai_summarized: {
22
+ id: 'fabric.linking.ai_summarized',
23
+ defaultMessage: 'Summarized by Atlassian Intelligence',
24
+ description: 'Shown with the content summarised by AI.'
25
+ },
26
+ ai_summarized_info: {
27
+ id: 'fabric.linking.ai_summarized_info',
28
+ defaultMessage: 'Information quality may vary. <a>Learn more</a>',
29
+ description: 'Additional info about the content summarised by AI.'
30
+ },
31
+ ai_summarizing: {
32
+ id: 'fabric.linking.ai_summarizing',
33
+ defaultMessage: 'Atlassian Intelligence is working...',
34
+ description: 'Shown when AI summary is summarising the link resource content.'
35
+ },
21
36
  assigned_to: {
22
37
  id: 'fabric.linking.assigned_to',
23
38
  defaultMessage: 'Assigned to {context}',
@@ -4,7 +4,7 @@ export const ANALYTICS_CHANNEL = 'media';
4
4
  export const context = {
5
5
  componentName: 'smart-cards',
6
6
  packageName: "@atlaskit/smart-card",
7
- packageVersion: "26.46.2"
7
+ packageVersion: "26.46.3"
8
8
  };
9
9
  export let TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
10
10
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { Inline, xcss } from '@atlaskit/primitives';
3
+ const contentStyles = xcss({
4
+ color: 'color.text.subtle',
5
+ fontSize: '12px',
6
+ fontWeight: '400',
7
+ lineHeight: '16px'
8
+ });
9
+ const AIIndicatorContainer = ({
10
+ icon,
11
+ content,
12
+ testId
13
+ }) => {
14
+ return /*#__PURE__*/React.createElement(Inline, {
15
+ alignBlock: "center",
16
+ alignInline: "start",
17
+ space: "space.050",
18
+ xcss: contentStyles,
19
+ testId: testId
20
+ }, icon, content);
21
+ };
22
+ export default AIIndicatorContainer;
@@ -0,0 +1,29 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React from 'react';
3
+ import styled from '@emotion/styled';
4
+ import Tooltip, { TooltipPrimitive } from '@atlaskit/tooltip';
5
+ import { Box, xcss } from '@atlaskit/primitives';
6
+ const AIIndicatorTooltipPrimitive = styled(TooltipPrimitive)`
7
+ border-radius: ${"var(--ds-border-radius, 3px)"};
8
+ background-color: ${"var(--ds-surface-raised, white)"};
9
+ box-shadow: ${"var(--ds-shadow-overlay, 0px 8px 12px rgba(9, 30, 66, 0.15),0px 0px 1px rgba(9, 30, 66, 0.31))"};
10
+ box-sizing: content-box;
11
+ padding: ${"var(--ds-space-200, 16px)"};
12
+ max-width: 350px;
13
+ `;
14
+ const triggerStyles = xcss({
15
+ display: 'inline-flex'
16
+ });
17
+ const AIIndicatorTooltip = ({
18
+ content,
19
+ trigger
20
+ }) => {
21
+ return /*#__PURE__*/React.createElement(Tooltip, {
22
+ component: AIIndicatorTooltipPrimitive,
23
+ content: content,
24
+ tag: "span"
25
+ }, tooltipProps => /*#__PURE__*/React.createElement(Box, _extends({
26
+ xcss: triggerStyles
27
+ }, tooltipProps), trigger));
28
+ };
29
+ export default AIIndicatorTooltip;
@@ -0,0 +1,12 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React from 'react';
3
+ import { CONTENT_URL_AI } from '../../../../../../constants';
4
+ const AILearnMoreAnchor = ({
5
+ children,
6
+ ...props
7
+ }) => /*#__PURE__*/React.createElement("a", _extends({
8
+ href: CONTENT_URL_AI,
9
+ target: "_blank",
10
+ rel: "noopener noreferrer"
11
+ }, props), children);
12
+ export default AILearnMoreAnchor;