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.
61 lines
2.0 KiB
61 lines
2.0 KiB
<template>
|
|
<div class="error-page">
|
|
<div class="error-content">
|
|
<div class="theme-toggle">
|
|
<ThemeToggle :is-dark="$theme.isDark" :toggle-theme="$theme.toggleTheme" />
|
|
</div>
|
|
<h1 class="error-code">{{ props.error?.statusCode || 'Error' }}</h1>
|
|
<h2 class="error-title">{{ errorTitle }}</h2>
|
|
<p class="error-message">{{ errorMessage }}</p>
|
|
<div class="error-actions">
|
|
<button v-if="props.error?.statusCode === 500" class="error-button" @click="handleError">
|
|
<span class="button-icon">↺</span>
|
|
Try Again
|
|
</button>
|
|
<NuxtLink :to="navigationItems.find((item: any) => item.finder === 'home')?.path" class="error-button home-button">
|
|
<span class="button-icon">🏠</span>
|
|
Back to Home
|
|
</NuxtLink>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { handleError } from '~/public/ts/error/error'
|
|
import type { ErrorProps } from '~/types/error';
|
|
import { navigationItems } from '~/config/navigation';
|
|
|
|
definePageMeta({
|
|
layout: 'default'
|
|
})
|
|
|
|
const props = defineProps<{error?: ErrorProps}>()
|
|
const { $theme } = useNuxtApp();
|
|
|
|
const errorTitle = computed(() => {
|
|
switch (props.error?.statusCode) {
|
|
case 404:
|
|
return 'Page Not Found'
|
|
case 500:
|
|
return 'Server Error'
|
|
default:
|
|
return 'Something went wrong'
|
|
}
|
|
})
|
|
|
|
const errorMessage = computed(() => {
|
|
switch (props.error?.statusCode) {
|
|
case 404:
|
|
return 'The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.'
|
|
case 500:
|
|
return 'Our server encountered an unexpected condition that prevented it from fulfilling your request.'
|
|
default:
|
|
return 'An unexpected error occurred. Please try again later.'
|
|
}
|
|
})
|
|
</script>
|
|
|
|
<style scoped>
|
|
@import '~/assets/css/error/error.css';
|
|
</style> |