Files
hms-licht-ton/frontend/components/LegalContentPage.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

30 lines
922 B
Vue

<template>
<div class="max-w-3xl mx-auto">
<!-- Loading State -->
<div v-if="loading" class="space-y-4">
<div class="skeleton-shimmer rounded-md" style="height: 32px; width: 60%" />
<div class="skeleton-shimmer rounded-md" style="height: 20px" />
<div class="skeleton-shimmer rounded-md" style="height: 20px; width: 90%" />
<div class="skeleton-shimmer rounded-md" style="height: 20px" />
<div class="skeleton-shimmer rounded-md" style="height: 20px; width: 80%" />
</div>
<!-- Content State -->
<article v-else>
<h1 class="text-3xl font-bold text-text mb-6">{{ title }}</h1>
<div class="prose prose-invert max-w-none text-text-muted" v-html="content" />
</article>
</div>
</template>
<script setup lang="ts">
withDefaults(defineProps<{
title: string;
content?: string;
loading?: boolean;
}>(), {
content: "",
loading: false,
});
</script>