You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
2.2 KiB
117 lines
2.2 KiB
<!--
|
|
/**
|
|
* Not Found View - 404 Page
|
|
*
|
|
* @author Matthew Raymer
|
|
* @version 1.0.0
|
|
*/
|
|
-->
|
|
|
|
<template>
|
|
<div class="not-found-view">
|
|
<div class="not-found-content">
|
|
<span class="not-found-icon">🔍</span>
|
|
<h1 class="not-found-title">404</h1>
|
|
<h2 class="not-found-subtitle">Page Not Found</h2>
|
|
<p class="not-found-description">
|
|
The page you're looking for doesn't exist.
|
|
</p>
|
|
<button class="home-button" @click="goHome">
|
|
🏠 Go Home
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import { Component, Vue } from 'vue-facing-decorator'
|
|
|
|
@Component
|
|
export default class NotFoundView extends Vue {
|
|
private goHome(): void {
|
|
this.$router.push('/')
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
.not-found-view {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
min-height: 60vh;
|
|
padding: 20px;
|
|
}
|
|
|
|
.not-found-content {
|
|
text-align: center;
|
|
padding: 40px;
|
|
background: rgba(255, 255, 255, 0.1);
|
|
border-radius: 16px;
|
|
backdrop-filter: blur(10px);
|
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
}
|
|
|
|
.not-found-icon {
|
|
font-size: 4rem;
|
|
display: block;
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.not-found-title {
|
|
font-size: 4rem;
|
|
font-weight: 700;
|
|
color: white;
|
|
margin: 0 0 8px 0;
|
|
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
.not-found-subtitle {
|
|
font-size: 1.5rem;
|
|
font-weight: 600;
|
|
color: white;
|
|
margin: 0 0 16px 0;
|
|
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
.not-found-description {
|
|
font-size: 1.1rem;
|
|
color: rgba(255, 255, 255, 0.8);
|
|
margin: 0 0 24px 0;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.home-button {
|
|
background: linear-gradient(135deg, #4caf50, #45a049);
|
|
color: white;
|
|
border: none;
|
|
padding: 12px 24px;
|
|
border-radius: 8px;
|
|
font-size: 1rem;
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
transition: all 0.3s ease;
|
|
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
.home-button:hover {
|
|
background: linear-gradient(135deg, #45a049, #3d8b40);
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 8px 25px rgba(76, 175, 80, 0.3);
|
|
}
|
|
|
|
/* Responsive design */
|
|
@media (max-width: 768px) {
|
|
.not-found-content {
|
|
padding: 32px 20px;
|
|
}
|
|
|
|
.not-found-title {
|
|
font-size: 3rem;
|
|
}
|
|
|
|
.not-found-icon {
|
|
font-size: 3rem;
|
|
}
|
|
}
|
|
</style>
|
|
|