diff options
Diffstat (limited to 'packages/docs/app/routes')
| -rw-r--r-- | packages/docs/app/routes/docs.tsx | 13 | ||||
| -rw-r--r-- | packages/docs/app/routes/home.tsx | 169 | ||||
| -rw-r--r-- | packages/docs/app/routes/not-found.tsx | 2 |
3 files changed, 113 insertions, 71 deletions
diff --git a/packages/docs/app/routes/docs.tsx b/packages/docs/app/routes/docs.tsx index 5090ccf..382a4e5 100644 --- a/packages/docs/app/routes/docs.tsx +++ b/packages/docs/app/routes/docs.tsx @@ -1,16 +1,15 @@ -import type { Route } from './+types/docs'; -import { redirect } from 'react-router'; - -import { i18n } from '@/lib/i18n'; +import { redirect } from "react-router"; +import { i18n } from "@/lib/i18n"; +import type { Route } from "./+types/docs"; export function loader({ params }: Route.LoaderArgs) { const lang = params.lang as string | undefined; - + // 如果没有语言参数或是默认语言,重定向到 /docs/manual/getting-started if (!lang || lang === i18n.defaultLanguage) { - return redirect('/docs/manual/getting-started'); + return redirect("/docs/manual/getting-started"); } - + // 其他语言重定向到 /:lang/docs/manual/getting-started return redirect(`/${lang}/docs/manual/getting-started`); } diff --git a/packages/docs/app/routes/home.tsx b/packages/docs/app/routes/home.tsx index 427bf4e..fe561e4 100644 --- a/packages/docs/app/routes/home.tsx +++ b/packages/docs/app/routes/home.tsx @@ -1,89 +1,133 @@ -import type { Route } from './+types/home'; -import { HomeLayout } from 'fumadocs-ui/layouts/home'; -import { baseOptions } from '@/lib/layout.shared'; -import { i18n } from '@/lib/i18n'; +import { HomeLayout } from "fumadocs-ui/layouts/home"; +import { i18n } from "@/lib/i18n"; +import { baseOptions } from "@/lib/layout.shared"; +import type { Route } from "./+types/home"; const texts = { en: { hero: { - title: 'DropOut Minecraft Launcher', - subtitle: 'Modern. Reproducible. Developer-Grade.', - description: 'Built with Tauri v2 and Rust for native performance and minimal resource usage', - start: 'Get Started', - development: 'Development', + title: "DropOut Minecraft Launcher", + subtitle: "Modern. Reproducible. Developer-Grade.", + description: + "Built with Tauri v2 and Rust for native performance and minimal resource usage", + start: "Get Started", + development: "Development", }, features: { items: [ - { title: 'High Performance', desc: 'Built with Rust and Tauri for minimal resource usage and fast startup times' }, - { title: 'Modern UI', desc: 'Clean, distraction-free interface with Svelte 5 and Tailwind CSS 4' }, - { title: 'Secure Auth', desc: 'Microsoft OAuth 2.0 with device code flow and offline mode support' }, - { title: 'Mod Loaders', desc: 'Built-in support for Fabric and Forge with automatic version management' }, - { title: 'Java Management', desc: 'Auto-detection and integrated downloader for Adoptium JDK/JRE' }, - { title: 'Instance System', desc: 'Isolated game environments with independent configs and mods' }, - ] + { + title: "High Performance", + desc: "Built with Rust and Tauri for minimal resource usage and fast startup times", + }, + { + title: "Modern UI", + desc: "Clean, distraction-free interface with Svelte 5 and Tailwind CSS 4", + }, + { + title: "Secure Auth", + desc: "Microsoft OAuth 2.0 with device code flow and offline mode support", + }, + { + title: "Mod Loaders", + desc: "Built-in support for Fabric and Forge with automatic version management", + }, + { + title: "Java Management", + desc: "Auto-detection and integrated downloader for Adoptium JDK/JRE", + }, + { + title: "Instance System", + desc: "Isolated game environments with independent configs and mods", + }, + ], }, why: { - title: 'Why DropOut?', + title: "Why DropOut?", items: [ - { q: 'Your instance worked yesterday but broke today?', a: '→ DropOut makes it traceable.' }, - { q: 'Sharing a modpack means zipping gigabytes?', a: '→ DropOut shares exact dependency manifests.' }, - { q: 'Java, loader, mods, configs drift out of sync?', a: '→ DropOut locks them together.' }, - ] + { + q: "Your instance worked yesterday but broke today?", + a: "→ DropOut makes it traceable.", + }, + { + q: "Sharing a modpack means zipping gigabytes?", + a: "→ DropOut shares exact dependency manifests.", + }, + { + q: "Java, loader, mods, configs drift out of sync?", + a: "→ DropOut locks them together.", + }, + ], }, cta: { - title: 'Ready to get started?', - desc: 'Check out the documentation to learn more about DropOut', - button: 'Read the Docs', - } + title: "Ready to get started?", + desc: "Check out the documentation to learn more about DropOut", + button: "Read the Docs", + }, }, zh: { hero: { - title: 'DropOut Minecraft 启动器', - subtitle: '现代、可复现、开发者级', - description: '基于 Tauri v2 和 Rust 构建,拥有原生性能和极低的资源占用', - start: '开始使用', - development: '参与开发', + title: "DropOut Minecraft 启动器", + subtitle: "现代、可复现、开发者级", + description: "基于 Tauri v2 和 Rust 构建,拥有原生性能和极低的资源占用", + start: "开始使用", + development: "参与开发", }, features: { items: [ - { title: '高性能', desc: '使用 Rust 和 Tauri 构建,资源占用最小,启动速度极快' }, - { title: '现代化界面', desc: '简洁、无干扰的界面,使用 Svelte 5 和 Tailwind CSS 4' }, - { title: '安全认证', desc: '支持微软 OAuth 2.0 设备代码流和离线模式' }, - { title: '模组支持', desc: '内置 Fabric 和 Forge 支持,自动管理版本' }, - { title: 'Java 管理', desc: '自动检测并集成 Adoptium JDK/JRE 下载器' }, - { title: '实例系统', desc: '独立的游戏环境,独立的配置和模组' }, - ] + { + title: "高性能", + desc: "使用 Rust 和 Tauri 构建,资源占用最小,启动速度极快", + }, + { + title: "现代化界面", + desc: "简洁、无干扰的界面,使用 Svelte 5 和 Tailwind CSS 4", + }, + { title: "安全认证", desc: "支持微软 OAuth 2.0 设备代码流和离线模式" }, + { title: "模组支持", desc: "内置 Fabric 和 Forge 支持,自动管理版本" }, + { title: "Java 管理", desc: "自动检测并集成 Adoptium JDK/JRE 下载器" }, + { title: "实例系统", desc: "独立的游戏环境,独立的配置和模组" }, + ], }, why: { - title: '为什么选择 DropOut?', + title: "为什么选择 DropOut?", items: [ - { q: '你的实例昨天还能用,今天就坏了?', a: '→ DropOut 让它可追溯。' }, - { q: '分享模组包意味着打包数GB的文件?', a: '→ DropOut 分享精确的依赖清单。' }, - { q: 'Java、加载器、模组、配置不同步?', a: '→ DropOut 将它们锁定在一起。' }, - ] + { q: "你的实例昨天还能用,今天就坏了?", a: "→ DropOut 让它可追溯。" }, + { + q: "分享模组包意味着打包数GB的文件?", + a: "→ DropOut 分享精确的依赖清单。", + }, + { + q: "Java、加载器、模组、配置不同步?", + a: "→ DropOut 将它们锁定在一起。", + }, + ], }, cta: { - title: '准备好开始了?', - desc: '查看文档以了解更多关于 DropOut 的信息', - button: '阅读文档', - } - } + title: "准备好开始了?", + desc: "查看文档以了解更多关于 DropOut 的信息", + button: "阅读文档", + }, + }, }; export function meta({ params }: Route.MetaArgs) { return [ - { title: 'DropOut - Modern Minecraft Launcher' }, - { name: 'description', content: 'A modern, reproducible, and developer-grade Minecraft launcher built with Tauri v2 and Rust.' }, + { title: "DropOut - Modern Minecraft Launcher" }, + { + name: "description", + content: + "A modern, reproducible, and developer-grade Minecraft launcher built with Tauri v2 and Rust.", + }, ]; } export default function Home({ params }: Route.ComponentProps) { - const lang = (params.lang as 'en' | 'zh') || i18n.defaultLanguage; + const lang = (params.lang as "en" | "zh") || i18n.defaultLanguage; const t = texts[lang]; - + // 默认语言(zh)不显示前缀,其他语言显示前缀 const isDefaultLocale = lang === i18n.defaultLanguage; - const localePrefix = isDefaultLocale ? '' : `/${lang}`; + const localePrefix = isDefaultLocale ? "" : `/${lang}`; return ( <HomeLayout {...baseOptions(lang)}> @@ -110,7 +154,7 @@ export default function Home({ params }: Route.ComponentProps) { className="bg-fd-secondary hover:bg-fd-secondary/80 text-fd-secondary-foreground font-semibold rounded-lg px-6 py-3 transition-colors cursor-pointer border border-blue-600/50" href={`${localePrefix}/docs/development`} > - {t.hero.development} + {t.hero.development} </a> </div> </div> @@ -118,9 +162,9 @@ export default function Home({ params }: Route.ComponentProps) { {/* Launcher Showcase */} <div className="mb-16"> <div className="rounded-xl overflow-hidden shadow-2xl border border-fd-border"> - <img - src="/image.png" - alt="DropOut Launcher Interface" + <img + src="/image.png" + alt="DropOut Launcher Interface" className="w-full h-auto" /> </div> @@ -129,11 +173,12 @@ export default function Home({ params }: Route.ComponentProps) { {/* Features Grid */} <div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6 mb-16"> {t.features.items.map((item, i) => ( - <div key={i} className="p-6 rounded-lg border border-blue-600/20 bg-fd-card hover:border-blue-600/50 transition-colors"> + <div + key={i} + className="p-6 rounded-lg border border-blue-600/20 bg-fd-card hover:border-blue-600/50 transition-colors" + > <h3 className="font-semibold text-lg mb-2">{item.title}</h3> - <p className="text-sm text-fd-muted-foreground"> - {item.desc} - </p> + <p className="text-sm text-fd-muted-foreground">{item.desc}</p> </div> ))} </div> @@ -157,9 +202,7 @@ export default function Home({ params }: Route.ComponentProps) { {/* CTA Section */} <div className="text-center py-12 px-6 rounded-xl bg-gradient-to-r from-blue-600/10 to-cyan-500/10 border border-blue-600/20"> <h2 className="text-3xl font-bold mb-4">{t.cta.title}</h2> - <p className="text-lg text-fd-muted-foreground mb-6"> - {t.cta.desc} - </p> + <p className="text-lg text-fd-muted-foreground mb-6">{t.cta.desc}</p> <a className="inline-block bg-blue-600 hover:bg-blue-700 text-white font-semibold rounded-lg px-8 py-3 transition-colors" href={`${localePrefix}/docs/manual/getting-started`} diff --git a/packages/docs/app/routes/not-found.tsx b/packages/docs/app/routes/not-found.tsx index 1d9e041..7be6081 100644 --- a/packages/docs/app/routes/not-found.tsx +++ b/packages/docs/app/routes/not-found.tsx @@ -1,5 +1,5 @@ export function loader() { - throw new Response('Not Found', { status: 404 }); + throw new Response("Not Found", { status: 404 }); } export default function NotFound() { |