Enhance footer and localization: add open source references, update footer design, and optimize descriptions for clarity.

This commit is contained in:
吳元皓 2025-05-14 21:59:45 +08:00
parent 96b297f617
commit 861c6b8e35
5 changed files with 39 additions and 24 deletions

View File

@ -1,15 +1,17 @@
<script setup lang="ts"> <script setup lang="ts">
import { HeartIcon } from 'lucide-vue-next';
const localeLink = useLocalePath(); const localeLink = useLocalePath();
</script> </script>
<template> <template>
<div <div
class="flex flex-col justify-center align-center text-center absolute inset-x-0" class="flex flex-col justify-center align-center text-center absolute inset-x-0"
> >
<span class="text-sm m-4 mb-0 text-center align-center justify-center" <span class="text-sm text-center align-center justify-center flex flex-row group mb-0"><span>Made with </span><HeartIcon class="w-5 h-5 mx-2 text-red-500 transition-all duration-300 group-hover:scale-125" /><span> & <a href="https://github.com/hpware/news-analyze" class="hover:text-sky-500 transition-all duration-100">Open Source</a></span></span>
>2025 - {{ new Date().getFullYear() }} &copy; yh</span <span class="text-sm m-4 mt-0 mb-0 text-center align-center justify-center"
>2025 - {{ new Date().getFullYear() }} &copy; hpware</span
> >
<span class="text-xs mt-0 m-2 text-center align-center justify-center"> <span class="text-xs mt-0 m-2 text-center align-center justify-center">
Inspired by Ground.News Optimized for Google Chrome
</span> </span>
</div> </div>
</template> </template>

View File

@ -36,12 +36,14 @@
"title": { "title": {
"find": "Find", "find": "Find",
"interface": "Interface", "interface": "Interface",
"documentation": "Documentation" "documentation": "Documentation",
"opensource": "Open Source"
}, },
"description": { "description": {
"find": "You can easily find the same topic from different news sources.", "find": "You can easily find the same topic from different news sources.",
"interface": "Use a desktop like interface, the one that you already got used to.", "interface": "Use a desktop like interface, the one that you already got used to.",
"documentation": "We provide a documentation for you to learn how to use the app." "documentation": "We provide a documentation for you to learn how to use the app.",
"opensource": "This platform is open source! minus the database part, but I'm going to try!"
} }
} }
}, },

View File

@ -36,12 +36,14 @@
"title": { "title": {
"find": "尋找", "find": "尋找",
"interface": "使用者介面", "interface": "使用者介面",
"documentation": "教學" "documentation": "教學",
"opensource": "開源"
}, },
"description": { "description": {
"find": "你可以輕鬆地從不同的新聞來源找到相同的主題。", "find": "你可以輕鬆地從不同的新聞來源找到相同的主題。",
"interface": "這個網站使用類似 Xfce / MacOS / DSM 的介面,讓你可以簡單使用這個網站。", "interface": "這個網站使用類似 Xfce / MacOS / DSM 的介面,讓你可以簡單使用這個網站。",
"documentation": "我做了一組教學,讓你可以學會如何使用這個網站 UI。" "documentation": "我做了一組教學,讓你可以學會如何使用這個網站 UI。",
"opensource": "這個平台的所有程式碼都放在Github上沒有開源的資料庫我會想辦法把它用其他方式開源"
} }
} }
}, },

View File

@ -70,6 +70,7 @@ const progress = ref(0);
const titleAppName = ref("Desktop"); const titleAppName = ref("Desktop");
const openingAppViaAnApp = ref(false); const openingAppViaAnApp = ref(false);
const passedValues = ref(); const passedValues = ref();
const globalWindowVal = ref(new Map());
// Key Data // Key Data
const menuItems = [ const menuItems = [
@ -162,17 +163,6 @@ const associAppWindow = [
}, },
]; ];
currentNavBar.value = [
{
name: "anything",
icon: "anything",
action: "s",
flash: true,
windowAssociated: "322",
minimized: true,
},
];
/* /*
const keyboardShortcuts = { const keyboardShortcuts = {
'Meta+k': { 'Meta+k': {
@ -247,6 +237,15 @@ onMounted(() => {
}); });
// functions // functions
onMounted(() => {
associAppWindow.forEach((window) => {
globalWindowVal.value.set(window.name, {
id: window.id,
title: window.title,
windowCount: 1
});
});
})
const openWindow = (windowName?: string) => { const openWindow = (windowName?: string) => {
if (windowName === "leave") { if (windowName === "leave") {
router.push(localePath("/home")); router.push(localePath("/home"));
@ -301,10 +300,10 @@ const findAndOpenWindow = (windowName: string) => {
// Use shallowRef for better performance with components // Use shallowRef for better performance with components
const windowComponent = shallowRef(app.component); const windowComponent = shallowRef(app.component);
titleAppName.value = app.title; titleAppName.value = app.title;
const abosluteId = uuidv4();
activeWindows.value.push({ activeWindows.value.push({
id: currentOpenAppId.value, id: currentOpenAppId.value,
absoluteId: uuidv4(), absoluteId: abosluteId,
component: windowComponent, component: windowComponent,
name: windowName, name: windowName,
title: app.title, title: app.title,
@ -313,14 +312,18 @@ const findAndOpenWindow = (windowName: string) => {
}); });
currentOpenAppId.value++; currentOpenAppId.value++;
// Add to navbar // Add to navbar
const windowNameVal2 = globalWindowVal.value.get(windowName).windowCount === 1 ? windowName : windowName + "(" + globalWindowVal.value.get(windowName).windowCount + ")"
console.log(globalWindowVal.value.get(windowName))
console.log(windowNameVal2)
currentNavBar.value.push({ currentNavBar.value.push({
name: "anything", name: windowNameVal2,
icon: "anything", icon: "anything",
action: "s", action: "idk",
flash: true, flash: true,
windowAssociated: "322", windowAssociated: abosluteId,
minimized: true, minimized: false,
}); });
globalWindowVal.value.get(windowName).windowCount++
} }
}; };

View File

@ -12,6 +12,7 @@ import {
ViewfinderCircleIcon, ViewfinderCircleIcon,
DocumentDuplicateIcon, DocumentDuplicateIcon,
} from "@heroicons/vue/24/outline"; } from "@heroicons/vue/24/outline";
import { GithubIcon } from "lucide-vue-next";
import { gsap } from "gsap"; import { gsap } from "gsap";
import { TextPlugin } from "gsap/TextPlugin"; import { TextPlugin } from "gsap/TextPlugin";
gsap.registerPlugin(TextPlugin); gsap.registerPlugin(TextPlugin);
@ -44,6 +45,11 @@ const cards = [
title: t("home.cards.title.documentation"), title: t("home.cards.title.documentation"),
description: t("home.cards.description.documentation"), description: t("home.cards.description.documentation"),
}, },
{
icon: GithubIcon,
title: t("home.cards.title.opensource"),
description: t("home.cards.description.opensource")
}
]; ];
const accordionItems = [ const accordionItems = [