feat: evolve portfolio into an authored midnight grand tour
This commit is contained in:
@@ -77,14 +77,16 @@ const posterUrl = computed(() => {
|
||||
:allow-automatic="allowAutomaticVideo"
|
||||
/>
|
||||
<figure v-else class="project-media project-media--image" data-project-media>
|
||||
<img
|
||||
:src="primaryUrl"
|
||||
:alt="presentation.alt"
|
||||
:width="imageAsset.width!"
|
||||
:height="imageAsset.height!"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
/>
|
||||
<a :href="primaryUrl" target="_blank" rel="noopener noreferrer" :aria-label="presentation.alt">
|
||||
<img
|
||||
:src="primaryUrl"
|
||||
:alt="presentation.alt"
|
||||
:width="imageAsset.width!"
|
||||
:height="imageAsset.height!"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
/>
|
||||
</a>
|
||||
<figcaption v-if="presentation.caption">{{ presentation.caption }}</figcaption>
|
||||
<p v-if="presentation.longDescription" class="media-description" data-testid="media-long-description">
|
||||
{{ presentation.longDescription }}
|
||||
|
||||
@@ -4,6 +4,8 @@ import { useSceneController, type SceneHostState } from '@/composables/useSceneC
|
||||
import type { JourneySnapshot } from '@/journey/types';
|
||||
import type { MotionPolicy, QualityTier } from '@/journey/motion-policy';
|
||||
import { isTestFault, recordTestFaultEvent } from '@/testing/fault-hooks';
|
||||
import posterUrl from '@/assets/hero-evolution.jpg';
|
||||
import mobilePosterUrl from '@/assets/hero-evolution-mobile.jpg';
|
||||
|
||||
declare const __PORTFOLIO_TEST_BUILD__: boolean;
|
||||
const TEST_BUILD = typeof __PORTFOLIO_TEST_BUILD__ !== 'undefined' && __PORTFOLIO_TEST_BUILD__;
|
||||
@@ -53,16 +55,10 @@ if (posterFailed.value) recordTestFaultEvent('poster-failure');
|
||||
:data-static-fallback="!showCanvas"
|
||||
:data-poster-failed="posterFailed"
|
||||
>
|
||||
<img v-if="!posterFailed" class="journey-poster" alt="" width="1600" height="900" @error="posterFailed = true">
|
||||
<div v-if="!posterFailed" class="journey-poster-composition">
|
||||
<span class="journey-poster__stars" />
|
||||
<span class="journey-poster__sun" />
|
||||
<span class="journey-poster__terrain" />
|
||||
<span class="journey-poster__road" />
|
||||
<span class="journey-poster__rail journey-poster__rail--left" />
|
||||
<span class="journey-poster__rail journey-poster__rail--right" />
|
||||
<span class="journey-poster__car" />
|
||||
</div>
|
||||
<picture v-if="!posterFailed">
|
||||
<source media="(max-width: 767px)" :srcset="mobilePosterUrl">
|
||||
<img :src="posterUrl" class="journey-poster" alt="" width="1600" height="900" @error="posterFailed = true">
|
||||
</picture>
|
||||
<canvas v-if="showCanvas" ref="canvas" class="journey-canvas" aria-hidden="true" />
|
||||
</div>
|
||||
<slot />
|
||||
|
||||
Reference in New Issue
Block a user