@explorer-1/vue 0.2.0 → 0.2.2
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 +1 -0
- package/dist/explorer-1-vue.js +3759 -3729
- package/dist/explorer-1-vue.umd.cjs +12 -12
- package/dist/src/components/BlockCard/BlockCard.vue.d.ts +9 -0
- package/dist/src/components/BlockLinkCard/BlockLinkCard.vue.d.ts +30 -0
- package/dist/src/components/BlockRelatedLinks/BlockRelatedLinks.vue.d.ts +11 -0
- package/dist/src/components/BlockStreamfield/BlockStreamfield.stories.d.ts +17 -0
- package/dist/src/components/CalendarButton/CalendarButton.stories.d.ts +2 -62
- package/dist/src/components/CalendarButton/CalendarButton.vue.d.ts +26 -7
- package/dist/src/components/EventDetailHero/EventDetailHero.vue.d.ts +8 -1
- package/dist/src/templates/PageEventDetail/PageEventDetail.stories.d.ts +3 -1
- package/dist/src/templates/PageImageDetail/PageImageDetail.stories.d.ts +19 -27
- package/dist/src/templates/PageNewsDetail/PageNewsDetail.stories.d.ts +136 -0
- package/dist/src/templates/edu/PageContentEdu.stories.d.ts +1 -0
- package/dist/src/templates/edu/PageEduEventDetail/PageEduEventDetail.stories.d.ts +128 -0
- package/dist/src/templates/edu/PageEduNewsDetail/PageEduNewsDetail.stories.d.ts +51 -0
- package/dist/src/templates/edu/PageEduResourceArticle/PageEduResourceArticle.stories.d.ts +17 -0
- package/dist/src/templates/www/PageCuratedGallery/PageCuratedGallery.stories.d.ts +17 -0
- package/dist/src/templates/www/PageRoboticsDetail/PageRoboticsDetail.stories.d.ts +17 -0
- package/dist/style.css +1 -1
- package/lib/main.ts +4 -4
- package/package.json +1 -1
- package/src/components/BaseTag/BaseTag.vue +2 -2
- package/src/components/{BlockCardGroup/BlockCardGroup.stories.js → BlockCardGrid/BlockCardGrid.stories.js} +21 -12
- package/src/components/BlockCardGrid/BlockCardGrid.vue +70 -0
- package/src/components/{BlockCard/BlockCard.stories.js → BlockCardGridItem/BlockCardGridItem.stories.js} +14 -6
- package/src/components/BlockCardGridItem/BlockCardGridItem.vue +40 -0
- package/src/components/{BlockCard/BlockCard.vue → BlockCardGridItem/BlockCardGridItemElement.vue} +36 -20
- package/src/components/BlockCircleImageCard/BlockCircleImageCard.stories.js +2 -1
- package/src/components/BlockInlineImage/BlockInlineImage.vue +1 -1
- package/src/components/BlockLinkCard/BlockLinkCard.stories.js +2 -1
- package/src/components/BlockLinkCard/BlockLinkCard.vue +33 -13
- package/src/components/BlockLinkCarousel/BlockLinkCarousel.vue +0 -1
- package/src/components/BlockLinkTile/BlockLinkTile.stories.js +3 -2
- package/src/components/BlockListCards/BlockListCards.stories.js +1 -0
- package/src/components/BlockRelatedLinks/BlockRelatedLinks.vue +6 -1
- package/src/components/BlockStreamfield/BlockStreamfield.stories.js +8 -1
- package/src/components/BlockStreamfield/BlockStreamfield.vue +17 -4
- package/src/components/CalendarButton/CalendarButton.stories.js +1 -19
- package/src/components/CalendarButton/CalendarButton.vue +43 -17
- package/src/components/EventDetailHero/EventDetailHero.vue +26 -31
- package/src/components/LayoutHelper/LayoutHelper.vue +7 -1
- package/src/components/MixinCarousel/MixinCarousel.vue +1 -1
- package/src/components/ThumbnailCarousel/ThumbnailCarousel.stories.js +1 -0
- package/src/docs/overviews/blocks.docs.mdx.disabled +7 -7
- package/src/docs/overviews/cards.docs.mdx +81 -0
- package/src/interfaces.ts +7 -2
- package/src/templates/PageEventDetail/PageEventDetail.stories.js +3 -1
- package/src/templates/PageEventDetail/PageEventDetail.vue +3 -3
- package/src/templates/PageImageDetail/PageImageDetail.stories.js +1 -1
- package/src/templates/edu/PageContentEdu.stories.js +1 -0
- package/src/templates/edu/PageEduEventDetail/PageEduEventDetail.stories.js +130 -0
- package/src/templates/edu/PageEduEventDetail/PageEduEventDetail.vue +419 -0
- package/src/templates/www/PageRoboticsDetail/PageRoboticsDetail.stories.js +2 -2
- package/src/templates/www/PageRoboticsDetail/PageRoboticsDetail.vue +4 -4
- package/src/components/BlockCardGroup/BlockCardGroup.vue +0 -61
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
v-if="data"
|
|
4
|
+
class="PageEduEventDetail pt-5 ThemeVariantLight lg:pt-12"
|
|
5
|
+
itemscope
|
|
6
|
+
itemtype="http://schema.org/Event"
|
|
7
|
+
>
|
|
8
|
+
<!-- schema.org -->
|
|
9
|
+
<meta
|
|
10
|
+
v-if="data.thumbnailImage && data.thumbnailImage.original"
|
|
11
|
+
itemprop="thumbnailUrl"
|
|
12
|
+
:content="data.thumbnailImage.original"
|
|
13
|
+
/>
|
|
14
|
+
<meta
|
|
15
|
+
itemprop="startDate"
|
|
16
|
+
:content="data.startDatetime"
|
|
17
|
+
/>
|
|
18
|
+
<meta
|
|
19
|
+
v-if="data.endDatetime"
|
|
20
|
+
itemprop="endDate"
|
|
21
|
+
:content="data.endDatetime"
|
|
22
|
+
/>
|
|
23
|
+
<meta
|
|
24
|
+
v-if="data.summary || data.body"
|
|
25
|
+
itemprop="description"
|
|
26
|
+
:content="data.summary || data.body"
|
|
27
|
+
/>
|
|
28
|
+
|
|
29
|
+
<LayoutHelper
|
|
30
|
+
indent="col-2"
|
|
31
|
+
class="mb-6 lg:mb-12"
|
|
32
|
+
>
|
|
33
|
+
<div
|
|
34
|
+
v-if="data.eventType"
|
|
35
|
+
class="flex flex-wrap items-start mb-3"
|
|
36
|
+
>
|
|
37
|
+
<BaseTag
|
|
38
|
+
variant="primary"
|
|
39
|
+
size="md"
|
|
40
|
+
>
|
|
41
|
+
{{ data.eventType }}
|
|
42
|
+
</BaseTag>
|
|
43
|
+
</div>
|
|
44
|
+
<BaseHeading
|
|
45
|
+
level="h1"
|
|
46
|
+
itemprop="name"
|
|
47
|
+
>
|
|
48
|
+
{{ data.title }}
|
|
49
|
+
</BaseHeading>
|
|
50
|
+
<ShareButtonsEdu
|
|
51
|
+
class="mt-4"
|
|
52
|
+
:title="data.title"
|
|
53
|
+
:url="data.url"
|
|
54
|
+
/>
|
|
55
|
+
</LayoutHelper>
|
|
56
|
+
|
|
57
|
+
<LayoutHelper indent="col-2">
|
|
58
|
+
<EventDetailHero
|
|
59
|
+
:image="data.eventImage"
|
|
60
|
+
:start-date-split="formattedSplitEventDates"
|
|
61
|
+
/>
|
|
62
|
+
|
|
63
|
+
<!-- Event details -->
|
|
64
|
+
<div>
|
|
65
|
+
<div
|
|
66
|
+
class="py-1 mb-10 text-xl lg:mb-0 lg:flex"
|
|
67
|
+
:class="data.registerLink && data.registerLink.length > 0 ? '' : 'lg:mb-10'"
|
|
68
|
+
>
|
|
69
|
+
<div
|
|
70
|
+
v-if="formattedEventDates || data.customDate"
|
|
71
|
+
class="PageEduEventDetail__Metadata text-primary"
|
|
72
|
+
>
|
|
73
|
+
<IconCalendar class="relative mr-3 text-[1.2rem]" />
|
|
74
|
+
<span>{{ formattedEventDates || data.customDate }}</span>
|
|
75
|
+
</div>
|
|
76
|
+
<div
|
|
77
|
+
v-show="displayTime"
|
|
78
|
+
class="PageEduEventDetail__Metadata text-primary"
|
|
79
|
+
>
|
|
80
|
+
<IconTime class="relative mr-3" />
|
|
81
|
+
<span>{{ displayTime }}</span>
|
|
82
|
+
</div>
|
|
83
|
+
<!--Virtual location -->
|
|
84
|
+
<div
|
|
85
|
+
v-if="data.isVirtualEvent && data.locationLink"
|
|
86
|
+
itemprop="location"
|
|
87
|
+
itemscope
|
|
88
|
+
itemtype="https://schema.org/VirtualLocation"
|
|
89
|
+
class="PageEduEventDetail__Metadata text-primary"
|
|
90
|
+
>
|
|
91
|
+
<link
|
|
92
|
+
itemprop="url"
|
|
93
|
+
:href="data.locationLink"
|
|
94
|
+
/>
|
|
95
|
+
<meta
|
|
96
|
+
itemprop="name"
|
|
97
|
+
:content="data.locationName"
|
|
98
|
+
/>
|
|
99
|
+
<IconLocation class="relative mr-3" />
|
|
100
|
+
<BaseLink
|
|
101
|
+
variant="none"
|
|
102
|
+
class="text-action"
|
|
103
|
+
:href="data.locationLink"
|
|
104
|
+
external-target-blank
|
|
105
|
+
>
|
|
106
|
+
{{ data.locationName }}
|
|
107
|
+
</BaseLink>
|
|
108
|
+
</div>
|
|
109
|
+
<!-- Normal location -->
|
|
110
|
+
<div
|
|
111
|
+
v-else-if="data.locationName"
|
|
112
|
+
class="PageEduEventDetail__Metadata text-primary"
|
|
113
|
+
>
|
|
114
|
+
<meta
|
|
115
|
+
itemprop="location"
|
|
116
|
+
:content="data.locationName"
|
|
117
|
+
/>
|
|
118
|
+
<IconLocation class="relative mr-3" />
|
|
119
|
+
<BaseLink
|
|
120
|
+
v-if="data.locationLink"
|
|
121
|
+
variant="none"
|
|
122
|
+
:href="data.locationLink"
|
|
123
|
+
external-target-blank
|
|
124
|
+
>
|
|
125
|
+
{{ data.locationName }}
|
|
126
|
+
</BaseLink>
|
|
127
|
+
<span v-else>{{ data.locationName }}</span>
|
|
128
|
+
</div>
|
|
129
|
+
<div
|
|
130
|
+
v-if="data.targetAudience"
|
|
131
|
+
class="PageEduEventDetail__Metadata text-primary"
|
|
132
|
+
>
|
|
133
|
+
<IconUser class="relative mr-3 text-[.9rem]" />
|
|
134
|
+
<span>{{ data.targetAudience }}</span>
|
|
135
|
+
</div>
|
|
136
|
+
|
|
137
|
+
<div class="PageEduEventDetail__Buttons">
|
|
138
|
+
<BaseButton
|
|
139
|
+
v-if="
|
|
140
|
+
data.registerLink &&
|
|
141
|
+
data.registerLink.length > 0 &&
|
|
142
|
+
((data.registerLink[0].page && data.registerLink[0].page.url) ||
|
|
143
|
+
data.registerLink[0].externalLink)
|
|
144
|
+
"
|
|
145
|
+
class="w-full px-0 mb-5"
|
|
146
|
+
:href="data.registerLink[0].externalLink ? data.registerLink[0].externalLink : null"
|
|
147
|
+
:to="
|
|
148
|
+
data.registerLink[0].page && data.registerLink[0].page.url
|
|
149
|
+
? data.registerLink[0].page.url
|
|
150
|
+
: null
|
|
151
|
+
"
|
|
152
|
+
:target="data.registerLink[0].externalLink ? '_blank' : '_self'"
|
|
153
|
+
compact
|
|
154
|
+
>Register for event
|
|
155
|
+
</BaseButton>
|
|
156
|
+
<!-- Todo IF VIRTUAL EVENT passes url as string to location prop -->
|
|
157
|
+
<!-- location= location name and link -->
|
|
158
|
+
<CalendarButton
|
|
159
|
+
v-if="data.startDatetime"
|
|
160
|
+
:start-datetime="data.startDatetime"
|
|
161
|
+
:end-datetime="data.endDatetime ? data.endDatetime : null"
|
|
162
|
+
:title="data.title ? data.title : null"
|
|
163
|
+
:location="data.locationName ? data.locationName : null"
|
|
164
|
+
:description="data.summary ? data.summary : null"
|
|
165
|
+
/>
|
|
166
|
+
</div>
|
|
167
|
+
</div>
|
|
168
|
+
|
|
169
|
+
<!-- Body -->
|
|
170
|
+
<div
|
|
171
|
+
v-if="data.body || data.summary"
|
|
172
|
+
class="grid-cols-10 lg:grid -mx-4 lg:mx-0"
|
|
173
|
+
>
|
|
174
|
+
<div class="col-span-7">
|
|
175
|
+
<p
|
|
176
|
+
v-if="data.summary"
|
|
177
|
+
class="BlockText text-body-lg mb-8 px-4 lg:px-0 font-semibold"
|
|
178
|
+
>
|
|
179
|
+
{{ data.summary }}
|
|
180
|
+
</p>
|
|
181
|
+
<BlockStreamfield
|
|
182
|
+
v-if="data.body"
|
|
183
|
+
variant="fluid"
|
|
184
|
+
:data="data.body"
|
|
185
|
+
/>
|
|
186
|
+
</div>
|
|
187
|
+
</div>
|
|
188
|
+
</div>
|
|
189
|
+
</LayoutHelper>
|
|
190
|
+
|
|
191
|
+
<!-- Speakers -->
|
|
192
|
+
<LayoutHelper
|
|
193
|
+
v-if="data.speakers && data.speakers.length > 0"
|
|
194
|
+
indent="col-2"
|
|
195
|
+
class="mb-12 lg:mb-16"
|
|
196
|
+
>
|
|
197
|
+
<div class="grid-cols-10 lg:grid">
|
|
198
|
+
<div class="col-span-7">
|
|
199
|
+
<BaseHeading
|
|
200
|
+
level="h2"
|
|
201
|
+
size="h3"
|
|
202
|
+
class="mb-5 md:mb-8"
|
|
203
|
+
>Speakers</BaseHeading
|
|
204
|
+
>
|
|
205
|
+
<div class="flex flex-col flex-wrap justify-start md:flex-row md:-mx-4">
|
|
206
|
+
<div
|
|
207
|
+
v-for="(speaker, index) in data.speakers"
|
|
208
|
+
:key="index"
|
|
209
|
+
class="flex flex-1 mb-6 md:flex-none md:flex-wrap md:mx-4 md:w-56"
|
|
210
|
+
>
|
|
211
|
+
<div class="w-40 mr-6 md:mr-0 md:w-56">
|
|
212
|
+
<BaseImagePlaceholder
|
|
213
|
+
aspect-ratio="1:1"
|
|
214
|
+
class="relative overflow-hidden bg-gray-light-mid"
|
|
215
|
+
transparent-mode
|
|
216
|
+
>
|
|
217
|
+
<BaseImage
|
|
218
|
+
v-if="speaker.image && speaker.image.src"
|
|
219
|
+
:src="speaker.image.src.url"
|
|
220
|
+
:width="speaker.image.src.width"
|
|
221
|
+
:height="speaker.image.src.height"
|
|
222
|
+
alt=""
|
|
223
|
+
class="object-cover"
|
|
224
|
+
loading="lazy"
|
|
225
|
+
/>
|
|
226
|
+
<img
|
|
227
|
+
v-else
|
|
228
|
+
:src="PlaceholderPortrait"
|
|
229
|
+
alt=""
|
|
230
|
+
/>
|
|
231
|
+
</BaseImagePlaceholder>
|
|
232
|
+
</div>
|
|
233
|
+
<div class="flex-1 h-full">
|
|
234
|
+
<h3
|
|
235
|
+
v-if="speaker.name"
|
|
236
|
+
class="my-3 text-lg !font-normal !tracking-normal leading-none"
|
|
237
|
+
>
|
|
238
|
+
<BaseLink
|
|
239
|
+
v-if="speaker.internalLink || speaker.externalLink"
|
|
240
|
+
link-class="no-underline normal-case"
|
|
241
|
+
:to="speaker.internalLink ? speaker.internalLink.url : null"
|
|
242
|
+
:href="speaker.externalLink ? speaker.externalLink : null"
|
|
243
|
+
external-target-blank
|
|
244
|
+
>
|
|
245
|
+
{{ speaker.name }}
|
|
246
|
+
</BaseLink>
|
|
247
|
+
<template v-else>
|
|
248
|
+
{{ speaker.name }}
|
|
249
|
+
</template>
|
|
250
|
+
</h3>
|
|
251
|
+
<p
|
|
252
|
+
v-if="speaker.title"
|
|
253
|
+
class="mb-3 text-gray-mid-dark"
|
|
254
|
+
>
|
|
255
|
+
{{ speaker.title }}
|
|
256
|
+
</p>
|
|
257
|
+
<p class="text-action capitalize">
|
|
258
|
+
{{ speaker.host }}
|
|
259
|
+
</p>
|
|
260
|
+
</div>
|
|
261
|
+
</div>
|
|
262
|
+
</div>
|
|
263
|
+
</div>
|
|
264
|
+
</div>
|
|
265
|
+
</LayoutHelper>
|
|
266
|
+
|
|
267
|
+
<!-- Webcast -->
|
|
268
|
+
<LayoutHelper
|
|
269
|
+
v-if="data.relatedLinks && data.relatedLinks.length > 0"
|
|
270
|
+
indent="col-2"
|
|
271
|
+
class="my-12 lg:my-16"
|
|
272
|
+
>
|
|
273
|
+
<BlockRelatedLinks
|
|
274
|
+
:data="data.relatedLinks[0]"
|
|
275
|
+
size="h3"
|
|
276
|
+
/>
|
|
277
|
+
</LayoutHelper>
|
|
278
|
+
|
|
279
|
+
<!-- Related Events -->
|
|
280
|
+
<LayoutHelper
|
|
281
|
+
v-if="data.relatedEvents?.length"
|
|
282
|
+
indent="col-1"
|
|
283
|
+
class="my-12 lg:my-16"
|
|
284
|
+
>
|
|
285
|
+
<BlockLinkCarousel
|
|
286
|
+
item-type="cards"
|
|
287
|
+
size="h3"
|
|
288
|
+
heading="Related Events"
|
|
289
|
+
:items="data.relatedEvents"
|
|
290
|
+
/>
|
|
291
|
+
</LayoutHelper>
|
|
292
|
+
<!-- Related Content -->
|
|
293
|
+
<div
|
|
294
|
+
v-if="data.relatedContent?.length"
|
|
295
|
+
class="bg-stars bg-[#15003B] lg:py-24 lg:mt-24 py-12 mt-12"
|
|
296
|
+
>
|
|
297
|
+
<BlockLinkCarousel
|
|
298
|
+
class="ThemeVariantDark"
|
|
299
|
+
item-type="cards"
|
|
300
|
+
heading="Explore More"
|
|
301
|
+
:items="data.relatedContent"
|
|
302
|
+
/>
|
|
303
|
+
</div>
|
|
304
|
+
</div>
|
|
305
|
+
</template>
|
|
306
|
+
<script lang="ts">
|
|
307
|
+
import { defineComponent } from 'vue'
|
|
308
|
+
import {
|
|
309
|
+
mixinFormatEventDates,
|
|
310
|
+
mixinFormatEventTimeInHoursAndMinutes,
|
|
311
|
+
mixinFormatSplitEventDates
|
|
312
|
+
} from '../../../utils/mixins'
|
|
313
|
+
import LayoutHelper from './../../../components/LayoutHelper/LayoutHelper.vue'
|
|
314
|
+
import BaseHeading from './../../../components/BaseHeading/BaseHeading.vue'
|
|
315
|
+
import BaseTag from './../../../components/BaseTag/BaseTag.vue'
|
|
316
|
+
import ShareButtonsEdu from './../../../components/ShareButtonsEdu/ShareButtonsEdu.vue'
|
|
317
|
+
import EventDetailHero from './../../../components/EventDetailHero/EventDetailHero.vue'
|
|
318
|
+
import IconCalendar from './../../../components/Icons/IconCalendar.vue'
|
|
319
|
+
import IconLocation from './../../../components/Icons/IconLocation.vue'
|
|
320
|
+
import IconTime from './../../../components/Icons/IconTime.vue'
|
|
321
|
+
import IconUser from './../../../components/Icons/IconUser.vue'
|
|
322
|
+
import BaseLink from './../../../components/BaseLink/BaseLink.vue'
|
|
323
|
+
import BaseButton from './../../../components/BaseButton/BaseButton.vue'
|
|
324
|
+
import CalendarButton from './../../../components/CalendarButton/CalendarButton.vue'
|
|
325
|
+
import BlockStreamfield from './../../../components/BlockStreamfield/BlockStreamfield.vue'
|
|
326
|
+
import BaseImagePlaceholder from './../../../components/BaseImagePlaceholder/BaseImagePlaceholder.vue'
|
|
327
|
+
import BaseImage from './../../../components/BaseImage/BaseImage.vue'
|
|
328
|
+
import BlockRelatedLinks from './../../../components/BlockRelatedLinks/BlockRelatedLinks.vue'
|
|
329
|
+
import BlockLinkCarousel from './../../../components/BlockLinkCarousel/BlockLinkCarousel.vue'
|
|
330
|
+
// @ts-ignore
|
|
331
|
+
import PlaceholderPortrait from '@explorer-1/common/src/images/svg/placeholder-portrait.svg'
|
|
332
|
+
|
|
333
|
+
export default defineComponent({
|
|
334
|
+
name: 'PageEduEventDetail',
|
|
335
|
+
components: {
|
|
336
|
+
LayoutHelper,
|
|
337
|
+
BaseHeading,
|
|
338
|
+
BaseTag,
|
|
339
|
+
ShareButtonsEdu,
|
|
340
|
+
EventDetailHero,
|
|
341
|
+
IconCalendar,
|
|
342
|
+
IconLocation,
|
|
343
|
+
IconTime,
|
|
344
|
+
IconUser,
|
|
345
|
+
BaseLink,
|
|
346
|
+
BaseButton,
|
|
347
|
+
CalendarButton,
|
|
348
|
+
BlockStreamfield,
|
|
349
|
+
BaseImagePlaceholder,
|
|
350
|
+
BaseImage,
|
|
351
|
+
BlockRelatedLinks,
|
|
352
|
+
BlockLinkCarousel
|
|
353
|
+
},
|
|
354
|
+
props: {
|
|
355
|
+
data: {
|
|
356
|
+
type: Object,
|
|
357
|
+
required: false,
|
|
358
|
+
default: undefined
|
|
359
|
+
}
|
|
360
|
+
},
|
|
361
|
+
data() {
|
|
362
|
+
return {
|
|
363
|
+
PlaceholderPortrait: PlaceholderPortrait
|
|
364
|
+
}
|
|
365
|
+
},
|
|
366
|
+
computed: {
|
|
367
|
+
displayTime(): string {
|
|
368
|
+
return this.data
|
|
369
|
+
? mixinFormatEventTimeInHoursAndMinutes(
|
|
370
|
+
this.data.startDatetime,
|
|
371
|
+
this.data.endDatetime,
|
|
372
|
+
this.data.endTime
|
|
373
|
+
)
|
|
374
|
+
: ''
|
|
375
|
+
},
|
|
376
|
+
formattedEventDates(): string {
|
|
377
|
+
return this.data ? mixinFormatEventDates(this.data.startDatetime, this.data.endDatetime) : ''
|
|
378
|
+
},
|
|
379
|
+
formattedSplitEventDates() {
|
|
380
|
+
return this.data
|
|
381
|
+
? mixinFormatSplitEventDates(this.data.startDatetime, this.data.endDatetime)
|
|
382
|
+
: undefined
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
})
|
|
386
|
+
</script>
|
|
387
|
+
<style lang="scss">
|
|
388
|
+
.PageEduEventDetail {
|
|
389
|
+
.PageEduEventDetail__Metadata {
|
|
390
|
+
@apply flex;
|
|
391
|
+
@apply items-baseline;
|
|
392
|
+
@apply mr-12 md:mr-8 lg:mr-12;
|
|
393
|
+
@apply mb-5 lg:mb-7;
|
|
394
|
+
|
|
395
|
+
span {
|
|
396
|
+
max-width: 230px;
|
|
397
|
+
min-width: 110px;
|
|
398
|
+
@apply text-gray-dark;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
svg {
|
|
402
|
+
min-width: 1.25rem;
|
|
403
|
+
@apply top-0.5;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
.PageEduEventDetail__Buttons {
|
|
408
|
+
@apply text-base;
|
|
409
|
+
@apply lg:ml-auto;
|
|
410
|
+
@apply mt-10;
|
|
411
|
+
@apply lg:mt-0;
|
|
412
|
+
|
|
413
|
+
max-width: 260px;
|
|
414
|
+
}
|
|
415
|
+
.bg-stars .MixinCarousel__Heading {
|
|
416
|
+
@apply text-white;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
</style>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HeroLargeData } from './../../../components/HeroLarge/HeroLarge.stories.js'
|
|
2
2
|
import { RoboticsDetailStatsData } from './../../../components/RoboticsDetailStats/RoboticsDetailStats.stories.js'
|
|
3
|
-
import {
|
|
3
|
+
import { BlockCardGridData } from './../../../components/BlockCardGrid/BlockCardGrid.stories.js'
|
|
4
4
|
import { BlockLinkTileCarouselData } from './../../../components/BlockLinkCarousel/BlockLinkCarousel.stories.js'
|
|
5
5
|
import { BlockRelatedLinksData } from './../../../components/BlockRelatedLinks/BlockRelatedLinks.stories.js'
|
|
6
6
|
import { BlockStreamfieldTruncatedData } from './../../../components/BlockStreamfield/BlockStreamfield.stories'
|
|
@@ -37,7 +37,7 @@ export const Template = {
|
|
|
37
37
|
...BlockStreamfieldTruncatedData,
|
|
38
38
|
relatedLinks: [BlockRelatedLinksData.data],
|
|
39
39
|
moreRobots: BlockLinkTileCarouselData,
|
|
40
|
-
facts:
|
|
40
|
+
facts: BlockCardGridData
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -36,10 +36,10 @@
|
|
|
36
36
|
</p>
|
|
37
37
|
</div>
|
|
38
38
|
<!-- facts -->
|
|
39
|
-
<
|
|
39
|
+
<BlockCardGrid
|
|
40
40
|
v-if="data.facts"
|
|
41
41
|
class="3xl:col-end-13 xl:col-end-11 md:px-4 lg:px-0 relative col-start-2 col-end-13 px-0 mt-12"
|
|
42
|
-
:
|
|
42
|
+
:cards="data.facts"
|
|
43
43
|
/>
|
|
44
44
|
</div>
|
|
45
45
|
|
|
@@ -73,7 +73,7 @@ import { defineComponent } from 'vue'
|
|
|
73
73
|
import BaseHeading from './../../../components/BaseHeading/BaseHeading.vue'
|
|
74
74
|
import HeroLarge from './../../../components/HeroLarge/HeroLarge.vue'
|
|
75
75
|
import RoboticsDetailStats from './../../../components/RoboticsDetailStats/RoboticsDetailStats.vue'
|
|
76
|
-
import
|
|
76
|
+
import BlockCardGrid from './../../../components/BlockCardGrid/BlockCardGrid.vue'
|
|
77
77
|
import BlockRelatedLinks from './../../../components/BlockRelatedLinks/BlockRelatedLinks.vue'
|
|
78
78
|
import BlockLinkCarousel from './../../../components/BlockLinkCarousel/BlockLinkCarousel.vue'
|
|
79
79
|
import LayoutHelper from './../../../components/LayoutHelper/LayoutHelper.vue'
|
|
@@ -85,7 +85,7 @@ export default defineComponent({
|
|
|
85
85
|
BaseHeading,
|
|
86
86
|
HeroLarge,
|
|
87
87
|
RoboticsDetailStats,
|
|
88
|
-
|
|
88
|
+
BlockCardGrid,
|
|
89
89
|
BlockRelatedLinks,
|
|
90
90
|
BlockLinkCarousel,
|
|
91
91
|
LayoutHelper,
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div
|
|
3
|
-
v-if="facts"
|
|
4
|
-
class="BlockCardGroup"
|
|
5
|
-
>
|
|
6
|
-
<div class="md:grid md:grid-cols-2 lg:grid-cols-3 3xl:grid-cols-4 hidden gap-8">
|
|
7
|
-
<BlockCard
|
|
8
|
-
v-for="(fact, index) of facts"
|
|
9
|
-
:key="`fact-${index}`"
|
|
10
|
-
class="col-span-1"
|
|
11
|
-
:type="fact.type"
|
|
12
|
-
:title="fact.title"
|
|
13
|
-
:text="fact.description"
|
|
14
|
-
:image="fact.image"
|
|
15
|
-
/>
|
|
16
|
-
</div>
|
|
17
|
-
<MixinCarousel
|
|
18
|
-
class="md:hidden sm:px-10 sm:-ml-10 py-10 -mt-10"
|
|
19
|
-
indent="col-1"
|
|
20
|
-
:slides-per-view="3"
|
|
21
|
-
no-links
|
|
22
|
-
>
|
|
23
|
-
<BlockCard
|
|
24
|
-
v-for="(fact, index) of facts"
|
|
25
|
-
:key="index"
|
|
26
|
-
:title="fact.title"
|
|
27
|
-
:text="fact.description"
|
|
28
|
-
:image="fact.image"
|
|
29
|
-
class="swiper-slide mb-5"
|
|
30
|
-
/>
|
|
31
|
-
</MixinCarousel>
|
|
32
|
-
</div>
|
|
33
|
-
</template>
|
|
34
|
-
<script lang="ts">
|
|
35
|
-
import { defineComponent } from 'vue'
|
|
36
|
-
import type { PropType } from 'vue'
|
|
37
|
-
import type { ImageObject } from '../../interfaces'
|
|
38
|
-
import BlockCard from './../BlockCard/BlockCard.vue'
|
|
39
|
-
import MixinCarousel from './../MixinCarousel/MixinCarousel.vue'
|
|
40
|
-
|
|
41
|
-
interface Fact {
|
|
42
|
-
title: string
|
|
43
|
-
type: string
|
|
44
|
-
description: string
|
|
45
|
-
image: Partial<ImageObject>
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export default defineComponent({
|
|
49
|
-
name: 'BlockCardGroup',
|
|
50
|
-
components: {
|
|
51
|
-
MixinCarousel,
|
|
52
|
-
BlockCard
|
|
53
|
-
},
|
|
54
|
-
props: {
|
|
55
|
-
facts: {
|
|
56
|
-
type: Array as PropType<Fact[]>,
|
|
57
|
-
required: false
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
})
|
|
61
|
-
</script>
|