@explorer-1/vue 0.0.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 (371) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/components.d.ts +215 -0
  4. package/index.html +18 -0
  5. package/lib/main.ts +78 -0
  6. package/package.json +54 -0
  7. package/postcss.config.js +7 -0
  8. package/public/edu/.gitkeep +0 -0
  9. package/public/edu/explorer-1/bg-stars-edu.png +0 -0
  10. package/public/edu/explorer-1/bg-stars.jpg +0 -0
  11. package/public/explorer-1/bg-stars-edu.png +0 -0
  12. package/public/explorer-1/bg-stars.jpg +0 -0
  13. package/src/App.vue +30 -0
  14. package/src/assets/fonts/README.md +12 -0
  15. package/src/assets/fonts/archivo-narrow/ArchivoNarrow-Bold.woff2 +0 -0
  16. package/src/assets/fonts/archivo-narrow/ArchivoNarrow-BoldItalic.woff2 +0 -0
  17. package/src/assets/fonts/archivo-narrow/ArchivoNarrow-SemiBold.woff2 +0 -0
  18. package/src/assets/fonts/archivo-narrow/ArchivoNarrow-SemiBoldItalic.woff2 +0 -0
  19. package/src/assets/fonts/metropolis/Metropolis-Bold.woff2 +0 -0
  20. package/src/assets/fonts/metropolis/Metropolis-BoldItalic.woff2 +0 -0
  21. package/src/assets/fonts/metropolis/Metropolis-ExtraBold.woff2 +0 -0
  22. package/src/assets/fonts/metropolis/Metropolis-Medium.woff2 +0 -0
  23. package/src/assets/fonts/metropolis/Metropolis-MediumItalic.woff2 +0 -0
  24. package/src/assets/fonts/metropolis/Metropolis-Regular.woff2 +0 -0
  25. package/src/assets/fonts/metropolis/Metropolis-RegularItalic.woff2 +0 -0
  26. package/src/assets/fonts/metropolis/Metropolis-SemiBold.woff2 +0 -0
  27. package/src/assets/fonts/metropolis/Metropolis-SemiBoldItalic.woff2 +0 -0
  28. package/src/assets/scss/styles.scss +1 -0
  29. package/src/components/AsteroidWatchWidget/AsteroidWatchWidget.stories.js +156 -0
  30. package/src/components/AsteroidWatchWidget/AsteroidWatchWidget.vue +156 -0
  31. package/src/components/BackToTop/BackToTop.stories.js +24 -0
  32. package/src/components/BackToTop/BackToTop.vue +76 -0
  33. package/src/components/BaseAudio/BaseAudio.stories.js +29 -0
  34. package/src/components/BaseAudio/BaseAudio.vue +359 -0
  35. package/src/components/BaseButton/BaseButton.stories.ts +65 -0
  36. package/src/components/BaseButton/BaseButton.vue +114 -0
  37. package/src/components/BaseCheckboxGroup/BaseCheckboxGroup.stories.mdx +68 -0
  38. package/src/components/BaseCheckboxGroup/BaseCheckboxGroup.vue +101 -0
  39. package/src/components/BaseHeading/BaseHeading.stories.js +75 -0
  40. package/src/components/BaseHeading/BaseHeading.vue +58 -0
  41. package/src/components/BaseImage/BaseImage.stories.ts +52 -0
  42. package/src/components/BaseImage/BaseImage.vue +120 -0
  43. package/src/components/BaseImageCaption/BaseImageCaption.stories.js +27 -0
  44. package/src/components/BaseImageCaption/BaseImageCaption.vue +51 -0
  45. package/src/components/BaseImagePlaceholder/BaseImagePlaceholder.stories.js +73 -0
  46. package/src/components/BaseImagePlaceholder/BaseImagePlaceholder.vue +90 -0
  47. package/src/components/BaseLightboxCloseButton/BaseLightboxCloseButton.vue +45 -0
  48. package/src/components/BaseLightboxOpenButton/BaseLightboxOpenButton.vue +46 -0
  49. package/src/components/BaseLink/BaseLink.stories.js +47 -0
  50. package/src/components/BaseLink/BaseLink.vue +227 -0
  51. package/src/components/BaseModal/BaseModal.stories.js +90 -0
  52. package/src/components/BaseModal/BaseModal.vue +54 -0
  53. package/src/components/BaseModal/BaseModalDialog.vue +59 -0
  54. package/src/components/BasePlaceholder/BasePlaceholder.stories.js +29 -0
  55. package/src/components/BasePlaceholder/BasePlaceholder.vue +30 -0
  56. package/src/components/BaseRadioGroup/BaseRadioGroup.stories.mdx +68 -0
  57. package/src/components/BaseRadioGroup/BaseRadioGroup.vue +102 -0
  58. package/src/components/BaseSwimlane/BaseSwimlane.stories.mdx +64 -0
  59. package/src/components/BaseSwimlane/BaseSwimlane.vue +204 -0
  60. package/src/components/BaseTag/BaseTag.stories.js +34 -0
  61. package/src/components/BaseTag/BaseTag.vue +36 -0
  62. package/src/components/BaseTimer/BaseTimer.stories.js +78 -0
  63. package/src/components/BaseTimer/BaseTimer.test.js +15 -0
  64. package/src/components/BaseTimer/BaseTimer.vue +270 -0
  65. package/src/components/BaseUnitToggle/BaseUnitToggle.stories.js +86 -0
  66. package/src/components/BaseUnitToggle/BaseUnitToggle.test.js +26 -0
  67. package/src/components/BaseUnitToggle/BaseUnitToggle.vue +255 -0
  68. package/src/components/BaseVideo/BaseVideo.stories.js +31 -0
  69. package/src/components/BaseVideo/BaseVideo.vue +73 -0
  70. package/src/components/BlockAnchor/BlockAnchor.vue +38 -0
  71. package/src/components/BlockAudio/BlockAudio.stories.js +29 -0
  72. package/src/components/BlockAudio/BlockAudio.vue +78 -0
  73. package/src/components/BlockCard/BlockCard.stories.js +24 -0
  74. package/src/components/BlockCard/BlockCard.vue +88 -0
  75. package/src/components/BlockCardGroup/BlockCardGroup.stories.js +71 -0
  76. package/src/components/BlockCardGroup/BlockCardGroup.vue +61 -0
  77. package/src/components/BlockCircleImageCard/BlockCircleImageCard.stories.js +55 -0
  78. package/src/components/BlockCircleImageCard/BlockCircleImageCard.vue +120 -0
  79. package/src/components/BlockCta/BlockCta.stories.js +35 -0
  80. package/src/components/BlockCta/BlockCta.vue +55 -0
  81. package/src/components/BlockHeading/BlockHeading.stories.js +22 -0
  82. package/src/components/BlockHeading/BlockHeading.vue +27 -0
  83. package/src/components/BlockIframeEmbed/BlockIframeEmbed.stories.js +40 -0
  84. package/src/components/BlockIframeEmbed/BlockIframeEmbed.vue +84 -0
  85. package/src/components/BlockImage/BlockImage.stories.js +137 -0
  86. package/src/components/BlockImage/BlockImage.vue +48 -0
  87. package/src/components/BlockImage/BlockImageFullBleed.vue +119 -0
  88. package/src/components/BlockImage/BlockImageStandard.vue +106 -0
  89. package/src/components/BlockImageCarousel/BlockImageCarousel.stories.js +108 -0
  90. package/src/components/BlockImageCarousel/BlockImageCarousel.vue +201 -0
  91. package/src/components/BlockImageCarouselItem/BlockImageCarouselItem.stories.js +63 -0
  92. package/src/components/BlockImageCarouselItem/BlockImageCarouselItem.vue +120 -0
  93. package/src/components/BlockImageComparison/BlockImageComparison.stories.js +46 -0
  94. package/src/components/BlockImageComparison/BlockImageComparison.vue +59 -0
  95. package/src/components/BlockImageGallery/BlockImageGallery.stories.js +55 -0
  96. package/src/components/BlockImageGallery/BlockImageGallery.vue +128 -0
  97. package/src/components/BlockInlineImage/BlockInlineImage.stories.js +68 -0
  98. package/src/components/BlockInlineImage/BlockInlineImage.vue +124 -0
  99. package/src/components/BlockKeyPoints/BlockKeyPoints.stories.js +28 -0
  100. package/src/components/BlockKeyPoints/BlockKeyPoints.vue +48 -0
  101. package/src/components/BlockLinkCard/BlockLinkCard.stories.js +102 -0
  102. package/src/components/BlockLinkCard/BlockLinkCard.vue +197 -0
  103. package/src/components/BlockLinkCarousel/BlockLinkCarousel.stories.js +217 -0
  104. package/src/components/BlockLinkCarousel/BlockLinkCarousel.vue +68 -0
  105. package/src/components/BlockLinkTile/BlockLinkTile.stories.js +72 -0
  106. package/src/components/BlockLinkTile/BlockLinkTile.vue +193 -0
  107. package/src/components/BlockListCards/BlockListCards.stories.js +69 -0
  108. package/src/components/BlockListCards/BlockListCards.vue +129 -0
  109. package/src/components/BlockQuote/BlockQuote.stories.js +84 -0
  110. package/src/components/BlockQuote/BlockQuote.vue +87 -0
  111. package/src/components/BlockRelatedLinks/BlockRelatedLinks.stories.js +60 -0
  112. package/src/components/BlockRelatedLinks/BlockRelatedLinks.vue +77 -0
  113. package/src/components/BlockRelatedLinks/RelatedLink.vue +85 -0
  114. package/src/components/BlockStreamfield/BlockStreamfield.stories.js +88 -0
  115. package/src/components/BlockStreamfield/BlockStreamfield.vue +333 -0
  116. package/src/components/BlockTable/BlockTable.stories.js +20 -0
  117. package/src/components/BlockTable/BlockTable.vue +73 -0
  118. package/src/components/BlockTeaser/BlockTeaser.stories.js +74 -0
  119. package/src/components/BlockTeaser/BlockTeaser.test.js +12 -0
  120. package/src/components/BlockTeaser/BlockTeaser.vue +174 -0
  121. package/src/components/BlockText/BlockText.stories.js +21 -0
  122. package/src/components/BlockText/BlockText.vue +44 -0
  123. package/src/components/BlockTwitterEmbed/BlockTwitterEmbed.stories.js +19 -0
  124. package/src/components/BlockTwitterEmbed/BlockTwitterEmbed.vue +61 -0
  125. package/src/components/BlockVideo/BlockVideo.stories.js +23 -0
  126. package/src/components/BlockVideo/BlockVideo.vue +41 -0
  127. package/src/components/BlockVideoEmbed/BlockVideoEmbed.stories.js +20 -0
  128. package/src/components/BlockVideoEmbed/BlockVideoEmbed.vue +71 -0
  129. package/src/components/CalendarButton/CalendarButton.stories.js +36 -0
  130. package/src/components/CalendarButton/CalendarButton.vue +86 -0
  131. package/src/components/DetailHeadline/DetailHeadline.stories.js +48 -0
  132. package/src/components/DetailHeadline/DetailHeadline.vue +143 -0
  133. package/src/components/DsnWidget/DsnWidget.stories.js +29 -0
  134. package/src/components/DsnWidget/DsnWidget.vue +96 -0
  135. package/src/components/EventCard/EventCard.vue +188 -0
  136. package/src/components/EventDetailHero/EventDetailHero.stories.js +53 -0
  137. package/src/components/EventDetailHero/EventDetailHero.vue +64 -0
  138. package/src/components/FormContact/FormContact.stories.js +16 -0
  139. package/src/components/FormContact/FormContact.vue +202 -0
  140. package/src/components/FormNewsletterSignup/FormNewsletterSignup.stories.js +16 -0
  141. package/src/components/FormNewsletterSignup/FormNewsletterSignup.vue +355 -0
  142. package/src/components/HeroLarge/HeroLarge.stories.js +46 -0
  143. package/src/components/HeroLarge/HeroLarge.vue +93 -0
  144. package/src/components/HeroListingIndex/HeroListingIndex.stories.js +156 -0
  145. package/src/components/HeroListingIndex/HeroListingIndex.vue +80 -0
  146. package/src/components/HeroMedia/HeroMedia.stories.js +135 -0
  147. package/src/components/HeroMedia/HeroMedia.vue +174 -0
  148. package/src/components/HeroMedium/HeroMedium.stories.js +73 -0
  149. package/src/components/HeroMedium/HeroMedium.vue +166 -0
  150. package/src/components/HomepageCarousel/HomepageCarousel.stories.js +112 -0
  151. package/src/components/HomepageCarousel/HomepageCarousel.vue +382 -0
  152. package/src/components/HomepageCarouselItem/HomepageCarouselItem.stories.js +60 -0
  153. package/src/components/HomepageCarouselItem/HomepageCarouselItem.vue +168 -0
  154. package/src/components/HomepageEmbedBlock/HomepageEmbedBlock.stories.js +35 -0
  155. package/src/components/HomepageEmbedBlock/HomepageEmbedBlock.vue +39 -0
  156. package/src/components/HomepageFeaturedRobot/HomepageFeaturedRobot.stories.js +93 -0
  157. package/src/components/HomepageFeaturedRobot/HomepageFeaturedRobot.vue +129 -0
  158. package/src/components/HomepageMissionsCarousel/HomepageMissionsCarousel.stories.js +153 -0
  159. package/src/components/HomepageMissionsCarousel/HomepageMissionsCarousel.vue +282 -0
  160. package/src/components/HomepageMissionsCarousel/HomepageMissionsCarouselItem.vue +143 -0
  161. package/src/components/HomepageStats/HomepageStats.stories.js +155 -0
  162. package/src/components/HomepageStats/HomepageStats.vue +362 -0
  163. package/src/components/HomepageTeaserBlock/HomepageTeaserBlock.stories.js +90 -0
  164. package/src/components/HomepageTeaserBlock/HomepageTeaserBlock.vue +156 -0
  165. package/src/components/HomepageTeaserBlock/HomepageTeaserBlockCardImage.vue +58 -0
  166. package/src/components/Icons/Icon360.vue +29 -0
  167. package/src/components/Icons/IconArrow.vue +26 -0
  168. package/src/components/Icons/IconArrows.vue +43 -0
  169. package/src/components/Icons/IconAudio.vue +27 -0
  170. package/src/components/Icons/IconBook.vue +21 -0
  171. package/src/components/Icons/IconBookUser.vue +21 -0
  172. package/src/components/Icons/IconBriefcase.vue +21 -0
  173. package/src/components/Icons/IconCalendar.vue +25 -0
  174. package/src/components/Icons/IconCaret.vue +26 -0
  175. package/src/components/Icons/IconCheckbox.vue +26 -0
  176. package/src/components/Icons/IconCheckboxSelected.vue +35 -0
  177. package/src/components/Icons/IconClose.vue +27 -0
  178. package/src/components/Icons/IconCloseLightbox.vue +25 -0
  179. package/src/components/Icons/IconDownload.vue +31 -0
  180. package/src/components/Icons/IconDropdown.vue +25 -0
  181. package/src/components/Icons/IconEnvelope.vue +21 -0
  182. package/src/components/Icons/IconExpand.vue +28 -0
  183. package/src/components/Icons/IconExternal.vue +25 -0
  184. package/src/components/Icons/IconFilter.vue +25 -0
  185. package/src/components/Icons/IconForwardTen.vue +38 -0
  186. package/src/components/Icons/IconGrid.vue +25 -0
  187. package/src/components/Icons/IconHand.vue +21 -0
  188. package/src/components/Icons/IconInfo.vue +26 -0
  189. package/src/components/Icons/IconLink.vue +27 -0
  190. package/src/components/Icons/IconList.vue +25 -0
  191. package/src/components/Icons/IconLocation.vue +37 -0
  192. package/src/components/Icons/IconMagnifyingGlass.vue +21 -0
  193. package/src/components/Icons/IconMedal.vue +21 -0
  194. package/src/components/Icons/IconMenu.vue +27 -0
  195. package/src/components/Icons/IconMinus.vue +26 -0
  196. package/src/components/Icons/IconMute.vue +27 -0
  197. package/src/components/Icons/IconNext.vue +25 -0
  198. package/src/components/Icons/IconPause.vue +28 -0
  199. package/src/components/Icons/IconPlay.vue +28 -0
  200. package/src/components/Icons/IconPlus.vue +25 -0
  201. package/src/components/Icons/IconPrev.vue +25 -0
  202. package/src/components/Icons/IconRewindTen.vue +42 -0
  203. package/src/components/Icons/IconSearch.vue +25 -0
  204. package/src/components/Icons/IconShare.vue +30 -0
  205. package/src/components/Icons/IconSlideshow.vue +30 -0
  206. package/src/components/Icons/IconSocialEmail.vue +26 -0
  207. package/src/components/Icons/IconSocialFacebook.vue +26 -0
  208. package/src/components/Icons/IconSocialGoogleClassroom.vue +26 -0
  209. package/src/components/Icons/IconSocialInstagram.vue +35 -0
  210. package/src/components/Icons/IconSocialPinterest.vue +26 -0
  211. package/src/components/Icons/IconSocialReddit.vue +25 -0
  212. package/src/components/Icons/IconSocialTwitter.vue +25 -0
  213. package/src/components/Icons/IconSocialYoutube.vue +35 -0
  214. package/src/components/Icons/IconStop.vue +27 -0
  215. package/src/components/Icons/IconTime.vue +25 -0
  216. package/src/components/Icons/IconUniversity.vue +21 -0
  217. package/src/components/Icons/IconUser.vue +26 -0
  218. package/src/components/Icons/IconVolume.vue +27 -0
  219. package/src/components/Icons/Icons.stories.ts +440 -0
  220. package/src/components/ImageDetailContextImage/ImageDetailContextImage.vue +125 -0
  221. package/src/components/LayoutHelper/LayoutHelper.vue +38 -0
  222. package/src/components/LoadingTransition/LoadingTransition.vue +48 -0
  223. package/src/components/LogoCaltech/LogoCaltech.stories.js +39 -0
  224. package/src/components/LogoCaltech/LogoCaltech.vue +29 -0
  225. package/src/components/LogoTribrand/LogoTribrand.stories.js +76 -0
  226. package/src/components/LogoTribrand/LogoTribrand.vue +93 -0
  227. package/src/components/MissionDetailAbout/MissionDetailAbout.stories.js +70 -0
  228. package/src/components/MissionDetailAbout/MissionDetailAbout.vue +204 -0
  229. package/src/components/MissionDetailHero/MissionDetailHero.stories.js +303 -0
  230. package/src/components/MissionDetailHero/MissionDetailHero.vue +292 -0
  231. package/src/components/MissionDetailHighlights/MissionDetailHighlights.stories.js +278 -0
  232. package/src/components/MissionDetailHighlights/MissionDetailHighlights.vue +332 -0
  233. package/src/components/MissionDetailHighlights/MissionDetailHighlightsCarousel.vue +160 -0
  234. package/src/components/MissionDetailHighlights/MissionDetailHighlightsCarouselItem.vue +123 -0
  235. package/src/components/MissionDetailInlineImage/MissionDetailInlineImage.stories.js +43 -0
  236. package/src/components/MissionDetailInlineImage/MissionDetailInlineImage.vue +97 -0
  237. package/src/components/MissionDetailStats/DistanceStats.test.js +133 -0
  238. package/src/components/MissionDetailStats/DistanceStats.vue +250 -0
  239. package/src/components/MissionDetailStats/MissionDetailStats.stories.js +95 -0
  240. package/src/components/MissionDetailStats/MissionDetailStats.test.js +23 -0
  241. package/src/components/MissionDetailStats/MissionDetailStats.vue +187 -0
  242. package/src/components/MissionDetailStats/MissionDetailStatsMicro.vue +52 -0
  243. package/src/components/MissionDetailStats/MissionDetailStatsMini.vue +109 -0
  244. package/src/components/MissionDetailStreamfield/MissionDetailStreamfield.stories.js +55 -0
  245. package/src/components/MissionDetailStreamfield/MissionDetailStreamfield.vue +95 -0
  246. package/src/components/MixinAnimationCaret/MixinAnimationCaret.stories.ts +24 -0
  247. package/src/components/MixinAnimationCaret/MixinAnimationCaret.vue +81 -0
  248. package/src/components/MixinCarousel/MixinCarousel.docs.mdx +33 -0
  249. package/src/components/MixinCarousel/MixinCarousel.stories.js +53 -0
  250. package/src/components/MixinCarousel/MixinCarousel.vue +236 -0
  251. package/src/components/MixinDropdownToggle/MixinDropdownToggle.vue +53 -0
  252. package/src/components/MixinFancybox/MixinFancybox.vue +405 -0
  253. package/src/components/MixinFancybox/MixinFancyboxOpenButton.vue +35 -0
  254. package/src/components/MixinVideoBg/MixinVideoBg.stories.js +23 -0
  255. package/src/components/MixinVideoBg/MixinVideoBg.vue +39 -0
  256. package/src/components/NavDesktop/NavDesktop.stories.js +254 -0
  257. package/src/components/NavDesktop/NavDesktop.vue +355 -0
  258. package/src/components/NavDesktop/NavDesktopDropdown.vue +201 -0
  259. package/src/components/NavDesktop/NavDesktopDropdownContent.vue +87 -0
  260. package/src/components/NavDesktop/NavDesktopDropdownMore.vue +112 -0
  261. package/src/components/NavDesktop/NavDesktopTopHat.vue +56 -0
  262. package/src/components/NavHeading/NavHeading.stories.js +23 -0
  263. package/src/components/NavHeading/NavHeading.vue +40 -0
  264. package/src/components/NavHighlight/NavHighlight.stories.js +42 -0
  265. package/src/components/NavHighlight/NavHighlight.vue +67 -0
  266. package/src/components/NavLinkList/NavLinkList.stories.js +46 -0
  267. package/src/components/NavLinkList/NavLinkList.vue +66 -0
  268. package/src/components/NavLogoLinks/NavLogoLinks.stories.js +22 -0
  269. package/src/components/NavLogoLinks/NavLogoLinks.vue +57 -0
  270. package/src/components/NavMobile/NavMobile.stories.js +231 -0
  271. package/src/components/NavMobile/NavMobile.vue +280 -0
  272. package/src/components/NavMobile/NavMobileDropdown.vue +175 -0
  273. package/src/components/NavMobile/NavMobileLink.vue +69 -0
  274. package/src/components/NavMobile/NavMobileSecondaryDropdown.vue +124 -0
  275. package/src/components/NavSearchForm/NavSearchForm.stories.js +13 -0
  276. package/src/components/NavSearchForm/NavSearchForm.vue +102 -0
  277. package/src/components/NavSecondary/NavSecondary.stories.js +24 -0
  278. package/src/components/NavSecondary/NavSecondary.vue +191 -0
  279. package/src/components/NavSecondary/NavSecondaryDropdown.vue +181 -0
  280. package/src/components/NavSecondary/NavSecondaryDropdownContent.vue +140 -0
  281. package/src/components/NavSecondary/NavSecondaryLink.vue +62 -0
  282. package/src/components/NavSocial/NavSocial.stories.js +20 -0
  283. package/src/components/NavSocial/NavSocial.vue +97 -0
  284. package/src/components/NewsDetailMediaContact/NewsDetailMediaContact.stories.js +60 -0
  285. package/src/components/NewsDetailMediaContact/NewsDetailMediaContact.test.js +30 -0
  286. package/src/components/NewsDetailMediaContact/NewsDetailMediaContact.vue +73 -0
  287. package/src/components/ParallaxContainer/ParallaxContainer.stories.js +47 -0
  288. package/src/components/ParallaxContainer/ParallaxContainer.vue +76 -0
  289. package/src/components/ParallaxElement/ParallaxElement.vue +25 -0
  290. package/src/components/PastEventsCarousel/PastEventsCarousel.vue +86 -0
  291. package/src/components/PodcastEpisodeCard/PodcastEpisodeCard.vue +251 -0
  292. package/src/components/PodcastSeriesCarousel/PodcastSeriesCarousel.stories.js +235 -0
  293. package/src/components/PodcastSeriesCarousel/PodcastSeriesCarousel.vue +171 -0
  294. package/src/components/ProfileDetailSectionGroup/ProfileDetailSectionGroup.vue +84 -0
  295. package/src/components/RoboticsDetailStats/RoboticsDetailStats.stories.js +97 -0
  296. package/src/components/RoboticsDetailStats/RoboticsDetailStats.test.js +21 -0
  297. package/src/components/RoboticsDetailStats/RoboticsDetailStats.vue +217 -0
  298. package/src/components/RoboticsDetailStats/RoboticsDetailStatsMini.vue +182 -0
  299. package/src/components/SearchFilterGroup/SearchFilterGroup.stories.js +59 -0
  300. package/src/components/SearchFilterGroup/SearchFilterGroup.vue +221 -0
  301. package/src/components/SearchInput/SearchInput.stories.js +35 -0
  302. package/src/components/SearchInput/SearchInput.vue +93 -0
  303. package/src/components/SearchPagination/SearchPagination.stories.js +55 -0
  304. package/src/components/SearchPagination/SearchPagination.vue +173 -0
  305. package/src/components/SearchResultCard/SearchResultCard.stories.js +57 -0
  306. package/src/components/SearchResultCard/SearchResultCard.vue +282 -0
  307. package/src/components/SearchResultGridItem/SearchResultGridItem.stories.js +70 -0
  308. package/src/components/SearchResultGridItem/SearchResultGridItem.vue +140 -0
  309. package/src/components/SearchResultsList/SearchResultsList.vue +183 -0
  310. package/src/components/SearchSelectMenu/SearchSelectMenu.stories.js +25 -0
  311. package/src/components/SearchSelectMenu/SearchSelectMenu.vue +86 -0
  312. package/src/components/ShareButtons/ShareButtons.stories.js +16 -0
  313. package/src/components/ShareButtons/ShareButtons.vue +132 -0
  314. package/src/components/ShareButtonsEdu/ShareButtonsEdu.stories.js +14 -0
  315. package/src/components/ShareButtonsEdu/ShareButtonsEdu.vue +215 -0
  316. package/src/components/SkipLink/SkipLink.stories.js +9 -0
  317. package/src/components/SkipLink/SkipLink.vue +53 -0
  318. package/src/components/SwimlaneCTA/SwimlaneCTA.stories.mdx +77 -0
  319. package/src/components/SwimlaneCTA/SwimlaneCTA.vue +281 -0
  320. package/src/components/TheFooter/TheFooter.stories.js +602 -0
  321. package/src/components/TheFooter/TheFooter.vue +228 -0
  322. package/src/components/TheFooter/TheFooterSignUp.vue +61 -0
  323. package/src/components/ThumbnailCarousel/ThumbnailCarousel.stories.js +106 -0
  324. package/src/components/ThumbnailCarousel/ThumbnailCarousel.vue +76 -0
  325. package/src/components/TopicDetailMissionCarousel/TopicDetailMissionCarousel.stories.js +93 -0
  326. package/src/components/TopicDetailMissionCarousel/TopicDetailMissionCarousel.vue +68 -0
  327. package/src/components/TopicDetailMissionCarouselItem/TopicDetailMissionCarouselItem.stories.js +38 -0
  328. package/src/components/TopicDetailMissionCarouselItem/TopicDetailMissionCarouselItem.vue +104 -0
  329. package/src/components/TopicDetailMissionSpotlight/TopicDetailMissionSpotlight.stories.js +84 -0
  330. package/src/components/TopicDetailMissionSpotlight/TopicDetailMissionSpotlight.vue +112 -0
  331. package/src/components/TopicDetailMore/TopicDetailMore.stories.js +221 -0
  332. package/src/components/TopicDetailMore/TopicDetailMore.vue +124 -0
  333. package/src/components/TopicDetailMore/TopicDetailMoreVisibility.vue +51 -0
  334. package/src/components/TopicDetailMoreItem/TopicDetailMoreItem.stories.js +116 -0
  335. package/src/components/TopicDetailMoreItem/TopicDetailMoreItem.vue +130 -0
  336. package/src/components/TopicDetailStreamfield/TopicDetailStreamfield.stories.js +34 -0
  337. package/src/components/TopicDetailStreamfield/TopicDetailStreamfield.vue +98 -0
  338. package/src/components/YearTicker/YearTicker.stories.js +37 -0
  339. package/src/components/YearTicker/YearTicker.vue +132 -0
  340. package/src/docs/foundation/DynamicTokens.vue +106 -0
  341. package/src/docs/foundation/FontVariants.vue +80 -0
  342. package/src/docs/foundation/color.docs.mdx +112 -0
  343. package/src/docs/foundation/grid.docs.mdx +189 -0
  344. package/src/docs/foundation/grid.stories.js +263 -0
  345. package/src/docs/foundation/grid_layouthelpers.docs.mdx +78 -0
  346. package/src/docs/foundation/grid_layouthelpers.stories.js +53 -0
  347. package/src/docs/foundation/themes.docs.mdx +71 -0
  348. package/src/docs/foundation/themes.stories.js +63 -0
  349. package/src/docs/foundation/typography.docs.mdx +50 -0
  350. package/src/docs/foundation/typography.stories.js +119 -0
  351. package/src/interfaces.ts +129 -0
  352. package/src/main.ts +34 -0
  353. package/src/store/header.ts +40 -0
  354. package/src/store/theme.ts +27 -0
  355. package/src/templates/PageContent/PageContent.stories.js +92 -0
  356. package/src/templates/PageContent/PageContent.vue +140 -0
  357. package/src/templates/PageEventDetail/PageEventDetail.stories.js +104 -0
  358. package/src/templates/PageEventDetail/PageEventDetail.vue +358 -0
  359. package/src/templates/PageNewsDetail/PageNewsDetail.stories.js +158 -0
  360. package/src/templates/PageNewsDetail/PageNewsDetail.vue +242 -0
  361. package/src/templates/edu/PageEduNewsDetail.stories.js +64 -0
  362. package/src/templates/edu/PageEduNewsDetail.vue +155 -0
  363. package/src/templates/www/HomePage/HomePage.vue +30 -0
  364. package/src/utils/dayjs.js +32 -0
  365. package/src/utils/filters.js +33 -0
  366. package/src/utils/mixins.ts +353 -0
  367. package/src/vite-env.d.ts +1 -0
  368. package/tailwind.config.js +24 -0
  369. package/tsconfig.json +29 -0
  370. package/tsconfig.node.json +11 -0
  371. package/vite.config.ts +55 -0
@@ -0,0 +1,217 @@
1
+ import BlockLinkCarousel, { itemTypes } from './BlockLinkCarousel.vue'
2
+
3
+ export default {
4
+ title: 'Components/Blocks/BlockLinkCarousel',
5
+ component: BlockLinkCarousel,
6
+ argTypes: {
7
+ itemType: {
8
+ type: 'string',
9
+ description: 'Type of item used for each slide',
10
+ control: {
11
+ type: 'select'
12
+ },
13
+ options: Object.keys(itemTypes),
14
+ table: {
15
+ defaultValue: { summary: 'cards' }
16
+ }
17
+ }
18
+ },
19
+ excludeStories: /.*Data$/
20
+ }
21
+
22
+ export const BlockLinkCardCarouselData = [
23
+ {
24
+ url: '/news/placeholder-slug-1',
25
+ title: 'How engineers at NASA-JPL persevered to develop a ventilator',
26
+ slug: 'placeholder-slug-1',
27
+ label: 'Mars',
28
+ thumbnailImage: {
29
+ src: {
30
+ url: 'https://picsum.photos/512/288',
31
+ width: 512,
32
+ height: 288
33
+ },
34
+ alt: 'Alt text'
35
+ }
36
+ },
37
+ {
38
+ url: '/news/placeholder-slug-2',
39
+ title: 'How engineers at NASA-JPL persevered to develop a ventilator',
40
+ slug: 'placeholder-slug-2',
41
+ thumbnailImage: {
42
+ src: {
43
+ url: 'https://picsum.photos/512/288',
44
+ width: 512,
45
+ height: 288
46
+ },
47
+ alt: 'Alt text'
48
+ }
49
+ },
50
+ {
51
+ url: '/news/placeholder-slug-3',
52
+ title: 'How engineers at NASA-JPL persevered to develop a ventilator',
53
+ slug: 'placeholder-slug-3',
54
+ label: 'Solar System',
55
+ thumbnailImage: {
56
+ src: {
57
+ url: 'https://picsum.photos/512/288',
58
+ width: 512,
59
+ height: 288
60
+ },
61
+ alt: 'Alt text'
62
+ }
63
+ },
64
+ {
65
+ url: '/news/placeholder-slug-4',
66
+ title: 'How engineers at NASA-JPL persevered to develop a ventilator',
67
+ slug: 'placeholder-slug-4',
68
+ label: 'Technology',
69
+ thumbnailImage: {
70
+ src: {
71
+ url: 'https://picsum.photos/512/288',
72
+ width: 512,
73
+ height: 288
74
+ },
75
+ alt: 'Alt text'
76
+ }
77
+ }
78
+ ]
79
+
80
+ export const BlockLinkTileCarouselData = [
81
+ {
82
+ url: '/topics/placeholder-slug-1',
83
+ title: 'Perseverance',
84
+ label: 'Mars',
85
+ thumbnailImage: {
86
+ src: {
87
+ url: 'https://picsum.photos/490/430',
88
+ width: 490,
89
+ height: 430
90
+ },
91
+ alt: 'Alt text'
92
+ }
93
+ },
94
+ {
95
+ url: '/topics/placeholder-slug-2',
96
+ title: 'OCO-2',
97
+ thumbnailImage: {
98
+ src: {
99
+ url: 'https://picsum.photos/490/430',
100
+ width: 490,
101
+ height: 430
102
+ },
103
+ alt: 'Alt text'
104
+ }
105
+ },
106
+ {
107
+ url: '/topics/placeholder-slug-3',
108
+ title: 'Mars 2020',
109
+ label: 'Solar System',
110
+ thumbnailImage: {
111
+ src: {
112
+ url: 'https://picsum.photos/490/430',
113
+ width: 490,
114
+ height: 430
115
+ },
116
+ alt: 'Alt text'
117
+ }
118
+ },
119
+ {
120
+ url: '/topics/placeholder-slug-4',
121
+ title: 'Lorem ipsum dolor sit amet',
122
+ label: 'Mars',
123
+ thumbnailImage: {
124
+ src: {
125
+ url: 'https://picsum.photos/490/430',
126
+ width: 490,
127
+ height: 430
128
+ },
129
+ alt: 'Alt text'
130
+ }
131
+ }
132
+ ]
133
+
134
+ export const EventsBlockLinkCarouselData = [
135
+ {
136
+ endDate: null,
137
+ startDate: '2019-11-11',
138
+ thumbnailImage: {
139
+ src: {
140
+ height: '288',
141
+ url: 'https://picsum.photos/512/288',
142
+ width: '512'
143
+ }
144
+ },
145
+ title: 'Past event',
146
+ url: '/events/becoming-a-nasa-engineer'
147
+ },
148
+ {
149
+ endDate: null,
150
+ startDate: '2021-11-27',
151
+ thumbnailImage: {
152
+ src: {
153
+ height: '288',
154
+ url: 'https://picsum.photos/512/288',
155
+ width: '512'
156
+ }
157
+ },
158
+ title: 'Future event',
159
+ url: '/events/becoming-a-nasa-engineer'
160
+ }
161
+ ]
162
+
163
+ // template
164
+ const BlockLinkCarouselTemplate = (args) => ({
165
+ props: Object.keys(args),
166
+ components: { BlockLinkCarousel },
167
+ template: `<BlockLinkCarousel :itemType="itemType" :heading="heading" :items="items"/>`
168
+ })
169
+
170
+ const BlockLinkCarouselMultipleTemplate = (args) => ({
171
+ components: { BlockLinkCarousel },
172
+ setup() {
173
+ return { args }
174
+ },
175
+ template: `<div><BlockLinkCarousel class="mb-20" v-bind="args" /><BlockLinkCarousel item-type="cards" v-bind="args" /></div>`
176
+ })
177
+
178
+ // stories
179
+ export const CardCarousel = {
180
+ args: {
181
+ itemType: 'cards',
182
+ heading: 'Related Pages',
183
+ items: BlockLinkCardCarouselData
184
+ }
185
+ }
186
+
187
+ export const TileCarousel = {
188
+ args: {
189
+ itemType: 'tiles',
190
+ heading: 'Explore More',
191
+ items: BlockLinkCardCarouselData
192
+ }
193
+ }
194
+
195
+ export const MoreEventsCarousel = {
196
+ args: {
197
+ itemType: 'cards',
198
+ heading: 'More Events',
199
+ items: EventsBlockLinkCarouselData
200
+ }
201
+ }
202
+
203
+ export const TwoItems = {
204
+ args: {
205
+ itemType: 'cards',
206
+ heading: 'Related Pages',
207
+ items: BlockLinkCardCarouselData.slice(0, 2)
208
+ }
209
+ }
210
+
211
+ export const MultipleCarousels = BlockLinkCarouselMultipleTemplate.bind({})
212
+ MultipleCarousels.args = {
213
+ itemType: 'cards',
214
+ heading: 'Related Pages',
215
+ otherHeading: 'Explore More',
216
+ items: BlockLinkCardCarouselData
217
+ }
@@ -0,0 +1,68 @@
1
+ \
2
+ <template>
3
+ <MixinCarousel
4
+ v-if="hasContent"
5
+ :heading="heading"
6
+ :variant="itemType"
7
+ >
8
+ <!-- Slides -->
9
+ <component
10
+ :is="theVariantComponent"
11
+ v-for="(item, index) in items"
12
+ :key="index"
13
+ :data="item"
14
+ class="swiper-slide"
15
+ />
16
+ </MixinCarousel>
17
+ </template>
18
+ <script lang="ts">
19
+ import { defineComponent, resolveComponent } from 'vue'
20
+ import MixinCarousel from './../MixinCarousel/MixinCarousel.vue'
21
+ import BlockLinkCard from './../BlockLinkCard/BlockLinkCard.vue'
22
+ import BlockLinkTile from './../BlockLinkTile/BlockLinkTile.vue'
23
+
24
+ interface Variants {
25
+ [name: string]: string
26
+ }
27
+
28
+ export const itemTypes: Variants = {
29
+ cards: 'BlockLinkCard',
30
+ tiles: 'BlockLinkTile'
31
+ }
32
+
33
+ export default defineComponent({
34
+ name: 'BlockLinkCarousel',
35
+ components: {
36
+ MixinCarousel,
37
+ BlockLinkCard,
38
+ BlockLinkTile
39
+ },
40
+ props: {
41
+ itemType: {
42
+ type: String,
43
+ required: false,
44
+ default: 'cards',
45
+ validator: (prop: string): boolean => Object.keys(itemTypes).includes(prop)
46
+ },
47
+ items: {
48
+ type: Array,
49
+ required: false
50
+ },
51
+ heading: {
52
+ type: String,
53
+ required: false
54
+ }
55
+ },
56
+ computed: {
57
+ theVariantComponent() {
58
+ return resolveComponent(itemTypes[this.itemType])
59
+ },
60
+ hasContent() {
61
+ if (this.items && this.items.length) {
62
+ return true
63
+ }
64
+ return false
65
+ }
66
+ }
67
+ })
68
+ </script>
@@ -0,0 +1,72 @@
1
+ // the base component should really be a single vue component with a "type" prop where the user can select between card and list, but this works well enough for a demo atm.
2
+
3
+ import BlockLinkTile from './BlockLinkTile.vue'
4
+
5
+ export default {
6
+ title: 'Components/Blocks/BlockLinkTile',
7
+ component: BlockLinkTile,
8
+ decorators: [
9
+ () => ({
10
+ template: `<div id="storyDecorator" class="relative grid grid-cols-2 gap-3 lg:grid-cols-3"><story/></div>`
11
+ })
12
+ ],
13
+ argTypes: {
14
+ headingLevel: {
15
+ description:
16
+ 'Change the heading level for semantic markup. This does not affect the style of the heading.',
17
+ control: {
18
+ type: 'select'
19
+ },
20
+ options: [null, 'h1', 'h2', 'h3', 'h4', 'h5']
21
+ }
22
+ },
23
+ parameters: {
24
+ html: {
25
+ root: '#storyDecorator'
26
+ }
27
+ },
28
+ excludeStories: /.*Data$/
29
+ }
30
+
31
+ // shared data
32
+ export const BlockLinkTileData = {
33
+ card: {
34
+ url: '/topics/placeholder-slug-1',
35
+ title: 'How engineers at NASA-JPL persevered to develop a ventilator',
36
+ label: 'Solar System',
37
+ thumbnailImage: {
38
+ src: {
39
+ url: 'https://picsum.photos/490/430',
40
+ width: 490,
41
+ height: 430
42
+ },
43
+ alt: 'Alt text'
44
+ }
45
+ }
46
+ }
47
+
48
+ export const SingleItem = {
49
+ args: {
50
+ data: BlockLinkTileData.card,
51
+ headingLevel: 'h2',
52
+ compact: false
53
+ }
54
+ }
55
+ export const Compact = {
56
+ args: {
57
+ title: 'Lorem ipsum title in search results',
58
+ url: '/missions/demo',
59
+ externalLink: '',
60
+ label: 'Mission',
61
+ thumbnailImage: {
62
+ src: {
63
+ url: 'https://picsum.photos/512/288',
64
+ width: 512,
65
+ height: 288
66
+ },
67
+ alt: 'Alt text'
68
+ },
69
+ headingLevel: 'h2',
70
+ compact: true
71
+ }
72
+ }
@@ -0,0 +1,193 @@
1
+ <template>
2
+ <BaseLink
3
+ v-if="theItem"
4
+ variant="none"
5
+ :to="theItem.url ? theItem.url : undefined"
6
+ :href="theItem.externalLink ? theItem.externalLink : undefined"
7
+ class="BlockLinkTile group"
8
+ link-class="block"
9
+ external-target-blank
10
+ >
11
+ <div class="relative">
12
+ <div
13
+ class="lg:group-hover:scale-105 min-h-66 transition-all duration-200 ease-in delay-200 transform scale-100 bg-black"
14
+ >
15
+ <BaseImagePlaceholder
16
+ :aspect-ratio="compact ? '1:1' : '8:7'"
17
+ dark-mode
18
+ no-logo
19
+ >
20
+ <BaseImage
21
+ v-if="theItem.thumbnailImage && theItem.thumbnailImage.src"
22
+ :src="theItem.thumbnailImage.src.url"
23
+ :width="theItem.thumbnailImage.src.width"
24
+ :height="theItem.thumbnailImage.src.height"
25
+ alt=""
26
+ object-fit-class="cover"
27
+ image-class="w-full h-full"
28
+ loading="lazy"
29
+ />
30
+ <div v-else></div>
31
+ </BaseImagePlaceholder>
32
+ <div
33
+ class="gradient-overlay bg-gradient-to-b from-transparent to-black min-h-1/2 absolute inset-x-0 bottom-0"
34
+ ></div>
35
+ <div class="bg-opacity-15 absolute inset-0 bg-black"></div>
36
+ </div>
37
+ <div class="absolute inset-x-0 bottom-0">
38
+ <div
39
+ class="text-contrast px-6 py-4 text-white"
40
+ :class="{ 'xl:px-10 xl:py-6 lg:px-8': !compact }"
41
+ >
42
+ <p
43
+ v-if="theItem.label || theItem.startDate"
44
+ class="text-subtitle divide-white flex divide-x mb-2"
45
+ >
46
+ <span
47
+ v-if="theItem.label"
48
+ :class="{ 'pr-2': theItem.startDate }"
49
+ >
50
+ {{ theItem.label }}
51
+ </span>
52
+ <span
53
+ v-if="theItem.startDate"
54
+ :class="{ 'pl-2': theItem.label }"
55
+ >
56
+ {{ formattedEventDates }}
57
+ </span>
58
+ <span class="sr-only">.</span>
59
+ </p>
60
+ <component
61
+ :is="headingLevel || 'p'"
62
+ class="text-xl leading-tight tracking-tight transition-all duration-200 ease-in delay-200"
63
+ :class="
64
+ compact
65
+ ? 'font-semibold mb-0 lg:group-hover:mb-1'
66
+ : 'font-medium mb-1 lg:group-hover:mb-3 sm:text-6xl md:text-3xl xl:text-6xl'
67
+ "
68
+ >
69
+ {{ theItem.title }}
70
+ </component>
71
+ <div
72
+ class="lg:block lg:-ml-3 lg:opacity-0 lg:group-hover:ml-0 lg:group-hover:opacity-100 lg:-mb-3 relative z-20 hidden text-3xl leading-normal transition-all duration-200 ease-in delay-200"
73
+ >
74
+ <IconArrow />
75
+ </div>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ </BaseLink>
80
+ </template>
81
+
82
+ <script lang="ts">
83
+ import type { PropType } from 'vue'
84
+ import type { Card } from '../../interfaces'
85
+ import { defineComponent } from 'vue'
86
+ import { mixinFormatEventDates } from './../../utils/mixins'
87
+ import IconArrow from './../Icons/IconArrow.vue'
88
+ import BaseLink from './../BaseLink/BaseLink.vue'
89
+ import BaseImage from './../BaseImage/BaseImage.vue'
90
+ import BaseImagePlaceholder from './../BaseImagePlaceholder/BaseImagePlaceholder.vue'
91
+ import type { HeadingLevel } from './../BaseHeading/BaseHeading.vue'
92
+
93
+ export default defineComponent({
94
+ name: 'BlockLinkTile',
95
+ components: {
96
+ IconArrow,
97
+ BaseLink,
98
+ BaseImage,
99
+ BaseImagePlaceholder
100
+ },
101
+ props: {
102
+ // if some cards contain external links, be sure to alias the external url as 'externalLink'
103
+ data: {
104
+ type: Object as PropType<Card>,
105
+ required: false
106
+ },
107
+ // override props as needed
108
+ // so we can use this component in search results
109
+ url: {
110
+ type: String,
111
+ required: false
112
+ },
113
+ externalLink: {
114
+ type: String,
115
+ required: false
116
+ },
117
+ thumbnailImage: {
118
+ type: Object,
119
+ required: false
120
+ },
121
+ label: {
122
+ type: String,
123
+ required: false
124
+ },
125
+ title: {
126
+ type: String,
127
+ required: false
128
+ },
129
+ startDate: {
130
+ type: String,
131
+ required: false
132
+ },
133
+ endDate: {
134
+ type: String,
135
+ required: false
136
+ },
137
+ // if styling should be compact
138
+ compact: {
139
+ type: Boolean,
140
+ default: false
141
+ },
142
+ // if a heading should be used and at what level
143
+ headingLevel: {
144
+ type: (String as PropType<HeadingLevel>) || null,
145
+ required: false
146
+ }
147
+ },
148
+ computed: {
149
+ // to allow for various data shapes and sources
150
+ // use-case: the homepage provides this.data.page with non-page siblings
151
+ // use-case: search and listing pages pass individual props
152
+ theItem(): Card | undefined {
153
+ if ((this.data as Card)?.page) {
154
+ return (this.data as Card).page
155
+ } else if (this.data) {
156
+ return this.data
157
+ } else if (
158
+ this.url ||
159
+ this.externalLink ||
160
+ this.thumbnailImage ||
161
+ this.label ||
162
+ this.title ||
163
+ this.startDate ||
164
+ this.endDate
165
+ ) {
166
+ // form a custom object
167
+ return {
168
+ url: this.url,
169
+ externalLink: this.externalLink,
170
+ thumbnailImage: this.thumbnailImage,
171
+ label: this.label,
172
+ title: this.title,
173
+ startDate: this.startDate,
174
+ endDate: this.endDate
175
+ }
176
+ }
177
+ return undefined
178
+ },
179
+ formattedEventDates() {
180
+ return this.theItem?.startDate
181
+ ? mixinFormatEventDates(this.theItem.startDate, this.theItem.endDate)
182
+ : undefined
183
+ }
184
+ }
185
+ })
186
+ </script>
187
+ <style lang="scss">
188
+ .BlockLinkTile {
189
+ .text-subtitle.divide-x {
190
+ @apply leading-none #{!important};
191
+ }
192
+ }
193
+ </style>
@@ -0,0 +1,69 @@
1
+ import BlockListCards from './BlockListCards.vue'
2
+
3
+ export default {
4
+ title: 'Components/Blocks/BlockListCards',
5
+ component: BlockListCards,
6
+ excludeStories: /.*Data$/
7
+ }
8
+
9
+ export const BlockListCardsData = {
10
+ blockType: 'ListBlock',
11
+ items: [
12
+ {
13
+ description:
14
+ '<p>Morbi ullamcorper ligula sit amet finibus condimentum. Nulla et ultricies metus. Integer tristique arcu quam, sed blandit sem porttitor non. Donec aliquet orci at iaculis gravida. Vestibulum bibendum justo vitae enim tempor pulvinar. Phasellus scelerisque ultrices eros, vitae pulvinar lectus tempus convallis. In hac habitasse platea dictumst. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>',
15
+ heading: 'Heading text',
16
+ image: {
17
+ src: {
18
+ url: 'https://picsum.photos/320/320',
19
+ width: '320',
20
+ height: '320'
21
+ }
22
+ },
23
+ links: [
24
+ {
25
+ externalLink: 'http://www.nasa.gov/',
26
+ page: null,
27
+ text: 'External link'
28
+ },
29
+ {
30
+ externalLink: null,
31
+ page: {
32
+ url: '/missions/airborne-visible-infrared-imaging-spectrometer-aviris/'
33
+ },
34
+ text: 'Internal link'
35
+ }
36
+ ]
37
+ },
38
+ {
39
+ description:
40
+ '<p>Morbi ullamcorper ligula sit amet finibus condimentum. Nulla et ultricies metus. Integer tristique arcu quam, sed blandit sem porttitor non. Donec aliquet orci at iaculis gravida. Vestibulum bibendum justo vitae enim tempor pulvinar. Phasellus scelerisque ultrices eros, vitae pulvinar lectus tempus convallis. In hac habitasse platea dictumst. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>',
41
+ heading: 'Heading text',
42
+ image: {
43
+ src: {
44
+ url: 'https://picsum.photos/320/320',
45
+ width: '320',
46
+ height: '320'
47
+ }
48
+ },
49
+ links: [
50
+ {
51
+ externalLink: null,
52
+ page: null,
53
+ document: {
54
+ url: '/missions/airborne-visible-infrared-imaging-spectrometer-aviris/'
55
+ },
56
+ text: 'Document link'
57
+ }
58
+ ]
59
+ }
60
+ ]
61
+ }
62
+
63
+ // stories
64
+ export const Default = {
65
+ name: 'BlockListCards',
66
+ args: {
67
+ data: BlockListCardsData
68
+ }
69
+ }