news-analyze/components/navigation.vue
吳元皓 dce96b3a35 Refactor navigation bar styling, update localization files, and enhance news organization page
- Updated navigation bar styles for improved aesthetics and functionality.
- Added loading text to English and Traditional Chinese localization files.
- Enhanced the news organization about page with better layout and SEO metadata.
- Updated API response to include Facebook link for news organizations.
- Removed old Tailwind CSS configuration and styles, replacing them with a new main CSS file.
- Updated package.json to include new dependencies and scripts for better development experience.
2025-05-06 16:16:43 +08:00

62 lines
No EOL
2.4 KiB
Vue

<script setup lang="ts">
import { gsap } from 'gsap';
import { ScrambleTextPlugin } from 'gsap/dist/ScrambleTextPlugin';
gsap.registerPlugin(ScrambleTextPlugin)
const { t, locale, locales } = useI18n();
const switchLocalePath = useSwitchLocalePath()
const dropdownOpen = ref(false);
const title = ref(null);
const availableLocales = computed(() => {
return locales.value.filter(i => i.code !== locale.value)
})
const toggleDropdown = () => {
dropdownOpen.value = !dropdownOpen.value;
}
const runAnimation = () => {
gsap.to(title.value, {
duration: 1,
scrambleText: "BlindSpec",
});
}
</script>
<template>
<!--Spent too much time trying to set a Navbar....-->
<div class="fixed top-0 inset-x-0 bg-[#81611a]/70 backdrop-blur-sm h-[55px] flex align-center flex-row text-white pl-4 pt-2 gap-x-5 justify-between z-50 rounded-3xl m-2">
<div class="text-3xl text-bold">
<!--Use mouseenter instead of hover-->
<a href="/" @mouseenter="runAnimation" ref="title">
BlindSpec
</a>
</div>
<div class="text-[0.9em] text-center align-center">
<a href="/" class="hover:text-blue-500 cursor-pointer transiton-all duration-100">{{ t("nav.home") }}</a>
&nbsp;
<a href="/dailybriefing" class="hover:text-blue-500 cursor-pointer transiton-all duration-100">{{ t("nav.dailybriefing") }}</a>
</div>
<div class="relative">
<button @click="toggleDropdown"
class="flex items-center space-x-2 px-4 py-2 rounded hover:bg-gray-900 transition-all duration-100">
<span>{{ locale }}</span>
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M19 9l-7 7-7-7"/>
</svg>
</button>
<div v-if="dropdownOpen"
class="absolute top-full left-0 mt-2 w-48 bg-white rounded-md shadow-lg py-1">
<a v-for="loc in availableLocales"
:key="loc.code"
:href="switchLocalePath(loc.code)"
class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">
{{ loc.name || loc.code }}
</a>
</div>
</div>
</div>
</template>