@atlaskit/smart-card 44.5.3 → 44.6.0

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 (76) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/__tests__/vr-tests/__snapshots__/hover-card/hover-card-with-generic-3p-rovo-chat-action--default.png +2 -2
  3. package/dist/cjs/__tests__/vr-tests/__snapshots__/inline-card/inline-card-unauthorised-social-proof-exploratory-low-share-previewing-headline-and-short-connect-label--default.png +3 -0
  4. package/dist/cjs/__tests__/vr-tests/__snapshots__/inline-card/inline-card-unauthorised-social-proof-no-context-percentage-headline-with-short-connect-label--default.png +3 -0
  5. package/dist/cjs/__tests__/vr-tests/__snapshots__/inline-card/inline-card-unauthorised-social-proof-persisted-percentage-previews-headline-30-and-short-connect-label--default.png +3 -0
  6. package/dist/cjs/messages.js +20 -0
  7. package/dist/cjs/state/hooks/use-incoming-outgoing-links/index.js +20 -5
  8. package/dist/cjs/state/hooks/use-inline-action-nudge-experiment/index.js +1 -1
  9. package/dist/cjs/state/services/current-site-cloud-id/index.js +2 -1
  10. package/dist/cjs/utils/analytics/analytics.js +1 -1
  11. package/dist/cjs/view/FlexibleCard/components/actions/action/action-stack-item/action-button.js +1 -1
  12. package/dist/cjs/view/FlexibleCard/components/actions/ai-summary-action/ai-summarise-action.js +2 -1
  13. package/dist/cjs/view/FlexibleCard/components/actions/ai-summary-action/ai-summary-action-component.js +2 -1
  14. package/dist/cjs/view/FlexibleCard/components/actions/automation-action/index.js +2 -1
  15. package/dist/cjs/view/FlexibleCard/components/actions/copy-link-action/index.js +2 -1
  16. package/dist/cjs/view/FlexibleCard/components/actions/follow-action/index.js +2 -1
  17. package/dist/cjs/view/FlexibleCard/components/actions/preview-action/index.js +3 -2
  18. package/dist/cjs/view/FlexibleCard/components/actions/view-related-links-action/index.js +3 -2
  19. package/dist/cjs/view/InlineCard/UnauthorisedView/index.compiled.css +21 -0
  20. package/dist/cjs/view/InlineCard/UnauthorisedView/index.js +108 -14
  21. package/dist/cjs/view/InlineCard/common/action-button/index.compiled.css +4 -7
  22. package/dist/cjs/view/InlineCard/common/action-button/index.js +21 -3
  23. package/dist/cjs/view/LinkUrl/index.js +1 -1
  24. package/dist/es2019/__tests__/vr-tests/__snapshots__/hover-card/hover-card-with-generic-3p-rovo-chat-action--default.png +2 -2
  25. package/dist/es2019/__tests__/vr-tests/__snapshots__/inline-card/inline-card-unauthorised-social-proof-exploratory-low-share-previewing-headline-and-short-connect-label--default.png +3 -0
  26. package/dist/es2019/__tests__/vr-tests/__snapshots__/inline-card/inline-card-unauthorised-social-proof-no-context-percentage-headline-with-short-connect-label--default.png +3 -0
  27. package/dist/es2019/__tests__/vr-tests/__snapshots__/inline-card/inline-card-unauthorised-social-proof-persisted-percentage-previews-headline-30-and-short-connect-label--default.png +3 -0
  28. package/dist/es2019/messages.js +20 -0
  29. package/dist/es2019/state/hooks/use-incoming-outgoing-links/index.js +4 -2
  30. package/dist/es2019/state/hooks/use-inline-action-nudge-experiment/index.js +1 -1
  31. package/dist/es2019/state/services/current-site-cloud-id/index.js +2 -2
  32. package/dist/es2019/utils/analytics/analytics.js +1 -1
  33. package/dist/es2019/view/FlexibleCard/components/actions/action/action-stack-item/action-button.js +1 -1
  34. package/dist/es2019/view/FlexibleCard/components/actions/ai-summary-action/ai-summarise-action.js +2 -1
  35. package/dist/es2019/view/FlexibleCard/components/actions/ai-summary-action/ai-summary-action-component.js +2 -1
  36. package/dist/es2019/view/FlexibleCard/components/actions/automation-action/index.js +2 -1
  37. package/dist/es2019/view/FlexibleCard/components/actions/copy-link-action/index.js +2 -1
  38. package/dist/es2019/view/FlexibleCard/components/actions/follow-action/index.js +2 -1
  39. package/dist/es2019/view/FlexibleCard/components/actions/preview-action/index.js +3 -2
  40. package/dist/es2019/view/FlexibleCard/components/actions/view-related-links-action/index.js +3 -2
  41. package/dist/es2019/view/InlineCard/UnauthorisedView/index.compiled.css +21 -0
  42. package/dist/es2019/view/InlineCard/UnauthorisedView/index.js +95 -2
  43. package/dist/es2019/view/InlineCard/common/action-button/index.compiled.css +4 -7
  44. package/dist/es2019/view/InlineCard/common/action-button/index.js +19 -2
  45. package/dist/es2019/view/LinkUrl/index.js +1 -1
  46. package/dist/esm/__tests__/vr-tests/__snapshots__/hover-card/hover-card-with-generic-3p-rovo-chat-action--default.png +2 -2
  47. package/dist/esm/__tests__/vr-tests/__snapshots__/inline-card/inline-card-unauthorised-social-proof-exploratory-low-share-previewing-headline-and-short-connect-label--default.png +3 -0
  48. package/dist/esm/__tests__/vr-tests/__snapshots__/inline-card/inline-card-unauthorised-social-proof-no-context-percentage-headline-with-short-connect-label--default.png +3 -0
  49. package/dist/esm/__tests__/vr-tests/__snapshots__/inline-card/inline-card-unauthorised-social-proof-persisted-percentage-previews-headline-30-and-short-connect-label--default.png +3 -0
  50. package/dist/esm/messages.js +20 -0
  51. package/dist/esm/state/hooks/use-incoming-outgoing-links/index.js +20 -5
  52. package/dist/esm/state/hooks/use-inline-action-nudge-experiment/index.js +1 -1
  53. package/dist/esm/state/services/current-site-cloud-id/index.js +2 -1
  54. package/dist/esm/utils/analytics/analytics.js +1 -1
  55. package/dist/esm/view/FlexibleCard/components/actions/action/action-stack-item/action-button.js +1 -1
  56. package/dist/esm/view/FlexibleCard/components/actions/ai-summary-action/ai-summarise-action.js +2 -1
  57. package/dist/esm/view/FlexibleCard/components/actions/ai-summary-action/ai-summary-action-component.js +2 -1
  58. package/dist/esm/view/FlexibleCard/components/actions/automation-action/index.js +2 -1
  59. package/dist/esm/view/FlexibleCard/components/actions/copy-link-action/index.js +2 -1
  60. package/dist/esm/view/FlexibleCard/components/actions/follow-action/index.js +2 -1
  61. package/dist/esm/view/FlexibleCard/components/actions/preview-action/index.js +3 -2
  62. package/dist/esm/view/FlexibleCard/components/actions/view-related-links-action/index.js +3 -2
  63. package/dist/esm/view/InlineCard/UnauthorisedView/index.compiled.css +21 -0
  64. package/dist/esm/view/InlineCard/UnauthorisedView/index.js +108 -14
  65. package/dist/esm/view/InlineCard/common/action-button/index.compiled.css +4 -7
  66. package/dist/esm/view/InlineCard/common/action-button/index.js +21 -3
  67. package/dist/esm/view/LinkUrl/index.js +1 -1
  68. package/dist/types/messages.d.ts +1 -1
  69. package/dist/types/state/services/current-site-cloud-id/index.d.ts +1 -1
  70. package/dist/types/view/InlineCard/UnauthorisedView/index.d.ts +1 -1
  71. package/dist/types/view/InlineCard/common/action-button/index.d.ts +7 -0
  72. package/dist/types-ts4.5/messages.d.ts +1 -1
  73. package/dist/types-ts4.5/state/services/current-site-cloud-id/index.d.ts +1 -1
  74. package/dist/types-ts4.5/view/InlineCard/UnauthorisedView/index.d.ts +1 -1
  75. package/dist/types-ts4.5/view/InlineCard/common/action-button/index.d.ts +7 -0
  76. package/package.json +6 -3
@@ -175,6 +175,26 @@ export const messages = defineMessages({
175
175
  defaultMessage: 'Connect to {context}',
176
176
  description: 'Shown on a button to connect user external account to their Atlassian account.'
177
177
  },
178
+ connect_inline_social_proof: {
179
+ id: 'fabric.linking.connect_inline_social_proof',
180
+ defaultMessage: 'Connect',
181
+ description: 'Shown on a button for unauthorised inline smart links when the social proof inline CTA experiment is active. Replaces the longer "Connect your {context} account" label.'
182
+ },
183
+ social_proof_inline_cta_tag_high_with_context: {
184
+ id: 'fabric.linking.social_proof_inline_cta_tag_high_with_context',
185
+ defaultMessage: '<b>{connectedPct}%</b> of your team previews {context}',
186
+ description: 'Social-proof tag pill beside the shortcut "Connect" on an unauthorised inline smart link when adoption is not in the exploratory range. {connectedPct} is the approximate share previewing/using the integration; {context} is the provider display name.'
187
+ },
188
+ social_proof_inline_cta_tag_high_no_context: {
189
+ id: 'fabric.linking.social_proof_inline_cta_tag_high_no_context',
190
+ defaultMessage: '<b>{connectedPct}%</b> of your team previews this',
191
+ description: 'Social-proof tag pill when adoption is above the exploratory threshold and no provider display name is available; {connectedPct} is the approximate share previewing the integration.'
192
+ },
193
+ social_proof_inline_cta_tag_low_with_context: {
194
+ id: 'fabric.linking.social_proof_inline_cta_tag_low_with_context',
195
+ defaultMessage: 'Your team is previewing {context}',
196
+ description: 'Social-proof tag pill when share is below the percentage headline threshold; shown only when a provider display name is available. Omit the pill entirely when personalization is unavailable or the provider name is unknown.'
197
+ },
178
198
  connect_unauthorised_account_description: {
179
199
  id: 'fabric.linking.connect_unauthorised_account_description',
180
200
  defaultMessage: 'Connect your {context} account to collaborate on work across Atlassian products.',
@@ -1,5 +1,7 @@
1
1
  import { useCallback, useMemo } from 'react';
2
2
  import { request } from '@atlaskit/linking-common';
3
+ import { fg } from '@atlaskit/platform-feature-flags';
4
+ import { getCurrentSiteCloudId } from '../use-current-site-cloud-id';
3
5
  import { queryIncomingOutgoingLinks as queryIncomingOutgoingAris } from './query';
4
6
  /**
5
7
  * @param baseUriWithNoTrailingSlash base url which will then be appended with /gateway/api/graphql to make requests to AGG
@@ -31,8 +33,8 @@ const useIncomingOutgoingAri = (baseUriWithNoTrailingSlash = '') => {
31
33
  if (match && match[2]) {
32
34
  return match[2]; // Return the cloud_id (siteId)
33
35
  }
34
- return await getCurrentSiteId();
35
- }, [getCurrentSiteId]);
36
+ return fg('platform_sl_3p_preauth_soc_proof_inline_killswitch') ? await getCurrentSiteCloudId(baseUriWithNoTrailingSlash) : await getCurrentSiteId();
37
+ }, [getCurrentSiteId, baseUriWithNoTrailingSlash]);
36
38
  const getIncomingOutgoingAris = useCallback(
37
39
  /**
38
40
  * Returning aris linking to (outgoing) and from (incoming) a given ari from AGS using
@@ -36,7 +36,7 @@ const useInlineActionNudgeExperiment = (url, showHoverPreview, actionOptions) =>
36
36
  if (!isRovoChatEnabled || !showHoverPreview || !url || !isRovoChatActionOptedIn) {
37
37
  return NOT_ENABLED_RESULT;
38
38
  }
39
- if (extensionKey && !ELIGIBLE_EXTENSION_KEYS.has(extensionKey)) {
39
+ if (!extensionKey || !ELIGIBLE_EXTENSION_KEYS.has(extensionKey)) {
40
40
  return NOT_ENABLED_RESULT;
41
41
  }
42
42
  const isEnabled = expValEquals('rovogrowth-640-inline-action-nudge-exp', 'isEnabled', true);
@@ -92,10 +92,10 @@ export class CurrentSiteCloudIdService {
92
92
  }
93
93
  return this.tenantInfoInflightPromise;
94
94
  }
95
-
96
- /** Clears the session pin so the next {@link get} may run `tenant_info` again (e.g. tests). */
95
+ /** Clears session pin and persisted storage so the next {@link get} is a fresh tenant_info fetch. */
97
96
  clearCache() {
98
97
  this.tenantInfoInflightPromise = null;
98
+ smartCardStorage.removeItem(CURRENT_SITE_CLOUD_ID_STORAGE_ITEM_KEY);
99
99
  }
100
100
  }
101
101
  export const currentSiteCloudIdService = new CurrentSiteCloudIdService();
@@ -2,7 +2,7 @@ export const ANALYTICS_CHANNEL = 'media';
2
2
  export const context = {
3
3
  componentName: 'smart-cards',
4
4
  packageName: "@atlaskit/smart-card" || '',
5
- packageVersion: "44.5.2" || ''
5
+ packageVersion: "44.5.4" || ''
6
6
  };
7
7
  export let TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
8
8
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -75,7 +75,7 @@ const ActionButton = ({
75
75
  // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
76
76
  ,
77
77
  style: style
78
- }, fg('platform_sl_3p_auth_rovo_action_kill_switch') ? {
78
+ }, fg('platform_sl_3p_auth_rovo_action_kill_switch') || expValEqualsNoExposure('rovogrowth-640-inline-action-nudge-exp', 'isEnabled', true) ? {
79
79
  'aria-label': ariaLabel
80
80
  } : {}), /*#__PURE__*/React.createElement(Inline, {
81
81
  alignBlock: "center",
@@ -3,6 +3,7 @@ import React, { useCallback } from 'react';
3
3
  import { FormattedMessage } from 'react-intl';
4
4
  import AiIcon from '@atlaskit/icon/core/atlassian-intelligence';
5
5
  import { fg } from '@atlaskit/platform-feature-flags';
6
+ import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
6
7
  import { useAnalyticsEvents } from '../../../../../common/analytics/generated/use-analytics-events';
7
8
  import { messages } from '../../../../../messages';
8
9
  import Action from '../action';
@@ -40,7 +41,7 @@ export function AISummariseAction({
40
41
  spacing: "spacious",
41
42
  color: "currentColor",
42
43
  label: "Summarise with AI"
43
- }, fg('platform_sl_3p_auth_rovo_action_kill_switch') || fg('platform_sl_3p_auth_rovo_block_card_kill_switch') ? {
44
+ }, fg('platform_sl_3p_auth_rovo_action_kill_switch') || fg('platform_sl_3p_auth_rovo_block_card_kill_switch') || expValEqualsNoExposure('rovogrowth-640-inline-action-nudge-exp', 'isEnabled', true) ? {
44
45
  size: props.iconSize
45
46
  } : {})),
46
47
  onClick: handleActionClick,
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import React, { useEffect } from 'react';
3
3
  import { di } from 'react-magnetic-di';
4
4
  import { fg } from '@atlaskit/platform-feature-flags';
5
+ import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
5
6
  import useAISummaryAction from '../../../../../state/hooks/use-ai-summary-action';
6
7
  import { AISummariseAction } from './ai-summarise-action';
7
8
  import { CopySummaryAction, CopySummaryActionNew } from './copy-summary-action';
@@ -21,7 +22,7 @@ export const AISummaryActionComponent = props => {
21
22
  useEffect(() => {
22
23
  onLoadingChange === null || onLoadingChange === void 0 ? void 0 : onLoadingChange(status === 'loading');
23
24
  }, [onLoadingChange, status]);
24
- return status === 'done' ? fg('platform_sl_3p_auth_rovo_action_kill_switch') ? /*#__PURE__*/React.createElement(CopySummaryActionNew, _extends({}, props, {
25
+ return status === 'done' ? fg('platform_sl_3p_auth_rovo_action_kill_switch') || expValEqualsNoExposure('rovogrowth-640-inline-action-nudge-exp', 'isEnabled', true) ? /*#__PURE__*/React.createElement(CopySummaryActionNew, _extends({}, props, {
25
26
  summary: content,
26
27
  testId: testId
27
28
  })) : /*#__PURE__*/React.createElement(CopySummaryAction, _extends({}, props, {
@@ -4,6 +4,7 @@ import { FormattedMessage, useIntl } from 'react-intl';
4
4
  import AutomationIcon from '@atlaskit/icon/core/automation';
5
5
  import { fg } from '@atlaskit/platform-feature-flags';
6
6
  import { Text } from '@atlaskit/primitives/compiled';
7
+ import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
7
8
  import { useAnalyticsEvents } from '../../../../../common/analytics/generated/use-analytics-events';
8
9
  import { ActionName } from '../../../../../constants';
9
10
  import { messages } from '../../../../../messages';
@@ -76,7 +77,7 @@ const AutomationAction = props => {
76
77
  spacing: "spacious",
77
78
  color: "currentColor",
78
79
  label: automationActionIconLabel
79
- }, fg('platform_sl_3p_auth_rovo_action_kill_switch') || fg('platform_sl_3p_auth_rovo_block_card_kill_switch') ? {
80
+ }, fg('platform_sl_3p_auth_rovo_action_kill_switch') || fg('platform_sl_3p_auth_rovo_block_card_kill_switch') || expValEqualsNoExposure('rovogrowth-640-inline-action-nudge-exp', 'isEnabled', true) ? {
80
81
  size: props.iconSize
81
82
  } : {})),
82
83
  testId: "smart-action-automation-action",
@@ -3,6 +3,7 @@ import React, { useCallback, useState } from 'react';
3
3
  import { FormattedMessage } from 'react-intl';
4
4
  import LinkIcon from '@atlaskit/icon/core/link';
5
5
  import { fg } from '@atlaskit/platform-feature-flags';
6
+ import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
6
7
  import { ActionName } from '../../../../../constants';
7
8
  import { messages } from '../../../../../messages';
8
9
  import { useFlexibleUiContext } from '../../../../../state/flexible-ui-context';
@@ -36,7 +37,7 @@ const CopyLinkAction = ({
36
37
  color: "currentColor",
37
38
  label: fg('navx-3698-flexible-card-a11y-fix') ? '' : 'copy url',
38
39
  spacing: "spacious"
39
- }, fg('platform_sl_3p_auth_rovo_action_kill_switch') || fg('platform_sl_3p_auth_rovo_block_card_kill_switch') ? {
40
+ }, fg('platform_sl_3p_auth_rovo_action_kill_switch') || fg('platform_sl_3p_auth_rovo_block_card_kill_switch') || expValEqualsNoExposure('rovogrowth-640-inline-action-nudge-exp', 'isEnabled', true) ? {
40
41
  size: props.iconSize
41
42
  } : {})),
42
43
  onClick: onClick,
@@ -3,6 +3,7 @@ import React from 'react';
3
3
  import { FormattedMessage, useIntl } from 'react-intl';
4
4
  import FeatureGates from '@atlaskit/feature-gate-js-client';
5
5
  import { fg } from '@atlaskit/platform-feature-flags';
6
+ import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
6
7
  import { ActionName } from '../../../../../constants';
7
8
  import { messages } from '../../../../../messages';
8
9
  import { useFlexibleUiContext } from '../../../../../state/flexible-ui-context';
@@ -69,7 +70,7 @@ const FollowAction = props => {
69
70
  };
70
71
  return /*#__PURE__*/React.createElement(ServerAction, _extends({
71
72
  content: /*#__PURE__*/React.createElement(FormattedMessage, label)
72
- }, fg('platform_sl_3p_auth_rovo_action_kill_switch') ? {
73
+ }, fg('platform_sl_3p_auth_rovo_action_kill_switch') || expValEqualsNoExposure('rovogrowth-640-inline-action-nudge-exp', 'isEnabled', true) ? {
73
74
  ariaLabel: intl.formatMessage(label)
74
75
  } : {}, {
75
76
  icon: followIcon,
@@ -5,6 +5,7 @@ import MediaServicesActualSizeIcon from '@atlaskit/icon/core/grow-diagonal';
5
5
  import PanelRightIcon from '@atlaskit/icon/core/panel-right';
6
6
  import { fg } from '@atlaskit/platform-feature-flags';
7
7
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
8
+ import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
8
9
  import { ActionName } from '../../../../../constants';
9
10
  import { messages } from '../../../../../messages';
10
11
  import { useFlexibleUiContext } from '../../../../../state/flexible-ui-context';
@@ -34,7 +35,7 @@ const PreviewAction = ({
34
35
  color: "currentColor",
35
36
  spacing: "spacious",
36
37
  label: fg('navx-3698-flexible-card-a11y-fix') ? '' : 'Open preview panel'
37
- }, fg('platform_sl_3p_auth_rovo_action_kill_switch') || fg('platform_sl_3p_auth_rovo_block_card_kill_switch') ? {
38
+ }, fg('platform_sl_3p_auth_rovo_action_kill_switch') || fg('platform_sl_3p_auth_rovo_block_card_kill_switch') || expValEqualsNoExposure('rovogrowth-640-inline-action-nudge-exp', 'isEnabled', true) ? {
38
39
  size: props.iconSize
39
40
  } : {}));
40
41
  }
@@ -42,7 +43,7 @@ const PreviewAction = ({
42
43
  color: "currentColor",
43
44
  spacing: "spacious",
44
45
  label: fg('navx-3698-flexible-card-a11y-fix') ? '' : 'Open preview'
45
- }, fg('platform_sl_3p_auth_rovo_action_kill_switch') || fg('platform_sl_3p_auth_rovo_block_card_kill_switch') ? {
46
+ }, fg('platform_sl_3p_auth_rovo_action_kill_switch') || fg('platform_sl_3p_auth_rovo_block_card_kill_switch') || expValEqualsNoExposure('rovogrowth-640-inline-action-nudge-exp', 'isEnabled', true) ? {
46
47
  size: props.iconSize
47
48
  } : {}));
48
49
  }, [hasPreviewPanel, props.iconSize]);
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import React, { lazy, useCallback } from 'react';
3
3
  import { FormattedMessage } from 'react-intl';
4
4
  import { fg } from '@atlaskit/platform-feature-flags';
5
+ import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
5
6
  import { useAnalyticsEvents } from '../../../../../common/analytics/generated/use-analytics-events';
6
7
  import { messages } from '../../../../../messages';
7
8
  import { useFlexibleUiContext } from '../../../../../state/flexible-ui-context';
@@ -34,10 +35,10 @@ const ViewRelatedLinksAction = ({
34
35
  }, [actionData === null || actionData === void 0 ? void 0 : actionData.ari, fireEvent, modal, onClickCallback]);
35
36
  return actionData ? /*#__PURE__*/React.createElement(Action, _extends({
36
37
  content: /*#__PURE__*/React.createElement(FormattedMessage, messages.related_links_view_related_links)
37
- }, fg('platform_sl_3p_auth_rovo_action_kill_switch') ? {
38
+ }, fg('platform_sl_3p_auth_rovo_action_kill_switch') || expValEqualsNoExposure('rovogrowth-640-inline-action-nudge-exp', 'isEnabled', true) ? {
38
39
  tooltipMessage: /*#__PURE__*/React.createElement(FormattedMessage, messages.related_links_view_related_links)
39
40
  } : {}, {
40
- icon: /*#__PURE__*/React.createElement(RelatedLinksActionIcon, fg('platform_sl_3p_auth_rovo_action_kill_switch') ? {
41
+ icon: /*#__PURE__*/React.createElement(RelatedLinksActionIcon, fg('platform_sl_3p_auth_rovo_action_kill_switch') || expValEqualsNoExposure('rovogrowth-640-inline-action-nudge-exp', 'isEnabled', true) ? {
41
42
  iconSize: props.iconSize
42
43
  } : {}),
43
44
  onClick: onClick,
@@ -0,0 +1,21 @@
1
+
2
+ ._2rko12b0{border-radius:var(--ds-radius-small,4px)}._18m915vq{overflow-y:hidden}
3
+ ._19bv12x7{padding-left:var(--ds-space-075,6px)}
4
+ ._1bto1l2s{text-overflow:ellipsis}
5
+ ._1e0c116y{display:inline-flex}
6
+ ._1e0c1nu9{display:inline}
7
+ ._1reo15vq{overflow-x:hidden}
8
+ ._1wybtjj4{font-size:.8em}
9
+ ._2hwx1b66{margin-right:var(--ds-space-050,4px)}
10
+ ._4cvr1h6o{align-items:center}
11
+ ._bfhk1dpa{background-color:var(--ds-background-neutral-subtle-hovered,#0515240f)}
12
+ ._ca0qv77o{padding-top:var(--ds-space-025,2px)}
13
+ ._k48pwu06{font-weight:var(--ds-font-weight-bold,653)}
14
+ ._n3tdv77o{padding-bottom:var(--ds-space-025,2px)}
15
+ ._o5721q9c{white-space:nowrap}
16
+ ._p12f1osq{max-width:100%}
17
+ ._s7n4t94y{vertical-align:1px}
18
+ ._syazazsu{color:var(--ds-text-subtle,#505258)}
19
+ ._u5f312x7{padding-right:var(--ds-space-075,6px)}
20
+ ._vchhusvi{box-sizing:border-box}
21
+ ._y3gn18uv{text-align:initial}
@@ -1,11 +1,17 @@
1
1
  /* index.tsx generated by @compiled/babel-plugin v0.39.1 */
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
+ import "./index.compiled.css";
3
4
  import { ax, ix } from "@compiled/react/runtime";
4
5
  import React from 'react';
5
6
  import { FormattedMessage } from 'react-intl';
7
+ import { di } from 'react-magnetic-di';
6
8
  import LockLockedIcon from '@atlaskit/icon/core/lock-locked';
9
+ import { fg } from '@atlaskit/platform-feature-flags';
10
+ import { Box } from '@atlaskit/primitives/compiled';
11
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
7
12
  import { useAnalyticsEvents } from '../../../common/analytics/generated/use-analytics-events';
8
13
  import { messages } from '../../../messages';
14
+ import { getCachedProviderPctMapAndRefresh } from '../../../state/services/personalization';
9
15
  import { HoverCard } from '../../HoverCard';
10
16
  import { ActionButton } from '../common/action-button';
11
17
  import { Frame } from '../Frame';
@@ -16,6 +22,86 @@ const fallbackUnauthorizedIcon = () => {
16
22
  label: "error"
17
23
  });
18
24
  };
25
+
26
+ /**
27
+ * When persisted personalization adoption from {@link getCachedProviderPctMapAndRefresh} is strictly below this value,
28
+ * the pill uses exploratory "previewing" copy instead of a percentage headline.
29
+ */
30
+ const SOCIAL_PROOF_TEAM_PREVIEW_THRESHOLD = 30;
31
+ const SOCIAL_PROOF_TRAIT_NAME = 'sl_3p_connected_providers_site_pct';
32
+ const socialProofPillStyles = {
33
+ strong: "_k48pwu06",
34
+ inlineContainer: "_1e0c116y _4cvr1h6o",
35
+ root: "_2rko12b0 _1e0c1nu9 _4cvr1h6o _vchhusvi _p12f1osq _bfhk1dpa _syazazsu _y3gn18uv _1wybtjj4 _s7n4t94y _ca0qv77o _n3tdv77o _u5f312x7 _19bv12x7 _2hwx1b66",
36
+ label: "_1reo15vq _18m915vq _1bto1l2s _o5721q9c"
37
+ };
38
+
39
+ /**
40
+ * Renders the social-proof pill and Connect button using persisted percentages only ({@link getCachedProviderPctMapAndRefresh}) — no
41
+ * loading skeleton; either the cached percentage is shown or the legacy long connect label is used.
42
+ *
43
+ * Only mounted when the parent has passed the killswitch and
44
+ * `platform_sl_3p_preauth_social_proof_inline_cta`. See platform docs: `rules-of-hooks.md` "Should §1".
45
+ */
46
+ const UnauthorisedConnectWithSocialProof = ({
47
+ context,
48
+ extensionKey,
49
+ testId,
50
+ onConnectClick
51
+ }) => {
52
+ var _context$trim;
53
+ // TODO We need to decide what should we do with FedRAMP. It will not work there (_edge/tenant_info is not available) but so maybe
54
+ // we can just leave it like that and whole feature won't trigger befcause of that.
55
+ const providerPctMap = getCachedProviderPctMapAndRefresh(SOCIAL_PROOF_TRAIT_NAME);
56
+ const connectedPct = extensionKey && providerPctMap ? providerPctMap[extensionKey] : undefined;
57
+ const isEnabled = true;
58
+ const trimmedProviderDisplayName = (_context$trim = context === null || context === void 0 ? void 0 : context.trim()) !== null && _context$trim !== void 0 ? _context$trim : '';
59
+ const hasProviderDisplayName = trimmedProviderDisplayName.length > 0;
60
+ const isSocialProofUsageHighEnough = connectedPct !== undefined && connectedPct >= SOCIAL_PROOF_TEAM_PREVIEW_THRESHOLD;
61
+
62
+ /**
63
+ * Persisted personalization is required. Below {@link SOCIAL_PROOF_TEAM_PREVIEW_THRESHOLD} adoption we also require
64
+ * a provider display name; otherwise omit the pill and use the legacy long connect treatment.
65
+ */
66
+ const showSocialProofPill = isEnabled && connectedPct !== undefined && (isSocialProofUsageHighEnough || hasProviderDisplayName);
67
+ const bold = chunks => /*#__PURE__*/React.createElement(Box, {
68
+ as: "strong",
69
+ xcss: socialProofPillStyles.strong
70
+ }, chunks);
71
+ const socialProofPillContent = isSocialProofUsageHighEnough ? hasProviderDisplayName ? /*#__PURE__*/React.createElement(FormattedMessage, _extends({}, messages.social_proof_inline_cta_tag_high_with_context, {
72
+ values: {
73
+ connectedPct,
74
+ context: trimmedProviderDisplayName,
75
+ b: bold
76
+ }
77
+ })) : /*#__PURE__*/React.createElement(FormattedMessage, _extends({}, messages.social_proof_inline_cta_tag_high_no_context, {
78
+ values: {
79
+ connectedPct,
80
+ b: bold
81
+ }
82
+ })) : /*#__PURE__*/React.createElement(FormattedMessage, _extends({}, messages.social_proof_inline_cta_tag_low_with_context, {
83
+ values: {
84
+ context: trimmedProviderDisplayName
85
+ }
86
+ }));
87
+ return /*#__PURE__*/React.createElement(React.Fragment, null, showSocialProofPill ? /*#__PURE__*/React.createElement(Box, {
88
+ as: "span",
89
+ xcss: socialProofPillStyles.root,
90
+ testId: `${testId}-social-proof-tag`
91
+ }, /*#__PURE__*/React.createElement(Box, {
92
+ as: "span",
93
+ xcss: socialProofPillStyles.label
94
+ }, socialProofPillContent)) : null, /*#__PURE__*/React.createElement(ActionButton, {
95
+ onClick: onConnectClick,
96
+ viewType: "unauthorised",
97
+ testId: "button-connect-account",
98
+ isSocialProofInlineUnauthorisedConnect: showSocialProofPill
99
+ }, showSocialProofPill ? /*#__PURE__*/React.createElement(FormattedMessage, messages.connect_inline_social_proof) : /*#__PURE__*/React.createElement(FormattedMessage, _extends({}, messages.connect_link_account_card_name, {
100
+ values: {
101
+ context
102
+ }
103
+ }))));
104
+ };
19
105
  export const InlineCardUnauthorizedView = ({
20
106
  url,
21
107
  id,
@@ -26,12 +112,14 @@ export const InlineCardUnauthorizedView = ({
26
112
  testId = 'inline-card-unauthorized-view',
27
113
  showHoverPreview = false,
28
114
  truncateInline,
29
- context
115
+ context,
116
+ extensionKey
30
117
  }) => {
31
118
  const frameRef = React.useRef(null);
32
119
  const {
33
120
  fireEvent
34
121
  } = useAnalyticsEvents();
122
+ const isSocialProofInlineCtaEnabled = onAuthorise && fg('platform_sl_3p_preauth_soc_proof_inline_killswitch') && expValEquals('platform_sl_3p_preauth_social_proof_inline_cta', 'isEnabled', true);
35
123
  const handleConnectAccount = React.useCallback(event => {
36
124
  event.preventDefault();
37
125
  event.stopPropagation();
@@ -63,7 +151,12 @@ export const InlineCardUnauthorizedView = ({
63
151
  link: url,
64
152
  onClick: onClick,
65
153
  titleColor: "var(--ds-text-subtle, #505258)"
66
- }), onAuthorise && renderActionButton());
154
+ }), onAuthorise && (isSocialProofInlineCtaEnabled ? /*#__PURE__*/React.createElement(UnauthorisedConnectWithSocialProof, {
155
+ context: context,
156
+ extensionKey: extensionKey,
157
+ testId: testId,
158
+ onConnectClick: handleConnectAccount
159
+ }) : renderActionButton()));
67
160
  if (onAuthorise && showHoverPreview) {
68
161
  return /*#__PURE__*/React.createElement(HoverCard, {
69
162
  url: url,
@@ -1,17 +1,16 @@
1
1
 
2
- ._1s7zia51{border-right:var(--ds-border-width,1px) solid var(--ds-border,#0b120e24)}
3
- ._n7zlia51{border-bottom:var(--ds-border-width,1px) solid var(--ds-border,#0b120e24)}
4
- ._x3doia51{border-top:var(--ds-border-width,1px) solid var(--ds-border,#0b120e24)}._13liidpf{border-top-left-radius:0}
5
- ._13lilb4i{border-top-left-radius:var(--ds-radius-xsmall,2px)}
2
+ ._2rko12b0{border-radius:var(--ds-radius-small,4px)}._13lilb4i{border-top-left-radius:var(--ds-radius-xsmall,2px)}
6
3
  ._16d9qvcn{-webkit-box-decoration-break:clone;box-decoration-break:clone}
7
4
  ._19bv12x7{padding-left:var(--ds-space-075,6px)}
8
5
  ._1e0c1bgi{display:contents}
9
6
  ._1e0c1nu9{display:inline}
10
7
  ._1nmz9jpi{word-break:break-all}
11
8
  ._1o0zlb4i{border-bottom-right-radius:var(--ds-radius-xsmall,2px)}
9
+ ._1wybtjj4{font-size:.8em}
12
10
  ._1y1m1u8q{background-clip:padding-box}
13
11
  ._2hwxt94y{margin-right:1px}
14
12
  ._2hwxv77o{margin-right:var(--ds-space-025,2px)}
13
+ ._4cvr1h6o{align-items:center}
15
14
  ._80om13gf{cursor:not-allowed}
16
15
  ._80omtlke{cursor:pointer}
17
16
  ._bfhkby5v{background-color:var(--ds-background-disabled,#17171708)}
@@ -21,19 +20,17 @@
21
20
  ._ca0qv77o{padding-top:var(--ds-space-025,2px)}
22
21
  ._k48p1wq8{font-weight:var(--ds-font-weight-medium,500)}
23
22
  ._k48pi7a9{font-weight:var(--ds-font-weight-regular,400)}
24
- ._mrkbidpf{border-bottom-left-radius:0}
25
23
  ._mrkblb4i{border-bottom-left-radius:var(--ds-radius-xsmall,2px)}
26
24
  ._n3tdt94y{padding-bottom:1px}
27
25
  ._n3tdv77o{padding-bottom:var(--ds-space-025,2px)}
28
26
  ._o5721btx{white-space:break-spaces}
29
- ._o5721q9c{white-space:nowrap}
30
27
  ._qrwqlb4i{border-top-right-radius:var(--ds-radius-xsmall,2px)}
28
+ ._s7n4t94y{vertical-align:1px}
31
29
  ._syaz15cr{color:var(--ds-text-inverse,#fff)}
32
30
  ._syaz1gmx{color:var(--ds-text-disabled,#080f214a)}
33
31
  ._syazi7uo{color:var(--ds-text,#292a2e)}
34
32
  ._u5f312x7{padding-right:var(--ds-space-075,6px)}
35
33
  ._y3gn18uv{text-align:initial}
36
- ._4cvxq98m:hover{border-color:var(--ds-border-selected,#1868db)}
37
34
  ._irr31q28:hover{background-color:var(--ds-background-selected-bold-hovered,#1558bc)}
38
35
  ._irr3plhp:hover{background-color:var(--ds-background-neutral-hovered,#0b120e24)}
39
36
  ._1di612kk:active{background-color:var(--ds-background-selected-bold-pressed,#123263)}
@@ -4,15 +4,19 @@ import "./index.compiled.css";
4
4
  import * as React from 'react';
5
5
  import { ax, ix } from "@compiled/react/runtime";
6
6
  import { forwardRef } from 'react';
7
+ import { fg } from '@atlaskit/platform-feature-flags';
7
8
  import { Pressable } from '@atlaskit/primitives/compiled';
8
9
  const styles = {
9
10
  button: "_1e0c1bgi",
10
11
  innerContainer: "_1e0c1nu9 _1y1m1u8q _16d9qvcn _k48p1wq8 _19bv12x7 _ca0qv77o _n3tdv77o _u5f312x7 _y3gn18uv _o5721btx _1nmz9jpi",
12
+ innerContainerSocialProofConnect: "_2rko12b0 _syaz15cr _80omtlke _bfhkjmqp _2hwxv77o _1e0c1nu9 _4cvr1h6o _1wybtjj4 _1y1m1u8q _16d9qvcn _19bv12x7 _ca0qv77o _n3tdv77o _u5f312x7 _y3gn18uv _s7n4t94y _o5721btx _1nmz9jpi _irr31q28 _1di612kk",
11
13
  enabled: "_syazi7uo _80omtlke _bfhki8nm _irr3plhp _1di61gdz",
12
14
  disabled: "_syaz1gmx _80om13gf _bfhkby5v",
13
- unauthorised: "_syaz15cr _80omtlke _bfhkjmqp _qrwqlb4i _1o0zlb4i _13lilb4i _mrkblb4i _ca0qt94y _n3tdt94y _2hwxt94y _k48pi7a9 _irr31q28 _1di612kk",
14
- action: "_x3doia51 _1s7zia51 _n7zlia51 _syaz15cr _80omtlke _bfhkjmqp _qrwqlb4i _1o0zlb4i _13liidpf _mrkbidpf _2hwxv77o _k48pi7a9 _o5721q9c _4cvxq98m _irr31q28 _1di612kk"
15
+ unauthorised: "_syaz15cr _80omtlke _bfhkjmqp _qrwqlb4i _1o0zlb4i _13lilb4i _mrkblb4i _ca0qt94y _n3tdt94y _2hwxt94y _k48pi7a9 _irr31q28 _1di612kk"
15
16
  };
17
+
18
+ /* eslint-enable @compiled/shorthand-property-sorting */
19
+
16
20
  /**
17
21
  * Action button has to be a span for the overflow to work correctly
18
22
  */
@@ -20,8 +24,21 @@ export const ActionButton = /*#__PURE__*/forwardRef(({
20
24
  children,
21
25
  isDisabled,
22
26
  viewType = 'default',
27
+ isSocialProofInlineUnauthorisedConnect = false,
23
28
  ...props
24
29
  }, ref) => {
30
+ const shouldUseSocialProofConnect = isSocialProofInlineUnauthorisedConnect && viewType === 'unauthorised' && fg('platform_sl_3p_preauth_soc_proof_inline_killswitch');
31
+ if (shouldUseSocialProofConnect && !isDisabled) {
32
+ return /*#__PURE__*/React.createElement(Pressable, _extends({}, props, {
33
+ ref: ref,
34
+ style: {
35
+ font: `inherit`
36
+ },
37
+ xcss: styles.button
38
+ }), /*#__PURE__*/React.createElement("span", {
39
+ className: ax([styles.innerContainerSocialProofConnect])
40
+ }, children));
41
+ }
25
42
  return /*#__PURE__*/React.createElement(Pressable, _extends({}, props, {
26
43
  isDisabled: isDisabled,
27
44
  ref: ref
@@ -12,7 +12,7 @@ import LinkWarningModal from './LinkWarningModal';
12
12
  import { useLinkWarningModal } from './LinkWarningModal/hooks/use-link-warning-modal';
13
13
  const PACKAGE_DATA = {
14
14
  packageName: "@atlaskit/smart-card",
15
- packageVersion: "44.5.2",
15
+ packageVersion: "44.5.4",
16
16
  componentName: 'linkUrl'
17
17
  };
18
18
  const Anchor = withLinkClickedEvent('a');
@@ -1,3 +1,3 @@
1
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:58befa1fbc873aa0672a8e0a3cebe1903406324b6b86d9e1e331adf2237ca1c1
3
- size 36884
2
+ oid sha256:e63d3c35774daccaacc495cc9a2503295cafb8af706ebd5af4f3f76947abe2a3
3
+ size 36763
@@ -0,0 +1,3 @@
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f5c8377b1d3f1c46152e4056e25fac995df7a0c309fc3bd720342e3f5c83a290
3
+ size 18488
@@ -0,0 +1,3 @@
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:36b68e91316715be24892707009d7e486e55f1b86c08e879640c90ba6b7edd86
3
+ size 19001
@@ -0,0 +1,3 @@
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8333dc40a888fb5ecb629497b5c97541a43beaf45b4d1a5dc3b347747c308c02
3
+ size 19222
@@ -175,6 +175,26 @@ export var messages = defineMessages({
175
175
  defaultMessage: 'Connect to {context}',
176
176
  description: 'Shown on a button to connect user external account to their Atlassian account.'
177
177
  },
178
+ connect_inline_social_proof: {
179
+ id: 'fabric.linking.connect_inline_social_proof',
180
+ defaultMessage: 'Connect',
181
+ description: 'Shown on a button for unauthorised inline smart links when the social proof inline CTA experiment is active. Replaces the longer "Connect your {context} account" label.'
182
+ },
183
+ social_proof_inline_cta_tag_high_with_context: {
184
+ id: 'fabric.linking.social_proof_inline_cta_tag_high_with_context',
185
+ defaultMessage: '<b>{connectedPct}%</b> of your team previews {context}',
186
+ description: 'Social-proof tag pill beside the shortcut "Connect" on an unauthorised inline smart link when adoption is not in the exploratory range. {connectedPct} is the approximate share previewing/using the integration; {context} is the provider display name.'
187
+ },
188
+ social_proof_inline_cta_tag_high_no_context: {
189
+ id: 'fabric.linking.social_proof_inline_cta_tag_high_no_context',
190
+ defaultMessage: '<b>{connectedPct}%</b> of your team previews this',
191
+ description: 'Social-proof tag pill when adoption is above the exploratory threshold and no provider display name is available; {connectedPct} is the approximate share previewing the integration.'
192
+ },
193
+ social_proof_inline_cta_tag_low_with_context: {
194
+ id: 'fabric.linking.social_proof_inline_cta_tag_low_with_context',
195
+ defaultMessage: 'Your team is previewing {context}',
196
+ description: 'Social-proof tag pill when share is below the percentage headline threshold; shown only when a provider display name is available. Omit the pill entirely when personalization is unavailable or the provider name is unknown.'
197
+ },
178
198
  connect_unauthorised_account_description: {
179
199
  id: 'fabric.linking.connect_unauthorised_account_description',
180
200
  defaultMessage: 'Connect your {context} account to collaborate on work across Atlassian products.',
@@ -2,6 +2,8 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _regeneratorRuntime from "@babel/runtime/regenerator";
3
3
  import { useCallback, useMemo } from 'react';
4
4
  import { request } from '@atlaskit/linking-common';
5
+ import { fg } from '@atlaskit/platform-feature-flags';
6
+ import { getCurrentSiteCloudId } from '../use-current-site-cloud-id';
5
7
  import { queryIncomingOutgoingLinks as queryIncomingOutgoingAris } from './query';
6
8
  /**
7
9
  * @param baseUriWithNoTrailingSlash base url which will then be appended with /gateway/api/graphql to make requests to AGG
@@ -70,11 +72,24 @@ var useIncomingOutgoingAri = function useIncomingOutgoingAri() {
70
72
  }
71
73
  return _context3.abrupt("return", match[2]);
72
74
  case 4:
73
- _context3.next = 6;
74
- return getCurrentSiteId();
75
- case 6:
76
- return _context3.abrupt("return", _context3.sent);
75
+ if (!fg('platform_sl_3p_preauth_soc_proof_inline_killswitch')) {
76
+ _context3.next = 10;
77
+ break;
78
+ }
79
+ _context3.next = 7;
80
+ return getCurrentSiteCloudId(baseUriWithNoTrailingSlash);
77
81
  case 7:
82
+ _context3.t0 = _context3.sent;
83
+ _context3.next = 13;
84
+ break;
85
+ case 10:
86
+ _context3.next = 12;
87
+ return getCurrentSiteId();
88
+ case 12:
89
+ _context3.t0 = _context3.sent;
90
+ case 13:
91
+ return _context3.abrupt("return", _context3.t0);
92
+ case 14:
78
93
  case "end":
79
94
  return _context3.stop();
80
95
  }
@@ -83,7 +98,7 @@ var useIncomingOutgoingAri = function useIncomingOutgoingAri() {
83
98
  return function (_x3) {
84
99
  return _ref3.apply(this, arguments);
85
100
  };
86
- }(), [getCurrentSiteId]);
101
+ }(), [getCurrentSiteId, baseUriWithNoTrailingSlash]);
87
102
  var getIncomingOutgoingAris = useCallback(
88
103
  /*#__PURE__*/
89
104
  /**
@@ -35,7 +35,7 @@ var useInlineActionNudgeExperiment = function useInlineActionNudgeExperiment(url
35
35
  if (!isRovoChatEnabled || !showHoverPreview || !url || !isRovoChatActionOptedIn) {
36
36
  return NOT_ENABLED_RESULT;
37
37
  }
38
- if (extensionKey && !ELIGIBLE_EXTENSION_KEYS.has(extensionKey)) {
38
+ if (!extensionKey || !ELIGIBLE_EXTENSION_KEYS.has(extensionKey)) {
39
39
  return NOT_ENABLED_RESULT;
40
40
  }
41
41
  var isEnabled = expValEquals('rovogrowth-640-inline-action-nudge-exp', 'isEnabled', true);
@@ -143,11 +143,12 @@ export var CurrentSiteCloudIdService = /*#__PURE__*/function () {
143
143
  return _get.apply(this, arguments);
144
144
  }
145
145
  return get;
146
- }() /** Clears the session pin so the next {@link get} may run `tenant_info` again (e.g. tests). */)
146
+ }() /** Clears session pin and persisted storage so the next {@link get} is a fresh tenant_info fetch. */)
147
147
  }, {
148
148
  key: "clearCache",
149
149
  value: function clearCache() {
150
150
  this.tenantInfoInflightPromise = null;
151
+ smartCardStorage.removeItem(CURRENT_SITE_CLOUD_ID_STORAGE_ITEM_KEY);
151
152
  }
152
153
  }]);
153
154
  }();
@@ -4,7 +4,7 @@ export var ANALYTICS_CHANNEL = 'media';
4
4
  export var context = {
5
5
  componentName: 'smart-cards',
6
6
  packageName: "@atlaskit/smart-card" || '',
7
- packageVersion: "44.5.2" || ''
7
+ packageVersion: "44.5.4" || ''
8
8
  };
9
9
  export var TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
10
10
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -74,7 +74,7 @@ var ActionButton = function ActionButton(_ref) {
74
74
  // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
75
75
  ,
76
76
  style: style
77
- }, fg('platform_sl_3p_auth_rovo_action_kill_switch') ? {
77
+ }, fg('platform_sl_3p_auth_rovo_action_kill_switch') || expValEqualsNoExposure('rovogrowth-640-inline-action-nudge-exp', 'isEnabled', true) ? {
78
78
  'aria-label': ariaLabel
79
79
  } : {}), /*#__PURE__*/React.createElement(Inline, {
80
80
  alignBlock: "center",