More AI slop
All checks were successful
Build and Deploy Nuxt / build (push) Successful in 28s

This commit is contained in:
2026-06-08 21:45:17 +02:00
parent 89277dc1fb
commit 897536afc9
3 changed files with 30 additions and 37 deletions

View File

@@ -7,7 +7,7 @@
<div> <div>
<NuxtRouteAnnouncer /> <NuxtRouteAnnouncer />
<div class="container"> <div class="container">
<NuxtPage></NuxtPage> <NuxtPage />
</div> </div>
</div> </div>
</template> </template>
@@ -28,5 +28,4 @@ onMounted(() => {
padding-left: 20px; padding-left: 20px;
padding-right: 20px; padding-right: 20px;
} }
</style> </style>

View File

@@ -1,55 +1,49 @@
<script setup lang="ts"> <script setup lang="ts">
const localePath = useLocalePath() const localePath = useLocalePath()
const route = useRoute() const route = useRoute()
const router = useRouter()
const scrollTargets: Record<string, string> = { const scrollTargets: Record<string, string> = {
'index': 'top', 'index': '#top',
'blog': '#scroll-blog', 'blog': '#scroll-blog',
'contact': '#scroll-contact', 'contact': '#scroll-contact',
'art': '#scroll-art' 'art': '#scroll-art'
} }
const currentPath = computed(() => route.path) const isHome = computed(() => route.path === localePath('index'))
function handleClick(targetKey: string, e: MouseEvent) { function isActive(targetKey: string): boolean {
if (e.ctrlKey || e.metaKey || e.altKey || e.button !== 0) return if (targetKey === 'index') return isHome.value
const isHome = currentPath.value === localePath('index') const targetPath = localePath(targetKey)
if (!isHome) return return route.path === targetPath
e.preventDefault() }
const targetId = scrollTargets[targetKey] || 'top'
if (targetId === 'top') { function getToPath(targetKey: string): string {
window.scrollTo({ top: 0, behavior: 'smooth' }) if (isHome.value) {
} else { const targetId = scrollTargets[targetKey] || 'top'
const el = document.querySelector(targetId) return targetId.substring(1) !== '' ? '#' + targetId.substring(1) : '/'
if (el) { }
el.scrollIntoView({ behavior: 'smooth', block: 'start' }) return localePath(targetKey === 'index' ? 'index' : targetKey)
} else {
const hash = targetId.substring(1)
router.replace({ hash })
}
}
} }
</script> </script>
<template> <template>
<div class="tui-tabs"> <div class="tui-tabs">
<a :href="localePath('index')" class="tui-tab" @click="handleClick('index', $event)"> <NuxtLink :to="getToPath('index')" class="tui-tab" :class="{ 'tui-tab-active': isActive('index') }">
<span class="tab-sep" v-if="false"></span> <span class="tab-sep" v-if="false"></span>
<span class="tab-label">/</span> <span class="tab-label">/</span>
</a> </NuxtLink>
<a :href="localePath('blog')" class="tui-tab" @click="handleClick('blog', $event)"> <NuxtLink :to="getToPath('blog')" class="tui-tab" :class="{ 'tui-tab-active': isActive('blog') }">
<span class="tab-sep"></span> <span class="tab-sep"></span>
<span class="tab-label">/{{ $t('header.links.blog') }}</span> <span class="tab-label">/{{ $t('header.links.blog') }}</span>
</a> </NuxtLink>
<a :href="localePath('contact')" class="tui-tab" @click="handleClick('contact', $event)"> <NuxtLink :to="getToPath('contact')" class="tui-tab" :class="{ 'tui-tab-active': isActive('contact') }">
<span class="tab-sep"></span> <span class="tab-sep"></span>
<span class="tab-label">/{{ $t('header.links.contact') }}</span> <span class="tab-label">/{{ $t('header.links.contact') }}</span>
</a> </NuxtLink>
<a :href="localePath('art')" class="tui-tab" @click="handleClick('art', $event)"> <NuxtLink :to="getToPath('art')" class="tui-tab" :class="{ 'tui-tab-active': isActive('art') }">
<span class="tab-sep"></span> <span class="tab-sep"></span>
<span class="tab-label">/{{ $t('header.links.art') }}</span> <span class="tab-label">/{{ $t('header.links.art') }}</span>
</a> </NuxtLink>
</div> </div>
</template> </template>
@@ -91,7 +85,7 @@ function handleClick(targetKey: string, e: MouseEvent) {
} }
} }
.tui-tab.router-link-exact-active { .tui-tab-active {
color: var(--color-background-fore); color: var(--color-background-fore);
background-color: var(--color-link); background-color: var(--color-link);
text-shadow: 0 0 8px rgba(255,255,255,0.3); text-shadow: 0 0 8px rgba(255,255,255,0.3);

View File

@@ -271,9 +271,9 @@ const sectionTargets = {
<h2 class="section-title">{{ t('pages.blog_heading') }}</h2> <h2 class="section-title">{{ t('pages.blog_heading') }}</h2>
<ul class="tui-list"> <ul class="tui-list">
<li v-for="post in displayedBlogPosts" :key="post.slug" class="blog-entry"> <li v-for="post in displayedBlogPosts" :key="post.slug" class="blog-entry">
<a class="entry-link" :href="localePath({ name: 'blog-slug', params: { slug: post.slug } })"> <NuxtLink :to="localePath({ name: 'blog-slug', params: { slug: post.slug } })" class="entry-link">
<span class="entry-title">{{ post.title }}</span> <span class="entry-title">{{ post.title }}</span>
</a> </NuxtLink>
<span class="entry-meta">[{{ post.date }}] {{ post.description }}</span> <span class="entry-meta">[{{ post.date }}] {{ post.description }}</span>
</li> </li>
</ul> </ul>
@@ -294,9 +294,9 @@ const sectionTargets = {
<Container> <Container>
<h2 class="section-title">{{ t('pages.art_heading') }}</h2> <h2 class="section-title">{{ t('pages.art_heading') }}</h2>
<div class="grid"> <div class="grid">
<a v-for="art in displayedArtPosts" :key="art.slug" <NuxtLink v-for="art in displayedArtPosts" :key="art.slug"
class="selector" class="selector"
:href="isArtFallback(art) ? localePath(`/art/${art.slug}`) : localePath(`/art/${art.slug}`)"> :to="localePath(`/art/${art.slug}`)">
<span class="selector-border-top" aria-hidden="true"></span> <span class="selector-border-top" aria-hidden="true"></span>
<img <img
:src="art.thumb" :src="art.thumb"
@@ -305,7 +305,7 @@ const sectionTargets = {
/> />
<span class="selector-border-bottom" aria-hidden="true"></span> <span class="selector-border-bottom" aria-hidden="true"></span>
<div class="overlay-label">{{ art.title }}</div> <div class="overlay-label">{{ art.title }}</div>
</a> </NuxtLink>
</div> </div>
<p v-if="artPosts && artPosts.length > 0" class="show-more-link"> <p v-if="artPosts && artPosts.length > 0" class="show-more-link">
<NuxtLink :to="localePath('/art')" class="tui-link">{{ t('pages.show_more') }}</NuxtLink> <NuxtLink :to="localePath('/art')" class="tui-link">{{ t('pages.show_more') }}</NuxtLink>