@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.
- package/components.d.ts +25 -3
- package/dist/explorer-1-vue.js +8978 -10024
- package/dist/explorer-1-vue.umd.cjs +13 -16
- package/dist/src/components/BaseHeading/BaseHeading.stories.d.ts +6 -11
- package/dist/src/components/BaseHeading/BaseHeading.vue.d.ts +6 -10
- package/dist/src/components/BasePlaceholder/BasePlaceholder.stories.d.ts +0 -1
- package/dist/src/components/BlockDialog/BlockDialog.stories.d.ts +81 -0
- package/dist/src/components/BlockImage/BlockImage.stories.d.ts +0 -1
- package/dist/src/components/BlockLinkCarousel/BlockLinkCarousel.stories.d.ts +6 -0
- package/dist/src/components/BlockLinkCarousel/BlockLinkCarousel.vue.d.ts +6 -0
- package/dist/src/components/BlockQuote/BlockQuote.stories.d.ts +0 -1
- package/dist/src/components/BlockStreamfield/BlockStreamfield.stories.d.ts +58 -8
- package/dist/src/components/BlockVideoEmbed/BlockVideoEmbed.vue.d.ts +7 -3
- package/dist/src/components/HeroListingIndex/HeroListingIndex.stories.d.ts +1 -0
- package/dist/src/components/HeroMedium/HeroMedium.stories.d.ts +1 -0
- package/dist/src/components/HeroMedium/HeroSmall.stories.d.ts +1 -0
- package/dist/src/components/HomepageEmbedBlock/HomepageEmbedBlock.stories.d.ts +1 -6
- package/dist/src/components/HomepageMissionsCarousel/HomepageMissionsCarousel.stories.d.ts +31 -47
- package/dist/src/components/HomepageMissionsCarousel/HomepageMissionsCarousel.vue.d.ts +5 -1
- package/dist/src/components/HomepageStats/HomepageStats.stories.d.ts +19 -9
- package/dist/src/components/HomepageTeaserBlock/HomepageTeaserBlock.stories.d.ts +6 -50
- package/dist/src/components/HomepageTeaserBlock/HomepageTeaserBlock.vue.d.ts +7 -1
- package/dist/src/components/MissionDetailAbout/MissionDetailAbout.stories.d.ts +1 -6
- package/dist/src/components/MissionDetailHero/MissionDetailHero.stories.d.ts +11 -11
- package/dist/src/components/MissionDetailHighlights/MissionDetailHighlights.stories.d.ts +6 -6
- package/dist/src/components/NavDesktop/NavDesktop.stories.d.ts +3 -6
- package/dist/src/components/NavDesktopEdu/NavDesktopEdu.stories.d.ts +289 -0
- package/dist/src/components/NavLogoLinks/NavLogoLinks.stories.d.ts +0 -5
- package/dist/src/components/NavMobile/NavMobile.stories.d.ts +42 -9
- package/dist/src/components/NavMobile/NavMobile.vue.d.ts +13 -2
- package/dist/src/components/NavMobile/NavMobileEdu.stories.d.ts +392 -0
- package/dist/src/components/NavSocial/NavSocial.stories.d.ts +42 -1
- package/dist/src/components/NavSocial/NavSocial.vue.d.ts +42 -1
- package/dist/src/components/TheFooter/TheFooter.vue.d.ts +9 -1
- package/dist/src/components/TimelineDialog/TimelineDialog.stories.d.ts +75 -0
- package/dist/src/components/TopicDetailMissionSpotlight/TopicDetailMissionSpotlight.stories.d.ts +1 -7
- package/dist/src/components/TopicDetailStreamfield/TopicDetailStreamfield.stories.d.ts +1 -6
- package/dist/src/docs/foundation/typography.stories.d.ts +6 -10
- package/dist/src/store/curatedGallery.d.ts +6 -0
- package/dist/src/store/search.d.ts +10 -0
- package/dist/src/templates/PageAudioDetail/PageAudioDetail.stories.d.ts +102 -0
- package/dist/src/templates/PageContent/PageContent.stories.d.ts +2 -1
- package/dist/src/templates/PageContent/PageContent.vue.d.ts +8 -1
- package/dist/src/templates/PageEventDetail/PageEventDetail.stories.d.ts +1 -1
- package/dist/src/templates/PageImageDetail/PageImageDetail.stories.d.ts +141 -0
- package/dist/src/templates/PageNewsDetail/PageNewsDetail.stories.d.ts +1163 -228
- package/dist/src/templates/PageVideoDetail/PageVideoDetail.stories.d.ts +56 -0
- package/dist/src/templates/edu/PageContentEdu.stories.d.ts +27 -0
- package/dist/src/templates/edu/PageEduNewsDetail/PageEduNewsDetail.stories.d.ts +360 -0
- package/dist/src/templates/edu/PageEduResourceArticle/PageEduResourceArticle.stories.d.ts +327 -0
- package/dist/src/templates/www/PageAsteroidWatchContent/PageAsteroidWatchContent.stories.d.ts +99 -0
- package/dist/src/templates/{edu/PageEduNewsDetail.stories.d.ts → www/PageAsteroidWatchIndex/PageAsteroidWatchIndex.stories.d.ts} +48 -67
- package/dist/src/templates/www/PageCuratedGallery/PageCuratedGallery.stories.d.ts +98 -0
- package/dist/src/templates/www/PageGoDirectory/PageGoDirectory.stories.d.ts +56 -0
- package/dist/src/templates/www/PageHomepage/PageHomepage.stories.d.ts +704 -0
- package/dist/src/templates/www/PageInfographicDetail/PageInfographicDetail.stories.d.ts +41 -0
- package/dist/src/templates/www/PageMaintenanceMode/PageMaintenanceMode.stories.d.ts +14 -0
- package/dist/src/templates/www/PageMissionDetail/PageMissionDetail.stories.d.ts +875 -0
- package/dist/src/templates/www/PagePodcast/PagePodcast.stories.d.ts +115 -0
- package/dist/src/templates/www/PagePodcastSeason/PagePodcastSeason.stories.d.ts +84 -0
- package/dist/src/templates/www/PagePressKitIndex/PagePressKitIndex.stories.d.ts +64 -0
- package/dist/src/templates/www/PageProfileDetail/PageProfileDetail.stories.d.ts +60 -0
- package/dist/src/templates/www/PageRoboticsDetail/PageRoboticsDetail.stories.d.ts +170 -0
- package/dist/src/templates/www/PageTimeline/PageTimeline.stories.d.ts +339 -0
- package/dist/src/templates/www/PageTopicDetail/PageTopicDetail.stories.d.ts +297 -0
- package/dist/style.css +1 -1
- package/lib/main.ts +4 -0
- package/package.json +2 -1
- package/src/components/BaseAudio/BaseAudio.vue +0 -1
- package/src/components/BaseHeading/BaseHeading.stories.js +0 -1
- package/src/components/BaseHeading/BaseHeading.vue +5 -7
- package/src/components/BasePlaceholder/BasePlaceholder.stories.js +0 -1
- package/src/components/BlockAudio/BlockAudio.stories.js +2 -3
- package/src/components/BlockDialog/BlockDialog.stories.js +56 -0
- package/src/components/BlockDialog/BlockDialog.stories.mdx +28 -0
- package/src/components/BlockDialog/BlockDialog.vue +132 -0
- package/src/components/BlockHeading/BlockHeading.stories.js +2 -2
- package/src/components/BlockImage/BlockImage.stories.js +0 -1
- package/src/components/BlockImageCarouselItem/BlockImageCarouselItem.vue +0 -1
- package/src/components/BlockImageGallery/BlockImageGallery.vue +0 -1
- package/src/components/BlockLinkCarousel/BlockLinkCarousel.vue +4 -2
- package/src/components/BlockQuote/BlockQuote.stories.js +0 -1
- package/src/components/BlockStreamfield/BlockStreamfield.stories.js +20 -9
- package/src/components/BlockVideoEmbed/BlockVideoEmbed.vue +3 -2
- package/src/components/DetailHeadline/DetailHeadline.vue +3 -2
- package/src/components/DsnWidget/DsnWidget.vue +2 -2
- package/src/components/HomepageEmbedBlock/HomepageEmbedBlock.stories.js +1 -8
- package/src/components/HomepageMissionsCarousel/HomepageMissionsCarousel.stories.js +115 -118
- package/src/components/HomepageMissionsCarousel/HomepageMissionsCarousel.vue +3 -23
- package/src/components/HomepageMissionsCarousel/HomepageMissionsCarouselItem.vue +1 -2
- package/src/components/HomepageStats/HomepageStats.stories.js +10 -10
- package/src/components/HomepageStats/HomepageStats.vue +8 -8
- package/src/components/HomepageTeaserBlock/HomepageTeaserBlock.stories.js +11 -18
- package/src/components/HomepageTeaserBlock/HomepageTeaserBlock.vue +20 -14
- package/src/components/HomepageTeaserBlock/HomepageTeaserBlockCardImage.vue +1 -1
- package/src/components/MissionDetailAbout/MissionDetailAbout.stories.js +1 -8
- package/src/components/MissionDetailHero/MissionDetailHero.stories.js +11 -11
- package/src/components/MissionDetailHighlights/MissionDetailHighlights.stories.js +6 -6
- package/src/components/MixinCarousel/MixinCarousel.docs.mdx +1 -1
- package/src/components/NavDesktop/NavDesktop.stories.js +1 -4
- package/src/components/NavDesktopEdu/NavDesktopEdu.stories.js +2 -1
- package/src/components/NavMobile/NavMobileEdu.stories.js +2 -1
- package/src/components/RoboticsDetailStats/RoboticsDetailStats.stories.js +1 -1
- package/src/components/TimelineDialog/TimelineDialog.stories.js +47 -0
- package/src/components/TimelineDialog/TimelineDialog.stories.mdx +26 -0
- package/src/components/TimelineDialog/TimelineDialog.vue +145 -0
- package/src/components/TopicDetailMissionSpotlight/TopicDetailMissionSpotlight.stories.js +1 -9
- package/src/components/TopicDetailStreamfield/TopicDetailStreamfield.stories.js +1 -8
- package/src/docs/utils/ComponentItem.jsx +0 -1
- package/src/store/curatedGallery.ts +23 -0
- package/src/store/search.ts +43 -0
- package/src/templates/PageAudioDetail/PageAudioDetail.stories.js +106 -0
- package/src/templates/PageAudioDetail/PageAudioDetail.vue +375 -0
- package/src/templates/PageContent/PageContent.stories.js +2 -1
- package/src/templates/PageContent/PageContent.vue +16 -19
- package/src/templates/PageEventDetail/PageEventDetail.stories.js +1 -1
- package/src/templates/PageEventDetail/PageEventDetail.vue +15 -15
- package/src/templates/PageImageDetail/PageImageDetail.stories.js +116 -0
- package/src/templates/PageImageDetail/PageImageDetail.vue +444 -0
- package/src/templates/PageNewsDetail/PageNewsDetail.stories.js +3 -2
- package/src/templates/PageNewsDetail/PageNewsDetail.vue +4 -5
- package/src/templates/PageVideoDetail/PageVideoDetail.stories.js +84 -0
- package/src/templates/PageVideoDetail/PageVideoDetail.vue +173 -0
- package/src/templates/edu/PageContentEdu.stories.js +1 -0
- package/src/templates/edu/{PageEduNewsDetail.stories.js → PageEduNewsDetail/PageEduNewsDetail.stories.js} +5 -3
- package/src/templates/edu/{PageEduNewsDetail.vue → PageEduNewsDetail/PageEduNewsDetail.vue} +3 -2
- package/src/templates/edu/PageEduResourceArticle/PageEduResourceArticle.stories.js +192 -0
- package/src/templates/edu/PageEduResourceArticle/PageEduResourceArticle.vue +196 -0
- package/src/templates/www/PageAsteroidWatchContent/PageAsteroidWatchContent.stories.js +54 -0
- package/src/templates/www/PageAsteroidWatchContent/PageAsteroidWatchContent.vue +79 -0
- package/src/templates/www/PageAsteroidWatchIndex/PageAsteroidWatchIndex.stories.js +34 -0
- package/src/templates/www/PageAsteroidWatchIndex/PageAsteroidWatchIndex.vue +56 -0
- package/src/templates/www/PageCuratedGallery/PageCuratedGallery.stories.js +110 -0
- package/src/templates/www/PageCuratedGallery/PageCuratedGallery.vue +345 -0
- package/src/templates/www/PageGoDirectory/PageGoDirectory.stories.js +61 -0
- package/src/templates/www/PageGoDirectory/PageGoDirectory.vue +76 -0
- package/src/templates/www/PageHomepage/PageHomepage.stories.js +101 -0
- package/src/templates/www/PageHomepage/PageHomepage.vue +136 -0
- package/src/templates/www/PageInfographicDetail/PageInfographicDetail.stories.js +46 -0
- package/src/templates/www/PageInfographicDetail/PageInfographicDetail.vue +125 -0
- package/src/templates/www/PageMaintenanceMode/PageMaintenanceMode.stories.js +14 -0
- package/src/templates/www/PageMaintenanceMode/PageMaintenanceMode.vue +94 -0
- package/src/templates/www/PageMissionDetail/PageMissionDetail.stories.js +246 -0
- package/src/templates/www/PageMissionDetail/PageMissionDetail.vue +136 -0
- package/src/templates/www/PagePodcast/PagePodcast.stories.js +86 -0
- package/src/templates/www/PagePodcast/PagePodcast.vue +219 -0
- package/src/templates/www/PagePodcastSeason/PagePodcastSeason.stories.js +96 -0
- package/src/templates/www/PagePodcastSeason/PagePodcastSeason.vue +191 -0
- package/src/templates/www/PagePressKitIndex/PagePressKitIndex.stories.js +72 -0
- package/src/templates/www/PagePressKitIndex/PagePressKitIndex.vue +76 -0
- package/src/templates/www/PageProfileDetail/PageProfileDetail.stories.js +76 -0
- package/src/templates/www/PageProfileDetail/PageProfileDetail.vue +178 -0
- package/src/templates/www/PageRoboticsDetail/PageRoboticsDetail.stories.js +43 -0
- package/src/templates/www/PageRoboticsDetail/PageRoboticsDetail.vue +101 -0
- package/src/templates/www/PageTimeline/BlockMilestone.vue +99 -0
- package/src/templates/www/PageTimeline/PageTimeline.stories.js +357 -0
- package/src/templates/www/PageTimeline/PageTimeline.vue +384 -0
- package/src/templates/www/PageTopicDetail/PageTopicDetail.stories.js +87 -0
- package/src/templates/www/PageTopicDetail/PageTopicDetail.vue +121 -0
- package/src/utils/mixins.ts +1 -1
- package/src/templates/www/HomePage/HomePage.vue +0 -30
- /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
|
+
}
|