@atlaskit/smart-card 26.61.0 → 26.62.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 (54) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/analytics.spec.yaml +6 -0
  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/actions/action/action-icon/index.js +4 -3
  6. package/dist/cjs/view/FlexibleCard/components/actions/action/action-stack-item/index.js +1 -1
  7. package/dist/cjs/view/FlexibleCard/components/actions/action/index.js +1 -1
  8. package/dist/cjs/view/FlexibleCard/components/actions/ai-summary-action/ai-summarise-action.js +59 -0
  9. package/dist/cjs/view/FlexibleCard/components/actions/ai-summary-action/ai-summary-action-component.js +20 -51
  10. package/dist/cjs/view/FlexibleCard/components/actions/ai-summary-action/copy-summary-action.js +62 -0
  11. package/dist/cjs/view/FlexibleCard/components/actions/preview-action/index.js +2 -2
  12. package/dist/cjs/view/LinkUrl/index.js +1 -1
  13. package/dist/es2019/messages.js +15 -0
  14. package/dist/es2019/utils/analytics/analytics.js +1 -1
  15. package/dist/es2019/view/FlexibleCard/components/actions/action/action-icon/index.js +4 -3
  16. package/dist/es2019/view/FlexibleCard/components/actions/action/action-stack-item/index.js +1 -1
  17. package/dist/es2019/view/FlexibleCard/components/actions/action/index.js +1 -1
  18. package/dist/es2019/view/FlexibleCard/components/actions/ai-summary-action/ai-summarise-action.js +49 -0
  19. package/dist/es2019/view/FlexibleCard/components/actions/ai-summary-action/ai-summary-action-component.js +19 -45
  20. package/dist/es2019/view/FlexibleCard/components/actions/ai-summary-action/copy-summary-action.js +36 -0
  21. package/dist/es2019/view/FlexibleCard/components/actions/preview-action/index.js +2 -2
  22. package/dist/es2019/view/LinkUrl/index.js +1 -1
  23. package/dist/esm/messages.js +15 -0
  24. package/dist/esm/utils/analytics/analytics.js +1 -1
  25. package/dist/esm/view/FlexibleCard/components/actions/action/action-icon/index.js +4 -3
  26. package/dist/esm/view/FlexibleCard/components/actions/action/action-stack-item/index.js +1 -1
  27. package/dist/esm/view/FlexibleCard/components/actions/action/index.js +1 -1
  28. package/dist/esm/view/FlexibleCard/components/actions/ai-summary-action/ai-summarise-action.js +49 -0
  29. package/dist/esm/view/FlexibleCard/components/actions/ai-summary-action/ai-summary-action-component.js +20 -48
  30. package/dist/esm/view/FlexibleCard/components/actions/ai-summary-action/copy-summary-action.js +52 -0
  31. package/dist/esm/view/FlexibleCard/components/actions/preview-action/index.js +2 -2
  32. package/dist/esm/view/LinkUrl/index.js +1 -1
  33. package/dist/types/common/analytics/generated/analytics.types.d.ts +5 -1
  34. package/dist/types/messages.d.ts +2 -2
  35. package/dist/types/view/FlexibleCard/components/actions/action/action-icon/types.d.ts +1 -1
  36. package/dist/types/view/FlexibleCard/components/actions/action/action-stack-item/index.d.ts +1 -1
  37. package/dist/types/view/FlexibleCard/components/actions/action/index.d.ts +1 -1
  38. package/dist/types/view/FlexibleCard/components/actions/ai-summary-action/ai-summarise-action.d.ts +8 -0
  39. package/dist/types/view/FlexibleCard/components/actions/ai-summary-action/ai-summary-action-component.d.ts +3 -3
  40. package/dist/types/view/FlexibleCard/components/actions/ai-summary-action/copy-summary-action.d.ts +6 -0
  41. package/dist/types-ts4.5/common/analytics/generated/analytics.types.d.ts +5 -1
  42. package/dist/types-ts4.5/messages.d.ts +2 -2
  43. package/dist/types-ts4.5/view/FlexibleCard/components/actions/action/action-icon/types.d.ts +1 -1
  44. package/dist/types-ts4.5/view/FlexibleCard/components/actions/action/action-stack-item/index.d.ts +1 -1
  45. package/dist/types-ts4.5/view/FlexibleCard/components/actions/action/index.d.ts +1 -1
  46. package/dist/types-ts4.5/view/FlexibleCard/components/actions/ai-summary-action/ai-summarise-action.d.ts +8 -0
  47. package/dist/types-ts4.5/view/FlexibleCard/components/actions/ai-summary-action/ai-summary-action-component.d.ts +3 -3
  48. package/dist/types-ts4.5/view/FlexibleCard/components/actions/ai-summary-action/copy-summary-action.d.ts +6 -0
  49. package/package.json +4 -4
  50. package/dist/cjs/view/FlexibleCard/components/actions/preview-action/preview-icon/index.js +0 -19
  51. package/dist/es2019/view/FlexibleCard/components/actions/preview-action/preview-icon/index.js +0 -10
  52. package/dist/esm/view/FlexibleCard/components/actions/preview-action/preview-icon/index.js +0 -12
  53. package/dist/types/view/FlexibleCard/components/actions/preview-action/preview-icon/index.d.ts +0 -4
  54. package/dist/types-ts4.5/view/FlexibleCard/components/actions/preview-action/preview-icon/index.d.ts +0 -4
@@ -1,5 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import VidFullScreenOnIcon from '@atlaskit/icon/glyph/vid-full-screen-on';
3
+ import MediaServicesActualSizeIcon from '@atlaskit/icon/glyph/media-services/actual-size';
3
4
  import React, { useCallback } from 'react';
4
5
  import { FormattedMessage } from 'react-intl-next';
5
6
  import { ActionName } from '../../../../../constants';
@@ -8,7 +9,6 @@ import { useFlexibleUiAnalyticsContext, useFlexibleUiContext } from '../../../..
8
9
  import useInvokeClientAction from '../../../../../state/hooks/use-invoke-client-action';
9
10
  import { openEmbedModalWithFlexibleUiIcon } from '../../utils';
10
11
  import Action from '../action';
11
- import PreviewIcon from './preview-icon';
12
12
  const PreviewAction = ({
13
13
  onClick: onClickCallback,
14
14
  ...props
@@ -41,7 +41,7 @@ const PreviewAction = ({
41
41
  }
42
42
  }, [analytics, data, invoke, onClickCallback]);
43
43
  const isStackItem = props.as === 'stack-item';
44
- const Icon = isStackItem ? PreviewIcon : VidFullScreenOnIcon;
44
+ const Icon = isStackItem ? MediaServicesActualSizeIcon : VidFullScreenOnIcon;
45
45
  const tooltipMessage = isStackItem ? messages.preview_description : messages.preview_improved;
46
46
  return data ? /*#__PURE__*/React.createElement(Action, _extends({
47
47
  content: /*#__PURE__*/React.createElement(FormattedMessage, messages.preview_improved),
@@ -7,7 +7,7 @@ import { useLinkWarningModal } from './LinkWarningModal/hooks/use-link-warning-m
7
7
  import LinkWarningModal from './LinkWarningModal';
8
8
  const PACKAGE_DATA = {
9
9
  packageName: "@atlaskit/smart-card",
10
- packageVersion: "26.61.0",
10
+ packageVersion: "26.62.1",
11
11
  componentName: 'linkUrl'
12
12
  };
13
13
  const Link = withLinkClickedEvent('a');
@@ -205,6 +205,21 @@ export var messages = defineMessages({
205
205
  defaultMessage: 'Summarize the content of this link using Atlassian Intelligence.',
206
206
  description: 'Description of what the summarize link with AI action does'
207
207
  },
208
+ copy_summary_action: {
209
+ id: 'fabric.linking.copy_summary_action.nonfinal',
210
+ defaultMessage: 'Copy summary',
211
+ description: 'Allow a user to copy a generated summary'
212
+ },
213
+ copy_summary_action_description: {
214
+ id: 'fabric.linking.copy_summary_action.nonfinal',
215
+ defaultMessage: 'Copy summary',
216
+ description: 'Description of what the copy summary AI action does'
217
+ },
218
+ copied_summary_action_description: {
219
+ id: 'fabric.linking.copied_summary_action_description.nonfinal',
220
+ defaultMessage: 'Copied summary to clipboard',
221
+ description: 'Confirmation to the user that the summry has been copied'
222
+ },
208
223
  edit: {
209
224
  id: 'fabric.linking.edit',
210
225
  defaultMessage: 'Edit',
@@ -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: "26.61.0"
18
+ packageVersion: "26.62.1"
19
19
  };
20
20
  export var TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
21
21
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -19,7 +19,8 @@ var getIconStyles = function getIconStyles(isDisabled) {
19
19
  color: isDisabled ? "var(--ds-text-disabled, #6B778C)" : "var(--ds-icon, #44546F)"
20
20
  });
21
21
  };
22
- var backgroundStyles = css({
22
+ var stackItemIconSizeStyles = getIconSizeStyles('20px');
23
+ var stackItemIconStyles = css(stackItemIconSizeStyles, {
23
24
  display: 'inline-block',
24
25
  lineHeight: 0,
25
26
  padding: "var(--ds-space-025, 2px)",
@@ -32,9 +33,9 @@ var ActionIcon = function ActionIcon(_ref) {
32
33
  testId = _ref.testId,
33
34
  icon = _ref.icon,
34
35
  isDisabled = _ref.isDisabled,
35
- showBackground = _ref.showBackground;
36
+ asStackItemIcon = _ref.asStackItemIcon;
36
37
  return jsx("span", {
37
- css: [getIconStyles(isDisabled), getIconSizeStyles(getIconWidth(size)), showBackground && backgroundStyles],
38
+ css: [getIconStyles(isDisabled), asStackItemIcon ? stackItemIconStyles : getIconSizeStyles(getIconWidth(size))],
38
39
  "data-testid": "".concat(testId, "-icon")
39
40
  }, icon);
40
41
  };
@@ -56,10 +56,10 @@ var ActionStackItem = function ActionStackItem(_ref) {
56
56
  }
57
57
  }, [isDisabled, isLoading, onClickCallback]);
58
58
  var icon = iconOption && isLoading ? /*#__PURE__*/React.createElement(ActionIcon, {
59
+ asStackItemIcon: true,
59
60
  icon: /*#__PURE__*/React.createElement(Spinner, {
60
61
  testId: "".concat(testId, "-loading")
61
62
  }),
62
- showBackground: true,
63
63
  size: size
64
64
  }) : iconOption;
65
65
 
@@ -44,10 +44,10 @@ var Action = function Action(_ref) {
44
44
  var isStackItem = as === 'stack-item';
45
45
  var isDropdownItem = as === 'dropdown-item' || asDropDownItem;
46
46
  var actionIcon = icon && jsx(ActionIcon, {
47
+ asStackItemIcon: isStackItem,
47
48
  isDisabled: isDisabled,
48
49
  icon: icon,
49
50
  size: size,
50
- showBackground: isStackItem,
51
51
  testId: testId
52
52
  });
53
53
  var iconBefore = icon && iconPosition === 'before' ? actionIcon : undefined;
@@ -0,0 +1,49 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["url", "ari", "product", "onClick", "onError", "testId", "status", "summariseUrl"];
4
+ import React, { useCallback } from 'react';
5
+ import { FormattedMessage } from 'react-intl-next';
6
+ import Action from '../action';
7
+ import AiIcon from '../../../../common/ai-icon';
8
+ import { messages } from '../../../../../messages';
9
+ import { useAnalyticsEvents } from '../../../../../common/analytics/generated/use-analytics-events';
10
+ import { getErrorMessage } from './utils';
11
+ export function AISummariseAction(_ref) {
12
+ var url = _ref.url,
13
+ ari = _ref.ari,
14
+ product = _ref.product,
15
+ onClickCallback = _ref.onClick,
16
+ onErrorCallback = _ref.onError,
17
+ testId = _ref.testId,
18
+ status = _ref.status,
19
+ summariseUrl = _ref.summariseUrl,
20
+ props = _objectWithoutProperties(_ref, _excluded);
21
+ var _useAnalyticsEvents = useAnalyticsEvents(),
22
+ fireEvent = _useAnalyticsEvents.fireEvent;
23
+ var onCompleted = useCallback(function (state) {
24
+ if ((state === null || state === void 0 ? void 0 : state.status) === 'error') {
25
+ onErrorCallback === null || onErrorCallback === void 0 || onErrorCallback(getErrorMessage(state.error));
26
+ }
27
+ }, [onErrorCallback]);
28
+ var handleActionClick = useCallback(function () {
29
+ var _summariseUrl;
30
+ fireEvent('ui.button.clicked.aiSummary', {});
31
+ fireEvent('track.aiInteraction.initiated', {
32
+ aiFeatureName: 'Smart Links Summary',
33
+ proactiveAIGenerated: 0,
34
+ userGeneratedAI: 1
35
+ });
36
+ (_summariseUrl = summariseUrl()) === null || _summariseUrl === void 0 || _summariseUrl.then(onCompleted, onCompleted);
37
+ onClickCallback === null || onClickCallback === void 0 || onClickCallback();
38
+ }, [fireEvent, onClickCallback, onCompleted, summariseUrl]);
39
+ return /*#__PURE__*/React.createElement(Action, _extends({
40
+ content: /*#__PURE__*/React.createElement(FormattedMessage, messages.ai_summary_action),
41
+ icon: /*#__PURE__*/React.createElement(AiIcon, {
42
+ label: "Summarise with AI"
43
+ }),
44
+ onClick: handleActionClick,
45
+ testId: "".concat(testId, "-summarise-action"),
46
+ isLoading: status === 'loading',
47
+ tooltipMessage: /*#__PURE__*/React.createElement(FormattedMessage, messages.ai_summary_action_description)
48
+ }, props));
49
+ }
@@ -1,58 +1,30 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["onClick", "onError", "url", "ari", "product"];
4
- import React, { useCallback } from 'react';
5
- import { FormattedMessage } from 'react-intl-next';
2
+ import React from 'react';
6
3
  import { di } from 'react-magnetic-di';
7
- import { messages } from '../../../../../messages';
8
- import Action from '../action';
9
- import AiIcon from '../../../../common/ai-icon';
10
- import { useAnalyticsEvents } from '../../../../../common/analytics/generated/use-analytics-events';
11
4
  import { useAISummary } from '../../../../../state/hooks/use-ai-summary';
12
- import { getErrorMessage } from './utils';
13
- export var AISummaryActionComponent = function AISummaryActionComponent(_ref) {
14
- var onClickCallback = _ref.onClick,
15
- onErrorCallback = _ref.onError,
16
- _ref$url = _ref.url,
17
- url = _ref$url === void 0 ? '' : _ref$url,
18
- _ref$ari = _ref.ari,
19
- ari = _ref$ari === void 0 ? '' : _ref$ari,
20
- product = _ref.product,
21
- props = _objectWithoutProperties(_ref, _excluded);
22
- var _useAnalyticsEvents = useAnalyticsEvents(),
23
- fireEvent = _useAnalyticsEvents.fireEvent;
5
+ import { CopySummaryAction } from './copy-summary-action';
6
+ import { AISummariseAction } from './ai-summarise-action';
7
+ export var AISummaryActionComponent = function AISummaryActionComponent(props) {
8
+ var url = props.url,
9
+ ari = props.ari,
10
+ product = props.product,
11
+ _props$testId = props.testId,
12
+ testId = _props$testId === void 0 ? 'smart-action-ai-summary-action' : _props$testId;
24
13
  var _useAISummary = useAISummary({
25
14
  url: url,
26
15
  ari: ari,
27
16
  product: product
28
17
  }),
29
- status = _useAISummary.state.status,
18
+ _useAISummary$state = _useAISummary.state,
19
+ status = _useAISummary$state.status,
20
+ content = _useAISummary$state.content,
30
21
  summariseUrl = _useAISummary.summariseUrl;
31
- var onCompleted = useCallback(function (state) {
32
- if ((state === null || state === void 0 ? void 0 : state.status) === 'error') {
33
- onErrorCallback === null || onErrorCallback === void 0 || onErrorCallback(getErrorMessage(state.error));
34
- }
35
- }, [onErrorCallback]);
36
- var handleActionClick = useCallback(function () {
37
- var _summariseUrl;
38
- fireEvent('ui.button.clicked.aiSummary', {});
39
- fireEvent('track.aiInteraction.initiated', {
40
- aiFeatureName: 'Smart Links Summary',
41
- proactiveAIGenerated: 0,
42
- userGeneratedAI: 1
43
- });
44
- (_summariseUrl = summariseUrl()) === null || _summariseUrl === void 0 || _summariseUrl.then(onCompleted, onCompleted);
45
- onClickCallback === null || onClickCallback === void 0 || onClickCallback();
46
- }, [fireEvent, onClickCallback, onCompleted, summariseUrl]);
47
- return /*#__PURE__*/React.createElement(Action, _extends({
48
- content: /*#__PURE__*/React.createElement(FormattedMessage, messages.ai_summary_action),
49
- icon: /*#__PURE__*/React.createElement(AiIcon, {
50
- label: "Summarise with AI"
51
- }),
52
- isLoading: status === 'loading',
53
- onClick: handleActionClick,
54
- testId: "smart-action-ai-summary-action",
55
- tooltipMessage: /*#__PURE__*/React.createElement(FormattedMessage, messages.ai_summary_action_description)
56
- }, props));
57
- return null;
22
+ return status === 'done' ? /*#__PURE__*/React.createElement(CopySummaryAction, _extends({}, props, {
23
+ testId: testId,
24
+ content: content
25
+ })) : /*#__PURE__*/React.createElement(AISummariseAction, _extends({}, props, {
26
+ testId: testId,
27
+ summariseUrl: summariseUrl,
28
+ status: status
29
+ }));
58
30
  };
@@ -0,0 +1,52 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
5
+ var _excluded = ["url", "ari", "product", "onClick", "testId", "content"];
6
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
7
+ import React, { useCallback, useState } from 'react';
8
+ import CopyIcon from '@atlaskit/icon/glyph/copy';
9
+ import { FormattedMessage } from 'react-intl-next';
10
+ import Action from '../action';
11
+ import { messages } from '../../../../../messages';
12
+ import { useAnalyticsEvents } from '../../../../../common/analytics/generated/use-analytics-events';
13
+ export function CopySummaryAction(_ref) {
14
+ var url = _ref.url,
15
+ ari = _ref.ari,
16
+ product = _ref.product,
17
+ onClickCallback = _ref.onClick,
18
+ testId = _ref.testId,
19
+ content = _ref.content,
20
+ props = _objectWithoutProperties(_ref, _excluded);
21
+ var _useAnalyticsEvents = useAnalyticsEvents(),
22
+ fireEvent = _useAnalyticsEvents.fireEvent;
23
+ var _useState = useState(messages.copy_summary_action),
24
+ _useState2 = _slicedToArray(_useState, 2),
25
+ tooltipMessage = _useState2[0],
26
+ setTooltipMessage = _useState2[1];
27
+ var handleCopySummaryClick = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
28
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
29
+ while (1) switch (_context.prev = _context.next) {
30
+ case 0:
31
+ fireEvent('ui.button.clicked.copySummary', {});
32
+ _context.next = 3;
33
+ return navigator.clipboard.writeText(content !== null && content !== void 0 ? content : '');
34
+ case 3:
35
+ setTooltipMessage(messages.copied_summary_action_description);
36
+ onClickCallback === null || onClickCallback === void 0 || onClickCallback();
37
+ case 5:
38
+ case "end":
39
+ return _context.stop();
40
+ }
41
+ }, _callee);
42
+ })), [fireEvent, onClickCallback, content]);
43
+ return /*#__PURE__*/React.createElement(Action, _extends({
44
+ content: /*#__PURE__*/React.createElement(FormattedMessage, messages.copy_summary_action),
45
+ icon: /*#__PURE__*/React.createElement(CopyIcon, {
46
+ label: "Copy Summary"
47
+ }),
48
+ onClick: handleCopySummaryClick,
49
+ testId: "".concat(testId, "-copy-summary-action"),
50
+ tooltipMessage: /*#__PURE__*/React.createElement(FormattedMessage, tooltipMessage)
51
+ }, props));
52
+ }
@@ -7,6 +7,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
7
7
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8
8
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
9
9
  import VidFullScreenOnIcon from '@atlaskit/icon/glyph/vid-full-screen-on';
10
+ import MediaServicesActualSizeIcon from '@atlaskit/icon/glyph/media-services/actual-size';
10
11
  import React, { useCallback } from 'react';
11
12
  import { FormattedMessage } from 'react-intl-next';
12
13
  import { ActionName } from '../../../../../constants';
@@ -15,7 +16,6 @@ import { useFlexibleUiAnalyticsContext, useFlexibleUiContext } from '../../../..
15
16
  import useInvokeClientAction from '../../../../../state/hooks/use-invoke-client-action';
16
17
  import { openEmbedModalWithFlexibleUiIcon } from '../../utils';
17
18
  import Action from '../action';
18
- import PreviewIcon from './preview-icon';
19
19
  var PreviewAction = function PreviewAction(_ref) {
20
20
  var _context$actions;
21
21
  var onClickCallback = _ref.onClick,
@@ -62,7 +62,7 @@ var PreviewAction = function PreviewAction(_ref) {
62
62
  }
63
63
  }, [analytics, data, invoke, onClickCallback]);
64
64
  var isStackItem = props.as === 'stack-item';
65
- var Icon = isStackItem ? PreviewIcon : VidFullScreenOnIcon;
65
+ var Icon = isStackItem ? MediaServicesActualSizeIcon : VidFullScreenOnIcon;
66
66
  var tooltipMessage = isStackItem ? messages.preview_description : messages.preview_improved;
67
67
  return data ? /*#__PURE__*/React.createElement(Action, _extends({
68
68
  content: /*#__PURE__*/React.createElement(FormattedMessage, messages.preview_improved),
@@ -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.61.0",
13
+ packageVersion: "26.62.1",
14
14
  componentName: 'linkUrl'
15
15
  };
16
16
  var Link = withLinkClickedEvent('a');
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Generates Typescript types for analytics events from analytics.spec.yaml
5
5
  *
6
- * @codegen <<SignedSource::c4023f0dc3ef442249a36d387b17308e>>
6
+ * @codegen <<SignedSource::334c6c6965226785c649b8d6b292227c>>
7
7
  * @codegenCommand yarn workspace @atlassian/analytics-tooling run analytics:codegen smart-card
8
8
  */
9
9
  export type PackageMetaDataType = {
@@ -25,6 +25,7 @@ export type ResolvedAttributesType = {
25
25
  canBeDatasource: boolean | null;
26
26
  };
27
27
  export type ButtonClickedAiSummaryAttributesType = {};
28
+ export type ButtonClickedCopySummaryAttributesType = {};
28
29
  export type SummaryViewedAttributesType = {
29
30
  fromCache: boolean | null;
30
31
  };
@@ -42,6 +43,9 @@ export type AnalyticsEventAttributes = {
42
43
  /**
43
44
  * fired when an ai summary is clicked */
44
45
  'ui.button.clicked.aiSummary': ButtonClickedAiSummaryAttributesType;
46
+ /**
47
+ * fired when the copy ai summary button is clicked */
48
+ 'ui.button.clicked.copySummary': ButtonClickedCopySummaryAttributesType;
45
49
  /**
46
50
  * fired when a summary is viewed */
47
51
  'ui.summary.viewed': SummaryViewedAttributesType;
@@ -1,6 +1,6 @@
1
- import { MessageDescriptor } from 'react-intl-next';
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_summarizing' | 'ai_summary_error_generic' | 'ai_summary_error_acceptable_use_violation' | 'ai_summary_error_hipaa_content_detected' | 'ai_summary_action' | 'ai_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' | '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_goal' | 'unfollow_goal_description' | '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';
3
+ export type MessageKey = 'assigned_to' | 'ai_summarize' | 'ai_summarized' | 'ai_summarized_abbreviation' | 'ai_summarized_info' | 'ai_summarizing' | 'ai_summary_error_generic' | 'ai_summary_error_acceptable_use_violation' | 'ai_summary_error_hipaa_content_detected' | 'ai_summary_action' | 'ai_summary_action_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' | '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_goal' | 'unfollow_goal_description' | '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';
4
4
  type Messages = {
5
5
  [K in MessageKey]: MessageDescriptor;
6
6
  };
@@ -1,9 +1,9 @@
1
1
  import type { ReactChild } from 'react';
2
2
  import type { SmartLinkSize } from '../../../../../../constants';
3
3
  export type ActionIconProps = {
4
+ asStackItemIcon?: boolean;
4
5
  size?: SmartLinkSize;
5
6
  icon?: ReactChild;
6
7
  isDisabled?: boolean;
7
- showBackground?: boolean;
8
8
  testId?: string;
9
9
  };
@@ -1,4 +1,4 @@
1
1
  import { type FC } from 'react';
2
- import { ActionStackItemProps } from './types';
2
+ import { type ActionStackItemProps } from './types';
3
3
  declare const ActionStackItem: FC<ActionStackItemProps>;
4
4
  export default ActionStackItem;
@@ -1,6 +1,6 @@
1
1
  /** @jsx jsx */
2
2
  import { type FC } from 'react';
3
- import { ActionProps } from './types';
3
+ import { type ActionProps } from './types';
4
4
  /**
5
5
  * A base action that can be triggered with an on click.
6
6
  * @internal
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import type { AISummaryState, AISummaryStatus } from '../../../../../state/hooks/use-ai-summary/ai-summary-service/types';
3
+ import type { AISummaryActionData } from '../../../../../state/flexible-ui-context/types';
4
+ import type { AISummaryActionProps } from './types';
5
+ export declare function AISummariseAction({ url, ari, product, onClick: onClickCallback, onError: onErrorCallback, testId, status, summariseUrl, ...props }: AISummaryActionProps & AISummaryActionData & {
6
+ status: AISummaryStatus;
7
+ summariseUrl: () => Promise<AISummaryState> | undefined;
8
+ }): JSX.Element;
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
- import { type AISummaryActionData } from '../../../../../state/flexible-ui-context/types';
3
- import { type AISummaryActionProps } from './types';
4
- export declare const AISummaryActionComponent: ({ onClick: onClickCallback, onError: onErrorCallback, url, ari, product, ...props }: AISummaryActionProps & AISummaryActionData) => JSX.Element | null;
2
+ import type { AISummaryActionData } from '../../../../../state/flexible-ui-context/types';
3
+ import type { AISummaryActionProps } from './types';
4
+ export declare const AISummaryActionComponent: (props: AISummaryActionProps & AISummaryActionData) => JSX.Element;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import type { AISummaryActionData } from '../../../../../state/flexible-ui-context/types';
3
+ import type { AISummaryActionProps } from './types';
4
+ export declare function CopySummaryAction({ url, ari, product, onClick: onClickCallback, testId, content, ...props }: AISummaryActionProps & AISummaryActionData & {
5
+ content: string;
6
+ }): JSX.Element;
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Generates Typescript types for analytics events from analytics.spec.yaml
5
5
  *
6
- * @codegen <<SignedSource::c4023f0dc3ef442249a36d387b17308e>>
6
+ * @codegen <<SignedSource::334c6c6965226785c649b8d6b292227c>>
7
7
  * @codegenCommand yarn workspace @atlassian/analytics-tooling run analytics:codegen smart-card
8
8
  */
9
9
  export type PackageMetaDataType = {
@@ -25,6 +25,7 @@ export type ResolvedAttributesType = {
25
25
  canBeDatasource: boolean | null;
26
26
  };
27
27
  export type ButtonClickedAiSummaryAttributesType = {};
28
+ export type ButtonClickedCopySummaryAttributesType = {};
28
29
  export type SummaryViewedAttributesType = {
29
30
  fromCache: boolean | null;
30
31
  };
@@ -42,6 +43,9 @@ export type AnalyticsEventAttributes = {
42
43
  /**
43
44
  * fired when an ai summary is clicked */
44
45
  'ui.button.clicked.aiSummary': ButtonClickedAiSummaryAttributesType;
46
+ /**
47
+ * fired when the copy ai summary button is clicked */
48
+ 'ui.button.clicked.copySummary': ButtonClickedCopySummaryAttributesType;
45
49
  /**
46
50
  * fired when a summary is viewed */
47
51
  'ui.summary.viewed': SummaryViewedAttributesType;
@@ -1,6 +1,6 @@
1
- import { MessageDescriptor } from 'react-intl-next';
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_summarizing' | 'ai_summary_error_generic' | 'ai_summary_error_acceptable_use_violation' | 'ai_summary_error_hipaa_content_detected' | 'ai_summary_action' | 'ai_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' | '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_goal' | 'unfollow_goal_description' | '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';
3
+ export type MessageKey = 'assigned_to' | 'ai_summarize' | 'ai_summarized' | 'ai_summarized_abbreviation' | 'ai_summarized_info' | 'ai_summarizing' | 'ai_summary_error_generic' | 'ai_summary_error_acceptable_use_violation' | 'ai_summary_error_hipaa_content_detected' | 'ai_summary_action' | 'ai_summary_action_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' | '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_goal' | 'unfollow_goal_description' | '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';
4
4
  type Messages = {
5
5
  [K in MessageKey]: MessageDescriptor;
6
6
  };
@@ -1,9 +1,9 @@
1
1
  import type { ReactChild } from 'react';
2
2
  import type { SmartLinkSize } from '../../../../../../constants';
3
3
  export type ActionIconProps = {
4
+ asStackItemIcon?: boolean;
4
5
  size?: SmartLinkSize;
5
6
  icon?: ReactChild;
6
7
  isDisabled?: boolean;
7
- showBackground?: boolean;
8
8
  testId?: string;
9
9
  };
@@ -1,4 +1,4 @@
1
1
  import { type FC } from 'react';
2
- import { ActionStackItemProps } from './types';
2
+ import { type ActionStackItemProps } from './types';
3
3
  declare const ActionStackItem: FC<ActionStackItemProps>;
4
4
  export default ActionStackItem;
@@ -1,6 +1,6 @@
1
1
  /** @jsx jsx */
2
2
  import { type FC } from 'react';
3
- import { ActionProps } from './types';
3
+ import { type ActionProps } from './types';
4
4
  /**
5
5
  * A base action that can be triggered with an on click.
6
6
  * @internal
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import type { AISummaryState, AISummaryStatus } from '../../../../../state/hooks/use-ai-summary/ai-summary-service/types';
3
+ import type { AISummaryActionData } from '../../../../../state/flexible-ui-context/types';
4
+ import type { AISummaryActionProps } from './types';
5
+ export declare function AISummariseAction({ url, ari, product, onClick: onClickCallback, onError: onErrorCallback, testId, status, summariseUrl, ...props }: AISummaryActionProps & AISummaryActionData & {
6
+ status: AISummaryStatus;
7
+ summariseUrl: () => Promise<AISummaryState> | undefined;
8
+ }): JSX.Element;
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
- import { type AISummaryActionData } from '../../../../../state/flexible-ui-context/types';
3
- import { type AISummaryActionProps } from './types';
4
- export declare const AISummaryActionComponent: ({ onClick: onClickCallback, onError: onErrorCallback, url, ari, product, ...props }: AISummaryActionProps & AISummaryActionData) => JSX.Element | null;
2
+ import type { AISummaryActionData } from '../../../../../state/flexible-ui-context/types';
3
+ import type { AISummaryActionProps } from './types';
4
+ export declare const AISummaryActionComponent: (props: AISummaryActionProps & AISummaryActionData) => JSX.Element;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import type { AISummaryActionData } from '../../../../../state/flexible-ui-context/types';
3
+ import type { AISummaryActionProps } from './types';
4
+ export declare function CopySummaryAction({ url, ari, product, onClick: onClickCallback, testId, content, ...props }: AISummaryActionProps & AISummaryActionData & {
5
+ content: string;
6
+ }): JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "26.61.0",
3
+ "version": "26.62.1",
4
4
  "description": "Smart card component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -30,7 +30,7 @@
30
30
  "dependencies": {
31
31
  "@atlaskit/analytics-gas-types": "^5.1.0",
32
32
  "@atlaskit/analytics-next": "^9.3.0",
33
- "@atlaskit/avatar": "^21.7.0",
33
+ "@atlaskit/avatar": "^21.8.0",
34
34
  "@atlaskit/avatar-group": "^9.6.0",
35
35
  "@atlaskit/badge": "^16.1.0",
36
36
  "@atlaskit/button": "^17.14.0",
@@ -54,8 +54,8 @@
54
54
  "@atlaskit/popup": "^1.17.0",
55
55
  "@atlaskit/primitives": "^6.1.0",
56
56
  "@atlaskit/spinner": "^16.1.0",
57
- "@atlaskit/theme": "^12.7.0",
58
- "@atlaskit/tokens": "^1.45.0",
57
+ "@atlaskit/theme": "^12.8.0",
58
+ "@atlaskit/tokens": "^1.46.0",
59
59
  "@atlaskit/tooltip": "^18.3.0",
60
60
  "@atlaskit/ufo": "^0.2.0",
61
61
  "@babel/runtime": "^7.0.0",
@@ -1,19 +0,0 @@
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 _expand = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/expand"));
9
- var _primitives = require("@atlaskit/primitives");
10
- var _react = _interopRequireDefault(require("react"));
11
- var iconStyles = (0, _primitives.xcss)({
12
- transform: 'rotate(-45deg)'
13
- });
14
- var PreviewIcon = function PreviewIcon(props) {
15
- return /*#__PURE__*/_react.default.createElement(_primitives.Box, {
16
- xcss: iconStyles
17
- }, /*#__PURE__*/_react.default.createElement(_expand.default, props));
18
- };
19
- var _default = exports.default = PreviewIcon;
@@ -1,10 +0,0 @@
1
- import EditorExpandIcon from '@atlaskit/icon/glyph/editor/expand';
2
- import { Box, xcss } from '@atlaskit/primitives';
3
- import React from 'react';
4
- const iconStyles = xcss({
5
- transform: 'rotate(-45deg)'
6
- });
7
- const PreviewIcon = props => /*#__PURE__*/React.createElement(Box, {
8
- xcss: iconStyles
9
- }, /*#__PURE__*/React.createElement(EditorExpandIcon, props));
10
- export default PreviewIcon;