Andrej Janchevski commited on
Commit ·
6cc7c3d
1
Parent(s): 8bf4795
feat(404): randomise between core design and jolie lara croft stills
Browse files- NotFoundView now picks one of two on-theme Lara Croft images per
visit: the classic TR1 render by Core Design (jungle palette, fits
the site's green theme) and the 2001 film promotional still of
Angelina Jolie in full Lara costume
- Each variant carries its own attribution line: CC BY-NC-SA 4.0
credit for the Core Design render via Raiding The Globe, and an
honest non-commercial fan-site disclosure for the Paramount film
still via the Guardian
- Responsive layout: image + copy side-by-side on desktop, stacks
and centres below 640px
src/frontend/public/jolie.jpg
ADDED
|
Git LFS Details
|
src/frontend/public/lara.jpg
ADDED
|
Git LFS Details
|
src/frontend/src/views/NotFoundView.vue
CHANGED
|
@@ -1,11 +1,70 @@
|
|
| 1 |
<script setup>
|
| 2 |
import { RouterLink } from 'vue-router'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
</script>
|
| 4 |
|
| 5 |
<template>
|
| 6 |
-
<div class="ui segment">
|
| 7 |
-
<
|
| 8 |
-
|
| 9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
</div>
|
| 11 |
</template>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
<script setup>
|
| 2 |
import { RouterLink } from 'vue-router'
|
| 3 |
+
|
| 4 |
+
const variants = [
|
| 5 |
+
{
|
| 6 |
+
src: '/lara.jpg',
|
| 7 |
+
alt: 'Lara Croft, classic Core Design render',
|
| 8 |
+
credit: 'Lara Croft render by Core Design, via',
|
| 9 |
+
sourceLabel: 'Raiding The Globe',
|
| 10 |
+
sourceHref: 'https://raidingtheglobe.com/gallery/core-design/tomb-raider-1/renders',
|
| 11 |
+
licenseLabel: 'CC BY-NC-SA 4.0',
|
| 12 |
+
licenseHref: 'https://creativecommons.org/licenses/by-nc-sa/4.0/',
|
| 13 |
+
},
|
| 14 |
+
{
|
| 15 |
+
src: '/jolie.jpg',
|
| 16 |
+
alt: 'Angelina Jolie as Lara Croft, Lara Croft: Tomb Raider (2001)',
|
| 17 |
+
credit: 'Film still: Lara Croft: Tomb Raider (2001), © Paramount Pictures — shown here under non-commercial fan-site usage, via',
|
| 18 |
+
sourceLabel: 'The Guardian',
|
| 19 |
+
sourceHref: 'https://www.theguardian.com/film/2001/jul/06/angelinajolie',
|
| 20 |
+
licenseLabel: '',
|
| 21 |
+
licenseHref: '',
|
| 22 |
+
},
|
| 23 |
+
]
|
| 24 |
+
|
| 25 |
+
const pick = variants[Math.floor(Math.random() * variants.length)]
|
| 26 |
</script>
|
| 27 |
|
| 28 |
<template>
|
| 29 |
+
<div class="ui segment not-found">
|
| 30 |
+
<div class="not-found-inner">
|
| 31 |
+
<img class="not-found-img" :src="pick.src" :alt="pick.alt" />
|
| 32 |
+
<div class="not-found-text">
|
| 33 |
+
<h1 class="ui header">404 — Page not found</h1>
|
| 34 |
+
<p class="muted">The tomb you seek lies elsewhere.</p>
|
| 35 |
+
<RouterLink to="/" class="ui button primary">Back to home</RouterLink>
|
| 36 |
+
<p class="attribution muted">
|
| 37 |
+
{{ pick.credit }}
|
| 38 |
+
<a :href="pick.sourceHref" target="_blank" rel="noopener">{{ pick.sourceLabel }}</a><template v-if="pick.licenseLabel">.
|
| 39 |
+
Used under
|
| 40 |
+
<a :href="pick.licenseHref" target="_blank" rel="noopener">{{ pick.licenseLabel }}</a></template>.
|
| 41 |
+
</p>
|
| 42 |
+
</div>
|
| 43 |
+
</div>
|
| 44 |
</div>
|
| 45 |
</template>
|
| 46 |
+
|
| 47 |
+
<style scoped>
|
| 48 |
+
.not-found { padding: 2rem !important; }
|
| 49 |
+
.not-found-inner {
|
| 50 |
+
display: flex;
|
| 51 |
+
gap: 2rem;
|
| 52 |
+
align-items: center;
|
| 53 |
+
flex-wrap: wrap;
|
| 54 |
+
justify-content: center;
|
| 55 |
+
}
|
| 56 |
+
.not-found-img {
|
| 57 |
+
width: clamp(200px, 35vw, 360px);
|
| 58 |
+
height: auto;
|
| 59 |
+
border-radius: 8px;
|
| 60 |
+
border: 2px solid var(--primary);
|
| 61 |
+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
|
| 62 |
+
flex-shrink: 0;
|
| 63 |
+
}
|
| 64 |
+
.not-found-text { max-width: 480px; }
|
| 65 |
+
.attribution { margin-top: 1.5rem; font-size: 0.8em; }
|
| 66 |
+
|
| 67 |
+
@media (max-width: 640px) {
|
| 68 |
+
.not-found-inner { flex-direction: column; text-align: center; }
|
| 69 |
+
}
|
| 70 |
+
</style>
|