@explorer-1/vue 0.2.7 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/components.d.ts +6 -1
  2. package/dist/explorer-1-vue.js +6871 -6420
  3. package/dist/explorer-1-vue.umd.cjs +13 -13
  4. package/dist/src/components/{BaseTag/BaseTag.stories.d.ts → BasePill/BasePill.stories.d.ts} +2 -2
  5. package/dist/src/components/{BaseTag/BaseTag.vue.d.ts → BasePill/BasePill.vue.d.ts} +7 -3
  6. package/dist/src/components/BlockLinkCard/BlockLinkCard.stories.d.ts +89 -15
  7. package/dist/src/components/BlockLinkCard/BlockLinkCard.vue.d.ts +66 -7
  8. package/dist/src/components/BlockLinkCarousel/BlockLinkCarousel.stories.d.ts +70 -2
  9. package/dist/src/components/BlockLinkTile/BlockLinkTile.vue.d.ts +4 -4
  10. package/dist/src/components/CalendarButton/CalendarButton.vue.d.ts +2 -2
  11. package/dist/src/components/CalendarChip/CalendarChip.vue.d.ts +36 -0
  12. package/dist/src/components/EventCard/EventCard.vue.d.ts +9 -0
  13. package/dist/src/components/EventDetailHero/EventDetailHero.vue.d.ts +27 -9
  14. package/dist/src/components/HeroListingIndex/HeroListingIndex.stories.d.ts +1 -0
  15. package/dist/src/components/HeroListingIndex/HeroListingIndex.vue.d.ts +6 -4
  16. package/dist/src/components/HeroMedium/HeroMedium.vue.d.ts +28 -2
  17. package/dist/src/components/Icons/IconProfile.vue.d.ts +2 -0
  18. package/dist/src/components/Icons/IconSubject.vue.d.ts +2 -0
  19. package/dist/src/components/Icons/Icons.stories.d.ts +17 -0
  20. package/dist/src/components/MetadataEduResource/MetadataEduResource.stories.d.ts +55 -0
  21. package/dist/src/components/MetadataEduResource/MetadataEduResource.vue.d.ts +38 -0
  22. package/dist/src/components/MetadataEvent/MetadataEvent.stories.d.ts +29 -0
  23. package/dist/src/components/MetadataEvent/MetadataEvent.vue.d.ts +38 -0
  24. package/dist/src/components/NavDesktopEdu/NavDesktopEdu.stories.d.ts +1 -0
  25. package/dist/src/components/SearchResultCard/SearchResultCard.stories.d.ts +23 -4
  26. package/dist/src/components/SearchResultCard/SearchResultCard.vue.d.ts +66 -1
  27. package/dist/src/components/SearchResultGridItem/SearchResultGridItem.stories.d.ts +7 -0
  28. package/dist/src/components/SearchResultGridItem/SearchResultGridItem.vue.d.ts +65 -11
  29. package/dist/src/components/SearchResultsList/SearchResultsList.stories.d.ts +404 -0
  30. package/dist/src/components/TopicDetailMoreItem/TopicDetailMoreItem.vue.d.ts +8 -4
  31. package/dist/src/constants.d.ts +4 -0
  32. package/dist/src/interfaces.d.ts +38 -3
  33. package/dist/src/templates/PageContent/PageContent.stories.d.ts +1 -0
  34. package/dist/src/templates/PageEventDetail/PageEventDetail.stories.d.ts +2 -13
  35. package/dist/src/templates/PageEventDetail/PageEventDetail.vue.d.ts +6 -3
  36. package/dist/src/templates/edu/PageEduEventDetail/PageEduEventDetail.stories.d.ts +153 -31
  37. package/dist/src/utils/mixins.d.ts +1 -1
  38. package/dist/src/utils/rangeifyGrades.d.ts +3 -0
  39. package/dist/style.css +1 -1
  40. package/lib/main.ts +2 -2
  41. package/package.json +2 -2
  42. package/src/components/{BaseTag/BaseTag.stories.js → BasePill/BasePill.stories.js} +3 -3
  43. package/src/components/BasePill/BasePill.vue +54 -0
  44. package/src/components/BlockLinkCard/BlockLinkCard.stories.js +93 -12
  45. package/src/components/BlockLinkCard/BlockLinkCard.vue +180 -39
  46. package/src/components/BlockLinkCarousel/BlockLinkCarousel.stories.js +60 -3
  47. package/src/components/BlockLinkTile/BlockLinkTile.vue +11 -8
  48. package/src/components/CalendarChip/CalendarChip.vue +52 -0
  49. package/src/components/DetailHeadline/DetailHeadline.vue +5 -5
  50. package/src/components/EventCard/EventCard.vue +28 -88
  51. package/src/components/EventDetailHero/EventDetailHero.vue +18 -25
  52. package/src/components/HeroListingIndex/HeroListingIndex.stories.js +1 -0
  53. package/src/components/HeroListingIndex/HeroListingIndex.vue +8 -3
  54. package/src/components/HeroMedium/HeroMedium.vue +24 -12
  55. package/src/components/Icons/IconProfile.vue +30 -0
  56. package/src/components/Icons/IconSubject.vue +38 -0
  57. package/src/components/Icons/Icons.stories.ts +15 -0
  58. package/src/components/MetadataEduResource/MetadataEduResource.stories.js +59 -0
  59. package/src/components/MetadataEduResource/MetadataEduResource.vue +93 -0
  60. package/src/components/MetadataEvent/MetadataEvent.stories.js +31 -0
  61. package/src/components/MetadataEvent/MetadataEvent.vue +164 -0
  62. package/src/components/NavMobile/NavMobile.vue +3 -1
  63. package/src/components/SearchResultCard/SearchResultCard.stories.js +22 -5
  64. package/src/components/SearchResultCard/SearchResultCard.vue +71 -14
  65. package/src/components/SearchResultGridItem/SearchResultGridItem.stories.js +8 -1
  66. package/src/components/SearchResultGridItem/SearchResultGridItem.vue +81 -31
  67. package/src/components/SearchResultsList/SearchResultsList.stories.js +1197 -0
  68. package/src/components/SearchResultsList/SearchResultsList.vue +1 -0
  69. package/src/components/TopicDetailMoreItem/TopicDetailMoreItem.vue +12 -8
  70. package/src/constants.ts +20 -0
  71. package/src/interfaces.ts +41 -3
  72. package/src/templates/PageContent/PageContent.stories.js +1 -0
  73. package/src/templates/PageEventDetail/PageEventDetail.stories.js +1 -1
  74. package/src/templates/PageEventDetail/PageEventDetail.vue +25 -90
  75. package/src/templates/edu/PageEduEventDetail/PageEduEventDetail.stories.js +4 -3
  76. package/src/templates/edu/PageEduEventDetail/PageEduEventDetail.vue +38 -123
  77. package/src/utils/mixins.ts +2 -2
  78. package/src/utils/rangeifyGrades.ts +76 -0
  79. package/src/components/BaseTag/BaseTag.vue +0 -36
@@ -40,17 +40,17 @@
40
40
  :class="{ 'xl:px-10 xl:py-6 lg:px-8': !compact }"
41
41
  >
42
42
  <p
43
- v-if="theItem.label || theItem.startDate"
43
+ v-if="theItem.label || (theItem as EventCardObject).startDate"
44
44
  class="text-subtitle divide-white flex divide-x mb-2"
45
45
  >
46
46
  <span
47
47
  v-if="theItem.label"
48
- :class="{ 'pr-2': theItem.startDate }"
48
+ :class="{ 'pr-2': (theItem as EventCardObject).startDate }"
49
49
  >
50
50
  {{ theItem.label }}
51
51
  </span>
52
52
  <span
53
- v-if="theItem.startDate"
53
+ v-if="(theItem as EventCardObject).startDate"
54
54
  :class="{ 'pl-2': theItem.label }"
55
55
  >
56
56
  {{ formattedEventDates }}
@@ -81,7 +81,7 @@
81
81
 
82
82
  <script lang="ts">
83
83
  import type { PropType } from 'vue'
84
- import type { Card } from '../../interfaces'
84
+ import type { Card, EventCardObject } from '../../interfaces'
85
85
  import { defineComponent } from 'vue'
86
86
  import { mixinFormatEventDates } from './../../utils/mixins'
87
87
  import IconArrow from './../Icons/IconArrow.vue'
@@ -101,7 +101,7 @@ export default defineComponent({
101
101
  props: {
102
102
  // if some cards contain external links, be sure to alias the external url as 'externalLink'
103
103
  data: {
104
- type: Object as PropType<Card>,
104
+ type: Object as PropType<Card | EventCardObject>,
105
105
  required: false
106
106
  },
107
107
  // override props as needed
@@ -149,7 +149,7 @@ export default defineComponent({
149
149
  // to allow for various data shapes and sources
150
150
  // use-case: the homepage provides this.data.page with non-page siblings
151
151
  // use-case: search and listing pages pass individual props
152
- theItem(): Card | undefined {
152
+ theItem(): Card | EventCardObject | undefined {
153
153
  if ((this.data as Card)?.page) {
154
154
  return (this.data as Card).page
155
155
  } else if (this.data) {
@@ -177,8 +177,11 @@ export default defineComponent({
177
177
  return undefined
178
178
  },
179
179
  formattedEventDates() {
180
- return this.theItem?.startDate
181
- ? mixinFormatEventDates(this.theItem.startDate, this.theItem.endDate)
180
+ return (this.theItem as EventCardObject)?.startDate
181
+ ? mixinFormatEventDates(
182
+ (this.theItem as EventCardObject).startDate,
183
+ (this.theItem as EventCardObject).endDate
184
+ )
182
185
  : undefined
183
186
  }
184
187
  }
@@ -0,0 +1,52 @@
1
+ <script setup lang="ts">
2
+ import { computed } from 'vue'
3
+ import { useThemeStore } from '../../store/theme'
4
+ import { mixinFormatSplitEventDates } from './../../utils/mixins'
5
+ const themeStore = useThemeStore()
6
+
7
+ interface CalendarChipProps {
8
+ startDate?: string
9
+ endDate?: string
10
+ ongoing?: boolean
11
+ }
12
+
13
+ // define props
14
+ const props = withDefaults(defineProps<CalendarChipProps>(), {
15
+ startDate: undefined,
16
+ endDate: undefined,
17
+ ongoing: false
18
+ })
19
+
20
+ const splitDate = computed(() => {
21
+ if (props.startDate) {
22
+ return mixinFormatSplitEventDates(props.startDate, props.endDate)
23
+ }
24
+ return undefined
25
+ })
26
+ </script>
27
+ <template>
28
+ <div
29
+ v-if="splitDate || ongoing"
30
+ class="hidden md:block absolute top-0 left-0 z-10 px-4 py-4 text-center text-white bg-primary ThemeVariantLight"
31
+ >
32
+ <template v-if="ongoing">
33
+ <div class="text-subtitle">Ongoing</div>
34
+ </template>
35
+ <template v-else-if="themeStore.isEdu && splitDate">
36
+ <div class="font-extrabold text-6xl leading-tight tracking-wider uppercase">
37
+ {{ splitDate.month }}
38
+ </div>
39
+ <div class="text-subtitle">
40
+ {{ splitDate.year }}
41
+ </div>
42
+ </template>
43
+ <template v-else-if="splitDate">
44
+ <div class="font-extrabold text-6xl leading-tight tracking-wider">
45
+ {{ splitDate.day }}
46
+ </div>
47
+ <div class="text-subtitle">
48
+ {{ splitDate.monthAndYear }}
49
+ </div>
50
+ </template>
51
+ </div>
52
+ </template>
@@ -5,18 +5,18 @@
5
5
  class="flex flex-wrap items-center mb-3"
6
6
  >
7
7
  <template v-if="pill && pillLabel">
8
- <BaseTag
8
+ <BasePill
9
9
  :variant="pillColor"
10
10
  size="lg"
11
11
  class="mr-3"
12
12
  >
13
13
  {{ pillLabel }}
14
- </BaseTag>
14
+ </BasePill>
15
15
  </template>
16
16
  <template v-else>
17
17
  <div
18
18
  v-if="topics && topics.length"
19
- class="inline"
19
+ class="inline edu:text-primary"
20
20
  >
21
21
  <BaseLink
22
22
  variant="secondary"
@@ -122,7 +122,7 @@ import { useThemeStore } from '../../store/theme'
122
122
  import type { Topic, AuthorObject } from './../../interfaces'
123
123
  import BaseLink from './../BaseLink/BaseLink.vue'
124
124
  import BaseHeading from './../BaseHeading/BaseHeading.vue'
125
- import BaseTag from '../BaseTag/BaseTag.vue'
125
+ import BasePill from '../BasePill/BasePill.vue'
126
126
 
127
127
  export const pillColorVariants = ['primary', 'secondary', 'action']
128
128
 
@@ -131,7 +131,7 @@ export default defineComponent({
131
131
  components: {
132
132
  BaseLink,
133
133
  BaseHeading,
134
- BaseTag
134
+ BasePill
135
135
  },
136
136
  props: {
137
137
  title: {
@@ -22,27 +22,18 @@
22
22
  >
23
23
  {{ summary }}
24
24
  </p>
25
-
26
- <div class="md:mt-10 text-xl md:flex">
27
- <div class="EventCard__Metadata flex text-primary text-body-sm">
28
- <IconCalendar class="relative mr-3" />
29
- <span> {{ formattedEventDates }}</span>
30
- </div>
31
- <div
32
- v-show="displayTime"
33
- class="EventCard__Metadata hidden md:flex text-primary text-body-sm"
34
- >
35
- <IconTime class="relative mr-3" />
36
- <span>{{ displayTime }}</span>
37
- </div>
38
- <div
39
- v-if="location"
40
- class="EventCard__Metadata flex text-primary text-body-sm"
41
- >
42
- <IconLocation class="relative mr-3" />
43
- <span>{{ location }}</span>
44
- </div>
45
- </div>
25
+ <MetadataEvent
26
+ class="mt-6 lg:mt-8 block lg:flex"
27
+ :event="{
28
+ startTime,
29
+ endTime,
30
+ startDate,
31
+ endDate,
32
+ location
33
+ }"
34
+ compact
35
+ allow-break
36
+ />
46
37
  </div>
47
38
  <div
48
39
  v-if="image"
@@ -61,27 +52,11 @@
61
52
  object-fit-class="cover"
62
53
  loading="lazy"
63
54
  />
64
- <div
65
- v-if="splitDate"
66
- class="hidden md:block absolute top-0 left-0 z-10 px-4 py-4 text-center text-white bg-primary"
67
- >
68
- <template v-if="themeStore.isEdu">
69
- <div class="font-extrabold text-6xl leading-tight tracking-wider">
70
- {{ splitDate.month }}
71
- </div>
72
- <div class="text-subtitle">
73
- {{ splitDate.year }}
74
- </div>
75
- </template>
76
- <template v-else>
77
- <div class="font-extrabold text-6xl leading-tight tracking-wider">
78
- {{ splitDate.day }}
79
- </div>
80
- <div class="text-subtitle">
81
- {{ splitDate.monthAndYear }}
82
- </div>
83
- </template>
84
- </div>
55
+ <CalendarChip
56
+ :start-date="startDate"
57
+ :end-date="endDate"
58
+ :ongoing="ongoing"
59
+ />
85
60
  </BaseImagePlaceholder>
86
61
  </div>
87
62
  </div>
@@ -91,18 +66,15 @@
91
66
  <script lang="ts">
92
67
  import type { PropType } from 'vue'
93
68
  import { defineComponent } from 'vue'
94
- import {
95
- mixinFormatEventDates,
96
- mixinFormatSplitEventDates,
97
- mixinFormatEventTimeInHoursAndMinutes,
98
- type EventDateObject
99
- } from './../../utils/mixins'
100
69
  import { mapStores } from 'pinia'
101
70
  import { useThemeStore } from '../../store/theme'
102
71
  import BaseLink from './../BaseLink/BaseLink.vue'
103
72
  import BaseHeading from './../BaseHeading/BaseHeading.vue'
104
73
  import BaseImage from './../BaseImage/BaseImage.vue'
105
74
  import BaseImagePlaceholder from './../BaseImagePlaceholder/BaseImagePlaceholder.vue'
75
+ import CalendarChip from './../CalendarChip/CalendarChip.vue'
76
+ import MetadataEvent from './../../components/MetadataEvent/MetadataEvent.vue'
77
+
106
78
  import type { HeadingLevel } from './../BaseHeading/BaseHeading.vue'
107
79
 
108
80
  export default defineComponent({
@@ -111,7 +83,9 @@ export default defineComponent({
111
83
  BaseLink,
112
84
  BaseHeading,
113
85
  BaseImage,
114
- BaseImagePlaceholder
86
+ BaseImagePlaceholder,
87
+ CalendarChip,
88
+ MetadataEvent
115
89
  },
116
90
  props: {
117
91
  url: {
@@ -135,6 +109,10 @@ export default defineComponent({
135
109
  type: String,
136
110
  required: false
137
111
  },
112
+ ongoing: {
113
+ type: Boolean,
114
+ default: false
115
+ },
138
116
  endTime: {
139
117
  type: String,
140
118
  required: false
@@ -158,45 +136,7 @@ export default defineComponent({
158
136
  }
159
137
  },
160
138
  computed: {
161
- ...mapStores(useThemeStore),
162
- splitDate(): EventDateObject | null {
163
- if (this.startDate) {
164
- return mixinFormatSplitEventDates(this.startDate, this.endDate)
165
- }
166
- return null
167
- },
168
- displayTime(): string | undefined {
169
- if (this.startDate) {
170
- return mixinFormatEventTimeInHoursAndMinutes(this.startDate, this.endDate, this.endTime)
171
- }
172
- return undefined
173
- },
174
- formattedEventDates() {
175
- return this.startDate ? mixinFormatEventDates(this.startDate, this.endDate) : undefined
176
- }
139
+ ...mapStores(useThemeStore)
177
140
  }
178
141
  })
179
142
  </script>
180
- <style lang="scss">
181
- .EventCard {
182
- .EventCard__Metadata {
183
- @apply items-baseline;
184
- @apply mr-0;
185
- @apply mb-4;
186
- @apply md:mb-0;
187
- @apply md:mr-3;
188
- @apply lg:mr-6;
189
-
190
- span {
191
- max-width: 230px;
192
- min-width: 110px;
193
- @apply text-gray-dark;
194
- }
195
-
196
- svg {
197
- min-width: 1.25rem;
198
- @apply top-0.5;
199
- }
200
- }
201
- }
202
- </style>
@@ -19,40 +19,29 @@
19
19
  object-fit-class="cover"
20
20
  loading="lazy"
21
21
  />
22
- <div
23
- v-if="startDateSplit || ongoing"
24
- class="ThemeVariantLight absolute top-0 left-0 z-10 px-4 py-4 text-center text-white bg-primary print:hidden"
25
- >
26
- <template v-if="ongoing">
27
- <div class="text-subtitle">Ongoing</div>
28
- </template>
29
- <template v-else>
30
- <div class="font-extrabold text-6xl leading-tight tracking-wider uppercase">
31
- {{ themeStore.isEdu ? startDateSplit?.month : startDateSplit?.day }}
32
- </div>
33
- <div class="text-subtitle">
34
- {{ themeStore.isEdu ? startDateSplit?.year : startDateSplit?.monthAndYear }}
35
- </div>
36
- </template>
37
- </div>
22
+ <CalendarChip
23
+ v-if="startDate || ongoing"
24
+ :start-date="startDate"
25
+ :end-date="endDate"
26
+ :ongoing="ongoing"
27
+ />
38
28
  </BaseImagePlaceholder>
39
29
  </div>
40
30
  </div>
41
31
  </template>
42
32
  <script lang="ts">
43
33
  import { defineComponent } from 'vue'
44
- import { mapStores } from 'pinia'
45
- import { useThemeStore } from '../../store/theme'
46
34
  import BaseImage from '../BaseImage/BaseImage.vue'
47
35
  import BaseImagePlaceholder from '../BaseImagePlaceholder/BaseImagePlaceholder.vue'
48
- import { mixinGetSrcSet, type EventDateObject } from './../../utils/mixins'
49
- import type { PropType } from 'vue'
36
+ import CalendarChip from '../CalendarChip/CalendarChip.vue'
37
+ import { mixinGetSrcSet } from './../../utils/mixins'
50
38
 
51
39
  export default defineComponent({
52
40
  name: 'EventDetailHero',
53
41
  components: {
54
42
  BaseImage,
55
- BaseImagePlaceholder
43
+ BaseImagePlaceholder,
44
+ CalendarChip
56
45
  },
57
46
  props: {
58
47
  data: {
@@ -60,9 +49,14 @@ export default defineComponent({
60
49
  required: false,
61
50
  default: undefined
62
51
  },
63
- startDateSplit: {
64
- type: Object as PropType<EventDateObject | undefined>,
65
- required: true
52
+ startDate: {
53
+ type: String,
54
+ required: false,
55
+ default: undefined
56
+ },
57
+ endDate: {
58
+ type: String,
59
+ default: undefined
66
60
  },
67
61
  ongoing: {
68
62
  type: Boolean,
@@ -80,7 +74,6 @@ export default defineComponent({
80
74
  }
81
75
  },
82
76
  computed: {
83
- ...mapStores(useThemeStore),
84
77
  getSrcSet() {
85
78
  return this.image ? mixinGetSrcSet(this.image) : undefined
86
79
  }
@@ -13,6 +13,7 @@ export default {
13
13
  export const HeroListingIndexData = {
14
14
  listingPage: {
15
15
  featured: {
16
+ __typename: 'EDUExplainerArticlePage',
16
17
  topicLabel: 'Mars',
17
18
  url: '/news/new-maps-open-roads-to-research/',
18
19
  title: 'Creating Robots to go Where Humans Can’t',
@@ -7,7 +7,12 @@
7
7
  <HeroMedium
8
8
  v-if="pageData.featured"
9
9
  class="md:mb-12 lg:mb-18 mb-10"
10
- :custom-tag="themeStore.theme === 'ThemeEdu' && customLabel ? customLabel : undefined"
10
+ :custom-pill="themeStore.theme === 'ThemeEdu' && customLabel ? customLabel : undefined"
11
+ :custom-pill-type="
12
+ themeStore.theme === 'ThemeEdu' && pageData.featured?.__typename
13
+ ? pageData.featured.__typename
14
+ : undefined
15
+ "
11
16
  :custom-label="themeStore.theme === 'ThemeEdu' ? pageData.featured.topicLabel : customLabel"
12
17
  :feature="pageData.featured"
13
18
  :custom-video="customVideo"
@@ -34,11 +39,11 @@ export default defineComponent({
34
39
  // pass these directly to HeroMedium
35
40
  pageData: {
36
41
  type: Object,
37
- required: false
42
+ default: undefined
38
43
  },
39
44
  customLabel: {
40
45
  type: String,
41
- required: false
46
+ default: undefined
42
47
  },
43
48
  cta: {
44
49
  type: String,
@@ -52,16 +52,18 @@
52
52
  class="lg:w-1/2 xl:w-5/12 block"
53
53
  >
54
54
  <div
55
- v-if="customTag || customLabel || feature.label"
55
+ v-if="customPill || customLabel || feature.label"
56
56
  class="flex items-center lg:mb-3 mb-2"
57
57
  >
58
- <BaseTag
59
- v-if="customTag"
58
+ <BasePill
59
+ v-if="customPill || customPillType"
60
60
  variant="primary"
61
61
  size="sm"
62
62
  class="mr-3"
63
- >{{ customTag }}</BaseTag
63
+ :content-type="customPillType"
64
64
  >
65
+ {{ customPill }}
66
+ </BasePill>
65
67
  <p
66
68
  v-if="customLabel || feature.label"
67
69
  class="text-subtitle"
@@ -102,7 +104,7 @@ import { mixinTransparentHeader } from '../../utils/mixins'
102
104
  import type { ImageObject } from '../../interfaces'
103
105
  import IconArrow from './../Icons/IconArrow.vue'
104
106
  import BaseLink from './../BaseLink/BaseLink.vue'
105
- import BaseTag from './../BaseTag/BaseTag.vue'
107
+ import BasePill from './../BasePill/BasePill.vue'
106
108
  import MixinVideoBg from './../MixinVideoBg/MixinVideoBg.vue'
107
109
 
108
110
  export default defineComponent({
@@ -111,20 +113,28 @@ export default defineComponent({
111
113
  IconArrow,
112
114
  BaseLink,
113
115
  MixinVideoBg,
114
- BaseTag
116
+ BasePill
115
117
  },
116
118
  props: {
117
119
  feature: {
118
120
  type: Object,
119
- required: false
121
+ required: false,
122
+ default: undefined
123
+ },
124
+ customPill: {
125
+ type: String,
126
+ required: false,
127
+ default: undefined
120
128
  },
121
- customTag: {
129
+ customPillType: {
122
130
  type: String,
123
- required: false
131
+ required: false,
132
+ default: undefined
124
133
  },
125
134
  customLabel: {
126
135
  type: String,
127
- required: false
136
+ required: false,
137
+ default: undefined
128
138
  },
129
139
  cta: {
130
140
  type: String,
@@ -139,11 +149,13 @@ export default defineComponent({
139
149
  // use-case: news detail pages use this b/c their feature hero is structured differently
140
150
  customVideo: {
141
151
  type: Object,
142
- required: false
152
+ required: false,
153
+ default: undefined
143
154
  },
144
155
  customImage: {
145
156
  type: Object,
146
- required: false
157
+ required: false,
158
+ default: undefined
147
159
  }
148
160
  },
149
161
  computed: {
@@ -0,0 +1,30 @@
1
+ <template>
2
+ <svg
3
+ aria-hidden="true"
4
+ focusable="false"
5
+ width="46"
6
+ height="45"
7
+ viewBox="0 0 46 45"
8
+ fill="none"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ class="IconProfile"
11
+ >
12
+ <g>
13
+ <path
14
+ d="M13.9894 13.4006C13.9894 18.4942 18.0797 22.5844 23.1733 22.5844C28.1957 22.5844 32.3571 18.4954 32.3571 13.4006C32.3571 8.37686 28.197 4.2168 23.1733 4.2168C18.0784 4.2168 13.9894 8.37814 13.9894 13.4006ZM16.7229 13.4006C16.7229 9.90763 19.6138 6.95025 23.1733 6.95025C26.6645 6.95025 29.6236 9.90933 29.6236 13.4006C29.6236 16.96 26.6662 19.851 23.1733 19.851C19.6122 19.851 16.7229 16.9617 16.7229 13.4006ZM39.0574 37.829C39.0574 30.9906 33.5015 25.4346 26.663 25.4346H19.6137C12.7734 25.4346 7.28906 30.9925 7.28906 37.829C7.28906 39.2932 8.44792 40.4521 9.91211 40.4521H36.3646C37.8193 40.4521 39.0574 39.3026 39.0574 37.829ZM26.663 28.1681C31.9322 28.1681 36.2635 32.4628 36.3234 37.7186H10.0231C10.0821 32.4605 14.3468 28.1681 19.6137 28.1681H26.663Z"
15
+ fill="currentColor"
16
+ stroke="currentColor"
17
+ stroke-width="0.5"
18
+ />
19
+ </g>
20
+ </svg>
21
+ </template>
22
+ <script lang="ts">
23
+ import { defineComponent } from 'vue'
24
+ export default defineComponent({
25
+ name: 'IconProfile'
26
+ })
27
+ </script>
28
+ <style lang="scss">
29
+ @import '@explorer-1/common/src/scss/components/IconProfile';
30
+ </style>
@@ -0,0 +1,38 @@
1
+ <template>
2
+ <svg
3
+ aria-hidden="true"
4
+ focusable="false"
5
+ width="46"
6
+ height="41"
7
+ viewBox="0 0 46 41"
8
+ fill="none"
9
+ class="IconSubject"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ >
12
+ <g>
13
+ <path
14
+ fill-rule="evenodd"
15
+ clip-rule="evenodd"
16
+ d="M19.432 29.3991C20.5448 29.4683 21.6743 29.5115 22.8336 29.5115C23.9891 29.5115 25.1213 29.4766 26.2281 29.4074C25.1136 30.9099 23.9719 32.2618 22.8336 33.4488C21.6948 32.2585 20.5504 30.9038 19.432 29.3991ZM34.3335 28.2116C34.5576 29.0992 34.7452 29.9614 34.8692 30.7715C35.1713 32.7687 35.1664 34.5013 34.872 35.8239C34.2981 38.432 32.125 39.2427 30.047 38.6108C28.7499 38.2162 27.2452 37.3452 25.6686 36.0829C25.0289 35.5705 24.3754 34.9761 23.7207 34.3425C25.1241 32.8788 26.5225 31.1777 27.865 29.2813C30.1881 29.0649 32.3618 28.6986 34.3335 28.2116ZM32.2002 22.0292C32.9467 23.7496 33.546 25.4192 34.0076 27.0046C32.4077 27.3964 30.6585 27.7047 28.7997 27.9205C29.4134 26.9897 30.0182 26.0323 30.5976 25.0268C31.1803 24.0241 31.7044 23.0236 32.2002 22.0292ZM13.4654 22.0269C13.9612 23.0208 14.4891 24.0241 15.068 25.0268C15.6474 26.0323 16.2528 26.9897 16.8665 27.9177C15.0043 27.7014 13.2606 27.3876 11.6586 26.9952C12.1201 25.4126 12.7227 23.7447 13.4654 22.0269ZM10.4461 14.4201C11.0106 16.3664 11.7831 18.4233 12.7543 20.5361C11.7798 22.6573 11.01 24.7214 10.4461 26.6721C9.56678 26.4241 8.7284 26.1563 7.96362 25.8569C6.08212 25.122 4.58576 24.2482 3.5858 23.3318C1.61132 21.5278 1.99482 19.2479 3.5858 17.7604C4.57746 16.8351 6.08212 15.9707 7.96362 15.2353C8.72785 14.9392 9.56678 14.6708 10.4461 14.4201ZM28.8107 13.175C30.6701 13.3914 32.4077 13.7057 34.0042 14.0975C33.5433 15.6802 32.944 17.3464 32.2002 19.0641C31.7044 18.0691 31.1798 17.0697 30.5976 16.0664C30.0215 15.0659 29.4244 14.1003 28.8107 13.175ZM16.867 13.175C16.2533 14.103 15.6474 15.0604 15.0685 16.0659C14.4925 17.0664 13.9562 18.0631 13.4637 19.0553C12.72 17.3403 12.1234 15.6774 11.6619 14.0975C13.2645 13.7057 15.0082 13.3908 16.867 13.175ZM22.8336 12.8347C24.3233 12.8347 25.7787 12.8983 27.1794 13.014C27.984 14.1728 28.7681 15.3974 29.5141 16.6918C30.2584 17.9828 30.9324 19.2744 31.5317 20.5483C30.9319 21.8189 30.2578 23.1099 29.5141 24.4043C28.7681 25.6926 27.9867 26.92 27.1854 28.076C25.7815 28.1944 24.3289 28.2575 22.8336 28.2575C21.34 28.2575 19.888 28.1972 18.484 28.0821C17.6827 26.9227 16.9024 25.6953 16.1554 24.4043C15.4089 23.1132 14.7371 21.8216 14.1355 20.5511C14.7404 19.2766 15.4089 17.9856 16.1554 16.6912C16.9024 15.3968 17.6827 14.1689 18.484 13.0134C19.888 12.8983 21.34 12.8347 22.8336 12.8347ZM22.8364 7.64116C23.978 8.83205 25.1185 10.1895 26.2375 11.6941C25.1246 11.625 23.9952 11.5785 22.8342 11.5785C21.6748 11.5785 20.5454 11.625 19.4325 11.6941C20.5504 10.1895 21.6948 8.83149 22.8364 7.64116ZM34.8725 5.26935C35.1807 6.58918 35.1719 8.32404 34.8697 10.3212C34.7458 11.1314 34.5582 11.9963 34.3341 12.8839C32.3684 12.3997 30.1975 12.0361 27.8827 11.8203C26.5336 9.91502 25.1307 8.21779 23.724 6.75021C24.3781 6.11382 25.0295 5.52225 25.6692 5.01258C27.2463 3.75031 28.7593 2.90529 30.0475 2.4814C32.5206 1.66959 34.3651 3.08791 34.8725 5.26935ZM9.57508 4.98989C9.21538 6.53439 9.23807 8.41092 9.55793 10.5149C9.68686 11.3737 9.88332 12.2791 10.1163 13.2065C9.19712 13.4694 8.31558 13.7516 7.50819 14.0687C5.52541 14.8412 3.88518 15.7577 2.72971 16.8417C0.264935 19.1565 0.587559 22.2455 2.72971 24.2521C3.88795 25.3356 5.52541 26.252 7.50819 27.0279C10.3183 28.123 13.855 28.9072 17.7951 29.273C19.1409 31.1755 20.5415 32.8761 21.9482 34.3431C21.2908 34.9767 20.6361 35.571 19.9964 36.0835C18.4198 37.3457 16.9124 38.2018 15.618 38.6113C13.1306 39.3955 11.3415 38.0203 10.8219 35.9396C10.5114 34.6801 10.4876 33.0199 10.7505 31.1119L9.50535 30.9392C9.22866 32.9563 9.23143 34.7553 9.6033 36.2329C10.4101 39.4558 13.2462 40.6428 15.9899 39.8072C17.5062 39.349 19.1199 38.3916 20.7833 37.063C21.4607 36.5212 22.1469 35.8986 22.8336 35.2329C23.5215 35.8986 24.2077 36.5212 24.8856 37.063C26.5457 38.3916 28.1594 39.349 29.6757 39.8072C32.9124 40.7867 35.4287 38.9633 36.0938 36.1039C36.4546 34.5589 36.4308 32.6851 36.1115 30.5806C35.6567 27.5973 34.5637 24.142 32.9124 20.5483C33.8831 18.4299 34.6561 16.3691 35.2211 14.4201C36.0999 14.6708 36.9416 14.9392 37.7025 15.2358C39.5846 15.9707 41.0831 16.8445 42.0837 17.7609C44.0089 19.5251 43.715 21.7586 42.1667 23.2516C41.2326 24.1536 39.8093 25.0014 38.0251 25.7302L38.5005 26.8912C40.3853 26.1214 41.9359 25.2233 43.0344 24.1619C45.4206 21.8532 45.0315 18.8035 42.9359 16.8412C41.7776 15.7571 40.1435 14.8407 38.1602 14.0682C37.3506 13.7516 36.4712 13.4689 35.5493 13.206C35.7828 12.2785 35.9787 11.3732 36.1115 10.5143C36.4308 8.40981 36.4546 6.53384 36.0938 4.98934C35.3219 1.69781 32.4858 0.432772 29.6757 1.28554C28.1594 1.74651 26.5457 2.70054 24.8856 4.03199C22.5315 5.9146 20.0839 8.58911 17.7956 11.8198C15.478 12.0361 13.3054 12.3964 11.3332 12.8834C11.1113 11.9957 10.9242 11.1308 10.8003 10.3206C10.4948 8.32348 10.5003 6.59194 10.7942 5.2688C11.3592 2.72046 13.446 1.85608 15.5096 2.44931C16.7575 2.80735 18.2073 3.61639 19.7297 4.79898L20.4994 3.80731C18.8908 2.55666 17.3258 1.68895 15.8643 1.24459C12.777 0.30328 10.2264 2.19088 9.57508 4.98989Z"
17
+ fill="currentColor"
18
+ stroke="currentColor"
19
+ />
20
+ <path
21
+ fill-rule="evenodd"
22
+ clip-rule="evenodd"
23
+ d="M22.8301 17.3904C24.5826 17.3904 25.9888 18.7976 25.9888 20.5496C25.9888 22.2989 24.5826 23.7056 22.8301 23.7056C21.0775 23.7056 19.673 22.2989 19.673 20.5496C19.6736 18.7976 21.0775 17.3904 22.8301 17.3904ZM22.8301 16.1309C20.3996 16.1309 18.4141 18.117 18.4141 20.5502C18.4141 22.9801 20.4002 24.9596 22.8301 24.9596C25.26 24.9596 27.2422 22.9795 27.2422 20.5502C27.2422 18.117 25.26 16.1309 22.8301 16.1309Z"
24
+ fill="currentColor"
25
+ stroke="currentColor"
26
+ />
27
+ </g>
28
+ </svg>
29
+ </template>
30
+ <script lang="ts">
31
+ import { defineComponent } from 'vue'
32
+ export default defineComponent({
33
+ name: 'IconSubject'
34
+ })
35
+ </script>
36
+ <style lang="scss">
37
+ @import '@explorer-1/common/src/scss/components/IconSubject';
38
+ </style>
@@ -34,6 +34,7 @@ import IconPause from './IconPause.vue'
34
34
  import IconPlay from './IconPlay.vue'
35
35
  import IconPlus from './IconPlus.vue'
36
36
  import IconPrev from './IconPrev.vue'
37
+ import IconProfile from './IconProfile.vue'
37
38
  import IconRewindTen from './IconRewindTen.vue'
38
39
  import IconSearch from './IconSearch.vue'
39
40
  import IconShare from './IconShare.vue'
@@ -47,6 +48,7 @@ import IconSocialReddit from './IconSocialReddit.vue'
47
48
  import IconSocialTwitter from './IconSocialTwitter.vue'
48
49
  import IconSocialYoutube from './IconSocialYoutube.vue'
49
50
  import IconStop from './IconStop.vue'
51
+ import IconSubject from './IconSubject.vue'
50
52
  import IconTime from './IconTime.vue'
51
53
  import IconUniversity from './IconUniversity.vue'
52
54
  import IconUser from './IconUser.vue'
@@ -92,6 +94,7 @@ export default {
92
94
  IconPlay,
93
95
  IconPlus,
94
96
  IconPrev,
97
+ IconProfile,
95
98
  IconRewindTen,
96
99
  IconSearch,
97
100
  IconShare,
@@ -432,6 +435,18 @@ export const User = {
432
435
  template: '<IconUser />'
433
436
  })
434
437
  }
438
+ export const Profile = {
439
+ render: () => ({
440
+ components: { IconProfile },
441
+ template: '<IconProfile />'
442
+ })
443
+ }
444
+ export const Subject = {
445
+ render: () => ({
446
+ components: { IconSubject },
447
+ template: '<IconSubject />'
448
+ })
449
+ }
435
450
  export const Volume = {
436
451
  render: () => ({
437
452
  components: { IconVolume },