Files
hms-licht-ton/frontend/error.vue
T
A0 Implementation Engineer 3bfa54b4b3 T01: Frontend Foundation – Nuxt 3 + Tailwind + Design Tokens + Layout + Meta
- Nuxt 3 project with @nuxtjs/tailwindcss module
- Tailwind CSS config with A0 Dark Theme design tokens (CSS custom properties)
- AppHeader: sticky, logo, nav, phone, social icons, mobile burger menu
- AppFooter: 4-column grid (Navigation, Kontakt, Rechtliches, Social)
- HmsLogo: SVG with orange #EC6925 border
- error.vue: 404 page with Seite nicht gefunden
- robots.txt server route: Disallow: /
- Meta: noindex, nofollow, noarchive, nosnippet
- JSON-LD: LocalBusiness schema
- OpenGraph tags
- routeRules: SSR/CSR per route
- Shared components: LoadingSkeleton, EmptyState, ErrorState, LegalContentPage, SpeakerIcon
- 42 vitest tests passing
- Build: 0 errors
2026-07-09 01:17:35 +02:00

33 lines
1.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="min-h-screen bg-bg text-text flex items-center justify-center px-4">
<div class="max-w-md text-center">
<p class="text-6xl font-extrabold text-accent mb-4">{{ error.statusCode }}</p>
<h1 class="text-2xl font-bold mb-3">
{{ error.statusCode === 404 ? 'Seite nicht gefunden' : 'Ein Fehler ist aufgetreten' }}
</h1>
<p class="text-text-muted mb-8">
{{ error.statusCode === 404
? 'Die angeforderte Seite existiert nicht. Vielleicht wurde sie verschoben oder gelöscht.'
: 'Es ist ein unerwarteter Fehler aufgetreten. Bitte versuchen Sie es später erneut.'
}}
</p>
<NuxtLink to="/" class="btn-primary">
Zurück zur Startseite
</NuxtLink>
</div>
</div>
</template>
<script setup lang="ts">
import type { NuxtError } from "#app";
const props = defineProps<{ error: NuxtError }>();
useHead({
title: `${props.error.statusCode} HMS Licht & Ton`,
meta: [
{ name: "robots", content: "noindex, nofollow, noarchive, nosnippet" },
],
});
</script>