@explorer-1/vue 0.1.4 → 0.1.5
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/dist/explorer-1-vue.js +8960 -10011
- 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 -0
- 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/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 +338 -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/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/PageEventDetail/PageEventDetail.stories.js +1 -1
- 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 +1 -1
- 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/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/components.d.ts +0 -217
- 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,191 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
v-if="data"
|
|
4
|
+
class="ThemeVariantLight"
|
|
5
|
+
:class="{ '-nav-offset': data.featuredEpisode }"
|
|
6
|
+
>
|
|
7
|
+
<!-- hero image -->
|
|
8
|
+
<div class="max-w-screen-3xl md:mb-12 lg:mb-18 mx-auto mb-10">
|
|
9
|
+
<HeroMedium
|
|
10
|
+
v-if="data.featuredEpisode"
|
|
11
|
+
:custom-label="data.label"
|
|
12
|
+
:feature="data.featuredEpisode"
|
|
13
|
+
:custom-image="data.heroImage"
|
|
14
|
+
cta="Listen Now"
|
|
15
|
+
/>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<!-- page headline -->
|
|
19
|
+
<LayoutHelper
|
|
20
|
+
indent="col-1"
|
|
21
|
+
class="3xl:px-0 lg:mt-12 px-5 mx-auto mt-5 mb-5 lg:mb-10"
|
|
22
|
+
>
|
|
23
|
+
<DetailHeadline
|
|
24
|
+
:title="data.title"
|
|
25
|
+
:publication-date="data.publicationDate"
|
|
26
|
+
label="Podcast Season"
|
|
27
|
+
schema
|
|
28
|
+
/>
|
|
29
|
+
<BlockText
|
|
30
|
+
v-if="data.summary"
|
|
31
|
+
:text="data.summary"
|
|
32
|
+
variant="medium"
|
|
33
|
+
class="lg:w-2/3 mt-5"
|
|
34
|
+
/>
|
|
35
|
+
</LayoutHelper>
|
|
36
|
+
|
|
37
|
+
<LayoutHelper>
|
|
38
|
+
<div class="col-span-12 pb-2 justify-end flex flex-row pr-0.5">
|
|
39
|
+
<!-- toggle gallery view -->
|
|
40
|
+
<div
|
|
41
|
+
v-if="allowGridView"
|
|
42
|
+
class="align-end flex text-2xl font-secondary font-semibold tracking-wider"
|
|
43
|
+
>
|
|
44
|
+
<button
|
|
45
|
+
class="lg:ml-6"
|
|
46
|
+
:class="
|
|
47
|
+
showGridView
|
|
48
|
+
? 'text-theme-red cursor-default'
|
|
49
|
+
: 'text-gray-mid can-hover:hover:text-theme-red-hover cursor-pointer'
|
|
50
|
+
"
|
|
51
|
+
:aria-label="showGridView ? 'Grid View (enabled)' : 'Grid View'"
|
|
52
|
+
:disabled="showGridView"
|
|
53
|
+
@click="
|
|
54
|
+
isGallery
|
|
55
|
+
? searchStore.updateGridViewForPodcasts(true)
|
|
56
|
+
: searchStore.updateGridView(true)
|
|
57
|
+
"
|
|
58
|
+
>
|
|
59
|
+
<span class="flex items-center">
|
|
60
|
+
<IconGrid />
|
|
61
|
+
</span>
|
|
62
|
+
</button>
|
|
63
|
+
<button
|
|
64
|
+
class="ml-3"
|
|
65
|
+
:class="
|
|
66
|
+
!showGridView
|
|
67
|
+
? 'text-theme-red cursor-default'
|
|
68
|
+
: 'text-gray-mid can-hover:hover:text-theme-red-hover cursor-pointer'
|
|
69
|
+
"
|
|
70
|
+
:aria-label="!showGridView ? 'List View (enabled)' : 'List View'"
|
|
71
|
+
:disabled="!showGridView"
|
|
72
|
+
@click="
|
|
73
|
+
isGallery
|
|
74
|
+
? searchStore.updateGridViewForPodcasts(false)
|
|
75
|
+
: searchStore.updateGridView(false)
|
|
76
|
+
"
|
|
77
|
+
>
|
|
78
|
+
<span class="flex items-center flip-horizontal">
|
|
79
|
+
<IconList />
|
|
80
|
+
</span>
|
|
81
|
+
</button>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</LayoutHelper>
|
|
85
|
+
|
|
86
|
+
<LayoutHelper
|
|
87
|
+
v-if="data.episodes && data.episodes.length"
|
|
88
|
+
indent="col-2"
|
|
89
|
+
class="border-gray-mid lg:mb-24 pt-10 mb-12 border-t"
|
|
90
|
+
>
|
|
91
|
+
<section aria-label="Podcast Episodes">
|
|
92
|
+
<template v-if="!showGridView">
|
|
93
|
+
<SearchResultCard
|
|
94
|
+
v-for="episode of data.episodes"
|
|
95
|
+
:key="episode.id"
|
|
96
|
+
:type="episode.series.title"
|
|
97
|
+
:topic="data.title"
|
|
98
|
+
:url="episode.url"
|
|
99
|
+
:image="episode.thumbnailImage"
|
|
100
|
+
:title="episode.title"
|
|
101
|
+
:summary="episode.summary"
|
|
102
|
+
:media="episode.uploadedMedia ? episode.uploadedMedia.file : null"
|
|
103
|
+
:date="$filters.displayDate(episode.publicationDate)"
|
|
104
|
+
:is-podcast-season="isPodcastSeason"
|
|
105
|
+
heading-level="h2"
|
|
106
|
+
/>
|
|
107
|
+
</template>
|
|
108
|
+
<template v-else>
|
|
109
|
+
<div class="md:grid grid-cols-12 gap-10">
|
|
110
|
+
<div
|
|
111
|
+
v-for="episode of data.episodes"
|
|
112
|
+
:key="episode.id"
|
|
113
|
+
class="col-span-6 lg:col-span-4"
|
|
114
|
+
>
|
|
115
|
+
<SearchResultGridItem
|
|
116
|
+
:type="episode.title"
|
|
117
|
+
:url="episode.url"
|
|
118
|
+
:image="episode.thumbnailImage"
|
|
119
|
+
:title="episode.title"
|
|
120
|
+
:summary="episode.summary"
|
|
121
|
+
:date="$filters.displayDate(episode.firstPublishedAt)"
|
|
122
|
+
heading-level="h2"
|
|
123
|
+
/>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
</template>
|
|
127
|
+
</section>
|
|
128
|
+
</LayoutHelper>
|
|
129
|
+
</div>
|
|
130
|
+
</template>
|
|
131
|
+
<script>
|
|
132
|
+
import { defineComponent } from 'vue'
|
|
133
|
+
import { mapStores } from 'pinia'
|
|
134
|
+
import { useSearchStore } from '../../../store/search'
|
|
135
|
+
import HeroMedium from './../../../components/HeroMedium/HeroMedium.vue'
|
|
136
|
+
import IconGrid from './../../../components/Icons/IconGrid.vue'
|
|
137
|
+
import IconList from './../../../components/Icons/IconList.vue'
|
|
138
|
+
import SearchResultGridItem from './../../../components/SearchResultGridItem/SearchResultGridItem.vue'
|
|
139
|
+
import SearchResultCard from './../../../components/SearchResultCard/SearchResultCard.vue'
|
|
140
|
+
import LayoutHelper from './../../../components/LayoutHelper/LayoutHelper.vue'
|
|
141
|
+
import BlockText from './../../../components/BlockText/BlockText.vue'
|
|
142
|
+
import DetailHeadline from './../../../components/DetailHeadline/DetailHeadline.vue'
|
|
143
|
+
|
|
144
|
+
export default defineComponent({
|
|
145
|
+
name: 'PagePodcastSeason',
|
|
146
|
+
components: {
|
|
147
|
+
HeroMedium,
|
|
148
|
+
SearchResultCard,
|
|
149
|
+
SearchResultGridItem,
|
|
150
|
+
IconGrid,
|
|
151
|
+
IconList,
|
|
152
|
+
LayoutHelper,
|
|
153
|
+
BlockText,
|
|
154
|
+
DetailHeadline
|
|
155
|
+
},
|
|
156
|
+
props: {
|
|
157
|
+
data: {
|
|
158
|
+
type: Object,
|
|
159
|
+
required: false
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
data() {
|
|
163
|
+
return {
|
|
164
|
+
allowGridView: true,
|
|
165
|
+
defaultShowGridView: false,
|
|
166
|
+
isGallery: false,
|
|
167
|
+
isPodcastSeason: true
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
computed: {
|
|
171
|
+
...mapStores(useSearchStore),
|
|
172
|
+
showGridView() {
|
|
173
|
+
if (this.isGallery) {
|
|
174
|
+
if (this.searchStore.showGridViewForPodcasts !== undefined) {
|
|
175
|
+
return this.searchStore.showGridViewForPodcasts
|
|
176
|
+
}
|
|
177
|
+
} else if (this.searchStore.showGridView !== undefined) {
|
|
178
|
+
return this.searchStore.showGridView
|
|
179
|
+
}
|
|
180
|
+
return this.defaultShowGridView
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
})
|
|
184
|
+
</script>
|
|
185
|
+
|
|
186
|
+
<style scoped>
|
|
187
|
+
.flip-horizontal > svg {
|
|
188
|
+
display: block;
|
|
189
|
+
transform: scale(-1, 1);
|
|
190
|
+
}
|
|
191
|
+
</style>
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import PagePressKitIndex from './PagePressKitIndex.vue'
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
title: 'Templates/WWW/PagePressKitIndex',
|
|
5
|
+
component: PagePressKitIndex,
|
|
6
|
+
decorators: [
|
|
7
|
+
() => ({
|
|
8
|
+
template: `<div id="storyDecorator" class="disable-nav-offset"><story/></div>`
|
|
9
|
+
})
|
|
10
|
+
],
|
|
11
|
+
tags: ['!autodocs'],
|
|
12
|
+
parameters: {
|
|
13
|
+
layout: 'fullscreen',
|
|
14
|
+
html: {
|
|
15
|
+
root: '#storyDecorator'
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
excludeStories: /.*(Data)$/
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// stories
|
|
22
|
+
export const BaseStory = {
|
|
23
|
+
name: 'PagePressKitIndex', // single story hoisting
|
|
24
|
+
args: {
|
|
25
|
+
data: {
|
|
26
|
+
title: 'Press Kits',
|
|
27
|
+
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.`,
|
|
28
|
+
callToAction: [
|
|
29
|
+
{
|
|
30
|
+
heading: 'View all other press kits',
|
|
31
|
+
text: 'Legacy Press Kits',
|
|
32
|
+
page: {
|
|
33
|
+
url: '/who-we-are/media-information/legacy-press-kits'
|
|
34
|
+
},
|
|
35
|
+
externalLink: ''
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
children: [
|
|
39
|
+
{
|
|
40
|
+
id: 1,
|
|
41
|
+
label: 'Label',
|
|
42
|
+
topicLabel: 'Topic Label',
|
|
43
|
+
url: '/press-kits/placeholder',
|
|
44
|
+
title: 'Title of the press kit homepage',
|
|
45
|
+
summary:
|
|
46
|
+
'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.',
|
|
47
|
+
thumbnailImage: {
|
|
48
|
+
src: {
|
|
49
|
+
url: 'https://picsum.photos/560/560',
|
|
50
|
+
width: '560',
|
|
51
|
+
height: '560'
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: 2,
|
|
57
|
+
label: 'Label',
|
|
58
|
+
topicLabel: null,
|
|
59
|
+
url: '/press-kits/placeholder',
|
|
60
|
+
title: 'Title of the press kit homepage',
|
|
61
|
+
thumbnailImage: {
|
|
62
|
+
src: {
|
|
63
|
+
url: 'https://picsum.photos/560/560',
|
|
64
|
+
width: '560',
|
|
65
|
+
height: '560'
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div v-if="data">
|
|
3
|
+
<!-- page headline -->
|
|
4
|
+
<LayoutHelper
|
|
5
|
+
indent="col-2"
|
|
6
|
+
class="lg:mt-12 mt-5 mb-10"
|
|
7
|
+
>
|
|
8
|
+
<DetailHeadline :title="data.title" />
|
|
9
|
+
</LayoutHelper>
|
|
10
|
+
|
|
11
|
+
<div
|
|
12
|
+
v-if="data.summary"
|
|
13
|
+
class="lg:BaseGrid lg:mb-18 container mx-auto mb-10"
|
|
14
|
+
>
|
|
15
|
+
<div class="lg:px-0 lg:col-end-10 xl:col-end-8 relative col-start-2 px-4">
|
|
16
|
+
<BlockText :text="data.summary" />
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<!-- press kits listing -->
|
|
21
|
+
<section
|
|
22
|
+
v-if="data.children && data.children.length"
|
|
23
|
+
aria-label="Directory Listing"
|
|
24
|
+
class="lg:my-18 my-10"
|
|
25
|
+
>
|
|
26
|
+
<LayoutHelper indent="col-2">
|
|
27
|
+
<SearchResultCard
|
|
28
|
+
v-for="item of data.children"
|
|
29
|
+
:key="item.id"
|
|
30
|
+
:type="item.label"
|
|
31
|
+
:topic="item.topicLabel"
|
|
32
|
+
:url="item.url"
|
|
33
|
+
:image="item.thumbnailImage"
|
|
34
|
+
:title="item.title"
|
|
35
|
+
:summary="item.summary"
|
|
36
|
+
heading-level="h2"
|
|
37
|
+
/>
|
|
38
|
+
<LayoutHelper
|
|
39
|
+
v-if="data.callToAction && data.callToAction.length > 0"
|
|
40
|
+
indent="col-4"
|
|
41
|
+
>
|
|
42
|
+
<BlockCta :data="data.callToAction[0]" />
|
|
43
|
+
</LayoutHelper>
|
|
44
|
+
</LayoutHelper>
|
|
45
|
+
</section>
|
|
46
|
+
</div>
|
|
47
|
+
</template>
|
|
48
|
+
<script lang="ts">
|
|
49
|
+
/* PressKitIndex template. Similar to the Asteroid Watch Index page
|
|
50
|
+
** TODO: once we have a lot of press kits, we can easily convert this to use the search mixin
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
import { defineComponent } from 'vue'
|
|
54
|
+
import LayoutHelper from './../../../components/LayoutHelper/LayoutHelper.vue'
|
|
55
|
+
import BlockCta from './../../../components/BlockCta/BlockCta.vue'
|
|
56
|
+
import BlockText from './../../../components/BlockText/BlockText.vue'
|
|
57
|
+
import SearchResultCard from './../../../components/SearchResultCard/SearchResultCard.vue'
|
|
58
|
+
import DetailHeadline from './../../../components/DetailHeadline/DetailHeadline.vue'
|
|
59
|
+
|
|
60
|
+
export default defineComponent({
|
|
61
|
+
name: 'PagePressKitIndex',
|
|
62
|
+
components: {
|
|
63
|
+
LayoutHelper,
|
|
64
|
+
BlockCta,
|
|
65
|
+
BlockText,
|
|
66
|
+
SearchResultCard,
|
|
67
|
+
DetailHeadline
|
|
68
|
+
},
|
|
69
|
+
props: {
|
|
70
|
+
data: {
|
|
71
|
+
type: Object,
|
|
72
|
+
required: false
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
})
|
|
76
|
+
</script>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { NavSecondaryData } from './../../../components/NavSecondary/NavSecondary.stories.js'
|
|
2
|
+
import PageProfileDetail from './PageProfileDetail.vue'
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
title: 'Templates/WWW/PageProfileDetail',
|
|
6
|
+
component: PageProfileDetail,
|
|
7
|
+
tags: ['!autodocs'],
|
|
8
|
+
decorators: [
|
|
9
|
+
() => ({
|
|
10
|
+
template: `<div id="storyDecorator" class="disable-nav-offset"><story/></div>`
|
|
11
|
+
})
|
|
12
|
+
],
|
|
13
|
+
parameters: {
|
|
14
|
+
layout: 'fullscreen',
|
|
15
|
+
html: {
|
|
16
|
+
root: '#storyDecorator'
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
excludeStories: /.*(Data)$/
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const PageProfileDetailData = {
|
|
23
|
+
url: '/people/dariush-divsalar/',
|
|
24
|
+
breadcrumb: NavSecondaryData.breadcrumb,
|
|
25
|
+
displayLabel: 'Communications, Tracking & Radar',
|
|
26
|
+
title: 'Dariush Divsalar',
|
|
27
|
+
jobTitle: 'Electrical engineer',
|
|
28
|
+
email: 'dariush.divsalar@jpl.nasa.gov',
|
|
29
|
+
image: {
|
|
30
|
+
original: 'https://picsum.photos/312/390',
|
|
31
|
+
screenSm: {
|
|
32
|
+
url: 'https://picsum.photos/156/195',
|
|
33
|
+
width: '156'
|
|
34
|
+
},
|
|
35
|
+
screenMd: {
|
|
36
|
+
url: 'https://picsum.photos/232/290',
|
|
37
|
+
width: '232'
|
|
38
|
+
},
|
|
39
|
+
src: {
|
|
40
|
+
url: 'https://picsum.photos/312/390',
|
|
41
|
+
width: '312',
|
|
42
|
+
height: '390'
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
biography:
|
|
46
|
+
'<p>Dariush Divsalar received his Ph.D. degree in electrical engineering from the University of California, Los Angeles (UCLA) in 1978.</p>',
|
|
47
|
+
education: '<p>Ph.D. Electrical Engineering, University of California, Los Angeles (UCLA)</p>',
|
|
48
|
+
researchInterests:
|
|
49
|
+
'<p>Involved in research, development, study and analysis of various aspects of coding, modulations, communication theory and applications for Deep Space Communication System Techniques for Future Space Exploration Missions, Satellite Communications.</p>',
|
|
50
|
+
professionalExperience:
|
|
51
|
+
'<p>Over 40 years at JPL, contributed in areas of digital communication systems, wireless communication systems both over AWGN and Fading channels, bandwidth efficient combined coding modulation techniques, digital signal processing, satellite communications, mobile communications.</p>',
|
|
52
|
+
communityService:
|
|
53
|
+
'<p>Contributed to professional Societies such as IEEE. Journal Referee for IEEE societies of Communication and Information Theory. Member of technical committees for of IEEE communication theory and information theory societies conferences. Technical Program Chairman of Communication Theory Mini-Conference Globecom 93. Technical Program Chairman of IEEE Communication Theory workshop, Santa Cruz, April 1995. Organizer and chairman of many IEEE conference sessions in the past ten years.</p>',
|
|
54
|
+
selectedAwards: `
|
|
55
|
+
<ul>
|
|
56
|
+
<li>NASA Exceptional Engineering Achievement Medal in 1996.</li>
|
|
57
|
+
<li>IEEE Alexander Graham Bell Medal in 2014.</li>
|
|
58
|
+
<li>Several IEEE Journal, conference, workshop, best paper awards</li>
|
|
59
|
+
</ul>
|
|
60
|
+
`,
|
|
61
|
+
publications: `
|
|
62
|
+
<p>Total of 21593 citations for all publications. Only journal publications are provided below.</p>
|
|
63
|
+
<ol>
|
|
64
|
+
<li>D. Divsalar and M. K. Simon, "Spectral Characteristics of Convolutionally Coded Digital Signals," IEEE Trans. on Communications, February 1980.</li>
|
|
65
|
+
<li>D. Divsalar and M. K. Simon, "The Power Spectral Density of Digital Modulations Transmitted Over Nonlinear Channels," IEEE Trans. on Communications, Vol. COM-30, January 1982.</li>
|
|
66
|
+
</ol>
|
|
67
|
+
`
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// stories
|
|
71
|
+
export const BaseStory = {
|
|
72
|
+
name: 'PageProfileDetail',
|
|
73
|
+
args: {
|
|
74
|
+
data: PageProfileDetailData
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
v-if="data"
|
|
4
|
+
class="ThemeVariantLight text-gray-dark mb-20 md:mb-40"
|
|
5
|
+
itemscope
|
|
6
|
+
itemtype="http://schema.org/Person"
|
|
7
|
+
>
|
|
8
|
+
<NavSecondary :breadcrumb="data.breadcrumb" />
|
|
9
|
+
|
|
10
|
+
<div class="BaseGrid container mx-auto lg:px-0 px-4 lg:my-20 my-10 gap-y-0">
|
|
11
|
+
<div class="col-start-1 col-end-13 md:hidden">
|
|
12
|
+
<BaseHeading
|
|
13
|
+
level="h1"
|
|
14
|
+
size="h2"
|
|
15
|
+
class="mb-5"
|
|
16
|
+
itemprop="name"
|
|
17
|
+
>{{ data.title }}</BaseHeading
|
|
18
|
+
>
|
|
19
|
+
<p
|
|
20
|
+
class="text-body-lg mb-5"
|
|
21
|
+
itemprop="jobTitle"
|
|
22
|
+
>
|
|
23
|
+
{{ data.jobTitle }}
|
|
24
|
+
</p>
|
|
25
|
+
</div>
|
|
26
|
+
<BaseImagePlaceholder
|
|
27
|
+
aspect-ratio="portrait"
|
|
28
|
+
class="col-start-1 col-end-6 lg:col-start-3 lg:col-end-6 mb-10 md:mb-0"
|
|
29
|
+
>
|
|
30
|
+
<BaseImage
|
|
31
|
+
v-if="data.image && data.image.src"
|
|
32
|
+
:src="data.image.src.url"
|
|
33
|
+
:srcset="getPortraitSrcset(data.image)"
|
|
34
|
+
:width="data.image.src.width"
|
|
35
|
+
:height="data.image.src.height"
|
|
36
|
+
image-class="w-full h-auto"
|
|
37
|
+
loading="eager"
|
|
38
|
+
alt=""
|
|
39
|
+
/>
|
|
40
|
+
</BaseImagePlaceholder>
|
|
41
|
+
|
|
42
|
+
<div class="col-start-1 col-end-13 md:col-start-6 md:col-end-13 lg:col-start-6 lg:col-end-11">
|
|
43
|
+
<div class="hidden md:block">
|
|
44
|
+
<BaseHeading
|
|
45
|
+
level="h1"
|
|
46
|
+
size="h2"
|
|
47
|
+
class="mb-5 md:mb-7 lg:mb-10"
|
|
48
|
+
itemprop="name"
|
|
49
|
+
>{{ data.title }}</BaseHeading
|
|
50
|
+
>
|
|
51
|
+
<p
|
|
52
|
+
class="text-body-lg mb-5 md:mb-7 lg:mb-10"
|
|
53
|
+
itemprop="jobTitle"
|
|
54
|
+
>
|
|
55
|
+
{{ data.jobTitle }}
|
|
56
|
+
</p>
|
|
57
|
+
</div>
|
|
58
|
+
<template v-if="data.email">
|
|
59
|
+
<BaseHeading
|
|
60
|
+
level="h2"
|
|
61
|
+
size="h4"
|
|
62
|
+
class="mb-2"
|
|
63
|
+
>
|
|
64
|
+
<IconEnvelope class="inline relative -top-0.5" />
|
|
65
|
+
Email
|
|
66
|
+
</BaseHeading>
|
|
67
|
+
<p class="text-h6">
|
|
68
|
+
<a
|
|
69
|
+
class="font-normal underline break-all"
|
|
70
|
+
itemprop="email"
|
|
71
|
+
:href="`mailto:${data.email}`"
|
|
72
|
+
>
|
|
73
|
+
{{ data.email }}
|
|
74
|
+
</a>
|
|
75
|
+
</p>
|
|
76
|
+
</template>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
<LayoutHelper indent="col-3">
|
|
81
|
+
<ProfileDetailSectionGroup
|
|
82
|
+
v-for="section in topLevel"
|
|
83
|
+
:key="section.id"
|
|
84
|
+
:section="section"
|
|
85
|
+
:data="data"
|
|
86
|
+
/>
|
|
87
|
+
</LayoutHelper>
|
|
88
|
+
</div>
|
|
89
|
+
</template>
|
|
90
|
+
|
|
91
|
+
<script>
|
|
92
|
+
import { defineComponent } from 'vue'
|
|
93
|
+
import LayoutHelper from './../../../components/LayoutHelper/LayoutHelper.vue'
|
|
94
|
+
import NavSecondary from './../../../components/NavSecondary/NavSecondary.vue'
|
|
95
|
+
import BaseHeading from './../../../components/BaseHeading/BaseHeading.vue'
|
|
96
|
+
import BaseImagePlaceholder from './../../../components/BaseImagePlaceholder/BaseImagePlaceholder.vue'
|
|
97
|
+
import BaseImage from './../../../components/BaseImage/BaseImage.vue'
|
|
98
|
+
import IconEnvelope from './../../../components/Icons/IconEnvelope.vue'
|
|
99
|
+
import ProfileDetailSectionGroup from './../../../components/ProfileDetailSectionGroup/ProfileDetailSectionGroup.vue'
|
|
100
|
+
|
|
101
|
+
export default defineComponent({
|
|
102
|
+
name: 'PageProfileDetail',
|
|
103
|
+
components: {
|
|
104
|
+
LayoutHelper,
|
|
105
|
+
NavSecondary,
|
|
106
|
+
BaseHeading,
|
|
107
|
+
BaseImagePlaceholder,
|
|
108
|
+
BaseImage,
|
|
109
|
+
IconEnvelope,
|
|
110
|
+
ProfileDetailSectionGroup
|
|
111
|
+
},
|
|
112
|
+
props: {
|
|
113
|
+
data: {
|
|
114
|
+
type: Object,
|
|
115
|
+
required: false
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
|
|
119
|
+
data() {
|
|
120
|
+
return {
|
|
121
|
+
topLevel: [
|
|
122
|
+
{
|
|
123
|
+
title: 'About',
|
|
124
|
+
id: 'about',
|
|
125
|
+
subsections: [
|
|
126
|
+
{
|
|
127
|
+
title: 'Biography',
|
|
128
|
+
prop: 'biography',
|
|
129
|
+
icon: 'IconBookUser'
|
|
130
|
+
},
|
|
131
|
+
{ title: 'Education', prop: 'education', icon: 'IconUniversity' },
|
|
132
|
+
{
|
|
133
|
+
title: 'Research Interests',
|
|
134
|
+
prop: 'researchInterests',
|
|
135
|
+
icon: 'IconMagnifyingGlass'
|
|
136
|
+
}
|
|
137
|
+
]
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
title: 'Experience',
|
|
141
|
+
id: 'experience',
|
|
142
|
+
subsections: [
|
|
143
|
+
{
|
|
144
|
+
title: 'Professional Experience',
|
|
145
|
+
prop: 'professionalExperience',
|
|
146
|
+
icon: 'IconBriefcase'
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
title: 'Community Service',
|
|
150
|
+
prop: 'communityService',
|
|
151
|
+
icon: 'IconHand'
|
|
152
|
+
}
|
|
153
|
+
]
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
title: 'Achievements',
|
|
157
|
+
id: 'achievements',
|
|
158
|
+
subsections: [
|
|
159
|
+
{
|
|
160
|
+
title: 'Selected Awards',
|
|
161
|
+
prop: 'selectedAwards',
|
|
162
|
+
icon: 'IconMedal'
|
|
163
|
+
},
|
|
164
|
+
{ title: 'Publications', prop: 'publications', icon: 'IconBook' }
|
|
165
|
+
]
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
|
|
171
|
+
methods: {
|
|
172
|
+
// Generate the srcset manually as the image renditions use a portrait aspect ratio.
|
|
173
|
+
getPortraitSrcset(image) {
|
|
174
|
+
return `${image.screenSm.url} ${image.screenSm.width}w, ${image.screenMd.url} ${image.screenMd.width}w, ${image.src.url} ${image.src.width}w`
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
})
|
|
178
|
+
</script>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { HeroLargeData } from './../../../components/HeroLarge/HeroLarge.stories.js'
|
|
2
|
+
import { RoboticsDetailStatsData } from './../../../components/RoboticsDetailStats/RoboticsDetailStats.stories.js'
|
|
3
|
+
import { BlockCardGroupData } from './../../../components/BlockCardGroup/BlockCardGroup.stories.js'
|
|
4
|
+
import { BlockLinkTileCarouselData } from './../../../components/BlockLinkCarousel/BlockLinkCarousel.stories.js'
|
|
5
|
+
import { BlockRelatedLinksData } from './../../../components/BlockRelatedLinks/BlockRelatedLinks.stories.js'
|
|
6
|
+
import { BlockStreamfieldTruncatedData } from './../../../components/BlockStreamfield/BlockStreamfield.stories'
|
|
7
|
+
|
|
8
|
+
import PageRoboticsDetail from './PageRoboticsDetail.vue'
|
|
9
|
+
|
|
10
|
+
export default {
|
|
11
|
+
title: 'Templates/WWW/PageRoboticsDetail',
|
|
12
|
+
component: PageRoboticsDetail,
|
|
13
|
+
tags: ['!autodocs'],
|
|
14
|
+
decorators: [
|
|
15
|
+
() => ({
|
|
16
|
+
template: `<div id="storyDecorator" class="disable-nav-offset"><story/></div>`
|
|
17
|
+
})
|
|
18
|
+
],
|
|
19
|
+
parameters: {
|
|
20
|
+
layout: 'fullscreen',
|
|
21
|
+
html: {
|
|
22
|
+
root: '#storyDecorator'
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
excludeStories: /.*(Data)$/
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// stories
|
|
29
|
+
export const Template = {
|
|
30
|
+
name: 'PageRoboticsDetail',
|
|
31
|
+
args: {
|
|
32
|
+
data: {
|
|
33
|
+
...HeroLargeData,
|
|
34
|
+
...RoboticsDetailStatsData,
|
|
35
|
+
introduction:
|
|
36
|
+
'FreeClimber: LEMUR 3 belongs to a new generation of robots being built at JPL that can crawl, walk and even climb rock walls. This robot was designed to operate in extreme terrains, demonstrating the applicability of its systems for possible missions to Mars, the Moon, and small bodies. It was developed under sponsorship of NASA Science Mission Directorate.',
|
|
37
|
+
...BlockStreamfieldTruncatedData,
|
|
38
|
+
relatedLinks: [BlockRelatedLinksData.data],
|
|
39
|
+
moreRobots: BlockLinkTileCarouselData,
|
|
40
|
+
facts: BlockCardGroupData
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|