feat: add few links

This commit is contained in:
2026-04-22 14:21:08 +08:00
parent 74af85862f
commit 181a1adb7a
14 changed files with 85 additions and 17 deletions
+9 -2
View File
@@ -9,13 +9,20 @@
"footer_social": "Social",
"footer_privacy": "Privacy Notice",
"footer_links": "Links",
"footer_link_misaka": "Access our Misaka Network",
"semilabs": "SemiLabs",
"semilabs_description": "A field to build reliable and secure digital infrastructure.",
"learn_more": "Learn More",
"products_title": "Products by SemiLabs",
"product_os": "SemiOS Operating System",
"product_softinfra": "Software Infrastructure",
"product_semios": "SemiOS Operating System",
"product_cloud": "Cloud Computing",
"product_games": "Games",
"news_title": "SemiLabs News"
"news_title": "SemiLabs News",
"error_title": "Oh, no!",
"error_description": "Sorry, the page you are looking for does not exist."
}
+9 -2
View File
@@ -9,13 +9,20 @@
"footer_social": "ソーシャル",
"footer_privacy": "プライバシーポリシー",
"footer_links": "リンク",
"footer_link_misaka": "Misaka Network にアクセス",
"semilabs": "SemiLabs",
"semilabs_description": "信頼性とセキュリティを保証するデジタルインフラストラクチャを構築するフィールドです。",
"learn_more": "詳細を見る",
"products_title": "SemiLabs の 製品",
"product_os": "SemiOS オペレーティングシステム",
"product_softinfra": "基礎ソフトウェア",
"product_semios": "SemiOS オペレーティングシステム",
"product_cloud": "クラウドコンピューティング",
"product_games": "ゲーム",
"news_title": "SemiLabs ニュース"
"news_title": "SemiLabs ニュース",
"error_title": "おっと!",
"error_description": "申し訳ありませんが、お探しのページは見つかりませんでした。"
}
+9 -2
View File
@@ -9,13 +9,20 @@
"footer_social": "社交媒体",
"footer_privacy": "隐私政策",
"footer_links": "相关链接",
"footer_link_misaka": "访问我们的 Misaka 网络",
"semilabs": "SemiLabs",
"semilabs_description": "构建可靠而安全的数字基础设施。",
"learn_more": "了解更多",
"products_title": "SemiLabs 产品",
"product_os": "SemiOS 操作系统",
"product_softinfra": "基础软件",
"product_semios": "SemiOS 操作系统",
"product_cloud": "云计算",
"product_games": "游戏",
"news_title": "SemiLabs 新闻"
"news_title": "SemiLabs 新闻",
"error_title": "糟糕...",
"error_description": "您正在访问的页面似乎不存在。"
}
+10 -4
View File
@@ -12,20 +12,26 @@
<div class="mt-10 w-full">
<Separator class="mb-2" />
<div class="ml-2 flex">
<div class="flex-auto">
<div class="ml-2 md:flex">
<div class="md:flex-auto">
<h2 class="text-base font-bold text-gray-300">{m.footer_links()}</h2>
<div class="underline">
<a href="https://semilabs.misaka">{m.footer_link_misaka()}</a>
</div>
</div>
<div class="flex-auto">
<div class="md:flex-auto">
<h2 class="text-base font-bold text-gray-300">{m.footer_terms_and_policies()}</h2>
<div class="underline">
<a href="/privacy">{m.footer_privacy()}</a>
</div>
</div>
<div class="flex-auto">
<div class="md:flex-auto">
<h2 class="text-base font-bold text-gray-300">{m.footer_social()}</h2>
<div class="underline">
<a href="https://github.com/semi-labs">GitHub</a>
</div>
</div>
</div>
<div class="mt-4 flex w-full">
+1 -1
View File
@@ -69,7 +69,7 @@
<a href="https://id.semilabs.org" class="mr-5 ml-auto">
<Avatar.Root>
<Avatar.Image src="/avatar.jpg" alt="@shadcn" />
<!-- <Avatar.Image src="/avatar.jpg" alt="" /> -->
<Avatar.Fallback></Avatar.Fallback>
</Avatar.Root>
</a>
+5
View File
@@ -0,0 +1,5 @@
<script lang="ts">
$effect(() => {
window.location.href = '/404';
});
</script>
+1
View File
@@ -0,0 +1 @@
export const prerender = true;
+5 -1
View File
@@ -3,6 +3,10 @@
import { Button } from '$lib/components/ui/button/index.js';
</script>
<svelte:head>
<title>SemiLabs</title>
</svelte:head>
<h1 class="text-4xl font-bold">{m.semilabs()}</h1>
<p>{m.semilabs_description()}</p>
<Button class="mt-2">{m.learn_more()}</Button>
<Button class="mt-2" href="/about">{m.learn_more()}</Button>
+12
View File
@@ -0,0 +1,12 @@
<script lang="ts">
import * as m from '$lib/paraglide/messages.js';
</script>
<div class="mt-20 mb-20">
<div class="flex w-full items-center justify-center">
<h1 class="text-6xl font-bold md:text-9xl">{m.error_title()}</h1>
</div>
<div class="mt-10 flex w-full items-center justify-center">
<p>{m.error_description()}</p>
</div>
</div>
-1
View File
@@ -1,6 +1,5 @@
<script lang="ts">
import * as m from '$lib/paraglide/messages.js';
import { Button } from '$lib/components/ui/button/index.js';
</script>
<h1 class="text-4xl font-bold">{m.news_title()}</h1>
+8 -1
View File
@@ -1,6 +1,13 @@
<script lang="ts">
import * as m from '$lib/paraglide/messages.js';
import { Button } from '$lib/components/ui/button/index.js';
import { products } from '../../shared/Products';
</script>
<h1 class="text-4xl font-bold">{m.products_title()}</h1>
<div class="mt-4"></div>
{#each products as product_class}
<h2 class="text-2xl font-bold">{product_class.title}</h2>
{#each product_class.products as product}
<a href={product.link} class="mt-1 underline">{product.name}</a>
{/each}
{/each}
+1 -1
View File
@@ -1,5 +1,5 @@
export const languages = [
{ id: 'en', name: 'English' },
{ id: 'zh-cn', name: '简体中文' },
{ id: 'jp', name: '日本' }
{ id: 'jp', name: '日本' }
];
+15 -2
View File
@@ -2,12 +2,25 @@ import * as m from '$lib/paraglide/messages';
export const products = [
{
title: m.product_os(),
title: m.product_softinfra(),
products: [
{
name: m.product_os(),
name: m.product_semios(),
link: 'https://os.semilabs.org'
}
]
},
{
title: m.product_cloud(),
products: [
{
name: 'Misaka',
link: '/products/misaka'
}
]
},
{
title: m.product_games(),
products: []
}
];