's'
This commit is contained in:
25
app/about/page.tsx
Normal file
25
app/about/page.tsx
Normal file
@@ -0,0 +1,25 @@
|
||||
import Link from "next/link";
|
||||
import { SiteHeader } from "~/components/layout/site-header";
|
||||
import { SiteFooter } from "~/components/layout/site-footer";
|
||||
|
||||
export default function AboutPage() {
|
||||
return (
|
||||
<div className="min-h-screen bg-white">
|
||||
<SiteHeader />
|
||||
<main className="container mx-auto px-4 py-16 md:px-6 md:py-24">
|
||||
<h1 className="text-3xl font-semibold text-neutral-900">关于 Nomadro</h1>
|
||||
<p className="mt-6 max-w-2xl text-neutral-600">
|
||||
Nomadro 是中文数字游民操作系统,致力于帮助更多人从固定工位走向自由生活与自由收入。
|
||||
我们提供城市探索、学习路径、会员社区三大核心模块,从地点、技能、工具到社群,构建完整的数字游民支持体系。
|
||||
</p>
|
||||
<Link
|
||||
href="/"
|
||||
className="mt-8 inline-block text-sm font-medium text-neutral-700 hover:text-neutral-900"
|
||||
>
|
||||
← 返回首页
|
||||
</Link>
|
||||
</main>
|
||||
<SiteFooter />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
32
app/contact/page.tsx
Normal file
32
app/contact/page.tsx
Normal file
@@ -0,0 +1,32 @@
|
||||
import Link from "next/link";
|
||||
import { SiteHeader } from "~/components/layout/site-header";
|
||||
import { SiteFooter } from "~/components/layout/site-footer";
|
||||
|
||||
export default function ContactPage() {
|
||||
return (
|
||||
<div className="min-h-screen bg-white">
|
||||
<SiteHeader />
|
||||
<main className="container mx-auto px-4 py-16 md:px-6 md:py-24">
|
||||
<h1 className="text-3xl font-semibold text-neutral-900">联系我们</h1>
|
||||
<p className="mt-6 max-w-2xl text-neutral-600">
|
||||
加入数字游民社群,获取最新动态与交流机会。
|
||||
</p>
|
||||
<Link
|
||||
href="https://meetup.hackrobot.cn"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="mt-6 inline-block rounded-lg bg-neutral-900 px-6 py-3 text-white hover:bg-neutral-800"
|
||||
>
|
||||
加入社群
|
||||
</Link>
|
||||
<Link
|
||||
href="/"
|
||||
className="ml-4 mt-8 inline-block text-sm font-medium text-neutral-700 hover:text-neutral-900"
|
||||
>
|
||||
← 返回首页
|
||||
</Link>
|
||||
</main>
|
||||
<SiteFooter />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
BIN
app/favicon.ico
Normal file
BIN
app/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
20
app/globals.css
Normal file
20
app/globals.css
Normal file
@@ -0,0 +1,20 @@
|
||||
@import "tailwindcss";
|
||||
|
||||
:root {
|
||||
--background: #ffffff;
|
||||
--foreground: #171717;
|
||||
}
|
||||
|
||||
@theme inline {
|
||||
--color-background: var(--background);
|
||||
--color-foreground: var(--foreground);
|
||||
--font-sans: var(--font-geist-sans), ui-sans-serif, system-ui, "PingFang SC",
|
||||
"Microsoft YaHei", sans-serif;
|
||||
--font-mono: var(--font-geist-mono), ui-monospace, monospace;
|
||||
}
|
||||
|
||||
body {
|
||||
background: var(--background);
|
||||
color: var(--foreground);
|
||||
font-family: var(--font-sans);
|
||||
}
|
||||
48
app/layout.tsx
Normal file
48
app/layout.tsx
Normal file
@@ -0,0 +1,48 @@
|
||||
import "./globals.css";
|
||||
|
||||
import { type Metadata } from "next";
|
||||
import { Geist, Geist_Mono } from "next/font/google";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Nomadro | 中文数字游民操作系统",
|
||||
description:
|
||||
"从城市、技能、工具到社群,一站开始你的数字游民生活。探索城市、学习路径、会员社区,帮你从固定工位走向自由生活与自由收入。",
|
||||
keywords: [
|
||||
"数字游民",
|
||||
"远程工作",
|
||||
"旅居",
|
||||
"自由职业",
|
||||
"城市探索",
|
||||
"学习路径",
|
||||
"会员社区",
|
||||
],
|
||||
openGraph: {
|
||||
title: "Nomadro | 中文数字游民操作系统",
|
||||
description:
|
||||
"从城市、技能、工具到社群,一站开始你的数字游民生活。",
|
||||
type: "website",
|
||||
},
|
||||
icons: [{ rel: "icon", url: "/nomadro.ico" }],
|
||||
};
|
||||
|
||||
const geist = Geist({
|
||||
subsets: ["latin"],
|
||||
variable: "--font-geist-sans",
|
||||
});
|
||||
|
||||
const geistMono = Geist_Mono({
|
||||
subsets: ["latin"],
|
||||
variable: "--font-geist-mono",
|
||||
});
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: Readonly<{ children: React.ReactNode }>) {
|
||||
return (
|
||||
<html lang="zh-CN" className={`${geist.variable} ${geistMono.variable}`}>
|
||||
<body className="font-sans antialiased">
|
||||
{children}
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
31
app/page.tsx
Normal file
31
app/page.tsx
Normal file
@@ -0,0 +1,31 @@
|
||||
import { SiteHeader } from "~/components/layout/site-header";
|
||||
import { SiteFooter } from "~/components/layout/site-footer";
|
||||
import { Hero } from "~/components/sections/hero";
|
||||
import { ValueGrid } from "~/components/sections/value-grid";
|
||||
import { EntryGrid } from "~/components/sections/entry-grid";
|
||||
import { Methodology } from "~/components/sections/methodology";
|
||||
import { Scenarios } from "~/components/sections/scenarios";
|
||||
import { Ecosystem } from "~/components/sections/ecosystem";
|
||||
import { ContentPreview } from "~/components/sections/content-preview";
|
||||
import { Trust } from "~/components/sections/trust";
|
||||
import { FinalCta } from "~/components/sections/final-cta";
|
||||
|
||||
export default function HomePage() {
|
||||
return (
|
||||
<div className="min-h-screen bg-white">
|
||||
<SiteHeader />
|
||||
<main>
|
||||
<Hero />
|
||||
<ValueGrid />
|
||||
<EntryGrid />
|
||||
<Methodology />
|
||||
<Scenarios />
|
||||
<Ecosystem />
|
||||
<ContentPreview />
|
||||
<Trust />
|
||||
<FinalCta />
|
||||
</main>
|
||||
<SiteFooter />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user