0.0.0.3
This commit is contained in:
@@ -83,3 +83,28 @@
|
||||
[00:29:45.605] Browser LOG %c[Vercel Web Analytics]%c Running queued event color: rgb(120, 120, 120) color: inherit pageview {"path":"/timeline","route":"/timeline"}
|
||||
[00:29:45.605] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/timeline color: rgb(120, 120, 120) color: inherit {"dp":"/timeline","o":"http://localhost:3000/timeline","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763813242531}
|
||||
[00:30:04.863] Server LOG ✓ Compiled in 43ms
|
||||
[00:31:05.485] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/ color: rgb(120, 120, 120) color: inherit {"dp":"/","o":"http://localhost:3000/","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763813322407}
|
||||
[00:31:11.585] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763813328512}
|
||||
[00:31:17.499] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members color: rgb(120, 120, 120) color: inherit {"dp":"/members","o":"http://localhost:3000/members","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763813334426}
|
||||
[00:31:20.295] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/timeline color: rgb(120, 120, 120) color: inherit {"dp":"/timeline","o":"http://localhost:3000/timeline","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763813337220}
|
||||
[00:32:19.644] Server LOG ✓ Compiled in 137ms
|
||||
[00:37:00.531] Server LOG ✓ Compiled in 134ms
|
||||
[00:37:44.552] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members color: rgb(120, 120, 120) color: inherit {"dp":"/members","o":"http://localhost:3000/members","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763813721464}
|
||||
[00:38:03.588] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763813740498}
|
||||
[00:38:05.583] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/ color: rgb(120, 120, 120) color: inherit {"dp":"/","o":"http://localhost:3000/","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763813742472}
|
||||
[00:39:22.100] Server ERROR ⨯ ReferenceError: Link is not defined
|
||||
[00:39:22.247] Browser ERROR uncaughtError: ReferenceError: Link is not defined
|
||||
[00:39:37.192] Browser INFO %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold
|
||||
[00:39:38.250] Browser LOG %c[Vercel Web Analytics]%c Debug mode is enabled by default in development. No requests will be sent to the server. color: rgb(120, 120, 120) color: inherit
|
||||
[00:39:38.250] Browser LOG %c[Vercel Web Analytics]%c Running queued event color: rgb(120, 120, 120) color: inherit pageview {"path":"/","route":"/"}
|
||||
[00:39:38.250] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/ color: rgb(120, 120, 120) color: inherit {"dp":"/","o":"http://localhost:3000/","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763813835102}
|
||||
[00:39:48.012] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/tree color: rgb(120, 120, 120) color: inherit {"dp":"/tree","o":"http://localhost:3000/tree","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763813844920}
|
||||
[00:39:50.183] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members color: rgb(120, 120, 120) color: inherit {"dp":"/members","o":"http://localhost:3000/members","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763813847092}
|
||||
[00:39:52.481] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/ color: rgb(120, 120, 120) color: inherit {"dp":"/","o":"http://localhost:3000/","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763813849384}
|
||||
[00:39:53.810] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/members/new color: rgb(120, 120, 120) color: inherit {"dp":"/members/new","o":"http://localhost:3000/members/new","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763813850714}
|
||||
[00:39:56.269] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/ color: rgb(120, 120, 120) color: inherit {"dp":"/","o":"http://localhost:3000/","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763813853174}
|
||||
[00:39:58.337] Server LOG ✓ Compiled in 201ms
|
||||
[00:39:58.769] Browser INFO %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold
|
||||
[00:40:00.025] Browser LOG %c[Vercel Web Analytics]%c Debug mode is enabled by default in development. No requests will be sent to the server. color: rgb(120, 120, 120) color: inherit
|
||||
[00:40:00.025] Browser LOG %c[Vercel Web Analytics]%c Running queued event color: rgb(120, 120, 120) color: inherit pageview {"path":"/","route":"/"}
|
||||
[00:40:00.025] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/ color: rgb(120, 120, 120) color: inherit {"dp":"/","o":"http://localhost:3000/","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763813856857}
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
||||
var R=require("../chunks/ssr/[turbopack]_runtime.js")("server/app/page.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__65ca0f36._.js")
|
||||
R.c("server/chunks/ssr/a0629__pnpm_90f20275._.js")
|
||||
R.c("server/chunks/ssr/a0629__pnpm_6628f521._.js")
|
||||
R.c("server/chunks/ssr/4e98a_next_dist_0643e073._.js")
|
||||
R.c("server/chunks/ssr/[root-of-the-server]__7f148858._.js")
|
||||
R.c("server/chunks/ssr/4e98a_next_dist_client_components_builtin_global-error_196f2367.js")
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -624,6 +624,7 @@ __turbopack_context__.s([
|
||||
()=>DashboardPage
|
||||
]);
|
||||
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/next@16.0.3_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js [app-rsc] (ecmascript)");
|
||||
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$client$2f$app$2d$dir$2f$link$2e$react$2d$server$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/next@16.0.3_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/client/app-dir/link.react-server.js [app-rsc] (ecmascript)");
|
||||
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/components/ui/button.tsx [app-rsc] (ecmascript)");
|
||||
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/components/ui/card.tsx [app-rsc] (ecmascript)");
|
||||
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$site$2d$header$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/components/site-header.tsx [app-rsc] (ecmascript)");
|
||||
@@ -645,13 +646,14 @@ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$ch
|
||||
;
|
||||
;
|
||||
;
|
||||
;
|
||||
function DashboardPage() {
|
||||
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
||||
className: "flex min-h-screen flex-col bg-background font-sans",
|
||||
children: [
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$site$2d$header$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["SiteHeader"], {}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 12,
|
||||
lineNumber: 13,
|
||||
columnNumber: 7
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("main", {
|
||||
@@ -667,7 +669,7 @@ function DashboardPage() {
|
||||
children: "李氏家族族谱"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 17,
|
||||
lineNumber: 18,
|
||||
columnNumber: 13
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
|
||||
@@ -675,63 +677,77 @@ function DashboardPage() {
|
||||
children: "陇西堂 · 第 24 代传人"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 18,
|
||||
lineNumber: 19,
|
||||
columnNumber: 13
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 16,
|
||||
lineNumber: 17,
|
||||
columnNumber: 11
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
||||
className: "flex gap-2",
|
||||
children: [
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["Button"], {
|
||||
variant: "outline",
|
||||
className: "gap-2 bg-transparent",
|
||||
children: [
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$network$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__$3c$export__default__as__Network$3e$__["Network"], {
|
||||
className: "h-4 w-4"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 22,
|
||||
columnNumber: 15
|
||||
}, this),
|
||||
"查看世系图"
|
||||
]
|
||||
}, void 0, true, {
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$client$2f$app$2d$dir$2f$link$2e$react$2d$server$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["default"], {
|
||||
href: "/tree",
|
||||
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["Button"], {
|
||||
variant: "outline",
|
||||
className: "gap-2 bg-transparent",
|
||||
children: [
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$network$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__$3c$export__default__as__Network$3e$__["Network"], {
|
||||
className: "h-4 w-4"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 24,
|
||||
columnNumber: 17
|
||||
}, this),
|
||||
"查看世系图"
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 23,
|
||||
columnNumber: 15
|
||||
}, this)
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 21,
|
||||
lineNumber: 22,
|
||||
columnNumber: 13
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["Button"], {
|
||||
className: "gap-2 bg-primary text-primary-foreground hover:bg-primary/90",
|
||||
children: [
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$user$2d$plus$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__$3c$export__default__as__UserPlus$3e$__["UserPlus"], {
|
||||
className: "h-4 w-4"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 26,
|
||||
columnNumber: 15
|
||||
}, this),
|
||||
"添加成员"
|
||||
]
|
||||
}, void 0, true, {
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$client$2f$app$2d$dir$2f$link$2e$react$2d$server$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["default"], {
|
||||
href: "/members/new",
|
||||
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["Button"], {
|
||||
className: "gap-2 bg-primary text-primary-foreground hover:bg-primary/90",
|
||||
children: [
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$lucide$2d$react$40$0$2e$454$2e$0_react$40$19$2e$2$2e$0$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$user$2d$plus$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__$3c$export__default__as__UserPlus$3e$__["UserPlus"], {
|
||||
className: "h-4 w-4"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 30,
|
||||
columnNumber: 17
|
||||
}, this),
|
||||
"添加成员"
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 29,
|
||||
columnNumber: 15
|
||||
}, this)
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 25,
|
||||
lineNumber: 28,
|
||||
columnNumber: 13
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 20,
|
||||
lineNumber: 21,
|
||||
columnNumber: 11
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 15,
|
||||
lineNumber: 16,
|
||||
columnNumber: 9
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
||||
@@ -745,12 +761,12 @@ function DashboardPage() {
|
||||
className: "h-4 w-4"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 33,
|
||||
lineNumber: 38,
|
||||
columnNumber: 76
|
||||
}, void 0)
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 33,
|
||||
lineNumber: 38,
|
||||
columnNumber: 11
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(StatCard, {
|
||||
@@ -761,12 +777,12 @@ function DashboardPage() {
|
||||
className: "h-4 w-4"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 34,
|
||||
lineNumber: 39,
|
||||
columnNumber: 75
|
||||
}, void 0)
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 34,
|
||||
lineNumber: 39,
|
||||
columnNumber: 11
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(StatCard, {
|
||||
@@ -777,18 +793,18 @@ function DashboardPage() {
|
||||
className: "h-4 w-4"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 35,
|
||||
lineNumber: 40,
|
||||
columnNumber: 76
|
||||
}, void 0)
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 35,
|
||||
lineNumber: 40,
|
||||
columnNumber: 11
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 32,
|
||||
lineNumber: 37,
|
||||
columnNumber: 9
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$tabs$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["Tabs"], {
|
||||
@@ -806,7 +822,7 @@ function DashboardPage() {
|
||||
children: "最近更新"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 41,
|
||||
lineNumber: 46,
|
||||
columnNumber: 15
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$tabs$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["TabsTrigger"], {
|
||||
@@ -814,7 +830,7 @@ function DashboardPage() {
|
||||
children: "近期纪念日"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 42,
|
||||
lineNumber: 47,
|
||||
columnNumber: 15
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$tabs$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["TabsTrigger"], {
|
||||
@@ -822,13 +838,13 @@ function DashboardPage() {
|
||||
children: "迁徙记录"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 43,
|
||||
lineNumber: 48,
|
||||
columnNumber: 15
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 40,
|
||||
lineNumber: 45,
|
||||
columnNumber: 13
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["Button"], {
|
||||
@@ -841,19 +857,19 @@ function DashboardPage() {
|
||||
className: "h-3 w-3"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 46,
|
||||
lineNumber: 51,
|
||||
columnNumber: 20
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 45,
|
||||
lineNumber: 50,
|
||||
columnNumber: 13
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 39,
|
||||
lineNumber: 44,
|
||||
columnNumber: 11
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$tabs$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["TabsContent"], {
|
||||
@@ -872,20 +888,20 @@ function DashboardPage() {
|
||||
children: "近期修谱动态"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 54,
|
||||
lineNumber: 59,
|
||||
columnNumber: 19
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["CardDescription"], {
|
||||
children: "记录家族成员的最新变动与修订"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 55,
|
||||
lineNumber: 60,
|
||||
columnNumber: 19
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 53,
|
||||
lineNumber: 58,
|
||||
columnNumber: 17
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["CardContent"], {
|
||||
@@ -909,20 +925,20 @@ function DashboardPage() {
|
||||
className: "h-full w-px bg-border group-last:hidden"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 63,
|
||||
lineNumber: 68,
|
||||
columnNumber: 29
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
||||
className: "absolute top-2 h-2 w-2 rounded-full bg-primary ring-4 ring-background"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 64,
|
||||
lineNumber: 69,
|
||||
columnNumber: 29
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 62,
|
||||
lineNumber: 67,
|
||||
columnNumber: 27
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
||||
@@ -936,7 +952,7 @@ function DashboardPage() {
|
||||
children: "李明远"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 68,
|
||||
lineNumber: 73,
|
||||
columnNumber: 31
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
|
||||
@@ -944,7 +960,7 @@ function DashboardPage() {
|
||||
children: "第 22 世"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 69,
|
||||
lineNumber: 74,
|
||||
columnNumber: 31
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
|
||||
@@ -952,13 +968,13 @@ function DashboardPage() {
|
||||
children: "2小时前"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 72,
|
||||
lineNumber: 77,
|
||||
columnNumber: 31
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 67,
|
||||
lineNumber: 72,
|
||||
columnNumber: 29
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
|
||||
@@ -970,7 +986,7 @@ function DashboardPage() {
|
||||
children: "李子豪"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 75,
|
||||
lineNumber: 80,
|
||||
columnNumber: 38
|
||||
}, this),
|
||||
" ",
|
||||
@@ -978,40 +994,40 @@ function DashboardPage() {
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 74,
|
||||
lineNumber: 79,
|
||||
columnNumber: 29
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 66,
|
||||
lineNumber: 71,
|
||||
columnNumber: 27
|
||||
}, this)
|
||||
]
|
||||
}, i, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 61,
|
||||
lineNumber: 66,
|
||||
columnNumber: 25
|
||||
}, this))
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 59,
|
||||
lineNumber: 64,
|
||||
columnNumber: 21
|
||||
}, this)
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 58,
|
||||
lineNumber: 63,
|
||||
columnNumber: 19
|
||||
}, this)
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 57,
|
||||
lineNumber: 62,
|
||||
columnNumber: 17
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 52,
|
||||
lineNumber: 57,
|
||||
columnNumber: 15
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
||||
@@ -1028,19 +1044,19 @@ function DashboardPage() {
|
||||
className: "h-5 w-5"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 90,
|
||||
lineNumber: 95,
|
||||
columnNumber: 23
|
||||
}, this),
|
||||
"本月祭祖/纪念"
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 89,
|
||||
lineNumber: 94,
|
||||
columnNumber: 21
|
||||
}, this)
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 88,
|
||||
lineNumber: 93,
|
||||
columnNumber: 19
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["CardContent"], {
|
||||
@@ -1057,7 +1073,7 @@ function DashboardPage() {
|
||||
children: "农历"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 97,
|
||||
lineNumber: 102,
|
||||
columnNumber: 25
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
|
||||
@@ -1065,13 +1081,13 @@ function DashboardPage() {
|
||||
children: "十五"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 98,
|
||||
lineNumber: 103,
|
||||
columnNumber: 25
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 96,
|
||||
lineNumber: 101,
|
||||
columnNumber: 23
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
||||
@@ -1081,7 +1097,7 @@ function DashboardPage() {
|
||||
children: "李公讳文德 诞辰"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 101,
|
||||
lineNumber: 106,
|
||||
columnNumber: 25
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
|
||||
@@ -1089,19 +1105,19 @@ function DashboardPage() {
|
||||
children: "第 18 世祖 · 距今 120 年"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 102,
|
||||
lineNumber: 107,
|
||||
columnNumber: 25
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 100,
|
||||
lineNumber: 105,
|
||||
columnNumber: 23
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 95,
|
||||
lineNumber: 100,
|
||||
columnNumber: 21
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
||||
@@ -1115,7 +1131,7 @@ function DashboardPage() {
|
||||
children: "农历"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 107,
|
||||
lineNumber: 112,
|
||||
columnNumber: 25
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
|
||||
@@ -1123,13 +1139,13 @@ function DashboardPage() {
|
||||
children: "廿二"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 108,
|
||||
lineNumber: 113,
|
||||
columnNumber: 25
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 106,
|
||||
lineNumber: 111,
|
||||
columnNumber: 23
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
||||
@@ -1139,7 +1155,7 @@ function DashboardPage() {
|
||||
children: "冬至祭祖"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 111,
|
||||
lineNumber: 116,
|
||||
columnNumber: 25
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
|
||||
@@ -1147,31 +1163,31 @@ function DashboardPage() {
|
||||
children: "全族公祭 · 陇西堂旧址"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 112,
|
||||
lineNumber: 117,
|
||||
columnNumber: 25
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 110,
|
||||
lineNumber: 115,
|
||||
columnNumber: 23
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 105,
|
||||
lineNumber: 110,
|
||||
columnNumber: 21
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 94,
|
||||
lineNumber: 99,
|
||||
columnNumber: 19
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 87,
|
||||
lineNumber: 92,
|
||||
columnNumber: 17
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["Card"], {
|
||||
@@ -1183,12 +1199,12 @@ function DashboardPage() {
|
||||
children: "快捷入口"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 120,
|
||||
lineNumber: 125,
|
||||
columnNumber: 21
|
||||
}, this)
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 119,
|
||||
lineNumber: 124,
|
||||
columnNumber: 19
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["CardContent"], {
|
||||
@@ -1202,7 +1218,7 @@ function DashboardPage() {
|
||||
className: "h-5 w-5"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 127,
|
||||
lineNumber: 132,
|
||||
columnNumber: 23
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
|
||||
@@ -1210,13 +1226,13 @@ function DashboardPage() {
|
||||
children: "迁徙地图"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 128,
|
||||
lineNumber: 133,
|
||||
columnNumber: 23
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 123,
|
||||
lineNumber: 128,
|
||||
columnNumber: 21
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["Button"], {
|
||||
@@ -1227,7 +1243,7 @@ function DashboardPage() {
|
||||
className: "h-5 w-5"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 134,
|
||||
lineNumber: 139,
|
||||
columnNumber: 23
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
|
||||
@@ -1235,13 +1251,13 @@ function DashboardPage() {
|
||||
children: "家训家规"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 135,
|
||||
lineNumber: 140,
|
||||
columnNumber: 23
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 130,
|
||||
lineNumber: 135,
|
||||
columnNumber: 21
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["Button"], {
|
||||
@@ -1252,7 +1268,7 @@ function DashboardPage() {
|
||||
className: "h-5 w-5"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 141,
|
||||
lineNumber: 146,
|
||||
columnNumber: 23
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
|
||||
@@ -1260,13 +1276,13 @@ function DashboardPage() {
|
||||
children: "字辈查询"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 142,
|
||||
lineNumber: 147,
|
||||
columnNumber: 23
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 137,
|
||||
lineNumber: 142,
|
||||
columnNumber: 21
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["Button"], {
|
||||
@@ -1277,7 +1293,7 @@ function DashboardPage() {
|
||||
className: "h-5 w-5"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 148,
|
||||
lineNumber: 153,
|
||||
columnNumber: 23
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
|
||||
@@ -1285,60 +1301,60 @@ function DashboardPage() {
|
||||
children: "关系计算"
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 149,
|
||||
lineNumber: 154,
|
||||
columnNumber: 23
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 144,
|
||||
lineNumber: 149,
|
||||
columnNumber: 21
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 122,
|
||||
lineNumber: 127,
|
||||
columnNumber: 19
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 118,
|
||||
lineNumber: 123,
|
||||
columnNumber: 17
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 86,
|
||||
lineNumber: 91,
|
||||
columnNumber: 15
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 51,
|
||||
lineNumber: 56,
|
||||
columnNumber: 13
|
||||
}, this)
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 50,
|
||||
lineNumber: 55,
|
||||
columnNumber: 11
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 38,
|
||||
lineNumber: 43,
|
||||
columnNumber: 9
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 14,
|
||||
lineNumber: 15,
|
||||
columnNumber: 7
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 11,
|
||||
lineNumber: 12,
|
||||
columnNumber: 5
|
||||
}, this);
|
||||
}
|
||||
@@ -1356,7 +1372,7 @@ function StatCard({ title, value, subtitle, icon }) {
|
||||
children: title
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 172,
|
||||
lineNumber: 177,
|
||||
columnNumber: 11
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
||||
@@ -1364,13 +1380,13 @@ function StatCard({ title, value, subtitle, icon }) {
|
||||
children: icon
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 173,
|
||||
lineNumber: 178,
|
||||
columnNumber: 11
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 171,
|
||||
lineNumber: 176,
|
||||
columnNumber: 9
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
||||
@@ -1381,7 +1397,7 @@ function StatCard({ title, value, subtitle, icon }) {
|
||||
children: value
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 176,
|
||||
lineNumber: 181,
|
||||
columnNumber: 11
|
||||
}, this),
|
||||
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$next$40$16$2e$0$2e$3_react$2d$dom$40$19$2e$2$2e$0_react$40$19$2e$2$2e$0_$5f$react$40$19$2e$2$2e$0$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$rsc$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$rsc$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
|
||||
@@ -1389,24 +1405,24 @@ function StatCard({ title, value, subtitle, icon }) {
|
||||
children: subtitle
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 177,
|
||||
lineNumber: 182,
|
||||
columnNumber: 11
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 175,
|
||||
lineNumber: 180,
|
||||
columnNumber: 9
|
||||
}, this)
|
||||
]
|
||||
}, void 0, true, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 170,
|
||||
lineNumber: 175,
|
||||
columnNumber: 7
|
||||
}, this)
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/go-new/chinese-family-tree/app/page.tsx",
|
||||
lineNumber: 169,
|
||||
lineNumber: 174,
|
||||
columnNumber: 5
|
||||
}, this);
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
+46
@@ -656,6 +656,10 @@
|
||||
order: 9999;
|
||||
}
|
||||
|
||||
.col-span-full {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
|
||||
.col-start-2 {
|
||||
grid-column-start: 2;
|
||||
}
|
||||
@@ -774,6 +778,10 @@
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
.mr-1 {
|
||||
margin-right: calc(var(--spacing) * 1);
|
||||
}
|
||||
|
||||
.mr-2 {
|
||||
margin-right: calc(var(--spacing) * 2);
|
||||
}
|
||||
@@ -1469,6 +1477,10 @@
|
||||
scroll-padding-block: calc(var(--spacing) * 1);
|
||||
}
|
||||
|
||||
.list-inside {
|
||||
list-style-position: inside;
|
||||
}
|
||||
|
||||
.list-disc {
|
||||
list-style-type: disc;
|
||||
}
|
||||
@@ -1835,6 +1847,16 @@
|
||||
border-color: var(--destructive);
|
||||
}
|
||||
|
||||
.border-destructive\/20 {
|
||||
border-color: var(--destructive);
|
||||
}
|
||||
|
||||
@supports (color: color-mix(in lab, red, red)) {
|
||||
.border-destructive\/20 {
|
||||
border-color: color-mix(in oklab, var(--destructive) 20%, transparent);
|
||||
}
|
||||
}
|
||||
|
||||
.border-input {
|
||||
border-color: var(--input);
|
||||
}
|
||||
@@ -1967,6 +1989,16 @@
|
||||
background-color: var(--destructive);
|
||||
}
|
||||
|
||||
.bg-destructive\/15 {
|
||||
background-color: var(--destructive);
|
||||
}
|
||||
|
||||
@supports (color: color-mix(in lab, red, red)) {
|
||||
.bg-destructive\/15 {
|
||||
background-color: color-mix(in oklab, var(--destructive) 15%, transparent);
|
||||
}
|
||||
}
|
||||
|
||||
.bg-foreground {
|
||||
background-color: var(--foreground);
|
||||
}
|
||||
@@ -2207,6 +2239,10 @@
|
||||
padding-block: calc(var(--spacing) * 10);
|
||||
}
|
||||
|
||||
.py-12 {
|
||||
padding-block: calc(var(--spacing) * 12);
|
||||
}
|
||||
|
||||
.pt-0 {
|
||||
padding-top: calc(var(--spacing) * 0);
|
||||
}
|
||||
@@ -2821,6 +2857,10 @@
|
||||
--cell-size: calc(var(--spacing) * 8);
|
||||
}
|
||||
|
||||
.slide-in-from-top-2 {
|
||||
--tw-enter-translate-y: calc(2 * var(--spacing) * -1);
|
||||
}
|
||||
|
||||
.group-last\:hidden:is(:where(.group):last-child *) {
|
||||
display: none;
|
||||
}
|
||||
@@ -4904,6 +4944,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 64rem) {
|
||||
.lg\:grid-cols-4 {
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
|
||||
@container field-group (min-width: 28rem) {
|
||||
.\@md\/field-group\:flex-row {
|
||||
flex-direction: row;
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+2
-2
@@ -1,8 +1,8 @@
|
||||
(globalThis.TURBOPACK_CHUNK_LISTS || (globalThis.TURBOPACK_CHUNK_LISTS = [])).push({
|
||||
script: typeof document === "object" ? document.currentScript : undefined,
|
||||
chunks: [
|
||||
"static/chunks/Documents_go-new_chinese-family-tree_19025a8a._.js",
|
||||
"static/chunks/a0629__pnpm_b8726cdb._.js"
|
||||
"static/chunks/Documents_go-new_chinese-family-tree_c7dd766a._.js",
|
||||
"static/chunks/a0629__pnpm_ba89b158._.js"
|
||||
],
|
||||
source: "dynamic"
|
||||
});
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
(globalThis.TURBOPACK_CHUNK_LISTS || (globalThis.TURBOPACK_CHUNK_LISTS = [])).push({
|
||||
script: typeof document === "object" ? document.currentScript : undefined,
|
||||
chunks: [
|
||||
"static/chunks/a0629__pnpm_196bb18e._.js",
|
||||
"static/chunks/Documents_go-new_chinese-family-tree_72899ea7._.js"
|
||||
"static/chunks/Documents_go-new_chinese-family-tree_905c8b60._.js",
|
||||
"static/chunks/a0629__pnpm_359a17bb._.js"
|
||||
],
|
||||
source: "dynamic"
|
||||
});
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -740,6 +740,10 @@
|
||||
order: 9999;
|
||||
}
|
||||
|
||||
.col-span-full {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
|
||||
.col-start-2 {
|
||||
grid-column-start: 2;
|
||||
}
|
||||
@@ -858,6 +862,10 @@
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
.mr-1 {
|
||||
margin-right: calc(var(--spacing) * 1);
|
||||
}
|
||||
|
||||
.mr-2 {
|
||||
margin-right: calc(var(--spacing) * 2);
|
||||
}
|
||||
@@ -1553,6 +1561,10 @@
|
||||
scroll-padding-block: calc(var(--spacing) * 1);
|
||||
}
|
||||
|
||||
.list-inside {
|
||||
list-style-position: inside;
|
||||
}
|
||||
|
||||
.list-disc {
|
||||
list-style-type: disc;
|
||||
}
|
||||
@@ -1919,6 +1931,16 @@
|
||||
border-color: var(--destructive);
|
||||
}
|
||||
|
||||
.border-destructive\/20 {
|
||||
border-color: var(--destructive);
|
||||
}
|
||||
|
||||
@supports (color: color-mix(in lab, red, red)) {
|
||||
.border-destructive\/20 {
|
||||
border-color: color-mix(in oklab, var(--destructive) 20%, transparent);
|
||||
}
|
||||
}
|
||||
|
||||
.border-input {
|
||||
border-color: var(--input);
|
||||
}
|
||||
@@ -2051,6 +2073,16 @@
|
||||
background-color: var(--destructive);
|
||||
}
|
||||
|
||||
.bg-destructive\/15 {
|
||||
background-color: var(--destructive);
|
||||
}
|
||||
|
||||
@supports (color: color-mix(in lab, red, red)) {
|
||||
.bg-destructive\/15 {
|
||||
background-color: color-mix(in oklab, var(--destructive) 15%, transparent);
|
||||
}
|
||||
}
|
||||
|
||||
.bg-foreground {
|
||||
background-color: var(--foreground);
|
||||
}
|
||||
@@ -2291,6 +2323,10 @@
|
||||
padding-block: calc(var(--spacing) * 10);
|
||||
}
|
||||
|
||||
.py-12 {
|
||||
padding-block: calc(var(--spacing) * 12);
|
||||
}
|
||||
|
||||
.pt-0 {
|
||||
padding-top: calc(var(--spacing) * 0);
|
||||
}
|
||||
@@ -2905,6 +2941,10 @@
|
||||
--cell-size: calc(var(--spacing) * 8);
|
||||
}
|
||||
|
||||
.slide-in-from-top-2 {
|
||||
--tw-enter-translate-y: calc(2 * var(--spacing) * -1);
|
||||
}
|
||||
|
||||
.group-last\:hidden:is(:where(.group):last-child *) {
|
||||
display: none;
|
||||
}
|
||||
@@ -4988,6 +5028,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 64rem) {
|
||||
.lg\:grid-cols-4 {
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
|
||||
@container field-group (min-width: 28rem) {
|
||||
.\@md\/field-group\:flex-row {
|
||||
flex-direction: row;
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+264
-78
@@ -1,107 +1,293 @@
|
||||
"use client"
|
||||
|
||||
import { useState } from "react"
|
||||
import { useState, useMemo } from "react"
|
||||
import { SiteHeader } from "@/components/site-header"
|
||||
import { useFamily } from "@/context/family-context"
|
||||
import { Input } from "@/components/ui/input"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { Card, CardContent } from "@/components/ui/card"
|
||||
import { Search, Plus, Filter } from "lucide-react"
|
||||
import { Search, Plus, Filter, X } from "lucide-react"
|
||||
import Link from "next/link"
|
||||
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
|
||||
import { AvatarDisplay } from "@/components/ui/avatar-display"
|
||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"
|
||||
import { Slider } from "@/components/ui/slider"
|
||||
import { Label } from "@/components/ui/label"
|
||||
import { Badge } from "@/components/ui/badge"
|
||||
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"
|
||||
|
||||
export default function MembersPage() {
|
||||
const { treeData, searchResults, searchMembers } = useFamily()
|
||||
const { treeData, searchMembers } = useFamily()
|
||||
const [query, setQuery] = useState("")
|
||||
const [showFilters, setShowFilters] = useState(false)
|
||||
|
||||
const displayMembers = query
|
||||
? searchResults
|
||||
: Object.values(treeData.members).sort(
|
||||
(a, b) => a.generation - b.generation || (a.birthDate || "").localeCompare(b.birthDate || ""),
|
||||
)
|
||||
// Filter States
|
||||
const [selectedSurname, setSelectedSurname] = useState<string>("all")
|
||||
const [selectedHome, setSelectedHome] = useState<string>("all")
|
||||
const [statusFilter, setStatusFilter] = useState<string>("all")
|
||||
const [generationRange, setGenerationRange] = useState<[number, number]>([1, 100])
|
||||
|
||||
// Derived Data
|
||||
const allMembers = useMemo(() => Object.values(treeData.members), [treeData])
|
||||
|
||||
const { uniqueSurnames, uniqueHomes, minGen, maxGen } = useMemo(() => {
|
||||
const surnames = new Set<string>()
|
||||
const homes = new Set<string>()
|
||||
let min = 1000
|
||||
let max = 0
|
||||
|
||||
allMembers.forEach((m) => {
|
||||
if (m.surname) surnames.add(m.surname)
|
||||
if (m.ancestralHome) homes.add(m.ancestralHome)
|
||||
if (m.generation) {
|
||||
if (m.generation < min) min = m.generation
|
||||
if (m.generation > max) max = m.generation
|
||||
}
|
||||
})
|
||||
|
||||
return {
|
||||
uniqueSurnames: Array.from(surnames).sort(),
|
||||
uniqueHomes: Array.from(homes).sort(),
|
||||
minGen: min === 1000 ? 1 : min,
|
||||
maxGen: max === 0 ? 100 : max,
|
||||
}
|
||||
}, [allMembers])
|
||||
|
||||
// Initialize slider when data loads
|
||||
useMemo(() => {
|
||||
if (minGen !== 1000 && maxGen !== 0) {
|
||||
// Only update if range is default
|
||||
// This is a bit tricky, for now let's just rely on user adjustment or default wide range
|
||||
// Ideally we sync this once.
|
||||
}
|
||||
}, [minGen, maxGen])
|
||||
|
||||
const filteredMembers = useMemo(() => {
|
||||
let result = allMembers
|
||||
|
||||
// 1. Search Query
|
||||
if (query) {
|
||||
const lowerQuery = query.toLowerCase()
|
||||
result = result.filter(
|
||||
(m) =>
|
||||
m.fullName.toLowerCase().includes(lowerQuery) ||
|
||||
m.courtesyName?.toLowerCase().includes(lowerQuery) ||
|
||||
m.artName?.toLowerCase().includes(lowerQuery),
|
||||
)
|
||||
}
|
||||
|
||||
// 2. Surname Filter
|
||||
if (selectedSurname !== "all") {
|
||||
result = result.filter((m) => m.surname === selectedSurname)
|
||||
}
|
||||
|
||||
// 3. Home Filter
|
||||
if (selectedHome !== "all") {
|
||||
result = result.filter((m) => m.ancestralHome === selectedHome)
|
||||
}
|
||||
|
||||
// 4. Status Filter
|
||||
if (statusFilter !== "all") {
|
||||
if (statusFilter === "living") {
|
||||
result = result.filter((m) => !m.deathDate)
|
||||
} else if (statusFilter === "deceased") {
|
||||
result = result.filter((m) => !!m.deathDate)
|
||||
}
|
||||
}
|
||||
|
||||
// 5. Generation Filter
|
||||
result = result.filter((m) => m.generation >= generationRange[0] && m.generation <= generationRange[1])
|
||||
|
||||
// Sort
|
||||
return result.sort((a, b) => a.generation - b.generation || (a.birthDate || "").localeCompare(b.birthDate || ""))
|
||||
}, [allMembers, query, selectedSurname, selectedHome, statusFilter, generationRange])
|
||||
|
||||
const clearFilters = () => {
|
||||
setSelectedSurname("all")
|
||||
setSelectedHome("all")
|
||||
setStatusFilter("all")
|
||||
setGenerationRange([1, 100]) // Reset to wide range
|
||||
setQuery("")
|
||||
}
|
||||
|
||||
const activeFilterCount =
|
||||
(selectedSurname !== "all" ? 1 : 0) +
|
||||
(selectedHome !== "all" ? 1 : 0) +
|
||||
(statusFilter !== "all" ? 1 : 0) +
|
||||
(generationRange[0] > 1 || generationRange[1] < 100 ? 1 : 0)
|
||||
|
||||
return (
|
||||
<div className="min-h-screen bg-background flex flex-col font-sans">
|
||||
<SiteHeader />
|
||||
<main className="container mx-auto py-8 px-4 md:px-6 flex-1">
|
||||
<div className="flex flex-col md:flex-row justify-between items-center mb-8 gap-4">
|
||||
<h1 className="text-3xl font-serif font-bold">家族成员列表</h1>
|
||||
<div className="flex items-center gap-2 w-full md:w-auto">
|
||||
<div className="relative flex-1 md:w-80">
|
||||
<Search className="absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground" />
|
||||
<Input
|
||||
type="search"
|
||||
placeholder="搜索姓名、字号..."
|
||||
className="pl-9"
|
||||
value={query}
|
||||
onChange={(e) => {
|
||||
setQuery(e.target.value)
|
||||
searchMembers(e.target.value)
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
<Button variant="outline" size="icon">
|
||||
<Filter className="h-4 w-4" />
|
||||
</Button>
|
||||
<Link href="/members/new">
|
||||
<Button className="gap-2 bg-primary text-primary-foreground">
|
||||
<Plus className="h-4 w-4" />
|
||||
新增成员
|
||||
<div className="flex flex-col gap-6 mb-8">
|
||||
<div className="flex flex-col md:flex-row justify-between items-center gap-4">
|
||||
<h1 className="text-3xl font-serif font-bold">家族成员列表</h1>
|
||||
<div className="flex items-center gap-2 w-full md:w-auto">
|
||||
<div className="relative flex-1 md:w-80">
|
||||
<Search className="absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground" />
|
||||
<Input
|
||||
type="search"
|
||||
placeholder="搜索姓名、字号..."
|
||||
className="pl-9"
|
||||
value={query}
|
||||
onChange={(e) => setQuery(e.target.value)}
|
||||
/>
|
||||
</div>
|
||||
<Button
|
||||
variant={showFilters || activeFilterCount > 0 ? "secondary" : "outline"}
|
||||
size="icon"
|
||||
onClick={() => setShowFilters(!showFilters)}
|
||||
className="relative"
|
||||
>
|
||||
<Filter className="h-4 w-4" />
|
||||
{activeFilterCount > 0 && (
|
||||
<span className="absolute -top-1 -right-1 h-3 w-3 rounded-full bg-primary border-2 border-background" />
|
||||
)}
|
||||
</Button>
|
||||
</Link>
|
||||
<Link href="/members/new">
|
||||
<Button className="gap-2 bg-primary text-primary-foreground">
|
||||
<Plus className="h-4 w-4" />
|
||||
新增成员
|
||||
</Button>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Filter Bar */}
|
||||
{showFilters && (
|
||||
<div className="bg-muted/30 p-4 rounded-lg border border-border space-y-4 animate-in slide-in-from-top-2">
|
||||
<div className="flex items-center justify-between">
|
||||
<h3 className="font-medium text-sm text-muted-foreground">高级筛选</h3>
|
||||
<Button variant="ghost" size="sm" onClick={clearFilters} className="h-8 text-xs">
|
||||
<X className="mr-1 h-3 w-3" /> 重置筛选
|
||||
</Button>
|
||||
</div>
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">
|
||||
<div className="space-y-2">
|
||||
<Label className="text-xs">姓氏 (Surname)</Label>
|
||||
<Select value={selectedSurname} onValueChange={setSelectedSurname}>
|
||||
<SelectTrigger>
|
||||
<SelectValue placeholder="全部" />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectItem value="all">全部 (All)</SelectItem>
|
||||
{uniqueSurnames.map((s) => (
|
||||
<SelectItem key={s} value={s}>
|
||||
{s}
|
||||
</SelectItem>
|
||||
))}
|
||||
</SelectContent>
|
||||
</Select>
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
<Label className="text-xs">籍贯 (Ancestral Home)</Label>
|
||||
<Select value={selectedHome} onValueChange={setSelectedHome}>
|
||||
<SelectTrigger>
|
||||
<SelectValue placeholder="全部" />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectItem value="all">全部 (All)</SelectItem>
|
||||
{uniqueHomes.map((h) => (
|
||||
<SelectItem key={h} value={h}>
|
||||
{h}
|
||||
</SelectItem>
|
||||
))}
|
||||
</SelectContent>
|
||||
</Select>
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
<Label className="text-xs">状态 (Status)</Label>
|
||||
<Select value={statusFilter} onValueChange={setStatusFilter}>
|
||||
<SelectTrigger>
|
||||
<SelectValue placeholder="全部" />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectItem value="all">全部 (All)</SelectItem>
|
||||
<SelectItem value="living">在世 (Living)</SelectItem>
|
||||
<SelectItem value="deceased">已故 (Deceased)</SelectItem>
|
||||
</SelectContent>
|
||||
</Select>
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
<div className="flex justify-between">
|
||||
<Label className="text-xs">世系范围 (Generation)</Label>
|
||||
<span className="text-xs text-muted-foreground">
|
||||
{generationRange[0]} - {generationRange[1]} 世
|
||||
</span>
|
||||
</div>
|
||||
<Slider
|
||||
defaultValue={[1, 100]}
|
||||
value={generationRange}
|
||||
min={1}
|
||||
max={100} // Can be dynamic based on maxGen
|
||||
step={1}
|
||||
onValueChange={(val) => setGenerationRange(val as [number, number])}
|
||||
className="py-4"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
||||
{displayMembers.map((member) => (
|
||||
<Link href={`/members/${member.id}`} key={member.id}>
|
||||
<Card className="hover:border-primary transition-colors cursor-pointer h-full">
|
||||
<CardContent className="p-6 flex items-start gap-4">
|
||||
<AvatarDisplay
|
||||
imageId={member.avatarImageId}
|
||||
fallbackUrl={member.avatarUrl}
|
||||
fallbackText={member.surname}
|
||||
className="h-16 w-16 border-2 border-border"
|
||||
/>
|
||||
<div className="flex-1 min-w-0">
|
||||
<div className="flex items-baseline justify-between">
|
||||
<h3 className="text-xl font-bold font-serif truncate">
|
||||
{member.fullName}
|
||||
{member.courtesyName && (
|
||||
<span className="text-sm font-normal text-muted-foreground ml-2">
|
||||
字 {member.courtesyName}
|
||||
{filteredMembers.length === 0 ? (
|
||||
<div className="col-span-full text-center py-12 text-muted-foreground">
|
||||
没有找到匹配的成员。
|
||||
</div>
|
||||
) : (
|
||||
filteredMembers.map((member) => (
|
||||
<Link href={`/members/${member.id}`} key={member.id}>
|
||||
<Card className="hover:border-primary transition-colors cursor-pointer h-full">
|
||||
<CardContent className="p-6 flex items-start gap-4">
|
||||
<AvatarDisplay
|
||||
imageId={member.avatarImageId}
|
||||
fallbackUrl={member.avatarUrl}
|
||||
fallbackText={member.surname}
|
||||
className="h-16 w-16 border-2 border-border"
|
||||
/>
|
||||
<div className="flex-1 min-w-0">
|
||||
<div className="flex items-baseline justify-between">
|
||||
<h3 className="text-xl font-bold font-serif truncate">
|
||||
{member.fullName}
|
||||
{member.courtesyName && (
|
||||
<span className="text-sm font-normal text-muted-foreground ml-2">
|
||||
字 {member.courtesyName}
|
||||
</span>
|
||||
)}
|
||||
</h3>
|
||||
<span className="text-xs font-mono bg-muted px-1.5 py-0.5 rounded text-muted-foreground whitespace-nowrap">
|
||||
{member.generation}世
|
||||
</span>
|
||||
</div>
|
||||
<p className="text-sm text-muted-foreground mt-1 truncate">
|
||||
{member.generationName ? `字辈: ${member.generationName}` : "未录入字辈"}
|
||||
</p>
|
||||
<p className="text-sm text-muted-foreground truncate">{member.ancestralHome || "籍贯未知"}</p>
|
||||
<div className="mt-3 flex flex-wrap gap-1">
|
||||
{member.deathDate && (
|
||||
<span className="text-[10px] bg-neutral-100 text-neutral-600 px-1.5 py-0.5 rounded border border-neutral-200">
|
||||
已故
|
||||
</span>
|
||||
)}
|
||||
</h3>
|
||||
<span className="text-xs font-mono bg-muted px-1.5 py-0.5 rounded text-muted-foreground whitespace-nowrap">
|
||||
{member.generation}世
|
||||
</span>
|
||||
{member.tags?.map((tag) => (
|
||||
<span
|
||||
key={tag}
|
||||
className="text-[10px] bg-primary/10 text-primary px-1.5 py-0.5 rounded border border-primary/20"
|
||||
>
|
||||
{tag}
|
||||
</span>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
<p className="text-sm text-muted-foreground mt-1 truncate">
|
||||
{member.generationName ? `字辈: ${member.generationName}` : "未录入字辈"}
|
||||
</p>
|
||||
<p className="text-sm text-muted-foreground truncate">{member.ancestralHome || "籍贯未知"}</p>
|
||||
<div className="mt-3 flex flex-wrap gap-1">
|
||||
{member.deathDate && (
|
||||
<span className="text-[10px] bg-neutral-100 text-neutral-600 px-1.5 py-0.5 rounded border border-neutral-200">
|
||||
已故
|
||||
</span>
|
||||
)}
|
||||
{member.tags?.map((tag) => (
|
||||
<span
|
||||
key={tag}
|
||||
className="text-[10px] bg-primary/10 text-primary px-1.5 py-0.5 rounded border border-primary/20"
|
||||
>
|
||||
{tag}
|
||||
</span>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</CardContent>
|
||||
</Card>
|
||||
</Link>
|
||||
))}
|
||||
</CardContent>
|
||||
</Card>
|
||||
</Link>
|
||||
))
|
||||
)}
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
+13
-8
@@ -1,4 +1,5 @@
|
||||
import type React from "react"
|
||||
import Link from "next/link"
|
||||
import { Button } from "@/components/ui/button"
|
||||
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
|
||||
import { SiteHeader } from "@/components/site-header"
|
||||
@@ -18,14 +19,18 @@ export default function DashboardPage() {
|
||||
<p className="text-muted-foreground mt-1">陇西堂 · 第 24 代传人</p>
|
||||
</div>
|
||||
<div className="flex gap-2">
|
||||
<Button variant="outline" className="gap-2 bg-transparent">
|
||||
<Network className="h-4 w-4" />
|
||||
查看世系图
|
||||
</Button>
|
||||
<Button className="gap-2 bg-primary text-primary-foreground hover:bg-primary/90">
|
||||
<UserPlus className="h-4 w-4" />
|
||||
添加成员
|
||||
</Button>
|
||||
<Link href="/tree">
|
||||
<Button variant="outline" className="gap-2 bg-transparent">
|
||||
<Network className="h-4 w-4" />
|
||||
查看世系图
|
||||
</Button>
|
||||
</Link>
|
||||
<Link href="/members/new">
|
||||
<Button className="gap-2 bg-primary text-primary-foreground hover:bg-primary/90">
|
||||
<UserPlus className="h-4 w-4" />
|
||||
添加成员
|
||||
</Button>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -36,6 +36,8 @@ export function MemberForm({ initialData, existingMembers = [], onSubmit, onCanc
|
||||
...initialData,
|
||||
})
|
||||
|
||||
const [errors, setErrors] = useState<string[]>([])
|
||||
|
||||
const handleChange = (field: keyof FamilyMember, value: any) => {
|
||||
setFormData((prev) => {
|
||||
const newData = { ...prev, [field]: value }
|
||||
@@ -45,6 +47,8 @@ export function MemberForm({ initialData, existingMembers = [], onSubmit, onCanc
|
||||
}
|
||||
return newData
|
||||
})
|
||||
// Clear errors when user makes changes
|
||||
if (errors.length > 0) setErrors([])
|
||||
}
|
||||
|
||||
const handleSpouseChange = (spouseId: string) => {
|
||||
@@ -57,15 +61,81 @@ export function MemberForm({ initialData, existingMembers = [], onSubmit, onCanc
|
||||
setFormData((prev) => ({ ...prev, spouseIds: [spouseId] }))
|
||||
}
|
||||
|
||||
const validate = (): boolean => {
|
||||
const newErrors: string[] = []
|
||||
|
||||
// 1. Date Validation
|
||||
if (formData.birthDate && formData.deathDate) {
|
||||
if (new Date(formData.birthDate) > new Date(formData.deathDate)) {
|
||||
newErrors.push("出生日期不能晚于逝世日期")
|
||||
}
|
||||
}
|
||||
|
||||
// 2. Parent Age Validation
|
||||
const birthYear = formData.birthDate ? new Date(formData.birthDate).getFullYear() : null
|
||||
|
||||
if (birthYear) {
|
||||
if (formData.fatherId) {
|
||||
const father = existingMembers.find((m) => m.id === formData.fatherId)
|
||||
if (father?.birthDate) {
|
||||
const fatherBirthYear = new Date(father.birthDate).getFullYear()
|
||||
if (birthYear - fatherBirthYear < 15) {
|
||||
newErrors.push(`与父亲的年龄差过小 (${birthYear - fatherBirthYear}岁),请确认`)
|
||||
}
|
||||
if (birthYear < fatherBirthYear) {
|
||||
newErrors.push("出生日期不能早于父亲")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (formData.motherId) {
|
||||
const mother = existingMembers.find((m) => m.id === formData.motherId)
|
||||
if (mother?.birthDate) {
|
||||
const motherBirthYear = new Date(mother.birthDate).getFullYear()
|
||||
if (birthYear - motherBirthYear < 15) {
|
||||
newErrors.push(`与母亲的年龄差过小 (${birthYear - motherBirthYear}岁),请确认`)
|
||||
}
|
||||
if (birthYear < motherBirthYear) {
|
||||
newErrors.push("出生日期不能早于母亲")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Generation Validation
|
||||
if (formData.fatherId) {
|
||||
const father = existingMembers.find((m) => m.id === formData.fatherId)
|
||||
if (father && formData.generation !== father.generation + 1) {
|
||||
newErrors.push(`世系错误:父亲是第 ${father.generation} 世,子女应为第 ${father.generation + 1} 世`)
|
||||
}
|
||||
}
|
||||
|
||||
setErrors(newErrors)
|
||||
return newErrors.length === 0
|
||||
}
|
||||
|
||||
const handleSubmit = (e: React.FormEvent) => {
|
||||
e.preventDefault()
|
||||
onSubmit(formData as FamilyMember)
|
||||
if (validate()) {
|
||||
onSubmit(formData as FamilyMember)
|
||||
}
|
||||
}
|
||||
|
||||
const potentialRelatives = existingMembers.filter((m) => m.id !== formData.id)
|
||||
|
||||
return (
|
||||
<form onSubmit={handleSubmit} className="space-y-8 max-w-4xl mx-auto p-6">
|
||||
{errors.length > 0 && (
|
||||
<div className="bg-destructive/15 text-destructive px-4 py-3 rounded-md border border-destructive/20">
|
||||
<p className="font-bold mb-1">请检查以下问题:</p>
|
||||
<ul className="list-disc list-inside text-sm">
|
||||
{errors.map((err, index) => (
|
||||
<li key={index}>{err}</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||
{/* Basic Identity */}
|
||||
<Card>
|
||||
|
||||
Reference in New Issue
Block a user