@atlaskit/smart-card 45.12.0 → 45.13.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 (210) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cjs/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-figma-in-trello-slide1--default.png +3 -0
  3. package/dist/cjs/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-figma-in-trello-slide2--default.png +3 -0
  4. package/dist/cjs/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-figma-in-trello-slide3--default.png +3 -0
  5. package/dist/cjs/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-google-in-confluence-slide1--default.png +3 -0
  6. package/dist/cjs/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-google-in-confluence-slide2--default.png +3 -0
  7. package/dist/cjs/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-google-in-confluence-slide3--default.png +3 -0
  8. package/dist/cjs/i18n/cs.js +3 -180
  9. package/dist/cjs/i18n/da.js +3 -180
  10. package/dist/cjs/i18n/de.js +3 -180
  11. package/dist/cjs/i18n/en.js +3 -182
  12. package/dist/cjs/i18n/en_GB.js +3 -182
  13. package/dist/cjs/i18n/en_ZZ.js +3 -182
  14. package/dist/cjs/i18n/es.js +3 -180
  15. package/dist/cjs/i18n/fi.js +3 -180
  16. package/dist/cjs/i18n/fr.js +3 -180
  17. package/dist/cjs/i18n/hr.js +3 -175
  18. package/dist/cjs/i18n/hu.js +3 -180
  19. package/dist/cjs/i18n/it.js +3 -180
  20. package/dist/cjs/i18n/ja.js +3 -180
  21. package/dist/cjs/i18n/ko.js +3 -180
  22. package/dist/cjs/i18n/nb.js +3 -180
  23. package/dist/cjs/i18n/nl.js +3 -180
  24. package/dist/cjs/i18n/pl.js +3 -180
  25. package/dist/cjs/i18n/pt_BR.js +3 -180
  26. package/dist/cjs/i18n/ru.js +3 -180
  27. package/dist/cjs/i18n/sl.js +3 -175
  28. package/dist/cjs/i18n/sr_RS.js +3 -175
  29. package/dist/cjs/i18n/sr_YR.js +3 -175
  30. package/dist/cjs/i18n/sv.js +3 -180
  31. package/dist/cjs/i18n/th.js +3 -180
  32. package/dist/cjs/i18n/tr.js +3 -180
  33. package/dist/cjs/i18n/uk.js +3 -180
  34. package/dist/cjs/i18n/vi.js +3 -180
  35. package/dist/cjs/i18n/zh.js +3 -180
  36. package/dist/cjs/i18n/zh_TW.js +3 -180
  37. package/dist/cjs/messages.js +35 -25
  38. package/dist/cjs/utils/analytics/analytics.js +1 -1
  39. package/dist/cjs/view/EmbedCard/components/carousel/CarouselSlide.compiled.css +16 -4
  40. package/dist/cjs/view/EmbedCard/components/carousel/CarouselSlide.js +67 -27
  41. package/dist/cjs/view/EmbedCard/components/carousel/index.compiled.css +2 -2
  42. package/dist/cjs/view/EmbedCard/components/carousel/index.js +13 -5
  43. package/dist/cjs/view/EmbedCard/views/unauthorized-view/UnauthorizedCarouselView.js +191 -0
  44. package/dist/cjs/view/EmbedCard/views/unauthorized-view/carousel-images/IconSlot.compiled.css +7 -0
  45. package/dist/cjs/view/EmbedCard/views/unauthorized-view/carousel-images/IconSlot.js +31 -0
  46. package/dist/cjs/view/EmbedCard/views/unauthorized-view/carousel-images/LazyRovoChatBenefitImage.js +16 -0
  47. package/dist/cjs/view/EmbedCard/views/unauthorized-view/carousel-images/LazyRovoSearchBenefitImage.js +16 -0
  48. package/dist/cjs/view/EmbedCard/views/unauthorized-view/carousel-images/NoAuthAvailableImage.compiled.css +6 -0
  49. package/dist/cjs/view/EmbedCard/views/unauthorized-view/carousel-images/NoAuthAvailableImage.js +22 -0
  50. package/dist/cjs/view/EmbedCard/views/unauthorized-view/carousel-images/ProductIcon.js +47 -0
  51. package/dist/cjs/view/EmbedCard/views/unauthorized-view/carousel-images/RovoChatBenefitImage.js +359 -0
  52. package/dist/cjs/view/EmbedCard/views/unauthorized-view/carousel-images/RovoSearchBenefitImage.js +281 -0
  53. package/dist/cjs/view/EmbedCard/views/unauthorized-view/carousel-images/SmartLinkBenefitImage.js +502 -0
  54. package/dist/cjs/view/EmbedCard/views/unauthorized-view/carousel-images/assets/rovo-chat-avatar.png +0 -0
  55. package/dist/cjs/view/EmbedCard/views/unauthorized-view/index.js +9 -1
  56. package/dist/cjs/view/LinkUrl/index.js +1 -1
  57. package/dist/es2019/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-figma-in-trello-slide1--default.png +3 -0
  58. package/dist/es2019/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-figma-in-trello-slide2--default.png +3 -0
  59. package/dist/es2019/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-figma-in-trello-slide3--default.png +3 -0
  60. package/dist/es2019/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-google-in-confluence-slide1--default.png +3 -0
  61. package/dist/es2019/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-google-in-confluence-slide2--default.png +3 -0
  62. package/dist/es2019/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-google-in-confluence-slide3--default.png +3 -0
  63. package/dist/es2019/i18n/cs.js +3 -180
  64. package/dist/es2019/i18n/da.js +3 -180
  65. package/dist/es2019/i18n/de.js +3 -180
  66. package/dist/es2019/i18n/en.js +3 -182
  67. package/dist/es2019/i18n/en_GB.js +3 -182
  68. package/dist/es2019/i18n/en_ZZ.js +3 -182
  69. package/dist/es2019/i18n/es.js +3 -180
  70. package/dist/es2019/i18n/fi.js +3 -180
  71. package/dist/es2019/i18n/fr.js +3 -180
  72. package/dist/es2019/i18n/hr.js +3 -175
  73. package/dist/es2019/i18n/hu.js +3 -180
  74. package/dist/es2019/i18n/it.js +3 -180
  75. package/dist/es2019/i18n/ja.js +3 -180
  76. package/dist/es2019/i18n/ko.js +3 -180
  77. package/dist/es2019/i18n/nb.js +3 -180
  78. package/dist/es2019/i18n/nl.js +3 -180
  79. package/dist/es2019/i18n/pl.js +3 -180
  80. package/dist/es2019/i18n/pt_BR.js +3 -180
  81. package/dist/es2019/i18n/ru.js +3 -180
  82. package/dist/es2019/i18n/sl.js +3 -175
  83. package/dist/es2019/i18n/sr_RS.js +3 -175
  84. package/dist/es2019/i18n/sr_YR.js +3 -175
  85. package/dist/es2019/i18n/sv.js +3 -180
  86. package/dist/es2019/i18n/th.js +3 -180
  87. package/dist/es2019/i18n/tr.js +3 -180
  88. package/dist/es2019/i18n/uk.js +3 -180
  89. package/dist/es2019/i18n/vi.js +3 -180
  90. package/dist/es2019/i18n/zh.js +3 -180
  91. package/dist/es2019/i18n/zh_TW.js +3 -180
  92. package/dist/es2019/messages.js +49 -27
  93. package/dist/es2019/utils/analytics/analytics.js +1 -1
  94. package/dist/es2019/view/EmbedCard/components/carousel/CarouselSlide.compiled.css +16 -4
  95. package/dist/es2019/view/EmbedCard/components/carousel/CarouselSlide.js +64 -27
  96. package/dist/es2019/view/EmbedCard/components/carousel/index.compiled.css +2 -2
  97. package/dist/es2019/view/EmbedCard/components/carousel/index.js +10 -5
  98. package/dist/es2019/view/EmbedCard/views/unauthorized-view/UnauthorizedCarouselView.js +184 -0
  99. package/dist/es2019/view/EmbedCard/views/unauthorized-view/carousel-images/IconSlot.compiled.css +7 -0
  100. package/dist/es2019/view/EmbedCard/views/unauthorized-view/carousel-images/IconSlot.js +25 -0
  101. package/dist/es2019/view/EmbedCard/views/unauthorized-view/carousel-images/LazyRovoChatBenefitImage.js +3 -0
  102. package/dist/es2019/view/EmbedCard/views/unauthorized-view/carousel-images/LazyRovoSearchBenefitImage.js +3 -0
  103. package/dist/es2019/view/EmbedCard/views/unauthorized-view/carousel-images/NoAuthAvailableImage.compiled.css +6 -0
  104. package/dist/es2019/view/EmbedCard/views/unauthorized-view/carousel-images/NoAuthAvailableImage.js +13 -0
  105. package/dist/es2019/view/EmbedCard/views/unauthorized-view/carousel-images/ProductIcon.js +40 -0
  106. package/dist/es2019/view/EmbedCard/views/unauthorized-view/carousel-images/RovoChatBenefitImage.js +352 -0
  107. package/dist/es2019/view/EmbedCard/views/unauthorized-view/carousel-images/RovoSearchBenefitImage.js +268 -0
  108. package/dist/es2019/view/EmbedCard/views/unauthorized-view/carousel-images/SmartLinkBenefitImage.js +495 -0
  109. package/dist/es2019/view/EmbedCard/views/unauthorized-view/carousel-images/assets/rovo-chat-avatar.png +0 -0
  110. package/dist/es2019/view/EmbedCard/views/unauthorized-view/index.js +9 -1
  111. package/dist/es2019/view/LinkUrl/index.js +1 -1
  112. package/dist/esm/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-figma-in-trello-slide1--default.png +3 -0
  113. package/dist/esm/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-figma-in-trello-slide2--default.png +3 -0
  114. package/dist/esm/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-figma-in-trello-slide3--default.png +3 -0
  115. package/dist/esm/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-google-in-confluence-slide1--default.png +3 -0
  116. package/dist/esm/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-google-in-confluence-slide2--default.png +3 -0
  117. package/dist/esm/__tests__/vr-tests/__snapshots__/embed-card/embed-card-unauthorized-carousel-google-in-confluence-slide3--default.png +3 -0
  118. package/dist/esm/i18n/cs.js +3 -180
  119. package/dist/esm/i18n/da.js +3 -180
  120. package/dist/esm/i18n/de.js +3 -180
  121. package/dist/esm/i18n/en.js +3 -182
  122. package/dist/esm/i18n/en_GB.js +3 -182
  123. package/dist/esm/i18n/en_ZZ.js +3 -182
  124. package/dist/esm/i18n/es.js +3 -180
  125. package/dist/esm/i18n/fi.js +3 -180
  126. package/dist/esm/i18n/fr.js +3 -180
  127. package/dist/esm/i18n/hr.js +3 -175
  128. package/dist/esm/i18n/hu.js +3 -180
  129. package/dist/esm/i18n/it.js +3 -180
  130. package/dist/esm/i18n/ja.js +3 -180
  131. package/dist/esm/i18n/ko.js +3 -180
  132. package/dist/esm/i18n/nb.js +3 -180
  133. package/dist/esm/i18n/nl.js +3 -180
  134. package/dist/esm/i18n/pl.js +3 -180
  135. package/dist/esm/i18n/pt_BR.js +3 -180
  136. package/dist/esm/i18n/ru.js +3 -180
  137. package/dist/esm/i18n/sl.js +3 -175
  138. package/dist/esm/i18n/sr_RS.js +3 -175
  139. package/dist/esm/i18n/sr_YR.js +3 -175
  140. package/dist/esm/i18n/sv.js +3 -180
  141. package/dist/esm/i18n/th.js +3 -180
  142. package/dist/esm/i18n/tr.js +3 -180
  143. package/dist/esm/i18n/uk.js +3 -180
  144. package/dist/esm/i18n/vi.js +3 -180
  145. package/dist/esm/i18n/zh.js +3 -180
  146. package/dist/esm/i18n/zh_TW.js +3 -180
  147. package/dist/esm/messages.js +35 -25
  148. package/dist/esm/utils/analytics/analytics.js +1 -1
  149. package/dist/esm/view/EmbedCard/components/carousel/CarouselSlide.compiled.css +16 -4
  150. package/dist/esm/view/EmbedCard/components/carousel/CarouselSlide.js +65 -27
  151. package/dist/esm/view/EmbedCard/components/carousel/index.compiled.css +2 -2
  152. package/dist/esm/view/EmbedCard/components/carousel/index.js +13 -5
  153. package/dist/esm/view/EmbedCard/views/unauthorized-view/UnauthorizedCarouselView.js +182 -0
  154. package/dist/esm/view/EmbedCard/views/unauthorized-view/carousel-images/IconSlot.compiled.css +7 -0
  155. package/dist/esm/view/EmbedCard/views/unauthorized-view/carousel-images/IconSlot.js +24 -0
  156. package/dist/esm/view/EmbedCard/views/unauthorized-view/carousel-images/LazyRovoChatBenefitImage.js +5 -0
  157. package/dist/esm/view/EmbedCard/views/unauthorized-view/carousel-images/LazyRovoSearchBenefitImage.js +5 -0
  158. package/dist/esm/view/EmbedCard/views/unauthorized-view/carousel-images/NoAuthAvailableImage.compiled.css +6 -0
  159. package/dist/esm/view/EmbedCard/views/unauthorized-view/carousel-images/NoAuthAvailableImage.js +15 -0
  160. package/dist/esm/view/EmbedCard/views/unauthorized-view/carousel-images/ProductIcon.js +40 -0
  161. package/dist/esm/view/EmbedCard/views/unauthorized-view/carousel-images/RovoChatBenefitImage.js +351 -0
  162. package/dist/esm/view/EmbedCard/views/unauthorized-view/carousel-images/RovoSearchBenefitImage.js +273 -0
  163. package/dist/esm/view/EmbedCard/views/unauthorized-view/carousel-images/SmartLinkBenefitImage.js +494 -0
  164. package/dist/esm/view/EmbedCard/views/unauthorized-view/carousel-images/assets/rovo-chat-avatar.png +0 -0
  165. package/dist/esm/view/EmbedCard/views/unauthorized-view/index.js +9 -1
  166. package/dist/esm/view/LinkUrl/index.js +1 -1
  167. package/dist/types/i18n/cs.d.ts +2 -180
  168. package/dist/types/i18n/da.d.ts +2 -180
  169. package/dist/types/i18n/de.d.ts +2 -180
  170. package/dist/types/i18n/en.d.ts +2 -182
  171. package/dist/types/i18n/en_GB.d.ts +2 -182
  172. package/dist/types/i18n/en_ZZ.d.ts +2 -182
  173. package/dist/types/i18n/es.d.ts +2 -180
  174. package/dist/types/i18n/fi.d.ts +2 -180
  175. package/dist/types/i18n/fr.d.ts +2 -180
  176. package/dist/types/i18n/hr.d.ts +2 -175
  177. package/dist/types/i18n/hu.d.ts +2 -180
  178. package/dist/types/i18n/it.d.ts +2 -180
  179. package/dist/types/i18n/ja.d.ts +2 -180
  180. package/dist/types/i18n/ko.d.ts +2 -180
  181. package/dist/types/i18n/nb.d.ts +2 -180
  182. package/dist/types/i18n/nl.d.ts +2 -180
  183. package/dist/types/i18n/pl.d.ts +2 -180
  184. package/dist/types/i18n/pt_BR.d.ts +2 -180
  185. package/dist/types/i18n/ru.d.ts +2 -180
  186. package/dist/types/i18n/sl.d.ts +2 -175
  187. package/dist/types/i18n/sr_RS.d.ts +2 -175
  188. package/dist/types/i18n/sr_YR.d.ts +2 -175
  189. package/dist/types/i18n/sv.d.ts +2 -180
  190. package/dist/types/i18n/th.d.ts +2 -180
  191. package/dist/types/i18n/tr.d.ts +2 -180
  192. package/dist/types/i18n/uk.d.ts +2 -180
  193. package/dist/types/i18n/vi.d.ts +2 -180
  194. package/dist/types/i18n/zh.d.ts +2 -180
  195. package/dist/types/i18n/zh_TW.d.ts +2 -180
  196. package/dist/types/messages.d.ts +1 -1
  197. package/dist/types/view/EmbedCard/components/carousel/CarouselSlide.d.ts +3 -1
  198. package/dist/types/view/EmbedCard/components/carousel/index.d.ts +3 -1
  199. package/dist/types/view/EmbedCard/views/unauthorized-view/UnauthorizedCarouselView.d.ts +4 -0
  200. package/dist/types/view/EmbedCard/views/unauthorized-view/carousel-images/IconSlot.d.ts +14 -0
  201. package/dist/types/view/EmbedCard/views/unauthorized-view/carousel-images/LazyRovoChatBenefitImage.d.ts +3 -0
  202. package/dist/types/view/EmbedCard/views/unauthorized-view/carousel-images/LazyRovoSearchBenefitImage.d.ts +3 -0
  203. package/dist/types/view/EmbedCard/views/unauthorized-view/carousel-images/NoAuthAvailableImage.d.ts +7 -0
  204. package/dist/types/view/EmbedCard/views/unauthorized-view/carousel-images/ProductIcon.d.ts +9 -0
  205. package/dist/types/view/EmbedCard/views/unauthorized-view/carousel-images/RovoChatBenefitImage.d.ts +8 -0
  206. package/dist/types/view/EmbedCard/views/unauthorized-view/carousel-images/RovoSearchBenefitImage.d.ts +8 -0
  207. package/dist/types/view/EmbedCard/views/unauthorized-view/carousel-images/SmartLinkBenefitImage.d.ts +6 -0
  208. package/dist/types/view/EmbedCard/views/unauthorized-view/index.d.ts +2 -2
  209. package/dist/types/view/EmbedCard/views/unauthorized-view/types.d.ts +1 -0
  210. package/package.json +3 -3
@@ -1,59 +1,82 @@
1
1
  /* CarouselSlide.tsx generated by @compiled/babel-plugin v0.40.0 */
2
2
  import "./CarouselSlide.compiled.css";
3
3
  import { ax, ix } from "@compiled/react/runtime";
4
- import React from 'react';
4
+ import React, { useMemo } from 'react';
5
5
  import { useIntl } from 'react-intl';
6
6
  import Button from '@atlaskit/button/new';
7
7
  import { cx } from '@atlaskit/css';
8
8
  import Heading from '@atlaskit/heading';
9
+ import SmartLinkIcon from '@atlaskit/icon/core/smart-link';
10
+ import IconTile from '@atlaskit/icon/icon-tile';
9
11
  import Image from '@atlaskit/image';
10
12
  import { Box, Pressable, Text } from '@atlaskit/primitives/compiled';
11
13
  import { messages } from '../../../../messages';
12
14
  const styles = {
13
- columnImage: "_16jlkb7n _1o9zkb7n _i0dlghg7 _1e0c1txw _4cvr1h6o _1bah1h6o _ca0qpxbi _u5f3pxbi _n3tdpxbi _19bvpxbi _bfhk1dy8",
14
- columnContent: "_zulp1ejb _16jlkb7n _1o9zkb7n _i0dluuw1 _1e0c1txw _2lx21bp4 _ca0q1jfw _u5f31jfw _n3td1jfw _19bv1jfw _4cvr1y6m _1bah1h6o",
15
+ columnImage: "_16jlkb7n _1o9zkb7n _i0dlghg7 _1reo15vq _18m915vq _1e0c1txw _4cvr1fhb _1bah1y6m _1tkeidpf _1ul9idpf _bfhk9pm7",
16
+ imageContainer: "_kqswh2mm _1bsb1osq _4t3i1osq",
17
+ imageAbsolute: "_kqswstnw _154iidpf _1ltvidpf _1bsb1osq",
18
+ columnContent: "_zulp1ejb _16jlkb7n _1o9zkb7n _i0dluuw1 _1reo1wug _18m91wug _1e0c1txw _2lx21bp4 _1tkeidpf _ca0q1jfw _u5f31jfw _n3td1jfw _19bv1jfw _4cvr1y6m _1bah1yb4",
19
+ columnContentTop: "_zulppxbi _1e0c1txw _2lx21bp4 _4cvr1y6m _1bsb1osq",
20
+ columnContentBody: "_zulp1ejb _1e0c1txw _2lx21bp4 _4cvr1y6m _1bsb1osq",
15
21
  columnContentCompact: "_ca0qpxbi _u5f3pxbi _n3tdpxbi _19bvpxbi",
16
- dot: "_2rko1rr0 _1bsbi2wt _4t3ii2wt _bfhki8nm _1oecfnf5 _k8m01k61 _6fl45ucs _lcxvglyw",
22
+ dot: "_2rko1rr0 _1bsbftgi _4t3iftgi _bfhki8nm _1oecfnf5 _k8m01k61 _6fl45ucs _lcxvglyw",
17
23
  dotActive: "_bfhkjmqp",
18
24
  dotPassable: "_2rko1rr0 _1e0c1txw _4cvr1h6o _1bah1h6o _1bsb7vkz _4t3i7vkz _bfhksm61 _ca0qze3t _u5f3ze3t _n3tdze3t _19bvze3t",
19
25
  icon: "_1o9zidpf _1bsb1tcg _4t3i1tcg _1e0c1txw _4cvr1h6o _1bah1h6o",
20
26
  iconImage: "_1bsb1osq _4t3i1osq _5ral1f51",
21
27
  image: "_1bsb1osq _c71l1wdt _5ral1f51 _rsufaqso _1e0c1ule",
22
28
  rowButton: "_zulpu2gc _1e0c1txw _2lx2vrvc _1n261g80 _4cvr1h6o",
29
+ rowButtonNavGroup: "_zulpu2gc _1e0c1txw _2lx2vrvc _4cvr1h6o _1o9zidpf",
23
30
  rowButtonCompact: "_1bsb1osq",
24
31
  rowDot: "_zulpze3t _1e0c1txw _2lx2vrvc _4cvr1h6o",
25
32
  rowIcon: "_zulpu2gc _1e0c1txw _4cvr1h6o",
26
- slide: "_1reo1wug _18m91wug _1e0c1txw _1n261g80 _1bsb1osq _4t3i1osq _4cvr1fhb _vchhusvi"
33
+ slide: "_1reo15vq _18m915vq _1e0c1txw _1n261q9c _1bsb1osq _4t3i1osq _4cvr1fhb _vchhusvi"
27
34
  };
28
35
  const CarouselSlide = ({
29
36
  icon,
30
- iconLabel,
37
+ iconLabel = '',
31
38
  title,
32
39
  description,
33
40
  image,
34
41
  primaryButtonLabel,
35
42
  onPrimaryButtonClick,
43
+ onBackClick,
36
44
  onDotClick,
37
45
  onNextClick,
38
46
  slideIndex,
39
47
  totalSlides,
40
48
  size,
41
- testId = 'embed-card-teaser-slide'
49
+ testId = 'embed-card-carousel-slide'
42
50
  }) => {
43
51
  const {
44
52
  formatMessage
45
53
  } = useIntl();
46
54
  const isCompact = size !== 'full';
55
+ const showPrimaryButton = typeof onPrimaryButtonClick === 'function';
47
56
  const showNavigation = totalSlides > 1;
48
- const renderedIcon = icon == null ? null : typeof icon === 'string' ? /*#__PURE__*/React.createElement(Box, {
49
- xcss: styles.icon
50
- }, /*#__PURE__*/React.createElement(Image, {
51
- src: icon,
52
- alt: iconLabel,
53
- className: ax([styles.iconImage])
54
- })) : /*#__PURE__*/React.createElement(Box, {
55
- xcss: styles.icon
56
- }, icon);
57
+ const renderedIcon = useMemo(() => {
58
+ if (typeof icon === 'string') {
59
+ return /*#__PURE__*/React.createElement(Box, {
60
+ xcss: styles.icon
61
+ }, /*#__PURE__*/React.createElement(Image, {
62
+ src: icon,
63
+ alt: iconLabel,
64
+ className: ax([styles.iconImage])
65
+ }));
66
+ }
67
+ if (icon) {
68
+ return /*#__PURE__*/React.createElement(Box, {
69
+ xcss: styles.icon
70
+ }, icon);
71
+ }
72
+ return /*#__PURE__*/React.createElement(IconTile, {
73
+ appearance: "blue",
74
+ icon: SmartLinkIcon,
75
+ label: iconLabel,
76
+ size: "small",
77
+ testId: "embed-card-fallback-icon"
78
+ });
79
+ }, [icon, iconLabel]);
57
80
  const renderedImage = image == null ? null : typeof image === 'string' ? /*#__PURE__*/React.createElement(Image, {
58
81
  src: image,
59
82
  alt: title,
@@ -64,7 +87,9 @@ const CarouselSlide = ({
64
87
  testId: testId
65
88
  }, /*#__PURE__*/React.createElement(Box, {
66
89
  xcss: cx(styles.columnContent, isCompact && styles.columnContentCompact)
67
- }, isCompact && /*#__PURE__*/React.createElement(Box, {
90
+ }, /*#__PURE__*/React.createElement(Box, {
91
+ xcss: styles.columnContentTop
92
+ }, showPrimaryButton && isCompact && /*#__PURE__*/React.createElement(Box, {
68
93
  xcss: cx(styles.rowButton, styles.rowButtonCompact)
69
94
  }, /*#__PURE__*/React.createElement(Button, {
70
95
  appearance: "primary",
@@ -76,29 +101,37 @@ const CarouselSlide = ({
76
101
  }, renderedIcon), /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Heading, {
77
102
  size: "medium",
78
103
  testId: `${testId}-title`
79
- }, title)), /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Text, {
104
+ }, title)), /*#__PURE__*/React.createElement(Box, {
105
+ xcss: styles.columnContentBody
106
+ }, /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Text, {
80
107
  testId: `${testId}-description`
81
- }, description)), /*#__PURE__*/React.createElement(Box, {
108
+ }, description)), (showPrimaryButton && !isCompact || showNavigation && (onNextClick || onBackClick)) && /*#__PURE__*/React.createElement(Box, {
82
109
  xcss: styles.rowButton
83
- }, !isCompact && /*#__PURE__*/React.createElement(Button, {
110
+ }, showPrimaryButton && !isCompact && /*#__PURE__*/React.createElement(Button, {
84
111
  appearance: "primary",
85
112
  onClick: onPrimaryButtonClick,
86
113
  testId: `${testId}-connect`
87
- }, primaryButtonLabel), showNavigation && onNextClick && /*#__PURE__*/React.createElement(Button, {
114
+ }, primaryButtonLabel), showNavigation && (onBackClick || onNextClick) && /*#__PURE__*/React.createElement(Box, {
115
+ xcss: styles.rowButtonNavGroup
116
+ }, onBackClick && /*#__PURE__*/React.createElement(Button, {
117
+ appearance: "subtle",
118
+ onClick: onBackClick,
119
+ testId: `${testId}-back`
120
+ }, formatMessage(messages.connect_link_account_embed_carousel_button_back)), onNextClick && /*#__PURE__*/React.createElement(Button, {
88
121
  appearance: "subtle",
89
122
  onClick: onNextClick,
90
123
  testId: `${testId}-next`
91
- }, formatMessage(messages.connect_link_account_embed_teaser_button_next)), showNavigation && /*#__PURE__*/React.createElement(Box, {
124
+ }, formatMessage(messages.connect_link_account_embed_carousel_button_next)))))), showNavigation && /*#__PURE__*/React.createElement(Box, {
92
125
  xcss: styles.rowDot,
93
126
  role: "group",
94
- "aria-label": formatMessage(messages.connect_link_account_embed_teaser_dot_row_label)
127
+ "aria-label": formatMessage(messages.connect_link_account_embed_carousel_dot_row_label)
95
128
  }, Array.from({
96
129
  length: totalSlides
97
130
  }, (_, i) => /*#__PURE__*/React.createElement(Pressable, {
98
131
  key: i,
99
132
  xcss: styles.dotPassable,
100
133
  onClick: () => onDotClick === null || onDotClick === void 0 ? void 0 : onDotClick(i),
101
- "aria-label": formatMessage(messages.connect_link_account_embed_teaser_dot_label, {
134
+ "aria-label": formatMessage(messages.connect_link_account_embed_carousel_dot_label, {
102
135
  index: i + 1,
103
136
  total: totalSlides
104
137
  }),
@@ -106,9 +139,13 @@ const CarouselSlide = ({
106
139
  testId: `${testId}-dot-${i}`
107
140
  }, /*#__PURE__*/React.createElement(Box, {
108
141
  xcss: cx(styles.dot, i === slideIndex && styles.dotActive)
109
- })))))), !isCompact && /*#__PURE__*/React.createElement(Box, {
142
+ }))))), !isCompact && /*#__PURE__*/React.createElement(Box, {
110
143
  xcss: styles.columnImage,
111
- testId: `${testId}-image-panel`
112
- }, renderedImage));
144
+ testId: `${testId}-image-panel-${slideIndex}`
145
+ }, /*#__PURE__*/React.createElement(Box, {
146
+ xcss: styles.imageContainer
147
+ }, /*#__PURE__*/React.createElement(Box, {
148
+ xcss: styles.imageAbsolute
149
+ }, renderedImage))));
113
150
  };
114
151
  export default CarouselSlide;
@@ -6,7 +6,7 @@
6
6
  ._1reo15vq{overflow-x:hidden}
7
7
  ._4t3i1osq{height:100%}
8
8
  ._5sagjx92{animation-duration:.28s}
9
- ._j7hql61g{animation-name:kjqoltm}
9
+ ._j7hq1wwu{animation-name:kgnpaw5}
10
10
  ._kqswh2mm{position:relative}
11
- @keyframes kjqoltm{0%{opacity:0;transform:translateX(40px)}to{opacity:1;transform:translateX(0)}}
11
+ @keyframes kgnpaw5{0%{opacity:0}to{opacity:1}}
12
12
  @media (prefers-reduced-motion:reduce){._bl8aglyw{animation-name:none}._2hwzhgkh{animation-duration:.01ms}}
@@ -7,12 +7,10 @@ import CarouselSlide from './CarouselSlide';
7
7
  const styles = {
8
8
  carousel: "_1reo15vq _18m915vq _1e0c1txw _1bsb1osq _4t3i1osq _kqswh2mm"
9
9
  };
10
-
11
- // Slide enters from the right: translates from 40px right + fades in
12
- const slideInFromRight = null;
10
+ const fadeIn = null;
13
11
  const slideWrapperMap = {
14
12
  static: "_1bsb1osq _4t3i1osq",
15
- animated: "_1bsb1osq _4t3i1osq _j7hql61g _5sagjx92 _1pglafbj _1o511hrf _bl8aglyw _2hwzhgkh"
13
+ animated: "_1bsb1osq _4t3i1osq _j7hq1wwu _5sagjx92 _1pglafbj _1o511hrf _bl8aglyw _2hwzhgkh"
16
14
  };
17
15
  /**
18
16
  * Derives layout size bucket from pixel dimensions.
@@ -31,12 +29,13 @@ const getSize = (width, height) => {
31
29
  const Carousel = ({
32
30
  icon,
33
31
  iconLabel,
32
+ initialSlideIndex = 0,
34
33
  items,
35
34
  onPrimaryButtonClick,
36
35
  primaryButtonLabel,
37
36
  testId = 'embed-card-teaser-carousel'
38
37
  }) => {
39
- const [activeIndex, setActiveIndex] = useState(0);
38
+ const [activeIndex, setActiveIndex] = useState(initialSlideIndex);
40
39
  const [size, setSize] = useState('full');
41
40
 
42
41
  // Tracks whether the user has navigated at least once.
@@ -65,6 +64,10 @@ const Carousel = ({
65
64
  hasNavigated.current = true;
66
65
  setActiveIndex(current => (current + 1) % items.length);
67
66
  }, [items.length]);
67
+ const goPrev = useCallback(() => {
68
+ hasNavigated.current = true;
69
+ setActiveIndex(current => Math.max(0, current - 1));
70
+ }, []);
68
71
  const goTo = useCallback(index => {
69
72
  if (index === activeIndex) {
70
73
  return;
@@ -73,6 +76,7 @@ const Carousel = ({
73
76
  setActiveIndex(index);
74
77
  }, [activeIndex]);
75
78
  const currentSlide = items[activeIndex];
79
+ const isFirstSlide = activeIndex === 0;
76
80
  const isLastSlide = activeIndex === items.length - 1;
77
81
  return /*#__PURE__*/React.createElement(Box, {
78
82
  ref: containerRef,
@@ -90,6 +94,7 @@ const Carousel = ({
90
94
  image: currentSlide.image,
91
95
  title: currentSlide.title,
92
96
  onPrimaryButtonClick: onPrimaryButtonClick,
97
+ onBackClick: !isFirstSlide ? goPrev : undefined,
93
98
  onDotClick: goTo,
94
99
  onNextClick: !isLastSlide ? goNext : undefined,
95
100
  size: size,
@@ -0,0 +1,184 @@
1
+ import React, { Suspense, useCallback, useMemo } from 'react';
2
+ import { useIntl } from 'react-intl';
3
+ import { di } from 'react-magnetic-di';
4
+ import LinkGlyph from '@atlaskit/icon/core/link';
5
+ import SmartLinkIcon from '@atlaskit/icon/core/smart-link';
6
+ import IconTile from '@atlaskit/icon/icon-tile';
7
+ import Image from '@atlaskit/image/image';
8
+ import { useAnalyticsEvents } from '../../../../common/analytics/generated/use-analytics-events';
9
+ import { messages } from '../../../../messages';
10
+ import useRovoConfig from '../../../../state/hooks/use-rovo-config';
11
+ import Carousel from '../../components/carousel';
12
+ import { ExpandedFrame } from '../../components/ExpandedFrame';
13
+ import { ImageIcon } from '../../components/ImageIcon';
14
+ import LazyRovoChatBenefitImage from './carousel-images/LazyRovoChatBenefitImage';
15
+ import LazyRovoSearchBenefitImage from './carousel-images/LazyRovoSearchBenefitImage';
16
+ import NoAuthAvailableImage from './carousel-images/NoAuthAvailableImage';
17
+ import ProductIcon from './carousel-images/ProductIcon';
18
+ import SmartLinkBenefitImage from './carousel-images/SmartLinkBenefitImage';
19
+ const PARENT_PRODUCT = {
20
+ ATLAS: 'ATLAS',
21
+ BITBUCKET: 'BITBUCKET',
22
+ CONFLUENCE: 'CONFLUENCE',
23
+ CSM: 'JIRA',
24
+ JPD: 'JIRA',
25
+ JSM: 'JIRA',
26
+ JSW: 'JIRA',
27
+ JWM: 'JIRA',
28
+ TRELLO: 'TRELLO'
29
+ };
30
+ const PRODUCT_COMPANION = {
31
+ ATLAS: 'ATLAS',
32
+ BITBUCKET: 'BITBUCKET',
33
+ CONFLUENCE: 'JIRA',
34
+ JIRA: 'CONFLUENCE',
35
+ TRELLO: 'TRELLO'
36
+ };
37
+ const UnauthorizedCarouselView = ({
38
+ context,
39
+ frameStyle,
40
+ inheritDimensions,
41
+ isSelected,
42
+ onAuthorize,
43
+ onClick,
44
+ testId = 'embed-card-unauthorized-view',
45
+ url
46
+ }) => {
47
+ const intl = useIntl();
48
+ const {
49
+ fireEvent
50
+ } = useAnalyticsEvents();
51
+ const {
52
+ rovoOptions,
53
+ product
54
+ } = useRovoConfig();
55
+ const canAuthorize = typeof onAuthorize === 'function';
56
+ const providerName = context === null || context === void 0 ? void 0 : context.text;
57
+ const providerIcon = useMemo(() => {
58
+ var _ref, _context$iconLabel;
59
+ const iconLabel = (_ref = (_context$iconLabel = context === null || context === void 0 ? void 0 : context.iconLabel) !== null && _context$iconLabel !== void 0 ? _context$iconLabel : context === null || context === void 0 ? void 0 : context.text) !== null && _ref !== void 0 ? _ref : '';
60
+ if (typeof (context === null || context === void 0 ? void 0 : context.icon) === 'string') {
61
+ return /*#__PURE__*/React.createElement(Image, {
62
+ src: context.icon,
63
+ alt: iconLabel
64
+ });
65
+ }
66
+ if (context !== null && context !== void 0 && context.icon) {
67
+ return context.icon;
68
+ }
69
+ return /*#__PURE__*/React.createElement(IconTile, {
70
+ appearance: "blue",
71
+ icon: SmartLinkIcon,
72
+ label: iconLabel,
73
+ size: "small",
74
+ testId: "embed-card-fallback-icon"
75
+ });
76
+ }, [context]);
77
+ const items = useMemo(() => {
78
+ if (!canAuthorize) {
79
+ return [{
80
+ title: intl.formatMessage(messages.unauthorised_account_name_no_provider),
81
+ description: intl.formatMessage(messages.unauthorised_account_description_no_provider),
82
+ image: /*#__PURE__*/React.createElement(NoAuthAvailableImage, null)
83
+ }];
84
+ }
85
+ const parentProduct = product ? PARENT_PRODUCT[product] : undefined;
86
+ const parentProductIcon = /*#__PURE__*/React.createElement(ProductIcon, {
87
+ product: parentProduct
88
+ });
89
+ const parentProductAlt = parentProduct ? PRODUCT_COMPANION[parentProduct] : parentProduct;
90
+ const parentProductIconAlt = /*#__PURE__*/React.createElement(ProductIcon, {
91
+ product: parentProductAlt
92
+ });
93
+
94
+ // We only have special text for Google Drive and i18n select takes only one word (no space).
95
+ const i18nSelectContext = (context === null || context === void 0 ? void 0 : context.text) === 'Google Drive' ? 'Google' : context === null || context === void 0 ? void 0 : context.text;
96
+ const slides = [{
97
+ title: intl.formatMessage(messages.connect_link_account_embed_carousel_sl_title),
98
+ description: intl.formatMessage(messages.connect_link_account_embed_carousel_sl_description, {
99
+ context: i18nSelectContext,
100
+ product: parentProduct
101
+ }),
102
+ image: /*#__PURE__*/React.createElement(SmartLinkBenefitImage, {
103
+ productIcon: parentProductIcon
104
+ })
105
+ }];
106
+
107
+ // If the link has an unauthorized status and provides an onAuthorize callback,
108
+ // it is likely a 3P (third-party) link and is supported by Rovo. In that case,
109
+ // we show additional Rovo-specific teaser slides to encourage the user to connect their account.
110
+ if (rovoOptions !== null && rovoOptions !== void 0 && rovoOptions.isRovoEnabled) {
111
+ slides.push({
112
+ title: intl.formatMessage(messages.connect_link_account_embed_carousel_rovo_title),
113
+ description: intl.formatMessage(messages.connect_link_account_embed_carousel_rovo_description, {
114
+ context: providerName,
115
+ product: parentProduct
116
+ }),
117
+ image: /*#__PURE__*/React.createElement(Suspense, {
118
+ fallback: null
119
+ }, /*#__PURE__*/React.createElement(LazyRovoSearchBenefitImage, {
120
+ productIcon: parentProductIcon,
121
+ productIconAlt: parentProductIconAlt,
122
+ providerIcon: providerIcon
123
+ }))
124
+ });
125
+ }
126
+ if (rovoOptions !== null && rovoOptions !== void 0 && rovoOptions.isRovoEnabled && rovoOptions !== null && rovoOptions !== void 0 && rovoOptions.isRovoLLMEnabled) {
127
+ slides.push({
128
+ title: intl.formatMessage(messages.connect_link_account_embed_carousel_rovochat_title),
129
+ description: intl.formatMessage(messages.connect_link_account_embed_carousel_rovochat_description, {
130
+ context: providerName
131
+ }),
132
+ image: /*#__PURE__*/React.createElement(Suspense, {
133
+ fallback: null
134
+ }, /*#__PURE__*/React.createElement(LazyRovoChatBenefitImage, {
135
+ productIcon: parentProductIcon,
136
+ productIconAlt: parentProductIconAlt,
137
+ providerIcon: providerIcon
138
+ }))
139
+ });
140
+ }
141
+ return slides;
142
+ }, [canAuthorize, context, intl, product, providerName, providerIcon, rovoOptions]);
143
+ const handleOnAuthorizeClick = useCallback(() => {
144
+ if (onAuthorize) {
145
+ fireEvent('track.applicationAccount.authStarted', {});
146
+ onAuthorize();
147
+ }
148
+ }, [onAuthorize, fireEvent]);
149
+ const buttonLabel = context !== null && context !== void 0 && context.text ? intl.formatMessage(messages.connect_3p_account, {
150
+ context: context.text
151
+ }) : intl.formatMessage(messages.connect_link_account_card);
152
+ const icon = useMemo(() => {
153
+ if ( /*#__PURE__*/React.isValidElement(context === null || context === void 0 ? void 0 : context.icon)) {
154
+ return context.icon;
155
+ }
156
+ return /*#__PURE__*/React.createElement(ImageIcon, {
157
+ default: /*#__PURE__*/React.createElement(LinkGlyph, {
158
+ label: "icon",
159
+ color: "currentColor"
160
+ }),
161
+ src: typeof (context === null || context === void 0 ? void 0 : context.icon) === 'string' ? context.icon : undefined
162
+ });
163
+ }, [context === null || context === void 0 ? void 0 : context.icon]);
164
+ return /*#__PURE__*/React.createElement(ExpandedFrame, {
165
+ allowScrollBar: true,
166
+ frameStyle: frameStyle !== null && frameStyle !== void 0 ? frameStyle : 'show',
167
+ href: url,
168
+ icon: icon,
169
+ isSelected: isSelected,
170
+ inheritDimensions: inheritDimensions,
171
+ onClick: onClick,
172
+ setOverflow: true,
173
+ testId: testId,
174
+ text: context === null || context === void 0 ? void 0 : context.text
175
+ }, /*#__PURE__*/React.createElement(Carousel, {
176
+ icon: context === null || context === void 0 ? void 0 : context.icon,
177
+ iconLabel: context === null || context === void 0 ? void 0 : context.text,
178
+ items: items,
179
+ onPrimaryButtonClick: canAuthorize ? handleOnAuthorizeClick : undefined,
180
+ primaryButtonLabel: buttonLabel,
181
+ testId: `${testId}-carousel`
182
+ }));
183
+ };
184
+ export default UnauthorizedCarouselView;
@@ -0,0 +1,7 @@
1
+ ._18m915vq{overflow-y:hidden}
2
+ ._1bah1h6o{justify-content:center}
3
+ ._1bsb1osq{width:100%}
4
+ ._1e0c1txw{display:flex}
5
+ ._1reo15vq{overflow-x:hidden}
6
+ ._4cvr1h6o{align-items:center}
7
+ ._4t3i1osq{height:100%}
@@ -0,0 +1,25 @@
1
+ /* IconSlot.tsx generated by @compiled/babel-plugin v0.40.0 */
2
+ import "./IconSlot.compiled.css";
3
+ import { ax, ix } from "@compiled/react/runtime";
4
+ import React from 'react';
5
+ const iconSlotDivStyles = null;
6
+ const IconSlot = ({
7
+ icon,
8
+ x,
9
+ y,
10
+ w,
11
+ h
12
+ }) => {
13
+ if (!icon) {
14
+ return null;
15
+ }
16
+ return /*#__PURE__*/React.createElement("foreignObject", {
17
+ x: x,
18
+ y: y,
19
+ width: w,
20
+ height: h
21
+ }, /*#__PURE__*/React.createElement("div", {
22
+ className: ax(["_1reo15vq _18m915vq _1bsb1osq _4t3i1osq _1e0c1txw _4cvr1h6o _1bah1h6o"])
23
+ }, icon));
24
+ };
25
+ export default IconSlot;
@@ -0,0 +1,3 @@
1
+ import { lazy } from 'react';
2
+ const LazyRovoChatBenefitImage = /*#__PURE__*/lazy(() => import( /* webpackChunkName: "smart-card-embed-carousel-rovo-chat-benefit-image" */'./RovoChatBenefitImage'));
3
+ export default LazyRovoChatBenefitImage;
@@ -0,0 +1,3 @@
1
+ import { lazy } from 'react';
2
+ const LazyRovoSearchBenefitImage = /*#__PURE__*/lazy(() => import( /* webpackChunkName: "smart-card-embed-carousel-rovo-search-benefit-image" */'./RovoSearchBenefitImage'));
3
+ export default LazyRovoSearchBenefitImage;
@@ -0,0 +1,6 @@
1
+ ._1bah1h6o{justify-content:center}
2
+ ._1bsb1osq{width:100%}
3
+ ._1e0c1txw{display:flex}
4
+ ._4cvr1h6o{align-items:center}
5
+ ._ca0q1ejb{padding-top:var(--ds-space-300,24px)}
6
+ ._n3td1ejb{padding-bottom:var(--ds-space-300,24px)}
@@ -0,0 +1,13 @@
1
+ /* NoAuthAvailableImage.tsx generated by @compiled/babel-plugin v0.40.0 */
2
+ import "./NoAuthAvailableImage.compiled.css";
3
+ import { ax, ix } from "@compiled/react/runtime";
4
+ import React from 'react';
5
+ import { Box } from '@atlaskit/primitives/compiled';
6
+ import { UnauthorizedSVG } from '../unauthorized-svg';
7
+ const styles = {
8
+ container: "_1bsb1osq _1e0c1txw _4cvr1h6o _1bah1h6o _ca0q1ejb _n3td1ejb"
9
+ };
10
+ const NoAuthAvailableImage = () => /*#__PURE__*/React.createElement(Box, {
11
+ xcss: styles.container
12
+ }, /*#__PURE__*/React.createElement(UnauthorizedSVG, null));
13
+ export default NoAuthAvailableImage;
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import { AtlassianIcon } from '@atlaskit/logo/atlassian-icon';
3
+ import { BitbucketIcon } from '@atlaskit/logo/bitbucket-icon';
4
+ import { ConfluenceIcon } from '@atlaskit/logo/confluence-icon';
5
+ import { JiraIcon } from '@atlaskit/logo/jira-icon';
6
+ import { ProjectsIcon } from '@atlaskit/logo/projects/icon';
7
+ import { TrelloIcon } from '@atlaskit/logo/trello-icon';
8
+ const ProductIcon = ({
9
+ product,
10
+ size = 'xsmall'
11
+ }) => {
12
+ switch (product) {
13
+ case 'ATLAS':
14
+ return /*#__PURE__*/React.createElement(ProjectsIcon, {
15
+ size: size
16
+ });
17
+ case 'BITBUCKET':
18
+ return /*#__PURE__*/React.createElement(BitbucketIcon, {
19
+ size: size
20
+ });
21
+ case 'CONFLUENCE':
22
+ return /*#__PURE__*/React.createElement(ConfluenceIcon, {
23
+ size: size
24
+ });
25
+ case 'JIRA':
26
+ return /*#__PURE__*/React.createElement(JiraIcon, {
27
+ size: size
28
+ });
29
+ case 'TRELLO':
30
+ return /*#__PURE__*/React.createElement(TrelloIcon, {
31
+ size: size
32
+ });
33
+ default:
34
+ return /*#__PURE__*/React.createElement(AtlassianIcon, {
35
+ appearance: "brand",
36
+ size: size
37
+ });
38
+ }
39
+ };
40
+ export default ProductIcon;