@explorer-1/vue 0.2.76 → 0.2.78
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/package.json +2 -2
- package/src/components/BaseLink/BaseLink.vue +22 -1
- package/src/components/BlockLinkCard/BlockLinkCard.vue +13 -1
- package/src/components/BlockText/BlockText.stories.js +2 -2
- package/src/components/EduSubjectIcon/EduSubjectIcon.vue +52 -0
- package/src/components/Icons/IconEduArt.vue +29 -0
- package/src/components/Icons/IconEduEngineering.vue +29 -0
- package/src/components/Icons/IconEduEnglishLanguageArts.vue +29 -0
- package/src/components/Icons/IconEduMathematics.vue +29 -0
- package/src/components/Icons/IconEduScience.vue +29 -0
- package/src/components/Icons/IconEduTechnology.vue +29 -0
- package/src/components/Icons/Icons.stories.ts +45 -8
- package/src/components/MetaPanelItems/MetaPanelItems.vue +6 -2
- package/src/components/MetadataEduResource/MetadataEduResource.vue +8 -4
- package/src/components/NavJumpMenu/NavJumpMenu.vue +18 -8
- package/src/components/NavSecondary/NavSecondary.vue +28 -22
- package/src/components/ShareButtonsEdu/ShareButtonsEdu.vue +1 -1
- package/src/templates/edu/PageEduCollectionsDetail/PageEduCollectionsDetail.stories.js +37 -0
- package/src/templates/edu/PageEduCollectionsDetail/PageEduCollectionsDetail.vue +20 -11
- package/src/templates/edu/PageEduExplainerArticle/PageEduExplainerArticle.vue +8 -8
- package/src/templates/edu/PageEduGalleryDetail/PageEduGalleryDetail.vue +6 -6
- package/src/templates/edu/PageEduLesson/PageEduLesson.vue +7 -7
- package/src/templates/edu/PageEduStudentProject/PageEduStudentProject.vue +14 -12
- package/src/templates/edu/PageEduStudentProject/PageEduStudentProjectSection.vue +3 -3
- package/src/templates/edu/PageEduTeachableMoment/PageEduTeachableMoment.vue +1 -0
- package/src/utils/isEduExternalLink.ts +12 -0
- package/src/components/Icons/IconSubject.vue +0 -38
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@explorer-1/vue",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.78",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"vue-bind-once": "^0.2.1",
|
|
31
31
|
"vue3-compare-image": "^1.2.5",
|
|
32
32
|
"vue3-observe-visibility": "^1.0.1",
|
|
33
|
-
"@explorer-1/common": "1.1.
|
|
33
|
+
"@explorer-1/common": "1.1.21"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@vitejs/plugin-vue": "^5.0.4",
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { defineComponent } from 'vue'
|
|
3
|
+
import { mapStores } from 'pinia'
|
|
4
|
+
import { useThemeStore } from '../../store/theme'
|
|
3
5
|
import { eventBus } from './../../utils/eventBus'
|
|
4
6
|
import MixinAnimationCaret from './../MixinAnimationCaret/MixinAnimationCaret.vue'
|
|
7
|
+
import { isEduExternalLink } from './../../utils/isEduExternalLink'
|
|
5
8
|
|
|
6
9
|
interface Variants {
|
|
7
10
|
[key: string]: string
|
|
@@ -111,6 +114,7 @@ export default defineComponent({
|
|
|
111
114
|
},
|
|
112
115
|
emits: ['linkClicked', 'specificLinkClicked'],
|
|
113
116
|
computed: {
|
|
117
|
+
...mapStores(useThemeStore),
|
|
114
118
|
computedVariants(): Variants {
|
|
115
119
|
if (this.usePrimaryColor) {
|
|
116
120
|
return primaryColorVariants
|
|
@@ -127,10 +131,27 @@ export default defineComponent({
|
|
|
127
131
|
}
|
|
128
132
|
return classes
|
|
129
133
|
},
|
|
134
|
+
isEduExternal(): boolean | string {
|
|
135
|
+
if (this.href) {
|
|
136
|
+
return isEduExternalLink(this.href)
|
|
137
|
+
}
|
|
138
|
+
return ''
|
|
139
|
+
},
|
|
140
|
+
isExternal(): boolean {
|
|
141
|
+
if (this.href) {
|
|
142
|
+
if (this.themeStore.isEdu && isEduExternalLink(this.href)) {
|
|
143
|
+
return true
|
|
144
|
+
} else if (!this.themeStore.isEdu) {
|
|
145
|
+
return true
|
|
146
|
+
}
|
|
147
|
+
return false
|
|
148
|
+
}
|
|
149
|
+
return false
|
|
150
|
+
},
|
|
130
151
|
theTarget(): string | undefined {
|
|
131
152
|
if (this.target) {
|
|
132
153
|
return this.target
|
|
133
|
-
} else if (this.
|
|
154
|
+
} else if (this.isExternal && this.externalTargetBlank) {
|
|
134
155
|
return '_blank'
|
|
135
156
|
}
|
|
136
157
|
return undefined
|
|
@@ -105,7 +105,13 @@
|
|
|
105
105
|
</span>
|
|
106
106
|
<span class="sr-only">.</span>
|
|
107
107
|
</p>
|
|
108
|
-
<template
|
|
108
|
+
<template
|
|
109
|
+
v-if="
|
|
110
|
+
theItem.externalLink &&
|
|
111
|
+
themeStore.isEdu &&
|
|
112
|
+
isEduExternalLink(theItem.externalLink)
|
|
113
|
+
"
|
|
114
|
+
>
|
|
109
115
|
<IconExternal
|
|
110
116
|
class="text-primary ml-2"
|
|
111
117
|
:class="{ 'text-sm mt-1px': small, '-mt-1px': medium, '-mt-.5': large }"
|
|
@@ -188,6 +194,7 @@ import { defineComponent } from 'vue'
|
|
|
188
194
|
import { mapStores } from 'pinia'
|
|
189
195
|
import { useThemeStore } from '../../store/theme'
|
|
190
196
|
import { mixinFormatEventDates } from './../../utils/mixins'
|
|
197
|
+
import { isEduExternalLink } from './../../utils/isEduExternalLink'
|
|
191
198
|
import type { HeadingLevel } from './../BaseHeading/BaseHeading.vue'
|
|
192
199
|
import IconArrow from './../Icons/IconArrow.vue'
|
|
193
200
|
import IconExternal from './../Icons/IconExternal.vue'
|
|
@@ -389,6 +396,11 @@ export default defineComponent({
|
|
|
389
396
|
)
|
|
390
397
|
: undefined
|
|
391
398
|
}
|
|
399
|
+
},
|
|
400
|
+
methods: {
|
|
401
|
+
isEduExternalLink(url: string): boolean {
|
|
402
|
+
return isEduExternalLink(url)
|
|
403
|
+
}
|
|
392
404
|
}
|
|
393
405
|
})
|
|
394
406
|
</script>
|
|
@@ -19,13 +19,13 @@ export default {
|
|
|
19
19
|
excludeStories: /.*Data$/
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
export const RichTextMediaData = `<p data-block-key="5f55p">Description for it.</p><div class="richtext-image fullwidth"><img alt="Perseverance Looks Back at &#x27;Bright Angel&#x27;" height="480" loading="lazy" src="https://picsum.photos/640/480" width="640">
|
|
22
|
+
export const RichTextMediaData = `<h2>A heading in BlockText</h2><p data-block-key="5f55p">Description for it.</p><div class="richtext-image fullwidth"><img alt="Perseverance Looks Back at &#x27;Bright Angel&#x27;" height="480" loading="lazy" src="https://picsum.photos/640/480" width="640">
|
|
23
23
|
<div class="richtext-caption">
|
|
24
24
|
<div class="caption">One of the navigation cameras aboard NASAs Perseverance Mars rover captured this view looking back at the Bright Angel area on July 30, 2024.</div>
|
|
25
25
|
<span class="credit">Credit: NASA/JPL-Caltech</span>
|
|
26
26
|
<a class="caption-link" href="#">Full Image Details</a>
|
|
27
27
|
</div>
|
|
28
|
-
</div><p data-block-key="89jcq">More text and another image that's full width (above)</p><p data-block-key="6jsp"></p><div class="richtext-image left"><img alt="Carbon Mapper Coalition&#x27;s Tanager Satellite" height="336" loading="lazy" src="https://picsum.photos/640/336" width="640">
|
|
28
|
+
</div><h3>Subheading in BlockText</h3><p data-block-key="89jcq">More text and another image that's full width (above)</p><p data-block-key="6jsp"></p><div class="richtext-image left"><img alt="Carbon Mapper Coalition&#x27;s Tanager Satellite" height="336" loading="lazy" src="https://picsum.photos/640/336" width="640">
|
|
29
29
|
<div class="richtext-caption">
|
|
30
30
|
<div class="caption">This artists concept depicts one of the Carbon Mapper Coalitions Tanager satellites, the first of which launched on Aug. 16, 2024. Tanager-1 will use imaging spectrometer technology developed at JPL to measure greenhouse gas point-source emissions.</div>
|
|
31
31
|
<span class="credit">Credit: Planet Labs PBC</span>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed, reactive } from 'vue'
|
|
3
|
+
import IconEduArt from '../Icons/IconEduArt.vue'
|
|
4
|
+
import IconEduEngineering from '../Icons/IconEduEngineering.vue'
|
|
5
|
+
import IconEduEnglishLanguageArts from '../Icons/IconEduEnglishLanguageArts.vue'
|
|
6
|
+
import IconEduMathematics from '../Icons/IconEduMathematics.vue'
|
|
7
|
+
import IconEduScience from '../Icons/IconEduScience.vue'
|
|
8
|
+
import IconEduTechnology from '../Icons/IconEduTechnology.vue'
|
|
9
|
+
|
|
10
|
+
interface EduSubjectIconProps {
|
|
11
|
+
subject: string
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// define props
|
|
15
|
+
const props = withDefaults(defineProps<EduSubjectIconProps>(), {
|
|
16
|
+
subject: 'science'
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
const normalizedSubject = computed(() => {
|
|
20
|
+
return subject.toLowerCase()
|
|
21
|
+
})
|
|
22
|
+
const theIcon = computed(() => {
|
|
23
|
+
let component = undefined
|
|
24
|
+
switch (normalizedSubject.value) {
|
|
25
|
+
case 'art':
|
|
26
|
+
component = IconEduArt
|
|
27
|
+
break
|
|
28
|
+
case 'english':
|
|
29
|
+
case 'english language arts':
|
|
30
|
+
component = IconEduEnglishLanguageArts
|
|
31
|
+
break
|
|
32
|
+
case 'engineering':
|
|
33
|
+
component = IconEduEngineering
|
|
34
|
+
break
|
|
35
|
+
case 'math':
|
|
36
|
+
case 'mathematics':
|
|
37
|
+
component = IconEduMathematics
|
|
38
|
+
break
|
|
39
|
+
case 'science':
|
|
40
|
+
component = IconEduScience
|
|
41
|
+
break
|
|
42
|
+
case 'technology':
|
|
43
|
+
component = IconEduTechnology
|
|
44
|
+
break
|
|
45
|
+
}
|
|
46
|
+
return component
|
|
47
|
+
})
|
|
48
|
+
const { subject } = reactive(props)
|
|
49
|
+
</script>
|
|
50
|
+
<template>
|
|
51
|
+
<component :is="theIcon"></component>
|
|
52
|
+
</template>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg
|
|
3
|
+
class="IconEduArt"
|
|
4
|
+
width="24"
|
|
5
|
+
height="24"
|
|
6
|
+
viewBox="0 0 24 24"
|
|
7
|
+
fill="none"
|
|
8
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
9
|
+
aria-hidden="true"
|
|
10
|
+
focusable="false"
|
|
11
|
+
>
|
|
12
|
+
<path
|
|
13
|
+
fill-rule="evenodd"
|
|
14
|
+
clip-rule="evenodd"
|
|
15
|
+
d="M19.9975 11.9999C19.9975 10.7282 19.7003 9.5256 19.1716 8.45779L20.6337 6.99566C21.4881 8.46664 21.9773 10.1761 21.9773 11.9999V15.0191H19.9975H15.6206C14.6482 15.0191 13.86 15.8074 13.86 16.7797C13.86 17.2457 14.0467 17.6947 14.3761 18.0242L15.3096 18.9576L12.2903 21.9769H12.0004C6.48972 21.9769 2.02344 17.5106 2.02344 11.9999C2.02344 6.48924 6.48972 2.02295 12.0004 2.02295C14.3645 2.02295 16.5364 2.84495 18.2459 4.21878L16.8347 5.62994C15.4918 4.60895 13.8166 4.00276 12.0004 4.00276C7.58544 4.00276 4.00325 7.58495 4.00325 11.9999C4.00325 16.2451 7.30806 19.7146 11.488 19.9803L12.5521 18.9162C12.1188 18.2938 11.8802 17.548 11.8802 16.7797C11.8802 14.7153 13.5562 13.0393 15.6206 13.0393H19.9975V11.9999ZM16.7333 9.58754C16.7711 9.72788 16.7935 9.87683 16.7959 10.0299C16.8119 11.0104 16.0306 11.7917 15.0501 11.7758L13.2754 11.747L13.2466 9.97227C13.2306 8.99176 14.0119 8.21048 14.9924 8.2264C15.1455 8.22888 15.2922 8.25122 15.4348 8.28902L16.7333 9.58754ZM17.5197 8.97896L17.5197 8.97888L17.5195 8.979L16.068 7.5275L21.0105 2.585L21.0106 2.58508L21.0107 2.58496L22.4622 4.03646L17.5197 8.97896ZM11.7222 5.64579C11.5321 5.86332 11.4361 6.14746 11.4555 6.43572C11.4749 6.72398 11.6079 6.99273 11.8255 7.18287C12.043 7.373 12.3271 7.46894 12.6154 7.44957C12.9037 7.4302 13.1724 7.29711 13.3625 7.07959C13.5527 6.86206 13.6486 6.57792 13.6292 6.28966C13.6099 6.0014 13.4768 5.73264 13.2593 5.54251C13.0417 5.35238 12.7576 5.25644 12.4693 5.27581C12.1811 5.29518 11.9123 5.42827 11.7222 5.64579ZM7.47194 7.605C7.38703 7.88114 7.41529 8.17971 7.55051 8.43502C7.68573 8.69033 7.91684 8.88147 8.19298 8.96638C8.46913 9.0513 8.7677 9.02304 9.02301 8.88782C9.27832 8.7526 9.46946 8.52149 9.55437 8.24534C9.63929 7.9692 9.61102 7.67063 9.4758 7.41532C9.34058 7.16001 9.10948 6.96887 8.83333 6.88396C8.55718 6.79904 8.25862 6.8273 8.00331 6.96252C7.748 7.09775 7.55686 7.32885 7.47194 7.605ZM5.38405 11.3071C5.29914 11.5833 5.3274 11.8819 5.46262 12.1372C5.59784 12.3925 5.82895 12.5836 6.10509 12.6685C6.38124 12.7534 6.67981 12.7252 6.93512 12.59C7.19043 12.4547 7.38157 12.2236 7.46648 11.9475C7.5514 11.6713 7.52313 11.3728 7.38791 11.1175C7.25269 10.8622 7.02159 10.671 6.74544 10.5861C6.46929 10.5012 6.17072 10.5295 5.91542 10.6647C5.66011 10.7999 5.46897 11.031 5.38405 11.3071ZM6.88059 16.1665C6.74537 15.9112 6.71711 15.6126 6.80202 15.3364C6.88694 15.0603 7.07807 14.8292 7.33338 14.694C7.58869 14.5588 7.88726 14.5305 8.16341 14.6154C8.43956 14.7003 8.67066 14.8915 8.80588 15.1468C8.9411 15.4021 8.96936 15.7006 8.88445 15.9768C8.79953 16.2529 8.6084 16.484 8.35309 16.6193C8.09778 16.7545 7.79921 16.7827 7.52306 16.6978C7.24692 16.6129 7.01581 16.4218 6.88059 16.1665Z"
|
|
16
|
+
fill="currentColor"
|
|
17
|
+
/>
|
|
18
|
+
</svg>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script lang="ts">
|
|
22
|
+
import { defineComponent } from 'vue'
|
|
23
|
+
export default defineComponent({
|
|
24
|
+
name: 'IconEduArt'
|
|
25
|
+
})
|
|
26
|
+
</script>
|
|
27
|
+
<style lang="scss">
|
|
28
|
+
@import '@explorer-1/common/src/scss/components/IconEduArt';
|
|
29
|
+
</style>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg
|
|
3
|
+
class="IconEduEngineering"
|
|
4
|
+
width="24"
|
|
5
|
+
height="24"
|
|
6
|
+
viewBox="0 0 24 24"
|
|
7
|
+
fill="none"
|
|
8
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
9
|
+
aria-hidden="true"
|
|
10
|
+
focusable="false"
|
|
11
|
+
>
|
|
12
|
+
<path
|
|
13
|
+
fill-rule="evenodd"
|
|
14
|
+
clip-rule="evenodd"
|
|
15
|
+
d="M11.0039 2.14502H13.0039V6.08398H17.8887H19.8887V8.08398V19.855V21.855H17.8887H6.11719H4.11768H4.11719V6.08398L4.11768 6.08398L6.11719 6.08398H11.0039V2.14502ZM6.11719 8.08398L11.0039 8.08398H13.0039H17.8887V19.855H6.11719V8.08398ZM1 11H3V16.939H1V11ZM10.168 15.9048V17.9048H7.99072V15.9048H10.168ZM13.0918 17.9048V15.9048H10.9146V17.9048H13.0918ZM16.0977 15.9048V17.9048H13.9204V15.9048H16.0977ZM23 11H21V16.939H23V11ZM9.08047 15.0452C10.5164 15.0452 11.6805 13.8812 11.6805 12.4452C11.6805 11.0093 10.5164 9.84521 9.08047 9.84521C7.64453 9.84521 6.48047 11.0093 6.48047 12.4452C6.48047 13.8812 7.64453 15.0452 9.08047 15.0452ZM14.9242 15.0452C16.3602 15.0452 17.5242 13.8812 17.5242 12.4452C17.5242 11.0093 16.3602 9.84521 14.9242 9.84521C13.4883 9.84521 12.3242 11.0093 12.3242 12.4452C12.3242 13.8812 13.4883 15.0452 14.9242 15.0452ZM10.0805 12.4452C10.0805 12.9975 9.63275 13.4452 9.08047 13.4452C8.52818 13.4452 8.08047 12.9975 8.08047 12.4452C8.08047 11.8929 8.52818 11.4452 9.08047 11.4452C9.63275 11.4452 10.0805 11.8929 10.0805 12.4452ZM15.9242 12.4452C15.9242 12.9975 15.4765 13.4452 14.9242 13.4452C14.3719 13.4452 13.9242 12.9975 13.9242 12.4452C13.9242 11.8929 14.3719 11.4452 14.9242 11.4452C15.4765 11.4452 15.9242 11.8929 15.9242 12.4452Z"
|
|
16
|
+
fill="currentColor"
|
|
17
|
+
/>
|
|
18
|
+
</svg>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script lang="ts">
|
|
22
|
+
import { defineComponent } from 'vue'
|
|
23
|
+
export default defineComponent({
|
|
24
|
+
name: 'IconEduEngineering'
|
|
25
|
+
})
|
|
26
|
+
</script>
|
|
27
|
+
<style lang="scss">
|
|
28
|
+
@import '@explorer-1/common/src/scss/components/IconEduEngineering';
|
|
29
|
+
</style>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg
|
|
3
|
+
class="IconEduEnglishLanguageArts"
|
|
4
|
+
width="24"
|
|
5
|
+
height="25"
|
|
6
|
+
viewBox="0 0 24 25"
|
|
7
|
+
fill="none"
|
|
8
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
9
|
+
aria-hidden="true"
|
|
10
|
+
focusable="false"
|
|
11
|
+
>
|
|
12
|
+
<path
|
|
13
|
+
fill-rule="evenodd"
|
|
14
|
+
clip-rule="evenodd"
|
|
15
|
+
d="M7.5 4.51172C6.39543 4.51172 5.5 5.40715 5.5 6.51172V15.8368C5.96046 15.6159 6.4764 15.4922 7.02124 15.4922H18.4922V4.51172H7.5ZM3.5 18.8392H3.50423C3.50142 18.8969 3.5 18.955 3.5 19.0134C3.5 20.9582 5.07651 22.5347 7.02124 22.5347H20.5V20.5347H19.4316V17.4922H20.5V15.4922H20.4922V2.51172H7.5C5.29086 2.51172 3.5 4.30258 3.5 6.51172V18.8392ZM17.4316 17.4922H7.02124C6.18108 17.4922 5.5 18.1733 5.5 19.0134C5.5 19.8536 6.18108 20.5347 7.02124 20.5347H17.4316V17.4922ZM12.8675 10.9254L12.2411 9.52195L11.6146 10.9254H12.8675ZM13.5817 12.5254H10.9003L10.2188 14.0518L8.75781 13.3996L12.2413 5.59668L15.724 13.3998L14.263 14.0519L13.5817 12.5254Z"
|
|
16
|
+
fill="currentColor"
|
|
17
|
+
/>
|
|
18
|
+
</svg>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script lang="ts">
|
|
22
|
+
import { defineComponent } from 'vue'
|
|
23
|
+
export default defineComponent({
|
|
24
|
+
name: 'IconEduEnglishLanguageArts'
|
|
25
|
+
})
|
|
26
|
+
</script>
|
|
27
|
+
<style lang="scss">
|
|
28
|
+
@import '@explorer-1/common/src/scss/components/IconEduEnglishLanguageArts';
|
|
29
|
+
</style>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg
|
|
3
|
+
class="IconEduMathematics"
|
|
4
|
+
width="24"
|
|
5
|
+
height="24"
|
|
6
|
+
viewBox="0 0 24 24"
|
|
7
|
+
fill="none"
|
|
8
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
9
|
+
aria-hidden="true"
|
|
10
|
+
focusable="false"
|
|
11
|
+
>
|
|
12
|
+
<path
|
|
13
|
+
fill-rule="evenodd"
|
|
14
|
+
clip-rule="evenodd"
|
|
15
|
+
d="M16.998 4H6.02539V6.9873L16.998 6.9873V4ZM6.02539 20V8.9873L16.998 8.9873V20H6.02539ZM6.02539 2H4.02539V4V20V22H6.02539H16.998H18.998V20V4V2H16.998H6.02539ZM12.5117 16.998H7.03516V18.998H12.5117V16.998ZM15.0156 18.998C15.5679 18.998 16.0156 18.5503 16.0156 17.998C16.0156 17.4458 15.5679 16.998 15.0156 16.998C14.4633 16.998 14.0156 17.4458 14.0156 17.998C14.0156 18.5503 14.4633 18.998 15.0156 18.998ZM9.03516 14.9668C9.03516 15.5191 8.58744 15.9668 8.03516 15.9668C7.48287 15.9668 7.03516 15.5191 7.03516 14.9668C7.03516 14.4145 7.48287 13.9668 8.03516 13.9668C8.58744 13.9668 9.03516 14.4145 9.03516 14.9668ZM8.03516 12.9658C8.58744 12.9658 9.03516 12.5181 9.03516 11.9658C9.03516 11.4135 8.58744 10.9658 8.03516 10.9658C7.48287 10.9658 7.03516 11.4135 7.03516 11.9658C7.03516 12.5181 7.48287 12.9658 8.03516 12.9658ZM12.5117 14.9668C12.5117 15.5191 12.064 15.9668 11.5117 15.9668C10.9594 15.9668 10.5117 15.5191 10.5117 14.9668C10.5117 14.4145 10.9594 13.9668 11.5117 13.9668C12.064 13.9668 12.5117 14.4145 12.5117 14.9668ZM11.5117 12.9658C12.064 12.9658 12.5117 12.5181 12.5117 11.9658C12.5117 11.4135 12.064 10.9658 11.5117 10.9658C10.9594 10.9658 10.5117 11.4135 10.5117 11.9658C10.5117 12.5181 10.9594 12.9658 11.5117 12.9658ZM16.0156 14.9668C16.0156 15.5191 15.5679 15.9668 15.0156 15.9668C14.4633 15.9668 14.0156 15.5191 14.0156 14.9668C14.0156 14.4145 14.4633 13.9668 15.0156 13.9668C15.5679 13.9668 16.0156 14.4145 16.0156 14.9668ZM15.0156 12.9658C15.5679 12.9658 16.0156 12.5181 16.0156 11.9658C16.0156 11.4135 15.5679 10.9658 15.0156 10.9658C14.4633 10.9658 14.0156 11.4135 14.0156 11.9658C14.0156 12.5181 14.4633 12.9658 15.0156 12.9658Z"
|
|
16
|
+
fill="currentColor"
|
|
17
|
+
/>
|
|
18
|
+
</svg>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script lang="ts">
|
|
22
|
+
import { defineComponent } from 'vue'
|
|
23
|
+
export default defineComponent({
|
|
24
|
+
name: 'IconEduMathematics'
|
|
25
|
+
})
|
|
26
|
+
</script>
|
|
27
|
+
<style lang="scss">
|
|
28
|
+
@import '@explorer-1/common/src/scss/components/IconEduMathematics';
|
|
29
|
+
</style>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg
|
|
3
|
+
class="IconEduScience"
|
|
4
|
+
width="24"
|
|
5
|
+
height="25"
|
|
6
|
+
viewBox="0 0 24 25"
|
|
7
|
+
fill="none"
|
|
8
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
9
|
+
aria-hidden="true"
|
|
10
|
+
focusable="false"
|
|
11
|
+
>
|
|
12
|
+
<path
|
|
13
|
+
fill-rule="evenodd"
|
|
14
|
+
clip-rule="evenodd"
|
|
15
|
+
d="M9.71182 2.48779H19.3927V4.665H18.2382V11.0285L23.2444 18.2567L23.4331 18.5399V22.5583H5.67145V20.7463C5.51297 20.7682 5.34772 20.7796 5.17572 20.7796C3.96651 20.7796 3.04916 20.2699 2.46868 19.414C1.91891 18.6033 1.71959 17.5565 1.71959 16.5164L1.72071 8.20572H0.566406V6.02851H9.67005V8.20572H8.51553L8.5146 14.424L10.8662 11.0285V4.665H9.71182V2.48779ZM3.89784 11.9068L3.89679 16.5164C3.89679 16.5164 3.89679 16.5163 3.89679 16.5164C3.89682 17.2272 4.03925 17.777 4.26295 18.1225C4.45939 18.4259 4.731 18.6024 5.17572 18.6024C5.42935 18.6024 5.71436 18.4161 5.98367 17.8695C6.23969 17.3499 6.33509 16.7765 6.33718 16.605L6.33722 16.3815L6.33826 11.9068H3.89784ZM13.0434 4.665V11.7011L12.8546 11.9842L11.4365 14.0319H17.6716L16.2535 11.9842L16.0647 11.7011V4.665H13.0434ZM7.84865 19.2481V20.3811H21.2559V19.2124L19.1765 16.2091H9.92812L7.9344 19.0886C7.90723 19.1421 7.87868 19.1953 7.84865 19.2481ZM6.33844 9.72963V8.20572H3.89802V9.72963H6.33844Z"
|
|
16
|
+
fill="currentColor"
|
|
17
|
+
/>
|
|
18
|
+
</svg>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script lang="ts">
|
|
22
|
+
import { defineComponent } from 'vue'
|
|
23
|
+
export default defineComponent({
|
|
24
|
+
name: 'IconEduScience'
|
|
25
|
+
})
|
|
26
|
+
</script>
|
|
27
|
+
<style lang="scss">
|
|
28
|
+
@import '@explorer-1/common/src/scss/components/IconEduScience';
|
|
29
|
+
</style>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<svg
|
|
3
|
+
class="IconEduTechnology"
|
|
4
|
+
width="24"
|
|
5
|
+
height="25"
|
|
6
|
+
viewBox="0 0 24 25"
|
|
7
|
+
fill="none"
|
|
8
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
9
|
+
aria-hidden="true"
|
|
10
|
+
focusable="false"
|
|
11
|
+
>
|
|
12
|
+
<path
|
|
13
|
+
fill-rule="evenodd"
|
|
14
|
+
clip-rule="evenodd"
|
|
15
|
+
d="M9.64604 2.54883H7.47264V4.84241H4.31897V7.99608H2.02539V10.1695H4.31897V11.4364H2.02539V13.6098H4.31897V14.8768H2.02539V17.0502H4.31897V20.2039H7.47264V22.4975H9.64604V20.2039H10.913V22.4975H13.0864V20.2039H14.3534V22.4975H16.5268V20.2039H19.6804V17.0502H21.974V14.8768H19.6804V13.6098H21.974V11.4364H19.6804V10.1695H21.974V7.99608H19.6804V4.84241H16.5268V2.54883H14.3534V4.84241H13.0864V2.54883H10.913V4.84241H9.64604V2.54883ZM9.96367 18.0305H6.49236V7.0158H9.93633L9.93633 10.7377H9.14742V10.785C8.95858 10.5817 8.68896 10.4546 8.38965 10.4546C7.81849 10.4546 7.35547 10.9176 7.35547 11.4888C7.35547 12.0599 7.81849 12.5229 8.38965 12.5229C8.75915 12.5229 9.08339 12.3292 9.26629 12.0377H11.2363L11.2363 7.0158H12.5762L12.5762 10.4923L14.6458 10.4923C14.8354 10.7266 15.1253 10.8765 15.4502 10.8765C16.0214 10.8765 16.4844 10.4134 16.4844 9.84229C16.4844 9.27112 16.0214 8.80811 15.4502 8.80811C15.1253 8.80811 14.8354 8.95794 14.6458 9.19229L13.8762 9.19229L13.8762 7.0158H17.507V18.0305H14.0656V13.9937H14.8545V13.9465C15.0434 14.1497 15.313 14.2769 15.6123 14.2769C16.1835 14.2769 16.6465 13.8138 16.6465 13.2427C16.6465 12.6715 16.1835 12.2085 15.6123 12.2085C15.2428 12.2085 14.9186 12.4023 14.7357 12.6938H12.7656L12.7656 18.0305H11.2637V14.2392H9.19407C9.00448 14.0048 8.71456 13.855 8.38965 13.855C7.81849 13.855 7.35547 14.318 7.35547 14.8892C7.35547 15.4603 7.81849 15.9233 8.38965 15.9233C8.71456 15.9233 9.00448 15.7735 9.19407 15.5392H9.96367L9.96367 18.0305Z"
|
|
16
|
+
fill="currentColor"
|
|
17
|
+
/>
|
|
18
|
+
</svg>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script lang="ts">
|
|
22
|
+
import { defineComponent } from 'vue'
|
|
23
|
+
export default defineComponent({
|
|
24
|
+
name: 'IconEduTechnology'
|
|
25
|
+
})
|
|
26
|
+
</script>
|
|
27
|
+
<style lang="scss">
|
|
28
|
+
@import '@explorer-1/common/src/scss/components/IconEduTechnology';
|
|
29
|
+
</style>
|
|
@@ -48,11 +48,16 @@ import IconSocialReddit from './IconSocialReddit.vue'
|
|
|
48
48
|
import IconSocialTwitter from './IconSocialTwitter.vue'
|
|
49
49
|
import IconSocialYoutube from './IconSocialYoutube.vue'
|
|
50
50
|
import IconStop from './IconStop.vue'
|
|
51
|
-
import IconSubject from './IconSubject.vue'
|
|
52
51
|
import IconTime from './IconTime.vue'
|
|
53
52
|
import IconUniversity from './IconUniversity.vue'
|
|
54
53
|
import IconUser from './IconUser.vue'
|
|
55
54
|
import IconVolume from './IconVolume.vue'
|
|
55
|
+
import IconEduArt from './IconEduArt.vue'
|
|
56
|
+
import IconEduEnglishLanguageArts from './IconEduEnglishLanguageArts.vue'
|
|
57
|
+
import IconEduEngineering from './IconEduEngineering.vue'
|
|
58
|
+
import IconEduMathematics from './IconEduMathematics.vue'
|
|
59
|
+
import IconEduScience from './IconEduScience.vue'
|
|
60
|
+
import IconEduTechnology from './IconEduTechnology.vue'
|
|
56
61
|
|
|
57
62
|
export default {
|
|
58
63
|
title: 'Foundations/Icons',
|
|
@@ -111,7 +116,9 @@ export default {
|
|
|
111
116
|
IconTime,
|
|
112
117
|
IconUniversity,
|
|
113
118
|
IconUser,
|
|
114
|
-
IconVolume
|
|
119
|
+
IconVolume,
|
|
120
|
+
IconEduMathematics,
|
|
121
|
+
IconEduScience
|
|
115
122
|
},
|
|
116
123
|
parameters: {
|
|
117
124
|
docs: {
|
|
@@ -441,15 +448,45 @@ export const Profile = {
|
|
|
441
448
|
template: '<IconProfile />'
|
|
442
449
|
})
|
|
443
450
|
}
|
|
444
|
-
export const Subject = {
|
|
445
|
-
render: () => ({
|
|
446
|
-
components: { IconSubject },
|
|
447
|
-
template: '<IconSubject />'
|
|
448
|
-
})
|
|
449
|
-
}
|
|
450
451
|
export const Volume = {
|
|
451
452
|
render: () => ({
|
|
452
453
|
components: { IconVolume },
|
|
453
454
|
template: '<IconVolume />'
|
|
454
455
|
})
|
|
455
456
|
}
|
|
457
|
+
export const EduArt = {
|
|
458
|
+
render: () => ({
|
|
459
|
+
components: { IconEduArt },
|
|
460
|
+
template: '<IconEduArt />'
|
|
461
|
+
})
|
|
462
|
+
}
|
|
463
|
+
export const EduEngineering = {
|
|
464
|
+
render: () => ({
|
|
465
|
+
components: { IconEduEngineering },
|
|
466
|
+
template: '<IconEduEngineering />'
|
|
467
|
+
})
|
|
468
|
+
}
|
|
469
|
+
export const EduEnglishLanguageArts = {
|
|
470
|
+
render: () => ({
|
|
471
|
+
components: { IconEduEnglishLanguageArts },
|
|
472
|
+
template: '<IconEduEnglishLanguageArts />'
|
|
473
|
+
})
|
|
474
|
+
}
|
|
475
|
+
export const EduMathematics = {
|
|
476
|
+
render: () => ({
|
|
477
|
+
components: { IconEduMathematics },
|
|
478
|
+
template: '<IconEduMathematics />'
|
|
479
|
+
})
|
|
480
|
+
}
|
|
481
|
+
export const EduScience = {
|
|
482
|
+
render: () => ({
|
|
483
|
+
components: { IconEduScience },
|
|
484
|
+
template: '<IconEduScience />'
|
|
485
|
+
})
|
|
486
|
+
}
|
|
487
|
+
export const EduTechnology = {
|
|
488
|
+
render: () => ({
|
|
489
|
+
components: { IconEduTechnology },
|
|
490
|
+
template: '<IconEduTechnology />'
|
|
491
|
+
})
|
|
492
|
+
}
|
|
@@ -7,7 +7,8 @@ import {
|
|
|
7
7
|
EduResourcesGradeLevel,
|
|
8
8
|
EduResourcesTime
|
|
9
9
|
} from './../../interfaces'
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
import EduSubjectIcon from './../EduSubjectIcon/EduSubjectIcon.vue'
|
|
11
12
|
import IconProfile from './../Icons/IconProfile.vue'
|
|
12
13
|
import IconTime from './../Icons/IconTime.vue'
|
|
13
14
|
|
|
@@ -96,7 +97,10 @@ const themeVariant = computed(() => {
|
|
|
96
97
|
class="MetaPanelItem-icon"
|
|
97
98
|
:class="iconColor"
|
|
98
99
|
>
|
|
99
|
-
<
|
|
100
|
+
<EduSubjectIcon
|
|
101
|
+
:subject="primarySubject?.subject"
|
|
102
|
+
class="text-[1.3em] md:text-[1.6em]"
|
|
103
|
+
/>
|
|
100
104
|
</div>
|
|
101
105
|
<div>
|
|
102
106
|
<div
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { computed } from 'vue'
|
|
3
3
|
import type { EduResourceCardObject } from './../../interfaces.ts'
|
|
4
|
-
import
|
|
4
|
+
import EduSubjectIcon from './../EduSubjectIcon/EduSubjectIcon.vue'
|
|
5
5
|
import IconProfile from './../Icons/IconProfile.vue'
|
|
6
6
|
import IconTime from './../Icons/IconTime.vue'
|
|
7
7
|
import {} from './../../utils/mixins'
|
|
@@ -42,14 +42,18 @@ const time = computed(() => {
|
|
|
42
42
|
<template>
|
|
43
43
|
<div
|
|
44
44
|
class="MetadataEduResource"
|
|
45
|
-
:class="{
|
|
45
|
+
:class="{
|
|
46
|
+
'-compact text-sm xl:text-base': props.compact,
|
|
47
|
+
'text-body-lg': !props.compact
|
|
48
|
+
}"
|
|
46
49
|
>
|
|
47
50
|
<div
|
|
48
51
|
v-if="primarySubject"
|
|
49
52
|
class="MetadataEduResourceItem"
|
|
50
53
|
>
|
|
51
|
-
<
|
|
52
|
-
|
|
54
|
+
<EduSubjectIcon
|
|
55
|
+
:subject="primarySubject"
|
|
56
|
+
class="MetadataEduResourceIcon text-[.85em] -mt-px"
|
|
53
57
|
:class="iconClass"
|
|
54
58
|
/>
|
|
55
59
|
<span>
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
v-if="enabled"
|
|
4
4
|
id="NavJumpMenu"
|
|
5
5
|
ref="NavJumpMenuRef"
|
|
6
|
-
class="NavJumpMenu
|
|
6
|
+
class="NavJumpMenu"
|
|
7
|
+
:class="{ '-ready': initialized }"
|
|
7
8
|
:invert="invert"
|
|
8
9
|
jump-menu
|
|
9
10
|
>
|
|
@@ -36,7 +37,7 @@
|
|
|
36
37
|
</NavSecondary>
|
|
37
38
|
</template>
|
|
38
39
|
<script setup lang="ts">
|
|
39
|
-
import { computed, defineExpose, ref, onMounted, watch } from 'vue'
|
|
40
|
+
import { computed, defineExpose, ref, onMounted, onUnmounted, watch } from 'vue'
|
|
40
41
|
import { mixinUpdateSecondary } from './../../utils/mixins'
|
|
41
42
|
import { useRoute } from 'vue-router'
|
|
42
43
|
import NavSecondary from './../NavSecondary/NavSecondary.vue'
|
|
@@ -72,6 +73,8 @@ const props = withDefaults(defineProps<NavJumpMenuProps>(), {
|
|
|
72
73
|
// stepClasses: 'text-primary'
|
|
73
74
|
})
|
|
74
75
|
|
|
76
|
+
const initialized = ref(false)
|
|
77
|
+
|
|
75
78
|
const NavJumpMenuRef = ref()
|
|
76
79
|
|
|
77
80
|
const theJumpLinks = computed(() => {
|
|
@@ -100,6 +103,11 @@ const theJumpLinks = computed(() => {
|
|
|
100
103
|
return []
|
|
101
104
|
})
|
|
102
105
|
|
|
106
|
+
const initializeJumpMenu = () => {
|
|
107
|
+
initialized.value = true
|
|
108
|
+
console.log('initialized jump menu', initialized.value)
|
|
109
|
+
}
|
|
110
|
+
|
|
103
111
|
const theBreadcrumbs = computed(() => {
|
|
104
112
|
let breadcrumb = undefined
|
|
105
113
|
const rootItem = props.title
|
|
@@ -127,6 +135,11 @@ defineExpose({
|
|
|
127
135
|
})
|
|
128
136
|
onMounted(() => {
|
|
129
137
|
mixinUpdateSecondary(theBreadcrumbs.value, true)
|
|
138
|
+
// ensures jump menu isn't visible during route changes
|
|
139
|
+
setTimeout(initializeJumpMenu, 500)
|
|
140
|
+
})
|
|
141
|
+
onUnmounted(() => {
|
|
142
|
+
initialized.value = false
|
|
130
143
|
})
|
|
131
144
|
|
|
132
145
|
const route = useRoute()
|
|
@@ -142,12 +155,9 @@ watch(
|
|
|
142
155
|
</script>
|
|
143
156
|
<style lang="scss">
|
|
144
157
|
.NavJumpMenu {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
&.-is-sticky-offset {
|
|
149
|
-
@apply opacity-100 transition-all pointer-events-auto;
|
|
150
|
-
}
|
|
158
|
+
@apply invisible transition-all overflow-visible -mb-[3.7rem] z-30 fixed #{!important};
|
|
159
|
+
&.-ready {
|
|
160
|
+
@apply visible #{!important};
|
|
151
161
|
}
|
|
152
162
|
.NavSecondaryLink.secondary-root {
|
|
153
163
|
span {
|
|
@@ -6,15 +6,16 @@
|
|
|
6
6
|
class="NavSecondary"
|
|
7
7
|
:class="{
|
|
8
8
|
'has-intro': hasIntro,
|
|
9
|
-
'!bg-transparent': invert
|
|
9
|
+
'!bg-transparent border-none': invert,
|
|
10
|
+
'-scrolled-up': scrollDirection === 'up'
|
|
10
11
|
}"
|
|
11
12
|
>
|
|
12
13
|
<div
|
|
13
|
-
class="
|
|
14
|
+
class="w-full mx-auto"
|
|
14
15
|
:class="{ 'bg-gradient-to-r from-black to-primary bg-transparent to-90% text-white': invert }"
|
|
15
16
|
>
|
|
16
17
|
<div
|
|
17
|
-
:class="`nav-secondary-container edu:border-0 lg:container lg:px-0 lg:whitespace-normal lg:overflow-visible relative px-4 pb-0 mx-auto overflow-x-auto text-sm font-medium whitespace-nowrap ${invert ? 'border-0' : 'border-t border-gray-mid text-gray-mid-dark
|
|
18
|
+
:class="`nav-secondary-container edu:border-0 lg:container lg:px-0 lg:whitespace-normal lg:overflow-visible relative px-4 pb-0 mx-auto overflow-x-auto text-sm font-medium whitespace-nowrap ${invert ? 'border-0' : 'border-t border-gray-mid text-gray-mid-dark border-opacity-50'}`"
|
|
18
19
|
>
|
|
19
20
|
<div class="lg:ml-0 2xl:-mr-3 lg:justify-end flex -ml-3">
|
|
20
21
|
<template v-for="(item, index) in theBreadcrumb">
|
|
@@ -90,12 +91,16 @@ export default defineComponent({
|
|
|
90
91
|
stickyElement?: HTMLElement
|
|
91
92
|
observer?: IntersectionObserver
|
|
92
93
|
observerOffset?: IntersectionObserver
|
|
94
|
+
scrollDirection?: string
|
|
95
|
+
posY: number
|
|
93
96
|
} {
|
|
94
97
|
return {
|
|
95
98
|
isSticky: false,
|
|
96
99
|
stickyElement: undefined,
|
|
97
100
|
observer: undefined,
|
|
98
|
-
observerOffset: undefined
|
|
101
|
+
observerOffset: undefined,
|
|
102
|
+
scrollDirection: undefined,
|
|
103
|
+
posY: 0
|
|
99
104
|
}
|
|
100
105
|
},
|
|
101
106
|
computed: {
|
|
@@ -127,6 +132,7 @@ export default defineComponent({
|
|
|
127
132
|
if (!this.jumpMenu) {
|
|
128
133
|
mixinHighlightPrimary(false)
|
|
129
134
|
}
|
|
135
|
+
window.addEventListener('scroll', this.handleScroll)
|
|
130
136
|
}
|
|
131
137
|
|
|
132
138
|
if (
|
|
@@ -140,6 +146,9 @@ export default defineComponent({
|
|
|
140
146
|
this.checkSticky()
|
|
141
147
|
}
|
|
142
148
|
},
|
|
149
|
+
unmounted() {
|
|
150
|
+
window.removeEventListener('scroll', this.handleScroll)
|
|
151
|
+
},
|
|
143
152
|
methods: {
|
|
144
153
|
isExternal(path: string): boolean {
|
|
145
154
|
if (path && path.startsWith('http')) {
|
|
@@ -147,20 +156,21 @@ export default defineComponent({
|
|
|
147
156
|
}
|
|
148
157
|
return false
|
|
149
158
|
},
|
|
159
|
+
handleScroll() {
|
|
160
|
+
var scrollY = window.scrollY
|
|
161
|
+
if (scrollY > this.posY) {
|
|
162
|
+
this.scrollDirection = 'down'
|
|
163
|
+
} else {
|
|
164
|
+
this.scrollDirection = 'up'
|
|
165
|
+
}
|
|
166
|
+
this.posY = scrollY
|
|
167
|
+
},
|
|
150
168
|
initIntersectionObservers() {
|
|
151
169
|
this.stickyElement = this.$refs.NavSecondary as HTMLElement
|
|
152
170
|
this.observer = new IntersectionObserver(
|
|
153
171
|
([e]) => {
|
|
154
172
|
e.target.classList.toggle('-is-sticky', e.intersectionRatio === 0)
|
|
155
173
|
},
|
|
156
|
-
{
|
|
157
|
-
threshold: [0]
|
|
158
|
-
}
|
|
159
|
-
)
|
|
160
|
-
this.observerOffset = new IntersectionObserver(
|
|
161
|
-
([e]) => {
|
|
162
|
-
e.target.classList.toggle('-is-sticky-offset', e.intersectionRatio === 0)
|
|
163
|
-
},
|
|
164
174
|
{
|
|
165
175
|
threshold: [0],
|
|
166
176
|
rootMargin: this.themeStore.isEdu ? '-73px 0px 0px 0px' : '-113px 0px 0px 0px'
|
|
@@ -170,7 +180,6 @@ export default defineComponent({
|
|
|
170
180
|
checkSticky() {
|
|
171
181
|
if (this.stickyElement) {
|
|
172
182
|
if (this.observer) this.observer.observe(this.stickyElement)
|
|
173
|
-
if (this.observerOffset) this.observerOffset.observe(this.stickyElement)
|
|
174
183
|
}
|
|
175
184
|
}
|
|
176
185
|
}
|
|
@@ -180,7 +189,6 @@ export default defineComponent({
|
|
|
180
189
|
.NavSecondary {
|
|
181
190
|
top: -1px; // for intersection observer to work
|
|
182
191
|
@apply sticky z-40 w-full bg-white border-b border-gray-mid border-opacity-0 transition-border-opacity duration-150 edu:duration-300 ease-in;
|
|
183
|
-
@apply hidden;
|
|
184
192
|
@screen lg {
|
|
185
193
|
@apply block;
|
|
186
194
|
}
|
|
@@ -191,8 +199,7 @@ export default defineComponent({
|
|
|
191
199
|
}
|
|
192
200
|
}
|
|
193
201
|
|
|
194
|
-
&.-is-sticky
|
|
195
|
-
&.-is-sticky-offset {
|
|
202
|
+
&.-is-sticky {
|
|
196
203
|
@apply border-gray-mid border-opacity-50;
|
|
197
204
|
}
|
|
198
205
|
|
|
@@ -216,17 +223,16 @@ export default defineComponent({
|
|
|
216
223
|
// change sticky point if global nav is showing
|
|
217
224
|
.header-sticky-showing & {
|
|
218
225
|
@apply top-18;
|
|
226
|
+
@screen lg {
|
|
227
|
+
@apply top-28;
|
|
228
|
+
}
|
|
219
229
|
|
|
220
|
-
&.-
|
|
221
|
-
@apply border-gray-mid border-opacity-50
|
|
222
|
-
|
|
230
|
+
&.-scrolled-up {
|
|
231
|
+
@apply border-gray-mid border-opacity-50;
|
|
223
232
|
.nav-secondary-container {
|
|
224
233
|
@apply border-gray-mid border-opacity-50;
|
|
225
234
|
}
|
|
226
235
|
}
|
|
227
|
-
@screen lg {
|
|
228
|
-
@apply top-28;
|
|
229
|
-
}
|
|
230
236
|
}
|
|
231
237
|
}
|
|
232
238
|
// since we depend on a body class, the edu: prefix won't work as usual and requires the below line
|
|
@@ -89,7 +89,7 @@ const buttonClass = computed(() => {
|
|
|
89
89
|
})
|
|
90
90
|
</script>
|
|
91
91
|
<template>
|
|
92
|
-
<div class="ShareButtonsEdu relative z-
|
|
92
|
+
<div class="ShareButtonsEdu relative z-20 flex flex-row items-start border-collapse print:hidden">
|
|
93
93
|
<BaseButton
|
|
94
94
|
variant="social"
|
|
95
95
|
:class="buttonClass"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BlockRelatedLinksData } from './../../../components/BlockRelatedLinks/BlockRelatedLinks.stories.js'
|
|
2
2
|
import { BlockLinkCardCarouselData } from './../../../components/BlockLinkCarousel/BlockLinkCarousel.stories.js'
|
|
3
3
|
import { BlockStreamfieldMinimalData } from './../../../components/BlockStreamfield/BlockStreamfield.stories'
|
|
4
|
+
import { NavSecondaryData } from './../../../components/NavSecondary/NavSecondary.stories.js'
|
|
4
5
|
import PageEduCollectionsDetail from './PageEduCollectionsDetail.vue'
|
|
5
6
|
|
|
6
7
|
export default {
|
|
@@ -102,3 +103,39 @@ export const NoMetaPanel = {
|
|
|
102
103
|
}
|
|
103
104
|
}
|
|
104
105
|
}
|
|
106
|
+
|
|
107
|
+
export const NoHero = {
|
|
108
|
+
args: {
|
|
109
|
+
data: {
|
|
110
|
+
...BaseStory.args.data,
|
|
111
|
+
heroImage: undefined
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export const SecondaryNav = {
|
|
117
|
+
args: {
|
|
118
|
+
data: {
|
|
119
|
+
...BaseStory.args.data,
|
|
120
|
+
breadcrumb: NavSecondaryData.breadcrumb
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
export const SecondaryNavHeroInline = {
|
|
125
|
+
args: {
|
|
126
|
+
data: {
|
|
127
|
+
...BaseStory.args.data,
|
|
128
|
+
breadcrumb: NavSecondaryData.breadcrumb,
|
|
129
|
+
heroPosition: 'inline'
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export const SecondaryNavNoHero = {
|
|
134
|
+
args: {
|
|
135
|
+
data: {
|
|
136
|
+
...BaseStory.args.data,
|
|
137
|
+
breadcrumb: NavSecondaryData.breadcrumb,
|
|
138
|
+
heroImage: undefined
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
@@ -9,6 +9,7 @@ import BlockStreamfield from './../../../components/BlockStreamfield/BlockStream
|
|
|
9
9
|
import BlockRelatedLinks from '../../../components/BlockRelatedLinks/BlockRelatedLinks.vue'
|
|
10
10
|
import HeroLarge from './../../../components/HeroLarge/HeroLarge.vue'
|
|
11
11
|
import NavJumpMenu from './../../../components/NavJumpMenu/NavJumpMenu.vue'
|
|
12
|
+
import NavSecondary from './../../../components/NavSecondary/NavSecondary.vue'
|
|
12
13
|
import MetaPanel from '../../../components/MetaPanel/MetaPanel.vue'
|
|
13
14
|
import ShareButtonsEdu from '../../../components/ShareButtonsEdu/ShareButtonsEdu.vue'
|
|
14
15
|
|
|
@@ -39,9 +40,9 @@ const heroInline = computed((): boolean => {
|
|
|
39
40
|
})
|
|
40
41
|
|
|
41
42
|
const computedClass = computed((): string => {
|
|
42
|
-
if (heroInline.value || !data?.heroImage) {
|
|
43
|
+
if ((heroInline.value || !data?.heroImage) && !data?.breadcrumb) {
|
|
43
44
|
return 'pt-5 lg:pt-12'
|
|
44
|
-
} else if (!heroInline.value) {
|
|
45
|
+
} else if (!heroInline.value || data?.breadcrumb) {
|
|
45
46
|
return '-nav-offset'
|
|
46
47
|
}
|
|
47
48
|
return ''
|
|
@@ -53,6 +54,14 @@ const computedClass = computed((): string => {
|
|
|
53
54
|
class="ThemeEdu ThemeVariantLight"
|
|
54
55
|
:class="computedClass"
|
|
55
56
|
>
|
|
57
|
+
<NavJumpMenu
|
|
58
|
+
v-if="data.showJumpMenu && !data.breadcrumb"
|
|
59
|
+
ref="PageEduCollectionsDetailJumpMenu"
|
|
60
|
+
:title="data.title"
|
|
61
|
+
:blocks="data.body"
|
|
62
|
+
dropdown-text="In this collection"
|
|
63
|
+
/>
|
|
64
|
+
|
|
56
65
|
<!-- hero large -->
|
|
57
66
|
<HeroLarge
|
|
58
67
|
v-if="!heroInline && data.heroImage"
|
|
@@ -63,12 +72,12 @@ const computedClass = computed((): string => {
|
|
|
63
72
|
:class="!data.showMetaPanel ? 'mb-10' : ''"
|
|
64
73
|
/>
|
|
65
74
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
:
|
|
71
|
-
|
|
75
|
+
<!-- secondary nav -->
|
|
76
|
+
<NavSecondary
|
|
77
|
+
v-if="data.breadcrumb"
|
|
78
|
+
class="mb-10"
|
|
79
|
+
:breadcrumb="data.breadcrumb"
|
|
80
|
+
:has-intro="data.heroImage && !heroInline ? true : false"
|
|
72
81
|
/>
|
|
73
82
|
|
|
74
83
|
<LayoutHelper
|
|
@@ -97,8 +106,8 @@ const computedClass = computed((): string => {
|
|
|
97
106
|
:primary-subject="data.primarySubject"
|
|
98
107
|
:additional-subjects="data.additionalSubjects"
|
|
99
108
|
:grade-levels="data.gradeLevels"
|
|
100
|
-
:negative-top="!heroInline"
|
|
101
|
-
:negative-bottom="heroInline"
|
|
109
|
+
:negative-top="!heroInline && !data.breadcrumb && data.heroImage ? true : false"
|
|
110
|
+
:negative-bottom="heroInline && !data.breadcrumb"
|
|
102
111
|
/>
|
|
103
112
|
|
|
104
113
|
<!-- TODO: put this in a component (exclude layout though) -->
|
|
@@ -115,7 +124,7 @@ const computedClass = computed((): string => {
|
|
|
115
124
|
</LayoutHelper>
|
|
116
125
|
|
|
117
126
|
<LayoutHelper
|
|
118
|
-
v-if="!heroInline"
|
|
127
|
+
v-if="!heroInline && data.heroImage"
|
|
119
128
|
indent="col-2"
|
|
120
129
|
class="mb-6 lg:mb-12"
|
|
121
130
|
:class="{ '-mt-4': data.showMetaPanel }"
|
|
@@ -98,6 +98,14 @@ export default defineComponent({
|
|
|
98
98
|
itemprop="image"
|
|
99
99
|
:content="data.thumbnailImage.original"
|
|
100
100
|
/>
|
|
101
|
+
|
|
102
|
+
<NavJumpMenu
|
|
103
|
+
v-if="data.showJumpMenu"
|
|
104
|
+
:title="data.title"
|
|
105
|
+
:blocks="data.body"
|
|
106
|
+
dropdown-text="In this article"
|
|
107
|
+
/>
|
|
108
|
+
|
|
101
109
|
<!-- hero title -->
|
|
102
110
|
<HeroLarge
|
|
103
111
|
v-if="heroTitle && theHero"
|
|
@@ -149,15 +157,7 @@ export default defineComponent({
|
|
|
149
157
|
:image="data.thumbnailImage?.original"
|
|
150
158
|
/>
|
|
151
159
|
</LayoutHelper>
|
|
152
|
-
|
|
153
|
-
<NavJumpMenu
|
|
154
|
-
v-if="data.showJumpMenu"
|
|
155
|
-
:title="data.title"
|
|
156
|
-
:blocks="data.body"
|
|
157
|
-
dropdown-text="In this article"
|
|
158
|
-
/>
|
|
159
160
|
<!-- inline hero content -->
|
|
160
|
-
|
|
161
161
|
<LayoutHelper
|
|
162
162
|
v-if="!heroEmpty && heroInline"
|
|
163
163
|
indent="col-2"
|
|
@@ -69,6 +69,12 @@ const { data } = reactive(props)
|
|
|
69
69
|
itemscope
|
|
70
70
|
itemtype="http://schema.org/MediaGallery"
|
|
71
71
|
>
|
|
72
|
+
<NavJumpMenu
|
|
73
|
+
v-if="data.showJumpMenu && jumpMenuHeadings?.length"
|
|
74
|
+
:title="data.title"
|
|
75
|
+
:jump-links="jumpMenuHeadings"
|
|
76
|
+
/>
|
|
77
|
+
|
|
72
78
|
<!-- Detail Headline -->
|
|
73
79
|
<LayoutHelper
|
|
74
80
|
indent="col-2"
|
|
@@ -97,12 +103,6 @@ const { data } = reactive(props)
|
|
|
97
103
|
/>
|
|
98
104
|
</LayoutHelper>
|
|
99
105
|
|
|
100
|
-
<NavJumpMenu
|
|
101
|
-
v-if="data.showJumpMenu && jumpMenuHeadings?.length"
|
|
102
|
-
:title="data.title"
|
|
103
|
-
:jump-links="jumpMenuHeadings"
|
|
104
|
-
/>
|
|
105
|
-
|
|
106
106
|
<div
|
|
107
107
|
v-for="(item, index) in data.galleryItems"
|
|
108
108
|
:id="headingIdGetter(item.blockId)"
|
|
@@ -285,6 +285,13 @@ const computedClass = computed((): string => {
|
|
|
285
285
|
class="ThemeVariantLight"
|
|
286
286
|
:class="computedClass"
|
|
287
287
|
>
|
|
288
|
+
<NavJumpMenu
|
|
289
|
+
ref="PageEduLessonJumpMenu"
|
|
290
|
+
:title="data.title"
|
|
291
|
+
:blocks="consolidatedBlocks"
|
|
292
|
+
dropdown-text="In this lesson"
|
|
293
|
+
/>
|
|
294
|
+
|
|
288
295
|
<!-- hero title -->
|
|
289
296
|
<HeroLarge
|
|
290
297
|
v-if="heroTitle && theHero"
|
|
@@ -365,13 +372,6 @@ const computedClass = computed((): string => {
|
|
|
365
372
|
/>
|
|
366
373
|
</LayoutHelper>
|
|
367
374
|
|
|
368
|
-
<NavJumpMenu
|
|
369
|
-
ref="PageEduLessonJumpMenu"
|
|
370
|
-
:title="data.title"
|
|
371
|
-
:blocks="consolidatedBlocks"
|
|
372
|
-
dropdown-text="In this lesson"
|
|
373
|
-
/>
|
|
374
|
-
|
|
375
375
|
<template
|
|
376
376
|
v-for="(value, _key) in consolidatedSections"
|
|
377
377
|
:key="_key"
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { computed, reactive, ref } from 'vue'
|
|
3
|
+
import { useRoute } from 'vue-router'
|
|
3
4
|
import type {
|
|
4
5
|
ImageObject,
|
|
5
6
|
PageEduResourcesObject,
|
|
@@ -26,7 +27,7 @@ import AboutTheAuthor from './../../../components/AboutTheAuthor/AboutTheAuthor.
|
|
|
26
27
|
|
|
27
28
|
import { HeadingLevel } from '../../../components/BaseHeading/BaseHeading.vue'
|
|
28
29
|
import StudentProjectBadge from '@explorer-1/common/src/images/svg/student-project-badge.svg'
|
|
29
|
-
|
|
30
|
+
const route = useRoute()
|
|
30
31
|
interface EduStudentProjectSectionObject extends PageEduStudentProjectSectionProps {
|
|
31
32
|
type?: string
|
|
32
33
|
}
|
|
@@ -243,6 +244,18 @@ const computedClass = computed((): string => {
|
|
|
243
244
|
class="ThemeVariantLight PageEduStudentProject"
|
|
244
245
|
:class="computedClass"
|
|
245
246
|
>
|
|
247
|
+
<NavJumpMenu
|
|
248
|
+
v-if="stepHeadings?.length"
|
|
249
|
+
:key="route.fullPath"
|
|
250
|
+
ref="PageEduStudentProjectJumpMenu"
|
|
251
|
+
:title="data.title"
|
|
252
|
+
:blocks="stepHeadings"
|
|
253
|
+
dropdown-text="Project Steps"
|
|
254
|
+
heading-level="h3"
|
|
255
|
+
:steps-numbering="true"
|
|
256
|
+
steps-classes="text-secondary"
|
|
257
|
+
/>
|
|
258
|
+
|
|
246
259
|
<!-- hero title -->
|
|
247
260
|
<HeroLarge
|
|
248
261
|
v-if="heroTitle && theHero"
|
|
@@ -371,17 +384,6 @@ const computedClass = computed((): string => {
|
|
|
371
384
|
/>
|
|
372
385
|
</LayoutHelper>
|
|
373
386
|
|
|
374
|
-
<NavJumpMenu
|
|
375
|
-
v-if="stepHeadings?.length"
|
|
376
|
-
ref="PageEduStudentProjectJumpMenu"
|
|
377
|
-
:title="data.title"
|
|
378
|
-
:blocks="stepHeadings"
|
|
379
|
-
dropdown-text="Project Steps"
|
|
380
|
-
heading-level="h3"
|
|
381
|
-
:steps-numbering="true"
|
|
382
|
-
steps-classes="text-secondary"
|
|
383
|
-
/>
|
|
384
|
-
|
|
385
387
|
<template
|
|
386
388
|
v-for="(value, _key) in consolidatedSections"
|
|
387
389
|
:key="_key"
|
|
@@ -208,16 +208,16 @@ const { heading, blocks, image, steps, stepsNumbering, text } = reactive(props)
|
|
|
208
208
|
p,
|
|
209
209
|
li {
|
|
210
210
|
@screen lg {
|
|
211
|
-
@apply
|
|
211
|
+
@apply pr-[9rem];
|
|
212
212
|
}
|
|
213
213
|
@screen xl {
|
|
214
|
-
@apply
|
|
214
|
+
@apply pr-[13rem];
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
217
|
table {
|
|
218
218
|
p,
|
|
219
219
|
li {
|
|
220
|
-
@apply
|
|
220
|
+
@apply pr-0;
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
223
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const isEduExternalLink = (url: string): boolean => {
|
|
2
|
+
if (
|
|
3
|
+
url &&
|
|
4
|
+
(url.startsWith('/edu/') ||
|
|
5
|
+
url.startsWith('/edubeta/') ||
|
|
6
|
+
url.startsWith('https://www.jpl.nasa.gov/edu/') ||
|
|
7
|
+
url.startsWith('https://jpl.nasa.gov/edu/'))
|
|
8
|
+
) {
|
|
9
|
+
return false
|
|
10
|
+
}
|
|
11
|
+
return true
|
|
12
|
+
}
|
|
@@ -1,38 +0,0 @@
|
|
|
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>
|