@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,78 @@
1
+ import { Meta, Story, Canvas } from '@storybook/blocks'
2
+ import * as Stories from './grid_layouthelpers.stories'
3
+
4
+ <Meta of={Stories} />
5
+
6
+ # Column Layout helpers
7
+
8
+ Sometimes you may want to use a few common column indentations in your layouts for blocks on your page. Explorer 1 provides a few helper classes to aid in quickly creating these indented blocks. These helper classes also include responsive fallbacks.
9
+
10
+ ## .indent-col-base
11
+
12
+ `.indent-col-base` is the **base class that you must add to any element that will use additional helper classes covered in this documentation**. Its immediate parent must be `.BaseGrid` (or any 12-column grid). It sets the width to start at the first column and end after the last column, i.e. full width.
13
+
14
+ ```css
15
+ .indent-col-base {
16
+ @apply col-start-1 col-end-13; // full width of 12 grid container
17
+ }
18
+ ```
19
+
20
+ <Canvas
21
+ className="sbdocs-preview-full-width"
22
+ of={Stories.BaseWidth}
23
+ />
24
+
25
+ ## .indent-col-2
26
+
27
+ `.indent-col-2` adds to `.indent-col-base` by overriding the `col-start` and `col-end` for `lg` screens to indent content to the **second** column.
28
+
29
+ ```css
30
+ .indent-col-2 {
31
+ @screen lg {
32
+ @apply col-start-2 col-end-12;
33
+ }
34
+ }
35
+ ```
36
+
37
+ <Canvas
38
+ className="sbdocs-preview-full-width"
39
+ of={Stories.ColTwoStart}
40
+ />
41
+
42
+ ## .indent-col-3
43
+
44
+ `.indent-col-3` adds to `.indent-col-base` by overriding the `col-start` and `col-end` for `lg` screens to indent content to the **third** column.
45
+
46
+ ```css
47
+ .indent-col-3 {
48
+ @screen lg {
49
+ @apply col-start-3 col-end-11;
50
+ }
51
+ }
52
+ ```
53
+
54
+ <Canvas
55
+ className="sbdocs-preview-full-width"
56
+ of={Stories.ColThreeStart}
57
+ />
58
+
59
+ ## .indent-col-4
60
+
61
+ `.indent-col-4` adds to `.indent-col-base` by overriding the `col-start` and `col-end` for `lg` screens to indent content to the **fourth** column, and at `md` screens to the **third** column.
62
+
63
+ ```css
64
+ .indent-col-4 {
65
+ @screen md {
66
+ @apply col-start-3 col-end-11;
67
+ }
68
+
69
+ @screen lg {
70
+ @apply col-start-4 col-end-10;
71
+ }
72
+ }
73
+ ```
74
+
75
+ <Canvas
76
+ className="sbdocs-preview-full-width"
77
+ of={Stories.ColFourStart}
78
+ />
@@ -0,0 +1,53 @@
1
+ import LayoutHelper, { indents } from '@explorer-1/vue/src/components/LayoutHelper/LayoutHelper.vue'
2
+
3
+ // TODO: DOCS: update this to match the full grid/layout documentation
4
+
5
+ export default {
6
+ title: 'Foundation/Grid and Layout/Column Layout Helpers',
7
+ component: LayoutHelper,
8
+ tags: ['!autodocs'],
9
+ argTypes: {
10
+ indent: {
11
+ control: { type: 'select' },
12
+ options: Object.keys(indents)
13
+ }
14
+ },
15
+ parameters: {
16
+ html: {
17
+ root: '#storyDecorator'
18
+ }
19
+ },
20
+ decorators: [
21
+ () => ({
22
+ template: `<div id="storyDecorator" class="container mx-auto border border-black"><story/></div>`
23
+ })
24
+ ]
25
+ }
26
+
27
+ const LayoutHelperTemplate = (args) => ({
28
+ components: { LayoutHelper },
29
+ setup() {
30
+ return { args }
31
+ },
32
+ template: `<LayoutHelper v-bind="args"><div class="w-full text-white bg-black py-10 px-2">Indent starts at <code>{{args}}</code></div></LayoutHelper>`
33
+ })
34
+
35
+ export const BaseWidth = LayoutHelperTemplate.bind({})
36
+ BaseWidth.args = {
37
+ indent: 'col-1'
38
+ }
39
+
40
+ export const ColTwoStart = LayoutHelperTemplate.bind({})
41
+ ColTwoStart.args = {
42
+ indent: 'col-2'
43
+ }
44
+
45
+ export const ColThreeStart = LayoutHelperTemplate.bind({})
46
+ ColThreeStart.args = {
47
+ indent: 'col-3'
48
+ }
49
+
50
+ export const ColFourStart = LayoutHelperTemplate.bind({})
51
+ ColFourStart.args = {
52
+ indent: 'col-4'
53
+ }
@@ -0,0 +1,71 @@
1
+ import { Meta, Story, Canvas } from '@storybook/blocks'
2
+ import * as Stories from './themes.stories'
3
+
4
+ <Meta of={Stories} />
5
+
6
+ # Themes
7
+
8
+ Throughout this storybook, you can use the Theme and Variant selectors in the Storybook toolbar to preview components in different theme configurations.
9
+
10
+ **Note:** some documentation pages use iframes to display components, which ignores the theme switcher. Thus, for the most accurate representation of the internal theme, we recommend viewing the story in isolation.
11
+
12
+ ## Dynamic color tokens
13
+
14
+ There are dynamic color tokens in place that use a semantic name instead of a specific color name. These tokens are use strategically in components to support multiple themes.
15
+
16
+ Changing the Theme and Variant to see how the dynamic tokens change.
17
+
18
+ <Canvas of={Stories.DynamicTokenStory} />
19
+
20
+ ## Light & Dark Variants
21
+
22
+ `.ThemeVariantLight` and `.ThemeVariantDark` in Explorer 1 are theme variants. Note that not all components support these variants.
23
+
24
+ ### Key Points
25
+
26
+ - `defaultTheme` and `ThemeVariantLight` are the defaults
27
+ - It is recommended that page templates always include the default variant.
28
+
29
+ ### Contributing developers: Writing light/dark theme styles for components
30
+
31
+ For components that have light and dark themes, add theme rules to the end of your scss. The following is an example of a component whose background should be `bg-white` by default and in `ThemeVariantLight` but `bg-black` in `ThemeVariantDark`
32
+
33
+ ```scss
34
+ .MyComponent {
35
+ // set the default background color
36
+ @apply bg-white;
37
+ // set the ThemeVariantDark background color
38
+ .ThemeVariantDark & {
39
+ @apply bg-black;
40
+ }
41
+ }
42
+ ```
43
+
44
+ ## Adaptive Text Colors
45
+
46
+ Usage of `.text-action` vs `.text-action` in the context of `.ThemeVariantLight` and `.ThemeVariantDark` ensures that the contrast of the text color is sufficient against the background color. These adaptive text colors are supported by all themes.
47
+
48
+ ### Definition (excerpt)
49
+
50
+ ```css
51
+ .text-action {
52
+ @apply text-action;
53
+ .ThemeVariantDark & {
54
+ @apply text-action-light;
55
+ }
56
+ }
57
+ .text-action-hover {
58
+ @apply text-action-dark;
59
+ .ThemeVariantDark & {
60
+ @apply text-action;
61
+ }
62
+ }
63
+ ```
64
+
65
+ ### Usage
66
+
67
+ Try changing the Theme and Variant while viewing the examples below. Notice how there are slight changes in color between the Dark and Light variants.
68
+
69
+ <Canvas of={Stories.AdaptiveText} />
70
+
71
+ See [BaseLink](?path=/docs/components-base-baselink--docs) for a real usage example.
@@ -0,0 +1,63 @@
1
+ import DynamicTokens from './DynamicTokens.vue'
2
+
3
+ export default {
4
+ title: 'Foundation/Themes',
5
+ component: DynamicTokens,
6
+ tags: ['!autodocs']
7
+ }
8
+
9
+ export const DynamicTokenStory = {
10
+ name: 'Dynamic Tokens',
11
+ args: {}
12
+ }
13
+
14
+ const InternalTemplate = `<div>
15
+ <div class="ThemeInternal">
16
+ <!-- BaseLink -->
17
+ <div>
18
+ <a
19
+ class="group cursor-pointer -default underline text-action can-hover:hover:text-action-hover"
20
+ >
21
+ Internal Theme: BaseLink
22
+ </a>
23
+ </div>
24
+ <!-- /BaseLink -->
25
+ </div>
26
+ <div>
27
+ <!-- BaseLink -->
28
+ <div>
29
+ <a
30
+ class="group cursor-pointer -default underline text-action can-hover:hover:text-action-hover"
31
+ >
32
+ Default Theme: BaseLink
33
+ </a>
34
+ </div>
35
+ <!-- /BaseLink -->
36
+ </div>
37
+ </div>`
38
+
39
+ export const Internal = {
40
+ args: {},
41
+ render: (args) => ({
42
+ setup() {
43
+ return { args }
44
+ },
45
+ template: InternalTemplate
46
+ })
47
+ }
48
+
49
+ const AdaptiveTextTemplate = `<p class="p-4">
50
+ <a class="cursor-pointer font-bold text-action can-hover:hover:text-action-hover">
51
+ Lorem ipsum dolor sit amet
52
+ </a>
53
+ </p>`
54
+
55
+ export const AdaptiveText = {
56
+ args: {},
57
+ render: (args) => ({
58
+ setup() {
59
+ return { args }
60
+ },
61
+ template: AdaptiveTextTemplate
62
+ })
63
+ }
@@ -0,0 +1,50 @@
1
+ import { Meta, Story, Canvas } from '@storybook/blocks'
2
+ import * as Stories from './typography.stories'
3
+
4
+ <Meta of={Stories} />
5
+
6
+ # Typography
7
+
8
+ ## Fonts
9
+
10
+ Below are all fonts used in the design system.
11
+
12
+ ### Metropolis
13
+
14
+ Metropolis is used for all heading levels and body copy.
15
+
16
+ ### Archivo Narrow
17
+
18
+ Archivo Narrow is used for subtitles and buttons and is always used in UPPERCASE.
19
+
20
+ <Canvas of={Stories.Fonts} />
21
+
22
+ ## Text Colors
23
+
24
+ Here are colors intended for text, depending on the background. **Note:** Some of these colors will not pass contrast requirements if used on a different background.
25
+
26
+ <Canvas of={Stories.TextColors} />
27
+
28
+ ## Text Styles
29
+
30
+ All of the text styles used across the project, each with its reusable component class.
31
+ Prefer reusing those classes over individual utility classes, as each text style has different properties between desktop and mobile viewports.
32
+
33
+ Note:
34
+
35
+ - All heading levels also have the corresponding text styles directly applied for convenience.
36
+ - This can still be overridden by adding another relevant class.
37
+
38
+ <Canvas of={Stories.TextStyles} />
39
+
40
+ ### Heading Icons
41
+
42
+ We can also add icons next to the headings.
43
+
44
+ <Canvas of={Stories.HeadingIcons} />
45
+
46
+ ## Text Contrast
47
+
48
+ In areas where text overlays an image, use this `.text-contrast` class in conjunction with a semi-transparent overlay (ex. `bg-black/*`) to improve readability. `.text-contrast` also works with tailwind breakpoints.
49
+
50
+ <Canvas of={Stories.TextContrast} />
@@ -0,0 +1,119 @@
1
+ import FontVariants from './FontVariants.vue'
2
+ import IconLocation from './../../components/Icons/IconLocation.vue'
3
+ import BaseHeading from './../../components/BaseHeading/BaseHeading.vue'
4
+
5
+ export default {
6
+ title: 'Foundation/Typography',
7
+ component: FontVariants,
8
+ subcomponents: { BaseHeading, IconLocation },
9
+ tags: ['!autodocs']
10
+ }
11
+
12
+ export const Fonts = {
13
+ args: {}
14
+ }
15
+
16
+ export const TextColors = {
17
+ args: {},
18
+ render: () => ({
19
+ template: `<div>
20
+ <div class="md:grid-cols-3 inline-grid gap-4 p-8 mt-8 bg-white">
21
+ <div>
22
+ <div class="bg-gray-dark w-16 h-8"></div>
23
+ <code class="text-gray-dark">.text-gray-dark</code>
24
+ </div>
25
+ <div>
26
+ <div class="bg-gray-mid-dark w-16 h-8"></div>
27
+ <code class="text-gray-mid-dark">.text-gray-mid-dark</code>
28
+ </div>
29
+ <div>
30
+ <div class="bg-jpl-red w-16 h-8"></div>
31
+ <code class="text-jpl-red">.text-jpl-red</code>
32
+ </div>
33
+ </div>
34
+ <div class="inline-grid grid-cols-3 gap-4 p-8 bg-black">
35
+ <div>
36
+ <div class="w-16 h-8 bg-white"></div>
37
+ <code class="text-white">.text-white</code>
38
+ </div>
39
+ <div>
40
+ <div class="bg-gray-mid w-16 h-8"></div>
41
+ <code class="text-gray-mid">.text-gray-mid</code>
42
+ </div>
43
+ <div>
44
+ <div class="bg-jpl-red-light w-16 h-8"></div>
45
+ <code class="text-jpl-red-light">.text-jpl-red-light</code>
46
+ </div>
47
+ </div>
48
+ </div>`
49
+ })
50
+ }
51
+
52
+ export const TextStyles = {
53
+ args: {},
54
+ render: () => ({
55
+ template: `<div>
56
+ <p class="text-h1-alt mt-8">Header H1 Alt</p>
57
+ <code>.text-h1-alt</code>
58
+ <p class="text-h1 mt-8">Header H1</p>
59
+ <code>h1, .text-h1</code>
60
+ <p class="text-h2 mt-8">Header H2</p>
61
+ <code>h2, .text-h2</code>
62
+ <p class="text-h3 mt-8">Header H3</p>
63
+ <code>h3, .text-h3</code>
64
+ <p class="text-h4 mt-8">Header H4</p>
65
+ <code>h4, .text-h4</code>
66
+ <p class="text-h5 mt-8">Header H5</p>
67
+ <code>h5, .text-h5</code>
68
+ <p class="text-h6 mt-8">Header H6</p>
69
+ <code>h6, .text-h6</code>
70
+ <p class="text-subtitle mt-8">Subtitle</p>
71
+ <code>.text-subtitle</code>
72
+ <p class="text-body-lg mt-8">Body large</p>
73
+ <code>.text-body-lg</code>
74
+ <p class="text-body-md mt-8">Body medium</p>
75
+ <code>.text-body-md</code>
76
+ <p class="text-body-sm mt-8">Body small</p>
77
+ <code>.text-body-sm</code>
78
+ <p class="text-body-xs mt-8">Body extra small</p>
79
+ <code>.text-body-xs</code>
80
+ <p class="mt-8"><mark>Highlighted text</mark></p>
81
+ <code>mark</code>
82
+ </div>`
83
+ })
84
+ }
85
+
86
+ export const HeadingIcons = {
87
+ argTypes: {
88
+ size: {
89
+ type: { name: 'string', required: true },
90
+ control: { type: 'select' },
91
+ options: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']
92
+ }
93
+ },
94
+ args: {
95
+ size: 'h1'
96
+ },
97
+ render: (args) => ({
98
+ components: { BaseHeading, IconLocation },
99
+ setup() {
100
+ return { args }
101
+ },
102
+ template: `<div>
103
+ <BaseHeading v-bind="args"><IconLocation class="inline" /> Heading H1</BaseHeading>
104
+ </div>`
105
+ })
106
+ }
107
+
108
+ export const TextContrast = {
109
+ args: {},
110
+ render: () => ({
111
+ template: `<div style="background-image: url(/explorer-1/bg-stars.jpg); background-color: #000;" class="bg-cover bg-no-repeat bg-center">
112
+ <div class="p-10 bg-black/30">
113
+ <span class="text-h3 text-white text-contrast">
114
+ This text uses a text shadow that increases readability when used with a semi-transparent overlay.
115
+ </span>
116
+ </div>
117
+ </div>`
118
+ })
119
+ }
@@ -0,0 +1,129 @@
1
+ export interface BreadcrumbPathObject {
2
+ path: string
3
+ title: string
4
+ children: any[]
5
+ }
6
+
7
+ export interface BlockData {
8
+ blockType: string
9
+ }
10
+ export interface ImageSrcObject {
11
+ url: string
12
+ width: number
13
+ height: number
14
+ }
15
+ export interface ThumbnailObject {
16
+ original: string
17
+ width: number
18
+ height: number
19
+ }
20
+ export interface ImageObject {
21
+ title?: string
22
+ src: ImageSrcObject
23
+ srcCropped: ImageSrcObject
24
+ screenXs?: Partial<ImageSrcObject>
25
+ screenSm?: Partial<ImageSrcObject>
26
+ screenMd?: Partial<ImageSrcObject>
27
+ screenLg?: Partial<ImageSrcObject>
28
+ screenXL?: Partial<ImageSrcObject>
29
+ screenThreexl?: Partial<ImageSrcObject>
30
+ srcSet?: string
31
+ alt?: string
32
+ original?: string
33
+ caption?: string
34
+ credit?: string
35
+ detailUrl?: string
36
+ cover?: string
37
+ image?: ImageObject
38
+ displayCaption?: boolean
39
+ }
40
+
41
+ export interface ImageBlock extends BlockData, ImageObject {}
42
+
43
+ export interface ElasticSearchPage {
44
+ id: string | number
45
+ content_type: string
46
+ url: string
47
+ type: string
48
+ topic: string
49
+ image: string | any
50
+ date: string
51
+ startDate: string
52
+ endDate: string
53
+ startTime: string
54
+ endTime: string
55
+ location: string
56
+ title: string
57
+ summary: string
58
+ }
59
+
60
+ export interface FormOption {
61
+ id: string
62
+ name: string
63
+ alt: string
64
+ value: string
65
+ text: string
66
+ title: string
67
+ }
68
+
69
+ export interface Card {
70
+ __typename?: string
71
+ type?: string
72
+ url?: string
73
+ externalLink?: string
74
+ page?: Card
75
+ title?: string
76
+ date?: string
77
+ startDate?: string
78
+ endDate?: string
79
+ label?: string
80
+ thumbnailImage?: Partial<ImageObject>
81
+ }
82
+
83
+ export interface RelatedLinkObject {
84
+ page: {
85
+ url: string
86
+ } | null
87
+ document: { url: string } | null
88
+ externalLink: string | null
89
+ text: string | null
90
+ }
91
+
92
+ export interface PageResponseObject {
93
+ __typename: string
94
+ contentType: string
95
+ breadcrumb?: string
96
+ url?: string
97
+ }
98
+
99
+ export interface PageResponse {
100
+ __typename: string
101
+ page: PageResponseObject
102
+ }
103
+
104
+ export interface HeaderResponse {
105
+ __typename: string
106
+ desktop: any
107
+ mobile: any
108
+ }
109
+
110
+ export interface FooterResponse {
111
+ __typename: string
112
+ footer: any
113
+ }
114
+
115
+ export type Explorer1Theme = 'defaultTheme' | 'ThemeInternal' | 'ThemeEdu'
116
+
117
+ export interface Attributes {
118
+ [name: string]: string
119
+ }
120
+
121
+ export interface AuthorObject {
122
+ name: string
123
+ organization: string
124
+ }
125
+
126
+ export interface Topic {
127
+ title: string
128
+ url: string
129
+ }
package/src/main.ts ADDED
@@ -0,0 +1,34 @@
1
+ import { createApp } from 'vue'
2
+ import { createPinia } from 'pinia'
3
+ import { createRouter, createWebHashHistory } from 'vue-router'
4
+ import { RouterLink } from 'vue-router'
5
+ import filters from './utils/filters'
6
+ // @ts-ignore
7
+ import vClickOutside from 'click-outside-vue3'
8
+ import VueCompareImage from 'vue3-compare-image'
9
+ import './assets/scss/styles.scss'
10
+ import App from './App.vue'
11
+
12
+ const pinia = createPinia()
13
+ const app = createApp(App)
14
+
15
+ // vue router
16
+ const router = createRouter({
17
+ history: createWebHashHistory(),
18
+ routes: []
19
+ })
20
+
21
+ // plugins
22
+ app.use(pinia)
23
+ app.use(router)
24
+ app.use(vClickOutside)
25
+ app.use(VueCompareImage)
26
+
27
+ // filters
28
+ app.config.globalProperties.$filters = filters
29
+ app.config.globalProperties.$theme = 'EDU'
30
+
31
+ // components
32
+ app.component('NuxtLink', RouterLink)
33
+
34
+ app.mount('#app')
@@ -0,0 +1,40 @@
1
+ import { defineStore } from 'pinia'
2
+ /** Controls various display states for the header and navigation
3
+ ** headerTransparent: whether the header is a transparent overlay
4
+ ** highlightPrimary: logic in various components will enable/disable this
5
+ ** globalChildren: the breadcrumb items derived from the active primary item in the global navigation
6
+ ** secondayNav: breadcrumb items that are overridden from content pages or similar
7
+ */
8
+
9
+ export interface State {
10
+ headerTransparent: boolean
11
+ highlightPrimary: boolean
12
+ globalChildren?: any | null
13
+ secondaryNav?: any | null
14
+ }
15
+
16
+ export const useHeaderStore = defineStore('header', {
17
+ state: (): State => {
18
+ return {
19
+ headerTransparent: false,
20
+ highlightPrimary: true,
21
+ globalChildren: null,
22
+ secondaryNav: null
23
+ }
24
+ },
25
+ actions: {
26
+ makeTransparent(value: boolean) {
27
+ this.headerTransparent = value
28
+ },
29
+ updateHighlightPrimary(value: boolean) {
30
+ // @ts-ignore
31
+ this.highlightPrimary = value
32
+ },
33
+ updateGlobalChildren(value: any) {
34
+ this.globalChildren = value
35
+ },
36
+ updateSecondary(value: any) {
37
+ this.secondaryNav = value
38
+ }
39
+ }
40
+ })
@@ -0,0 +1,27 @@
1
+ import { defineStore } from 'pinia'
2
+ import { type Explorer1Theme } from './../interfaces'
3
+
4
+ /** Sets the Explorer-1 theme
5
+ */
6
+
7
+ export interface State {
8
+ theme: Explorer1Theme | null
9
+ }
10
+
11
+ export const useThemeStore = defineStore('theme', {
12
+ state: (): State => {
13
+ return {
14
+ theme: null
15
+ }
16
+ },
17
+ actions: {
18
+ setTheme(value: Explorer1Theme) {
19
+ this.theme = value
20
+ }
21
+ },
22
+ getters: {
23
+ isEdu(state) {
24
+ return state.theme === 'ThemeEdu'
25
+ }
26
+ }
27
+ })