@explorer-1/vue 0.1.4 → 0.1.6

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 (162) hide show
  1. package/components.d.ts +25 -3
  2. package/dist/explorer-1-vue.js +8978 -10024
  3. package/dist/explorer-1-vue.umd.cjs +13 -16
  4. package/dist/src/components/BaseHeading/BaseHeading.stories.d.ts +6 -11
  5. package/dist/src/components/BaseHeading/BaseHeading.vue.d.ts +6 -10
  6. package/dist/src/components/BasePlaceholder/BasePlaceholder.stories.d.ts +0 -1
  7. package/dist/src/components/BlockDialog/BlockDialog.stories.d.ts +81 -0
  8. package/dist/src/components/BlockImage/BlockImage.stories.d.ts +0 -1
  9. package/dist/src/components/BlockLinkCarousel/BlockLinkCarousel.stories.d.ts +6 -0
  10. package/dist/src/components/BlockLinkCarousel/BlockLinkCarousel.vue.d.ts +6 -0
  11. package/dist/src/components/BlockQuote/BlockQuote.stories.d.ts +0 -1
  12. package/dist/src/components/BlockStreamfield/BlockStreamfield.stories.d.ts +58 -8
  13. package/dist/src/components/BlockVideoEmbed/BlockVideoEmbed.vue.d.ts +7 -3
  14. package/dist/src/components/HeroListingIndex/HeroListingIndex.stories.d.ts +1 -0
  15. package/dist/src/components/HeroMedium/HeroMedium.stories.d.ts +1 -0
  16. package/dist/src/components/HeroMedium/HeroSmall.stories.d.ts +1 -0
  17. package/dist/src/components/HomepageEmbedBlock/HomepageEmbedBlock.stories.d.ts +1 -6
  18. package/dist/src/components/HomepageMissionsCarousel/HomepageMissionsCarousel.stories.d.ts +31 -47
  19. package/dist/src/components/HomepageMissionsCarousel/HomepageMissionsCarousel.vue.d.ts +5 -1
  20. package/dist/src/components/HomepageStats/HomepageStats.stories.d.ts +19 -9
  21. package/dist/src/components/HomepageTeaserBlock/HomepageTeaserBlock.stories.d.ts +6 -50
  22. package/dist/src/components/HomepageTeaserBlock/HomepageTeaserBlock.vue.d.ts +7 -1
  23. package/dist/src/components/MissionDetailAbout/MissionDetailAbout.stories.d.ts +1 -6
  24. package/dist/src/components/MissionDetailHero/MissionDetailHero.stories.d.ts +11 -11
  25. package/dist/src/components/MissionDetailHighlights/MissionDetailHighlights.stories.d.ts +6 -6
  26. package/dist/src/components/NavDesktop/NavDesktop.stories.d.ts +3 -6
  27. package/dist/src/components/NavDesktopEdu/NavDesktopEdu.stories.d.ts +289 -0
  28. package/dist/src/components/NavLogoLinks/NavLogoLinks.stories.d.ts +0 -5
  29. package/dist/src/components/NavMobile/NavMobile.stories.d.ts +42 -9
  30. package/dist/src/components/NavMobile/NavMobile.vue.d.ts +13 -2
  31. package/dist/src/components/NavMobile/NavMobileEdu.stories.d.ts +392 -0
  32. package/dist/src/components/NavSocial/NavSocial.stories.d.ts +42 -1
  33. package/dist/src/components/NavSocial/NavSocial.vue.d.ts +42 -1
  34. package/dist/src/components/TheFooter/TheFooter.vue.d.ts +9 -1
  35. package/dist/src/components/TimelineDialog/TimelineDialog.stories.d.ts +75 -0
  36. package/dist/src/components/TopicDetailMissionSpotlight/TopicDetailMissionSpotlight.stories.d.ts +1 -7
  37. package/dist/src/components/TopicDetailStreamfield/TopicDetailStreamfield.stories.d.ts +1 -6
  38. package/dist/src/docs/foundation/typography.stories.d.ts +6 -10
  39. package/dist/src/store/curatedGallery.d.ts +6 -0
  40. package/dist/src/store/search.d.ts +10 -0
  41. package/dist/src/templates/PageAudioDetail/PageAudioDetail.stories.d.ts +102 -0
  42. package/dist/src/templates/PageContent/PageContent.stories.d.ts +2 -1
  43. package/dist/src/templates/PageContent/PageContent.vue.d.ts +8 -1
  44. package/dist/src/templates/PageEventDetail/PageEventDetail.stories.d.ts +1 -1
  45. package/dist/src/templates/PageImageDetail/PageImageDetail.stories.d.ts +141 -0
  46. package/dist/src/templates/PageNewsDetail/PageNewsDetail.stories.d.ts +1163 -228
  47. package/dist/src/templates/PageVideoDetail/PageVideoDetail.stories.d.ts +56 -0
  48. package/dist/src/templates/edu/PageContentEdu.stories.d.ts +27 -0
  49. package/dist/src/templates/edu/PageEduNewsDetail/PageEduNewsDetail.stories.d.ts +360 -0
  50. package/dist/src/templates/edu/PageEduResourceArticle/PageEduResourceArticle.stories.d.ts +327 -0
  51. package/dist/src/templates/www/PageAsteroidWatchContent/PageAsteroidWatchContent.stories.d.ts +99 -0
  52. package/dist/src/templates/{edu/PageEduNewsDetail.stories.d.ts → www/PageAsteroidWatchIndex/PageAsteroidWatchIndex.stories.d.ts} +48 -67
  53. package/dist/src/templates/www/PageCuratedGallery/PageCuratedGallery.stories.d.ts +98 -0
  54. package/dist/src/templates/www/PageGoDirectory/PageGoDirectory.stories.d.ts +56 -0
  55. package/dist/src/templates/www/PageHomepage/PageHomepage.stories.d.ts +704 -0
  56. package/dist/src/templates/www/PageInfographicDetail/PageInfographicDetail.stories.d.ts +41 -0
  57. package/dist/src/templates/www/PageMaintenanceMode/PageMaintenanceMode.stories.d.ts +14 -0
  58. package/dist/src/templates/www/PageMissionDetail/PageMissionDetail.stories.d.ts +875 -0
  59. package/dist/src/templates/www/PagePodcast/PagePodcast.stories.d.ts +115 -0
  60. package/dist/src/templates/www/PagePodcastSeason/PagePodcastSeason.stories.d.ts +84 -0
  61. package/dist/src/templates/www/PagePressKitIndex/PagePressKitIndex.stories.d.ts +64 -0
  62. package/dist/src/templates/www/PageProfileDetail/PageProfileDetail.stories.d.ts +60 -0
  63. package/dist/src/templates/www/PageRoboticsDetail/PageRoboticsDetail.stories.d.ts +170 -0
  64. package/dist/src/templates/www/PageTimeline/PageTimeline.stories.d.ts +339 -0
  65. package/dist/src/templates/www/PageTopicDetail/PageTopicDetail.stories.d.ts +297 -0
  66. package/dist/style.css +1 -1
  67. package/lib/main.ts +4 -0
  68. package/package.json +2 -1
  69. package/src/components/BaseAudio/BaseAudio.vue +0 -1
  70. package/src/components/BaseHeading/BaseHeading.stories.js +0 -1
  71. package/src/components/BaseHeading/BaseHeading.vue +5 -7
  72. package/src/components/BasePlaceholder/BasePlaceholder.stories.js +0 -1
  73. package/src/components/BlockAudio/BlockAudio.stories.js +2 -3
  74. package/src/components/BlockDialog/BlockDialog.stories.js +56 -0
  75. package/src/components/BlockDialog/BlockDialog.stories.mdx +28 -0
  76. package/src/components/BlockDialog/BlockDialog.vue +132 -0
  77. package/src/components/BlockHeading/BlockHeading.stories.js +2 -2
  78. package/src/components/BlockImage/BlockImage.stories.js +0 -1
  79. package/src/components/BlockImageCarouselItem/BlockImageCarouselItem.vue +0 -1
  80. package/src/components/BlockImageGallery/BlockImageGallery.vue +0 -1
  81. package/src/components/BlockLinkCarousel/BlockLinkCarousel.vue +4 -2
  82. package/src/components/BlockQuote/BlockQuote.stories.js +0 -1
  83. package/src/components/BlockStreamfield/BlockStreamfield.stories.js +20 -9
  84. package/src/components/BlockVideoEmbed/BlockVideoEmbed.vue +3 -2
  85. package/src/components/DetailHeadline/DetailHeadline.vue +3 -2
  86. package/src/components/DsnWidget/DsnWidget.vue +2 -2
  87. package/src/components/HomepageEmbedBlock/HomepageEmbedBlock.stories.js +1 -8
  88. package/src/components/HomepageMissionsCarousel/HomepageMissionsCarousel.stories.js +115 -118
  89. package/src/components/HomepageMissionsCarousel/HomepageMissionsCarousel.vue +3 -23
  90. package/src/components/HomepageMissionsCarousel/HomepageMissionsCarouselItem.vue +1 -2
  91. package/src/components/HomepageStats/HomepageStats.stories.js +10 -10
  92. package/src/components/HomepageStats/HomepageStats.vue +8 -8
  93. package/src/components/HomepageTeaserBlock/HomepageTeaserBlock.stories.js +11 -18
  94. package/src/components/HomepageTeaserBlock/HomepageTeaserBlock.vue +20 -14
  95. package/src/components/HomepageTeaserBlock/HomepageTeaserBlockCardImage.vue +1 -1
  96. package/src/components/MissionDetailAbout/MissionDetailAbout.stories.js +1 -8
  97. package/src/components/MissionDetailHero/MissionDetailHero.stories.js +11 -11
  98. package/src/components/MissionDetailHighlights/MissionDetailHighlights.stories.js +6 -6
  99. package/src/components/MixinCarousel/MixinCarousel.docs.mdx +1 -1
  100. package/src/components/NavDesktop/NavDesktop.stories.js +1 -4
  101. package/src/components/NavDesktopEdu/NavDesktopEdu.stories.js +2 -1
  102. package/src/components/NavMobile/NavMobileEdu.stories.js +2 -1
  103. package/src/components/RoboticsDetailStats/RoboticsDetailStats.stories.js +1 -1
  104. package/src/components/TimelineDialog/TimelineDialog.stories.js +47 -0
  105. package/src/components/TimelineDialog/TimelineDialog.stories.mdx +26 -0
  106. package/src/components/TimelineDialog/TimelineDialog.vue +145 -0
  107. package/src/components/TopicDetailMissionSpotlight/TopicDetailMissionSpotlight.stories.js +1 -9
  108. package/src/components/TopicDetailStreamfield/TopicDetailStreamfield.stories.js +1 -8
  109. package/src/docs/utils/ComponentItem.jsx +0 -1
  110. package/src/store/curatedGallery.ts +23 -0
  111. package/src/store/search.ts +43 -0
  112. package/src/templates/PageAudioDetail/PageAudioDetail.stories.js +106 -0
  113. package/src/templates/PageAudioDetail/PageAudioDetail.vue +375 -0
  114. package/src/templates/PageContent/PageContent.stories.js +2 -1
  115. package/src/templates/PageContent/PageContent.vue +16 -19
  116. package/src/templates/PageEventDetail/PageEventDetail.stories.js +1 -1
  117. package/src/templates/PageEventDetail/PageEventDetail.vue +15 -15
  118. package/src/templates/PageImageDetail/PageImageDetail.stories.js +116 -0
  119. package/src/templates/PageImageDetail/PageImageDetail.vue +444 -0
  120. package/src/templates/PageNewsDetail/PageNewsDetail.stories.js +3 -2
  121. package/src/templates/PageNewsDetail/PageNewsDetail.vue +4 -5
  122. package/src/templates/PageVideoDetail/PageVideoDetail.stories.js +84 -0
  123. package/src/templates/PageVideoDetail/PageVideoDetail.vue +173 -0
  124. package/src/templates/edu/PageContentEdu.stories.js +1 -0
  125. package/src/templates/edu/{PageEduNewsDetail.stories.js → PageEduNewsDetail/PageEduNewsDetail.stories.js} +5 -3
  126. package/src/templates/edu/{PageEduNewsDetail.vue → PageEduNewsDetail/PageEduNewsDetail.vue} +3 -2
  127. package/src/templates/edu/PageEduResourceArticle/PageEduResourceArticle.stories.js +192 -0
  128. package/src/templates/edu/PageEduResourceArticle/PageEduResourceArticle.vue +196 -0
  129. package/src/templates/www/PageAsteroidWatchContent/PageAsteroidWatchContent.stories.js +54 -0
  130. package/src/templates/www/PageAsteroidWatchContent/PageAsteroidWatchContent.vue +79 -0
  131. package/src/templates/www/PageAsteroidWatchIndex/PageAsteroidWatchIndex.stories.js +34 -0
  132. package/src/templates/www/PageAsteroidWatchIndex/PageAsteroidWatchIndex.vue +56 -0
  133. package/src/templates/www/PageCuratedGallery/PageCuratedGallery.stories.js +110 -0
  134. package/src/templates/www/PageCuratedGallery/PageCuratedGallery.vue +345 -0
  135. package/src/templates/www/PageGoDirectory/PageGoDirectory.stories.js +61 -0
  136. package/src/templates/www/PageGoDirectory/PageGoDirectory.vue +76 -0
  137. package/src/templates/www/PageHomepage/PageHomepage.stories.js +101 -0
  138. package/src/templates/www/PageHomepage/PageHomepage.vue +136 -0
  139. package/src/templates/www/PageInfographicDetail/PageInfographicDetail.stories.js +46 -0
  140. package/src/templates/www/PageInfographicDetail/PageInfographicDetail.vue +125 -0
  141. package/src/templates/www/PageMaintenanceMode/PageMaintenanceMode.stories.js +14 -0
  142. package/src/templates/www/PageMaintenanceMode/PageMaintenanceMode.vue +94 -0
  143. package/src/templates/www/PageMissionDetail/PageMissionDetail.stories.js +246 -0
  144. package/src/templates/www/PageMissionDetail/PageMissionDetail.vue +136 -0
  145. package/src/templates/www/PagePodcast/PagePodcast.stories.js +86 -0
  146. package/src/templates/www/PagePodcast/PagePodcast.vue +219 -0
  147. package/src/templates/www/PagePodcastSeason/PagePodcastSeason.stories.js +96 -0
  148. package/src/templates/www/PagePodcastSeason/PagePodcastSeason.vue +191 -0
  149. package/src/templates/www/PagePressKitIndex/PagePressKitIndex.stories.js +72 -0
  150. package/src/templates/www/PagePressKitIndex/PagePressKitIndex.vue +76 -0
  151. package/src/templates/www/PageProfileDetail/PageProfileDetail.stories.js +76 -0
  152. package/src/templates/www/PageProfileDetail/PageProfileDetail.vue +178 -0
  153. package/src/templates/www/PageRoboticsDetail/PageRoboticsDetail.stories.js +43 -0
  154. package/src/templates/www/PageRoboticsDetail/PageRoboticsDetail.vue +101 -0
  155. package/src/templates/www/PageTimeline/BlockMilestone.vue +99 -0
  156. package/src/templates/www/PageTimeline/PageTimeline.stories.js +357 -0
  157. package/src/templates/www/PageTimeline/PageTimeline.vue +384 -0
  158. package/src/templates/www/PageTopicDetail/PageTopicDetail.stories.js +87 -0
  159. package/src/templates/www/PageTopicDetail/PageTopicDetail.vue +121 -0
  160. package/src/utils/mixins.ts +1 -1
  161. package/src/templates/www/HomePage/HomePage.vue +0 -30
  162. /package/dist/src/components/{MixinDropdownToggle/MixinDropdownToggle.vue.d.ts → NavDropdownToggle/NavDropdownToggle.vue.d.ts} +0 -0
@@ -0,0 +1,79 @@
1
+ <template>
2
+ <div
3
+ v-if="data"
4
+ class="ThemeVariantLight"
5
+ :class="{ '-nav-offset': data.heroImage }"
6
+ >
7
+ <HeroMedia
8
+ v-if="data.heroImage"
9
+ class="md:mb-0 mb-10"
10
+ :image="data.heroImage"
11
+ :caption="data.heroImageCaption"
12
+ :display-caption="!data.heroImageCaption ? false : true"
13
+ />
14
+
15
+ <!-- secondary nav -->
16
+ <NavSecondary
17
+ :breadcrumb="data.breadcrumb"
18
+ :has-intro="data.heroImage ? true : false"
19
+ />
20
+
21
+ <!-- page headline -->
22
+ <LayoutHelper
23
+ indent="col-2"
24
+ class="md:my-12 lg:my-18 my-10"
25
+ >
26
+ <DetailHeadline
27
+ :title="data.title"
28
+ :label="data.displayLabel"
29
+ />
30
+ </LayoutHelper>
31
+
32
+ <template v-if="data.slug === 'next-five-approaches'">
33
+ <AsteroidWatchWidget class="lg:mb-18 mb-10" />
34
+ </template>
35
+
36
+ <!-- share buttons -->
37
+ <LayoutHelper
38
+ indent="col-2"
39
+ class="lg:mb-0 relative mb-8"
40
+ >
41
+ <ShareButtons
42
+ :title="data.title"
43
+ :url="data.url"
44
+ />
45
+ </LayoutHelper>
46
+
47
+ <!-- Body Streamfield -->
48
+ <BlockStreamfield :data="data.body" />
49
+ </div>
50
+ </template>
51
+ <script>
52
+ import { defineComponent } from 'vue'
53
+ import NavSecondary from './../../../components/NavSecondary/NavSecondary.vue'
54
+ import LayoutHelper from './../../../components/LayoutHelper/LayoutHelper.vue'
55
+ import DetailHeadline from './../../../components/DetailHeadline/DetailHeadline.vue'
56
+ import HeroMedia from './../../../components/HeroMedia/HeroMedia.vue'
57
+ import ShareButtons from './../../../components/ShareButtons/ShareButtons.vue'
58
+ import BlockStreamfield from './../../../components/BlockStreamfield/BlockStreamfield.vue'
59
+ import AsteroidWatchWidget from './../../../components/AsteroidWatchWidget/AsteroidWatchWidget.vue'
60
+
61
+ export default defineComponent({
62
+ name: 'PageAsteroidWatchContent',
63
+ components: {
64
+ NavSecondary,
65
+ LayoutHelper,
66
+ HeroMedia,
67
+ ShareButtons,
68
+ BlockStreamfield,
69
+ DetailHeadline,
70
+ AsteroidWatchWidget
71
+ },
72
+ props: {
73
+ data: {
74
+ type: Object,
75
+ required: false
76
+ }
77
+ }
78
+ })
79
+ </script>
@@ -0,0 +1,34 @@
1
+ import { HeroLargeData } from './../../../components/HeroLarge/HeroLarge.stories.js'
2
+ import { BlockStreamfieldData } from './../../../components/BlockStreamfield/BlockStreamfield.stories'
3
+ import { BlockLinkCardCarouselData } from './../../../components/BlockLinkCarousel/BlockLinkCarousel.stories.js'
4
+ import PageAsteroidWatchIndex from './PageAsteroidWatchIndex.vue'
5
+
6
+ export default {
7
+ title: 'Templates/WWW/PageAsteroidWatchIndex',
8
+ component: PageAsteroidWatchIndex,
9
+ tags: ['!autodocs'],
10
+ decorators: [
11
+ () => ({
12
+ template: `<div id="storyDecorator" class="disable-nav-offset"><story/></div>`
13
+ })
14
+ ],
15
+ parameters: {
16
+ layout: 'fullscreen',
17
+ html: {
18
+ root: '#storyDecorator'
19
+ }
20
+ },
21
+ excludeStories: /.*(Data)$/
22
+ }
23
+
24
+ export const BaseStory = {
25
+ name: 'PageAsteroidWatchIndex',
26
+ args: {
27
+ data: {
28
+ ...HeroLargeData,
29
+ title: 'Asteroid Watch',
30
+ body: BlockStreamfieldData.body,
31
+ latestAsteroidNews: BlockLinkCardCarouselData
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,56 @@
1
+ <template>
2
+ <div
3
+ v-if="data"
4
+ class="-nav-offset"
5
+ >
6
+ <HeroLarge
7
+ :title="data.title"
8
+ :image="data.heroImage"
9
+ has-overlay
10
+ />
11
+
12
+ <!-- secondary nav -->
13
+ <NavSecondary
14
+ :breadcrumb="data.breadcrumb"
15
+ class="z-30"
16
+ has-intro
17
+ />
18
+
19
+ <!-- Body Streamfield -->
20
+ <BlockStreamfield
21
+ class="lg:mt-24 mt-18"
22
+ :data="data.body"
23
+ />
24
+
25
+ <!-- Related News -->
26
+ <BlockLinkCarousel
27
+ item-type="cards"
28
+ class="lg:my-24 my-12"
29
+ heading="Latest News"
30
+ :items="data.latestAsteroidNews"
31
+ />
32
+ </div>
33
+ </template>
34
+ <script lang="ts">
35
+ import { defineComponent } from 'vue'
36
+ import NavSecondary from './../../../components/NavSecondary/NavSecondary.vue'
37
+ import HeroLarge from './../../../components/HeroLarge/HeroLarge.vue'
38
+ import BlockStreamfield from './../../../components/BlockStreamfield/BlockStreamfield.vue'
39
+ import BlockLinkCarousel from './../../../components/BlockLinkCarousel/BlockLinkCarousel.vue'
40
+
41
+ export default defineComponent({
42
+ name: 'PageAsteroidWatchIndex',
43
+ components: {
44
+ NavSecondary,
45
+ HeroLarge,
46
+ BlockStreamfield,
47
+ BlockLinkCarousel
48
+ },
49
+ props: {
50
+ data: {
51
+ type: Object,
52
+ required: false
53
+ }
54
+ }
55
+ })
56
+ </script>
@@ -0,0 +1,110 @@
1
+ import { BlockStreamfieldTruncatedData } from './../../../components/BlockStreamfield/BlockStreamfield.stories.js'
2
+
3
+ import PageCuratedGallery from './PageCuratedGallery.vue'
4
+
5
+ export default {
6
+ title: 'Templates/WWW/PageCuratedGallery',
7
+ component: PageCuratedGallery,
8
+ tags: ['!autodocs'],
9
+ excludeStories: /.*Data$/,
10
+ parameters: {
11
+ layout: 'fullscreen'
12
+ }
13
+ }
14
+
15
+ // stories
16
+ export const BaseStory = {
17
+ name: 'PageCuratedGallery',
18
+ args: {
19
+ data: {
20
+ galleryItems: [
21
+ {
22
+ image: {
23
+ caption:
24
+ "NASA's Perseverance rover fires up its descent stage engines as it nears the Martian surface in this illustration.\n",
25
+ alt: 'alt text',
26
+ detailUrl: '/images/powered-descent-for-perseverance-illustration/',
27
+ src: {
28
+ url: 'https://d2pn8kiwq2w21t.cloudfront.net/images/grand_tour.width-1024.jpg',
29
+ width: '1024',
30
+ height: '1024'
31
+ },
32
+ width: '1024',
33
+ height: '1024'
34
+ },
35
+ title: 'Powered Descent for Perseverance (Illustration)'
36
+ },
37
+ {
38
+ image: {
39
+ caption:
40
+ "NASA's Perseverance rover deploys a supersonic parachute from its aeroshell as it slows down before landing, in this artist's illustration.\n",
41
+ alt: 'alt text',
42
+ detailUrl: '/images/perseverance-deploys-its-parachute-illustration/',
43
+ src: {
44
+ url: 'https://d2pn8kiwq2w21t.cloudfront.net/images/mars.width-1024.jpg',
45
+ width: '1024',
46
+ height: '1024'
47
+ }
48
+ },
49
+ title: 'Perseverance Deploys its Parachute (Illustration)'
50
+ },
51
+ {
52
+ image: {
53
+ caption:
54
+ "In this illustration of its descent to Mars, the spacecraft containing NASA's Perseverance rover slows down using the drag generated by its motion in the Martian atmosphere.\n",
55
+ alt: 'alt text',
56
+ detailUrl:
57
+ '/images/perseverance-rover-decelerates-in-the-martian-atmosphere-illustration/',
58
+ src: {
59
+ url: 'https://d2pn8kiwq2w21t.cloudfront.net/images/earth.width-1024.jpg',
60
+ width: '1024',
61
+ height: '1024'
62
+ }
63
+ },
64
+ title: 'Perseverance Rover Decelerates in the Martian Atmosphere (Illustration)'
65
+ },
66
+ {
67
+ image: {
68
+ caption:
69
+ "This illustration shows NASA's Mars 2020 spacecraft carrying the Perseverance rover as it approaches Mars. Hundreds of critical events must execute perfectly and exactly on time for the rover to land on Mars safely on Feb. 18, 2021.\n",
70
+ alt: 'alt text',
71
+ detailUrl: '/images/perseverance-rover-approaches-mars-illustration/',
72
+ src: {
73
+ url: 'https://d2pn8kiwq2w21t.cloudfront.net/images/venus.width-1024.jpg',
74
+ width: '1024',
75
+ height: '1024'
76
+ }
77
+ },
78
+ title: 'Perseverance Rover Approaches Mars (Illustration)'
79
+ },
80
+ {
81
+ image: {
82
+ caption:
83
+ "NASA's Terra spacecraft shows a strong eruptive episode began, starting December 13, 2020, at Mt. Etna's New SE summit crater.\n",
84
+ alt: 'alt text',
85
+ detailUrl: '/images/mt-etna-italy/',
86
+ src: {
87
+ url: 'https://d2pn8kiwq2w21t.cloudfront.net/images/ceres.width-1024.jpg',
88
+ width: '1024',
89
+ height: '1024'
90
+ }
91
+ },
92
+ title: 'Mt. Etna, Italy'
93
+ }
94
+ ],
95
+ galleryType: 'poster',
96
+ id: '29',
97
+ label: 'Galleries',
98
+ firstPublishedAt: '',
99
+ relatedGalleries: [],
100
+ galleryAspectRatio: '2:3',
101
+ galleryObjectFit: 'cover',
102
+ galleryDownloadLink: '',
103
+ slug: 'visions-of-the-future',
104
+ title: 'Visions of the Future',
105
+ topicLabel: null,
106
+ url: '/visions-of-the-future/',
107
+ ...BlockStreamfieldTruncatedData
108
+ }
109
+ }
110
+ }
@@ -0,0 +1,345 @@
1
+ <template>
2
+ <div
3
+ v-if="data"
4
+ id="galleryTop"
5
+ class="PageCuratedGallery ThemeVariantLight"
6
+ >
7
+ <!-- page headline -->
8
+
9
+ <LayoutHelper class="lg:mt-8 lg:mb-4 mt-5 mb-0">
10
+ <div class="mr-auto max-w-sm hidden relative lg:block mt-4 -mb-2">
11
+ <ShareButtons
12
+ v-if="data.title && data.url"
13
+ class="mx-4 lg:mx-1.5"
14
+ :title="data.title"
15
+ :url="data.url"
16
+ />
17
+ </div>
18
+ <LayoutHelper
19
+ indent="col-2"
20
+ :class="data.firstPublishedAt && data.firstPublishedAt.length > 2 ? '' : 'py-4 mb-2'"
21
+ >
22
+ <div
23
+ class="justify-start flex flex-row items-center py-3 divide-x-2 divide-gray-light-mid space-x-2"
24
+ >
25
+ <nuxt-link
26
+ v-if="data.label"
27
+ class="group nuxt-link-active text-subtitle text-theme-red can-hover:hover:text-theme-red-hover cursor-pointer"
28
+ to="/galleries"
29
+ >
30
+ Curated Gallery
31
+ </nuxt-link>
32
+ <template v-if="data.galleryType">
33
+ <span class="pl-2 text-subtitle"> {{ data.galleryType }}S </span>
34
+ </template>
35
+ </div>
36
+ <DetailHeadline
37
+ :title="data.title"
38
+ :publication-date="data.firstPublishedAt"
39
+ />
40
+ <div class="flex lg:hidden">
41
+ <ShareButtons
42
+ v-if="data.title && data.url"
43
+ inline
44
+ class="my-4"
45
+ :class="data.firstPublishedAt && data.firstPublishedAt.length > 2 ? '' : 'mb-0'"
46
+ :title="data.title"
47
+ :url="data.url"
48
+ />
49
+ </div>
50
+ </LayoutHelper>
51
+ </LayoutHelper>
52
+ <LayoutHelper>
53
+ <div
54
+ class="lg:-mt-6 lg:border-gray-light-mid lg:flex items-center justify-between px-4 lg:px-0 py-1.5 lg:mb-4 align-middle lg:border-b"
55
+ >
56
+ <div class="flex flex-row ml-auto py-3 lg:py-0 justify-between">
57
+ <!-- toggle gallery view -->
58
+ <div
59
+ v-if="allowGridView"
60
+ class="align-end flex text-2xl font-secondary font-semibold tracking-wider"
61
+ >
62
+ <button
63
+ class="lg:ml-6"
64
+ :class="
65
+ showGridView
66
+ ? 'text-theme-red cursor-default'
67
+ : 'text-gray-mid can-hover:hover:text-theme-red-hover cursor-pointer'
68
+ "
69
+ :aria-label="showGridView ? 'Grid View (enabled)' : 'Grid View'"
70
+ :disabled="showGridView"
71
+ @click="curatedGalleryStore.updateView(true)"
72
+ >
73
+ <span class="flex items-center">
74
+ <IconGrid />
75
+ </span>
76
+ </button>
77
+ <button
78
+ class="ml-3"
79
+ :class="
80
+ !showGridView
81
+ ? 'text-theme-red cursor-default'
82
+ : 'text-gray-mid can-hover:hover:text-theme-red-hover cursor-pointer'
83
+ "
84
+ :aria-label="!showGridView ? 'Slideshow View (enabled)' : 'Slideshow View'"
85
+ :disabled="!showGridView"
86
+ @click="curatedGalleryStore.updateView(false)"
87
+ >
88
+ <span class="flex items-center mb-0.5">
89
+ <IconSlideshow />
90
+ </span>
91
+ </button>
92
+ </div>
93
+ </div>
94
+ </div>
95
+ </LayoutHelper>
96
+ <!-- <template v-if="data.galleryType === 'installations'"> -->
97
+ <template v-if="data.galleryType">
98
+ <div
99
+ :class="'gallery-' + data.galleryType"
100
+ class="mx-auto bg-white"
101
+ >
102
+ <div
103
+ v-if="data.galleryItems"
104
+ class="container mx-auto"
105
+ >
106
+ <div
107
+ v-if="showGridView"
108
+ class="CuratedGallery-thumbnails"
109
+ >
110
+ <div class="BaseGrid container mx-auto">
111
+ <div
112
+ v-for="(galleryItem, index) in data.galleryItems"
113
+ :key="index"
114
+ class="BaseGalleryImage"
115
+ >
116
+ <MixinFancybox
117
+ v-if="galleryItem.image.src"
118
+ :caption="galleryItem.image.caption"
119
+ :title="galleryItem.image.title"
120
+ :gallery-name="`grid-${data.id}`"
121
+ :src="galleryItem.image.src.url"
122
+ :detail-url="galleryItem.image.detailUrl"
123
+ animated
124
+ show-thumbnails
125
+ >
126
+ <BaseImagePlaceholder
127
+ v-if="galleryItem.image"
128
+ dark-mode
129
+ :aspect-ratio="data.galleryAspectRatio || '2:3'"
130
+ >
131
+ <BaseImage
132
+ v-if="galleryItem.image.src"
133
+ :src="galleryItem.image.src.url"
134
+ :srcset="galleryItem.image.srcSet"
135
+ :alt="galleryItem.image.caption"
136
+ :width="galleryItem.image.src.width"
137
+ :height="galleryItem.image.src.height"
138
+ :object-fit-class="data.galleryObjectFit || 'contain'"
139
+ />
140
+ </BaseImagePlaceholder>
141
+ <BlockText
142
+ class="the-caption-text"
143
+ :text="galleryItem.image.title"
144
+ />
145
+ </MixinFancybox>
146
+ </div>
147
+ </div>
148
+ </div>
149
+ <div
150
+ v-else
151
+ class="CuratedGallery-carousel"
152
+ >
153
+ <div class="mx-auto max-h-screen">
154
+ <BlockImageCarousel
155
+ key="CuratedGalleryCarousel"
156
+ :items="data.galleryItems"
157
+ :slide="slide"
158
+ :block-id="data.id"
159
+ show-title
160
+ />
161
+ </div>
162
+ </div>
163
+ <LayoutHelper indent="col-2">
164
+ <div
165
+ class="RelatedLinks lg:mb-10 mb-16 mt-16"
166
+ :class="{ 'lg:mt-10': showGridView }"
167
+ >
168
+ <template v-if="data.galleryDownloadLink && data.galleryDownloadLink.length">
169
+ <div class="sm:w-3/4 md:w-2/3 lg:w-3/4 xl:w-2/3 mb-2">
170
+ <RelatedLink
171
+ variant="document"
172
+ :href="data.galleryDownloadLink"
173
+ >
174
+ Download the {{ data.title }} gallery
175
+ </RelatedLink>
176
+ </div>
177
+ </template>
178
+ </div>
179
+ </LayoutHelper>
180
+ <!-- Body Streamfield -->
181
+ <template v-if="data.body">
182
+ <BlockStreamfield
183
+ class="lg:mb-10 mb-4"
184
+ :data="data.body"
185
+ />
186
+ </template>
187
+ <LayoutHelper indent="col-2">
188
+ <!-- related links -->
189
+ <template v-if="data.relatedLinks && data.relatedLinks.length">
190
+ <BlockRelatedLinks
191
+ class="mt-10 mb-20 lg:mb-25"
192
+ :data="data.relatedLinks[0]"
193
+ />
194
+ </template>
195
+ </LayoutHelper>
196
+ </div>
197
+ </div>
198
+ </template>
199
+ </div>
200
+ </template>
201
+
202
+ <script>
203
+ import { defineComponent } from 'vue'
204
+ import { mapStores } from 'pinia'
205
+ import { useCuratedGalleryStore } from '../../../store/curatedGallery'
206
+ import LayoutHelper from './../../../components/LayoutHelper/LayoutHelper.vue'
207
+ import DetailHeadline from './../../../components/DetailHeadline/DetailHeadline.vue'
208
+ import BaseImage from './../../../components/BaseImage/BaseImage.vue'
209
+ import MixinFancybox from './../../../components/MixinFancybox/MixinFancybox.vue'
210
+ import RelatedLink from './../../../components/BlockRelatedLinks/RelatedLink.vue'
211
+ import BlockRelatedLinks from './../../../components/BlockRelatedLinks/BlockRelatedLinks.vue'
212
+ import BlockText from './../../../components/BlockText/BlockText.vue'
213
+ import BlockImageCarousel from './../../../components/BlockImageCarousel/BlockImageCarousel.vue'
214
+ import BaseImagePlaceholder from './../../../components/BaseImagePlaceholder/BaseImagePlaceholder.vue'
215
+ import BlockStreamfield from './../../../components/BlockStreamfield/BlockStreamfield.vue'
216
+ import IconGrid from './../../../components/Icons/IconGrid.vue'
217
+ import IconSlideshow from './../../../components/Icons/IconSlideshow.vue'
218
+ import ShareButtons from './../../../components/ShareButtons/ShareButtons.vue'
219
+
220
+ export default defineComponent({
221
+ name: 'PageCuratedGallery',
222
+ components: {
223
+ LayoutHelper,
224
+ BaseImage,
225
+ BlockText,
226
+ MixinFancybox,
227
+ BaseImagePlaceholder,
228
+ RelatedLink,
229
+ BlockRelatedLinks,
230
+ BlockImageCarousel,
231
+ BlockStreamfield,
232
+ DetailHeadline,
233
+ IconGrid,
234
+ IconSlideshow,
235
+ ShareButtons
236
+ },
237
+ props: {
238
+ data: {
239
+ type: Object || String,
240
+ required: false
241
+ }
242
+ },
243
+ data() {
244
+ return {
245
+ // defaults to first slide
246
+ galleryTitle: 'curated-gallery',
247
+ slide: 0,
248
+ inCarousel: false,
249
+ // if grid view should be allowed
250
+ allowGridView: true,
251
+ defaultShowGridView: true
252
+ }
253
+ },
254
+ computed: {
255
+ ...mapStores(useCuratedGalleryStore),
256
+ showGridView() {
257
+ if (this.curatedGalleryStore.showGridView !== undefined) {
258
+ return this.curatedGalleryStore.showGridView
259
+ }
260
+ return this.defaultShowGridView
261
+ }
262
+ }
263
+ })
264
+ </script>
265
+
266
+ <style lang="scss">
267
+ .PageCuratedGallery {
268
+ .CuratedGallery-thumbnails,
269
+ .CuratedGallery-carousel {
270
+ @apply block;
271
+
272
+ &.hidden {
273
+ @apply h-0 overflow-hidden;
274
+ }
275
+
276
+ &.shown {
277
+ @apply relative;
278
+ }
279
+ }
280
+
281
+ .BaseGalleryImage {
282
+ .MixinFancybox {
283
+ img {
284
+ @apply can-hover:hover:opacity-95 transition-opacity duration-75;
285
+ }
286
+ }
287
+
288
+ @apply text-gray-mid-dark col-span-12 mx-5;
289
+ @screen md {
290
+ @apply col-span-6 mx-3;
291
+ }
292
+ @screen lg {
293
+ @apply col-span-6 mx-0;
294
+
295
+ .BaseImagePlaceholder {
296
+ @apply transition-shadow duration-200 rounded-sm;
297
+ }
298
+ &:hover {
299
+ .BaseImagePlaceholder {
300
+ @apply duration-300 shadow-md;
301
+ }
302
+
303
+ .the-caption-text {
304
+ @apply text-jpl-red-light transition-colors duration-200;
305
+ }
306
+ }
307
+ }
308
+ @screen lg {
309
+ @apply col-span-4 mx-1.5;
310
+ }
311
+ @screen xl {
312
+ @apply mx-0;
313
+ }
314
+
315
+ .the-caption-text {
316
+ @apply cursor-pointer text-gray-mid-dark text-lg my-3 leading-tight inline-block h-auto mb-14 transition-colors duration-150;
317
+ &:hover {
318
+ @apply text-jpl-red-dark transition-colors duration-200;
319
+ }
320
+
321
+ .ThemeVariantDark & {
322
+ @apply text-gray-light-mid;
323
+ &:hover {
324
+ @apply text-jpl-red-dark;
325
+ }
326
+ }
327
+ }
328
+
329
+ .ThemeVariantLight & {
330
+ @apply text-gray-mid;
331
+ }
332
+
333
+ .ThemeVariantDark & {
334
+ @apply text-gray-mid;
335
+ }
336
+ }
337
+
338
+ .StreamField {
339
+ @apply pb-4;
340
+ @screen lg {
341
+ @apply pb-12;
342
+ }
343
+ }
344
+ }
345
+ </style>
@@ -0,0 +1,61 @@
1
+ import PageGoDirectory from './PageGoDirectory.vue'
2
+
3
+ export default {
4
+ title: 'Templates/WWW/PageGoDirectory',
5
+ component: PageGoDirectory,
6
+ tags: ['!autodocs'],
7
+ decorators: [
8
+ () => ({
9
+ template: `<div id="storyDecorator" class="disable-nav-offset"><story/></div>`
10
+ })
11
+ ],
12
+ parameters: {
13
+ layout: 'fullscreen',
14
+ html: {
15
+ root: '#storyDecorator'
16
+ }
17
+ },
18
+ excludeStories: /.*(Data)$/
19
+ }
20
+ // stories
21
+ export const BaseStory = {
22
+ name: 'PageGoDirectory',
23
+ args: {
24
+ data: {
25
+ title: 'Go Sites',
26
+ summary: `Cras at velit semper, pulvinar odio eu, aliquet orci. Fusce pretium, lectus ut ultricies finibus, dui mi fermentum sapien, non accumsan lectus turpis ac nunc.`,
27
+ children: [
28
+ {
29
+ id: 1,
30
+ label: 'Label',
31
+ topicLabel: 'Topic Label',
32
+ url: '/go/placeholder',
33
+ title: 'Title of the go site homepage',
34
+ summary:
35
+ 'Maecenas tristique tortor non ornare lobortis. Nam sollicitudin sapien sit amet enim vulputate laoreet. Sed mattis dui metus, sit amet faucibus arcu volutpat ut. Vestibulum sit amet felis sem. Duis interdum risus nulla, sed varius enim viverra vitae.',
36
+ thumbnailImage: {
37
+ src: {
38
+ url: 'https://picsum.photos/560/560',
39
+ width: '560',
40
+ height: '560'
41
+ }
42
+ }
43
+ },
44
+ {
45
+ id: 2,
46
+ label: 'Label',
47
+ topicLabel: null,
48
+ url: '/go/placeholder',
49
+ title: 'Title of the go site homepage',
50
+ thumbnailImage: {
51
+ src: {
52
+ url: 'https://picsum.photos/560/560',
53
+ width: '560',
54
+ height: '560'
55
+ }
56
+ }
57
+ }
58
+ ]
59
+ }
60
+ }
61
+ }