+
- 报名参加
+ ✨ 报名参加
diff --git a/config/home.config.ts b/config/home.config.ts
index 8a6a6bb..ca9b650 100644
--- a/config/home.config.ts
+++ b/config/home.config.ts
@@ -1,6 +1,26 @@
-/** 本周活动场次 - 同城活动用 */
+/** 开放城市 - 其他待开放 */
+export const CITIES = ["深圳", "广州", "惠州"] as const;
+
+/** 活动类型 */
+export const ACTIVITY_TYPES = {
+ "skill-exchange": "技能交换",
+ "side-hustle": "副业沙龙/茶话会",
+} as const;
+
+/** 本周活动场次 */
export const SESSIONS = [
- { id: "session-1", date: "3月16日 周六", time: "14:00", place: "朝阳区某咖啡馆", title: "周末咖啡局" },
- { id: "session-2", date: "3月17日 周日", time: "15:00", place: "海淀区某书店", title: "读书分享" },
- { id: "session-3", date: "3月22日 周六", time: "14:00", place: "东城区某空间", title: "新朋友见面会" },
+ { id: "session-1", date: "3月16日 周六", time: "14:00", place: "南山区某咖啡馆", city: "深圳", type: "skill-exchange" as const, title: "周末技能交换", coverImage: "https://picsum.photos/seed/s1/400/300" },
+ { id: "session-2", date: "3月17日 周日", time: "15:00", place: "天河区某书店", city: "广州", type: "side-hustle" as const, title: "副业沙龙", coverImage: "https://picsum.photos/seed/s2/400/300" },
+];
+
+/** 最近报名展示 - mock 头像从互联网获取 */
+export const RECENT_JOINERS = [
+ { name: "晓琪", avatar: "https://i.pravatar.cc/80?img=1" },
+ { name: "雨晴", avatar: "https://i.pravatar.cc/80?img=5" },
+ { name: "子豪", avatar: "https://i.pravatar.cc/80?img=11" },
+ { name: "林晓", avatar: "https://i.pravatar.cc/80?img=9" },
+ { name: "佳琪", avatar: "https://i.pravatar.cc/80?img=20" },
+ { name: "浩然", avatar: "https://i.pravatar.cc/80?img=12" },
+ { name: "心怡", avatar: "https://i.pravatar.cc/80?img=23" },
+ { name: "阿杰", avatar: "https://i.pravatar.cc/80?img=15" },
];
diff --git a/next.config.ts b/next.config.ts
index 2f6491c..c5ea6bf 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -2,6 +2,12 @@ import type { NextConfig } from "next";
const nextConfig: NextConfig = {
reactStrictMode: true,
+ images: {
+ remotePatterns: [
+ { protocol: "https", hostname: "picsum.photos", pathname: "/**" },
+ { protocol: "https", hostname: "i.pravatar.cc", pathname: "/**" },
+ ],
+ },
};
export default nextConfig;
diff --git a/package.json b/package.json
index de45a8a..f21f113 100644
--- a/package.json
+++ b/package.json
@@ -10,6 +10,7 @@
},
"dependencies": {
"next": "16.1.6",
+ "next-themes": "^0.4.6",
"pocketbase": "^0.26.8",
"react": "19.2.3",
"react-dom": "19.2.3"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4260314..3529690 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -11,6 +11,9 @@ importers:
next:
specifier: 16.1.6
version: 16.1.6(@babel/core@7.29.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ next-themes:
+ specifier: ^0.4.6
+ version: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
pocketbase:
specifier: ^0.26.8
version: 0.26.8
@@ -1504,6 +1507,12 @@ packages:
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ next-themes@0.4.6:
+ resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==}
+ peerDependencies:
+ react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
+
next@16.1.6:
resolution: {integrity: sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw==}
engines: {node: '>=20.9.0'}
@@ -3484,6 +3493,11 @@ snapshots:
natural-compare@1.4.0: {}
+ next-themes@0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ dependencies:
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+
next@16.1.6(@babel/core@7.29.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
'@next/env': 16.1.6