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

  • SHA256: 26527ecf1d81671170a229ab19b2e446a67e5db7c8f9894785a5fb54c7d9fa8c
  • Pointer size: 130 Bytes
  • Size of remote file: 50 kB
src/frontend/public/lara.jpg ADDED

Git LFS Details

  • SHA256: 040285277527e1ab91098a8f6f2cb3f5da60f316a3e57163ca81f8a27280491d
  • Pointer size: 131 Bytes
  • Size of remote file: 248 kB
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
- <h1 class="ui header">404 — Page not found</h1>
8
- <p class="muted">The tomb you seek lies elsewhere.</p>
9
- <RouterLink to="/" class="ui button primary">Back to home</RouterLink>
 
 
 
 
 
 
 
 
 
 
 
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>