This commit is contained in:
freedakgmail
2025-11-22 23:49:24 +08:00
parent b83382b604
commit c033e46782
3580 changed files with 1745279 additions and 2428 deletions
@@ -0,0 +1,262 @@
/* [project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/react-image-crop@11.0.10_react@19.2.0/node_modules/react-image-crop/dist/ReactCrop.css [app-client] (css) */
@keyframes marching-ants {
0% {
background-position: 0 0, 0 100%, 0 0, 100% 0;
}
to {
background-position: 20px 0, -20px 100%, 0 -20px, 100% 20px;
}
}
:root {
--rc-drag-handle-size: 12px;
--rc-drag-handle-mobile-size: 24px;
--rc-drag-handle-bg-colour: #0003;
--rc-drag-bar-size: 6px;
--rc-border-color: #ffffffb3;
--rc-focus-color: #08f;
}
.ReactCrop {
cursor: crosshair;
max-width: 100%;
display: inline-block;
position: relative;
}
.ReactCrop *, .ReactCrop :before, .ReactCrop :after {
box-sizing: border-box;
}
.ReactCrop--disabled, .ReactCrop--locked {
cursor: inherit;
}
.ReactCrop__child-wrapper {
max-height: inherit;
overflow: hidden;
}
.ReactCrop__child-wrapper > img, .ReactCrop__child-wrapper > video {
max-width: 100%;
max-height: inherit;
display: block;
}
.ReactCrop:not(.ReactCrop--disabled) .ReactCrop__child-wrapper > img, .ReactCrop:not(.ReactCrop--disabled) .ReactCrop__child-wrapper > video, .ReactCrop:not(.ReactCrop--disabled) .ReactCrop__crop-selection {
touch-action: none;
}
.ReactCrop__crop-mask {
pointer-events: none;
width: calc(100% + .5px);
height: calc(100% + .5px);
position: absolute;
inset: 0;
}
.ReactCrop__crop-selection {
cursor: move;
position: absolute;
top: 0;
left: 0;
transform: translateZ(0);
}
.ReactCrop--disabled .ReactCrop__crop-selection {
cursor: inherit;
}
.ReactCrop--circular-crop .ReactCrop__crop-selection {
border-radius: 50%;
}
.ReactCrop--circular-crop .ReactCrop__crop-selection:after {
pointer-events: none;
content: "";
border: 1px solid var(--rc-border-color);
opacity: .3;
position: absolute;
inset: -1px;
}
.ReactCrop--no-animate .ReactCrop__crop-selection {
outline: 1px dashed #fff;
}
.ReactCrop__crop-selection:not(.ReactCrop--no-animate .ReactCrop__crop-selection) {
color: #fff;
background-image: linear-gradient(to right, #fff 50%, #444 50%), linear-gradient(to right, #fff 50%, #444 50%), linear-gradient(#fff 50%, #444 50%), linear-gradient(#fff 50%, #444 50%);
background-position: 0 0, 0 100%, 0 0, 100% 0;
background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;
background-size: 10px 1px, 10px 1px, 1px 10px, 1px 10px;
animation: 1s linear infinite marching-ants;
}
.ReactCrop__crop-selection:focus {
outline: 2px solid var(--rc-focus-color);
outline-offset: -1px;
}
.ReactCrop--invisible-crop .ReactCrop__crop-mask, .ReactCrop--invisible-crop .ReactCrop__crop-selection {
display: none;
}
.ReactCrop__rule-of-thirds-vt:before, .ReactCrop__rule-of-thirds-vt:after, .ReactCrop__rule-of-thirds-hz:before, .ReactCrop__rule-of-thirds-hz:after {
content: "";
background-color: #fff6;
display: block;
position: absolute;
}
.ReactCrop__rule-of-thirds-vt:before, .ReactCrop__rule-of-thirds-vt:after {
width: 1px;
height: 100%;
}
.ReactCrop__rule-of-thirds-vt:before {
left: 33.3333%;
}
.ReactCrop__rule-of-thirds-vt:after {
left: 66.6667%;
}
.ReactCrop__rule-of-thirds-hz:before, .ReactCrop__rule-of-thirds-hz:after {
width: 100%;
height: 1px;
}
.ReactCrop__rule-of-thirds-hz:before {
top: 33.3333%;
}
.ReactCrop__rule-of-thirds-hz:after {
top: 66.6667%;
}
.ReactCrop__drag-handle {
width: var(--rc-drag-handle-size);
height: var(--rc-drag-handle-size);
background-color: var(--rc-drag-handle-bg-colour);
border: 1px solid var(--rc-border-color);
position: absolute;
}
.ReactCrop__drag-handle:focus {
background: var(--rc-focus-color);
}
.ReactCrop .ord-nw {
cursor: nw-resize;
top: 0;
left: 0;
transform: translate(-50%, -50%);
}
.ReactCrop .ord-n {
cursor: n-resize;
top: 0;
left: 50%;
transform: translate(-50%, -50%);
}
.ReactCrop .ord-ne {
cursor: ne-resize;
top: 0;
right: 0;
transform: translate(50%, -50%);
}
.ReactCrop .ord-e {
cursor: e-resize;
top: 50%;
right: 0;
transform: translate(50%, -50%);
}
.ReactCrop .ord-se {
cursor: se-resize;
bottom: 0;
right: 0;
transform: translate(50%, 50%);
}
.ReactCrop .ord-s {
cursor: s-resize;
bottom: 0;
left: 50%;
transform: translate(-50%, 50%);
}
.ReactCrop .ord-sw {
cursor: sw-resize;
bottom: 0;
left: 0;
transform: translate(-50%, 50%);
}
.ReactCrop .ord-w {
cursor: w-resize;
top: 50%;
left: 0;
transform: translate(-50%, -50%);
}
.ReactCrop__disabled .ReactCrop__drag-handle {
cursor: inherit;
}
.ReactCrop__drag-bar {
position: absolute;
}
.ReactCrop__drag-bar.ord-n {
width: 100%;
height: var(--rc-drag-bar-size);
top: 0;
left: 0;
transform: translateY(-50%);
}
.ReactCrop__drag-bar.ord-e {
width: var(--rc-drag-bar-size);
height: 100%;
top: 0;
right: 0;
transform: translate(50%);
}
.ReactCrop__drag-bar.ord-s {
width: 100%;
height: var(--rc-drag-bar-size);
bottom: 0;
left: 0;
transform: translateY(50%);
}
.ReactCrop__drag-bar.ord-w {
width: var(--rc-drag-bar-size);
height: 100%;
top: 0;
left: 0;
transform: translate(-50%);
}
.ReactCrop--new-crop .ReactCrop__drag-bar, .ReactCrop--new-crop .ReactCrop__drag-handle, .ReactCrop--fixed-aspect .ReactCrop__drag-bar, .ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-n, .ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-e, .ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-s, .ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-w {
display: none;
}
@media (pointer: coarse) {
.ReactCrop .ord-n, .ReactCrop .ord-e, .ReactCrop .ord-s, .ReactCrop .ord-w {
display: none;
}
.ReactCrop__drag-handle {
width: var(--rc-drag-handle-mobile-size);
height: var(--rc-drag-handle-mobile-size);
}
}
/*# sourceMappingURL=4c051_react-image-crop_dist_ReactCrop_bde06fd8.css.map*/
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
@@ -0,0 +1,7 @@
(globalThis.TURBOPACK_CHUNK_LISTS || (globalThis.TURBOPACK_CHUNK_LISTS = [])).push({
script: typeof document === "object" ? document.currentScript : undefined,
chunks: [
"static/chunks/a0629__pnpm_38e9b27f._.js"
],
source: "dynamic"
});
@@ -0,0 +1,33 @@
(globalThis.TURBOPACK_CHUNK_LISTS || (globalThis.TURBOPACK_CHUNK_LISTS = [])).push({
script: typeof document === "object" ? document.currentScript : undefined,
chunks: [
"static/chunks/56139_zrender_lib_ce23e365._.js",
"static/chunks/f639c_echarts_lib_util_d4941c19._.js",
"static/chunks/f639c_echarts_lib_model_76b10339._.js",
"static/chunks/f639c_echarts_lib_label_1eda581d._.js",
"static/chunks/f639c_echarts_lib_core_d0657405._.js",
"static/chunks/f639c_echarts_lib_scale_c4e1b6f8._.js",
"static/chunks/f639c_echarts_lib_data_b614132d._.js",
"static/chunks/f639c_echarts_lib_component_tooltip_6c6de848._.js",
"static/chunks/f639c_echarts_lib_component_axis_85c6ff97._.js",
"static/chunks/f639c_echarts_lib_component_axisPointer_98ac8b14._.js",
"static/chunks/f639c_echarts_lib_component_helper_7aa6326d._.js",
"static/chunks/f639c_echarts_lib_component_dataZoom_e286f5bf._.js",
"static/chunks/f639c_echarts_lib_component_toolbox_521b5e37._.js",
"static/chunks/f639c_echarts_lib_component_marker_cd5e44e5._.js",
"static/chunks/f639c_echarts_lib_component_legend_f6ba321d._.js",
"static/chunks/f639c_echarts_lib_component_visualMap_ee0662bf._.js",
"static/chunks/f639c_echarts_lib_component_a60fa07b._.js",
"static/chunks/f639c_echarts_lib_chart_helper_d540efe4._.js",
"static/chunks/f639c_echarts_lib_chart_line_ce4c6105._.js",
"static/chunks/f639c_echarts_lib_chart_bar_5820a790._.js",
"static/chunks/f639c_echarts_lib_chart_treemap_7a38bd49._.js",
"static/chunks/f639c_echarts_lib_chart_graph_f9c2705e._.js",
"static/chunks/f639c_echarts_lib_chart_1638f649._.js",
"static/chunks/f639c_echarts_lib_coord_8d85a72c._.js",
"static/chunks/f639c_echarts_lib_9cf6d13e._.js",
"static/chunks/f639c_echarts_index_3085b4e8.js",
"static/chunks/a0629__pnpm_0497c923._.js"
],
source: "dynamic"
});
@@ -0,0 +1,39 @@
(globalThis.TURBOPACK || (globalThis.TURBOPACK = [])).push([typeof document === "object" ? document.currentScript : undefined,
"[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/echarts-for-react@3.0.5_echarts@6.0.0_react@19.2.0/node_modules/echarts-for-react/esm/index.js [app-client] (ecmascript, next/dynamic entry, async loader)", ((__turbopack_context__) => {
__turbopack_context__.v((parentImport) => {
return Promise.all([
"static/chunks/56139_zrender_lib_ce23e365._.js",
"static/chunks/f639c_echarts_lib_util_d4941c19._.js",
"static/chunks/f639c_echarts_lib_model_76b10339._.js",
"static/chunks/f639c_echarts_lib_label_1eda581d._.js",
"static/chunks/f639c_echarts_lib_core_d0657405._.js",
"static/chunks/f639c_echarts_lib_scale_c4e1b6f8._.js",
"static/chunks/f639c_echarts_lib_data_b614132d._.js",
"static/chunks/f639c_echarts_lib_component_tooltip_6c6de848._.js",
"static/chunks/f639c_echarts_lib_component_axis_85c6ff97._.js",
"static/chunks/f639c_echarts_lib_component_axisPointer_98ac8b14._.js",
"static/chunks/f639c_echarts_lib_component_helper_7aa6326d._.js",
"static/chunks/f639c_echarts_lib_component_dataZoom_e286f5bf._.js",
"static/chunks/f639c_echarts_lib_component_toolbox_521b5e37._.js",
"static/chunks/f639c_echarts_lib_component_marker_cd5e44e5._.js",
"static/chunks/f639c_echarts_lib_component_legend_f6ba321d._.js",
"static/chunks/f639c_echarts_lib_component_visualMap_ee0662bf._.js",
"static/chunks/f639c_echarts_lib_component_a60fa07b._.js",
"static/chunks/f639c_echarts_lib_chart_helper_d540efe4._.js",
"static/chunks/f639c_echarts_lib_chart_line_ce4c6105._.js",
"static/chunks/f639c_echarts_lib_chart_bar_5820a790._.js",
"static/chunks/f639c_echarts_lib_chart_treemap_7a38bd49._.js",
"static/chunks/f639c_echarts_lib_chart_graph_f9c2705e._.js",
"static/chunks/f639c_echarts_lib_chart_1638f649._.js",
"static/chunks/f639c_echarts_lib_coord_8d85a72c._.js",
"static/chunks/f639c_echarts_lib_9cf6d13e._.js",
"static/chunks/f639c_echarts_index_3085b4e8.js",
"static/chunks/a0629__pnpm_0497c923._.js",
"static/chunks/6bb63_echarts-for-react_esm_index_0b10b3f7.js"
].map((chunk) => __turbopack_context__.l(chunk))).then(() => {
return parentImport("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/echarts-for-react@3.0.5_echarts@6.0.0_react@19.2.0/node_modules/echarts-for-react/esm/index.js [app-client] (ecmascript, next/dynamic entry)");
});
});
}),
]);
@@ -0,0 +1,5 @@
{
"version": 3,
"sources": [],
"sections": []
}
@@ -0,0 +1,13 @@
(globalThis.TURBOPACK || (globalThis.TURBOPACK = [])).push([typeof document === "object" ? document.currentScript : undefined,
"[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/echarts-for-react@3.0.5_echarts@6.0.0_react@19.2.0/node_modules/echarts-for-react/esm/index.js [app-client] (ecmascript, next/dynamic entry, async loader)", ((__turbopack_context__) => {
__turbopack_context__.v((parentImport) => {
return Promise.all([
"static/chunks/a0629__pnpm_38e9b27f._.js",
"static/chunks/6bb63_echarts-for-react_esm_index_07ca71be.js"
].map((chunk) => __turbopack_context__.l(chunk))).then(() => {
return parentImport("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/echarts-for-react@3.0.5_echarts@6.0.0_react@19.2.0/node_modules/echarts-for-react/esm/index.js [app-client] (ecmascript, next/dynamic entry)");
});
});
}),
]);
@@ -0,0 +1,5 @@
{
"version": 3,
"sources": [],
"sections": []
}
@@ -0,0 +1,13 @@
(globalThis.TURBOPACK || (globalThis.TURBOPACK = [])).push([typeof document === "object" ? document.currentScript : undefined,
"[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/echarts-for-react@3.0.5_echarts@6.0.0_react@19.2.0/node_modules/echarts-for-react/esm/index.js [app-client] (ecmascript, next/dynamic entry, async loader)", ((__turbopack_context__) => {
__turbopack_context__.v((parentImport) => {
return Promise.all([
"static/chunks/a0629__pnpm_38e9b27f._.js",
"static/chunks/6bb63_echarts-for-react_esm_index_f0245f4a.js"
].map((chunk) => __turbopack_context__.l(chunk))).then(() => {
return parentImport("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/echarts-for-react@3.0.5_echarts@6.0.0_react@19.2.0/node_modules/echarts-for-react/esm/index.js [app-client] (ecmascript, next/dynamic entry)");
});
});
}),
]);
@@ -0,0 +1,5 @@
{
"version": 3,
"sources": [],
"sections": []
}
@@ -0,0 +1,7 @@
(globalThis.TURBOPACK_CHUNK_LISTS || (globalThis.TURBOPACK_CHUNK_LISTS = [])).push({
script: typeof document === "object" ? document.currentScript : undefined,
chunks: [
"static/chunks/a0629__pnpm_38e9b27f._.js"
],
source: "dynamic"
});
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
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
@@ -547,13 +547,16 @@ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$ch
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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$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/compiled/react/index.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$avatar$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/components/ui/avatar.tsx [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/lib/db.ts [app-client] (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$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$circle$2d$user$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__CircleUser$3e$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/lucide-react@0.454.0_react@19.2.0/node_modules/lucide-react/dist/esm/icons/circle-user.js [app-client] (ecmascript) <export default as CircleUser>");
var __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$circle$2d$user$2d$round$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__CircleUserRound$3e$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/lucide-react@0.454.0_react@19.2.0/node_modules/lucide-react/dist/esm/icons/circle-user-round.js [app-client] (ecmascript) <export default as CircleUserRound>");
;
var _s = __turbopack_context__.k.signature();
"use client";
;
;
;
function AvatarDisplay({ imageId, fallbackUrl, fallbackText, className }) {
;
function AvatarDisplay({ imageId, fallbackUrl, fallbackText, gender, className }) {
_s();
const [blobUrl, setBlobUrl] = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(undefined);
(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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({
@@ -577,28 +580,59 @@ function AvatarDisplay({ imageId, fallbackUrl, fallbackText, className }) {
}["AvatarDisplay.useEffect"], [
imageId
]);
// 如果有头像,显示头像
if (blobUrl) {
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$avatar$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Avatar"], {
className: className,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$avatar$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["AvatarImage"], {
src: blobUrl
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/avatar-display.tsx",
lineNumber: 38,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$avatar$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["AvatarFallback"], {
className: "text-lg font-serif bg-muted",
children: fallbackText
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/avatar-display.tsx",
lineNumber: 39,
columnNumber: 9
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/avatar-display.tsx",
lineNumber: 37,
columnNumber: 7
}, this);
}
// 没有头像,显示性别图标
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$avatar$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Avatar"], {
className: className,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$avatar$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["AvatarImage"], {
src: blobUrl || fallbackUrl || "/placeholder.svg"
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$avatar$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["AvatarFallback"], {
className: "bg-muted flex items-center justify-center",
children: gender === 'female' ? /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$circle$2d$user$2d$round$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__CircleUserRound$3e$__["CircleUserRound"], {
className: "h-8 w-8 text-pink-400"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/avatar-display.tsx",
lineNumber: 33,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$avatar$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["AvatarFallback"], {
className: "text-lg font-serif bg-muted",
children: fallbackText
lineNumber: 49,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$circle$2d$user$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__CircleUser$3e$__["CircleUser"], {
className: "h-8 w-8 text-blue-400"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/avatar-display.tsx",
lineNumber: 34,
columnNumber: 7
lineNumber: 51,
columnNumber: 11
}, this)
]
}, void 0, true, {
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/avatar-display.tsx",
lineNumber: 47,
columnNumber: 7
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/ui/avatar-display.tsx",
lineNumber: 32,
lineNumber: 46,
columnNumber: 5
}, this);
}
@@ -992,6 +1026,7 @@ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$ch
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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$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/compiled/react/index.js [app-client] (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$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/components/site-header.tsx [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$context$2f$family$2d$context$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/context/family-context.tsx [app-client] (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$navigation$2e$js__$5b$app$2d$client$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/navigation.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$ui$2f$input$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/components/ui/input.tsx [app-client] (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$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/components/ui/button.tsx [app-client] (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$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/components/ui/card.tsx [app-client] (ecmascript)");
@@ -1019,11 +1054,23 @@ var _s = __turbopack_context__.k.signature();
;
;
;
;
function MembersPage() {
_s();
const { treeData, searchMembers } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$context$2f$family$2d$context$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useFamily"])();
const { treeData, searchMembers, setHighlightedMemberId } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$context$2f$family$2d$context$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useFamily"])();
const router = (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$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRouter"])();
const [query, setQuery] = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])("");
const [showFilters, setShowFilters] = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false);
// 从 URL 参数读取搜索关键词
(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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({
"MembersPage.useEffect": ()=>{
const params = new URLSearchParams(window.location.search);
const searchParam = params.get('search');
if (searchParam) {
setQuery(searchParam);
}
}
}["MembersPage.useEffect"], []);
// Filter States
const [selectedSurname, setSelectedSurname] = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])("all");
const [selectedHome, setSelectedHome] = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])("all");
@@ -1128,6 +1175,32 @@ function MembersPage() {
statusFilter,
generationRange
]);
// 按世代分组
const membersByGeneration = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"])({
"MembersPage.useMemo[membersByGeneration]": ()=>{
const groups = new Map();
filteredMembers.forEach({
"MembersPage.useMemo[membersByGeneration]": (member)=>{
const gen = member.generation;
if (!groups.has(gen)) {
groups.set(gen, []);
}
groups.get(gen).push(member);
}
}["MembersPage.useMemo[membersByGeneration]"]);
// 转换为数组并排序
return Array.from(groups.entries()).sort({
"MembersPage.useMemo[membersByGeneration]": (a, b)=>a[0] - b[0]
}["MembersPage.useMemo[membersByGeneration]"]).map({
"MembersPage.useMemo[membersByGeneration]": ([generation, members])=>({
generation,
members
})
}["MembersPage.useMemo[membersByGeneration]"]);
}
}["MembersPage.useMemo[membersByGeneration]"], [
filteredMembers
]);
const clearFilters = ()=>{
setSelectedSurname("all");
setSelectedHome("all");
@@ -1144,7 +1217,7 @@ function MembersPage() {
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["SiteHeader"], {}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 120,
lineNumber: 152,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("main", {
@@ -1161,7 +1234,7 @@ function MembersPage() {
children: "家族成员列表"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 124,
lineNumber: 156,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -1174,7 +1247,7 @@ function MembersPage() {
className: "absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 127,
lineNumber: 159,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$input$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Input"], {
@@ -1185,13 +1258,13 @@ function MembersPage() {
onChange: (e)=>setQuery(e.target.value)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 128,
lineNumber: 160,
columnNumber: 17
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 126,
lineNumber: 158,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["Button"], {
@@ -1204,20 +1277,20 @@ function MembersPage() {
className: "h-4 w-4"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 142,
lineNumber: 174,
columnNumber: 17
}, this),
activeFilterCount > 0 && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "absolute -top-1 -right-1 h-3 w-3 rounded-full bg-primary border-2 border-background"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 144,
lineNumber: 176,
columnNumber: 19
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 136,
lineNumber: 168,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], {
@@ -1229,31 +1302,31 @@ function MembersPage() {
className: "h-4 w-4"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 149,
lineNumber: 181,
columnNumber: 19
}, this),
"新增成员"
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 148,
lineNumber: 180,
columnNumber: 17
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 147,
lineNumber: 179,
columnNumber: 15
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 125,
lineNumber: 157,
columnNumber: 13
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 123,
lineNumber: 155,
columnNumber: 11
}, this),
showFilters && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -1267,7 +1340,7 @@ function MembersPage() {
children: "高级筛选"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 160,
lineNumber: 192,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["Button"], {
@@ -1280,20 +1353,20 @@ function MembersPage() {
className: "mr-1 h-3 w-3"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 162,
lineNumber: 194,
columnNumber: 19
}, this),
" 重置筛选"
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 161,
lineNumber: 193,
columnNumber: 17
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 159,
lineNumber: 191,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -1307,7 +1380,7 @@ function MembersPage() {
children: "姓氏 (Surname)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 167,
lineNumber: 199,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Select"], {
@@ -1319,12 +1392,12 @@ function MembersPage() {
placeholder: "全部"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 170,
lineNumber: 202,
columnNumber: 23
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 169,
lineNumber: 201,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SelectContent"], {
@@ -1334,7 +1407,7 @@ function MembersPage() {
children: "全部 (All)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 173,
lineNumber: 205,
columnNumber: 23
}, this),
uniqueSurnames.map((s)=>/*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SelectItem"], {
@@ -1342,25 +1415,25 @@ function MembersPage() {
children: s
}, s, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 175,
lineNumber: 207,
columnNumber: 25
}, this))
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 172,
lineNumber: 204,
columnNumber: 21
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 168,
lineNumber: 200,
columnNumber: 19
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 166,
lineNumber: 198,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -1371,7 +1444,7 @@ function MembersPage() {
children: "籍贯 (Ancestral Home)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 184,
lineNumber: 216,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Select"], {
@@ -1383,12 +1456,12 @@ function MembersPage() {
placeholder: "全部"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 187,
lineNumber: 219,
columnNumber: 23
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 186,
lineNumber: 218,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SelectContent"], {
@@ -1398,7 +1471,7 @@ function MembersPage() {
children: "全部 (All)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 190,
lineNumber: 222,
columnNumber: 23
}, this),
uniqueHomes.map((h)=>/*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SelectItem"], {
@@ -1406,25 +1479,25 @@ function MembersPage() {
children: h
}, h, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 192,
lineNumber: 224,
columnNumber: 25
}, this))
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 189,
lineNumber: 221,
columnNumber: 21
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 185,
lineNumber: 217,
columnNumber: 19
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 183,
lineNumber: 215,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -1435,7 +1508,7 @@ function MembersPage() {
children: "状态 (Status)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 201,
lineNumber: 233,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Select"], {
@@ -1447,12 +1520,12 @@ function MembersPage() {
placeholder: "全部"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 204,
lineNumber: 236,
columnNumber: 23
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 203,
lineNumber: 235,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SelectContent"], {
@@ -1462,7 +1535,7 @@ function MembersPage() {
children: "全部 (All)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 207,
lineNumber: 239,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SelectItem"], {
@@ -1470,7 +1543,7 @@ function MembersPage() {
children: "在世 (Living)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 208,
lineNumber: 240,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SelectItem"], {
@@ -1478,25 +1551,25 @@ function MembersPage() {
children: "已故 (Deceased)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 209,
lineNumber: 241,
columnNumber: 23
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 206,
lineNumber: 238,
columnNumber: 21
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 202,
lineNumber: 234,
columnNumber: 19
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 200,
lineNumber: 232,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -1510,7 +1583,7 @@ function MembersPage() {
children: "世系范围 (Generation)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 216,
lineNumber: 248,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
@@ -1523,13 +1596,13 @@ function MembersPage() {
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 217,
lineNumber: 249,
columnNumber: 21
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 215,
lineNumber: 247,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$slider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Slider"], {
@@ -1545,187 +1618,261 @@ function MembersPage() {
className: "py-4"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 221,
lineNumber: 253,
columnNumber: 19
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 214,
lineNumber: 246,
columnNumber: 17
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 165,
lineNumber: 197,
columnNumber: 15
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 158,
lineNumber: 190,
columnNumber: 13
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 122,
lineNumber: 154,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
children: filteredMembers.length === 0 ? /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "col-span-full text-center py-12 text-muted-foreground",
children: "没有找到匹配的成员。"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 238,
columnNumber: 13
}, this) : filteredMembers.map((member)=>/*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], {
href: `/members/${member.id}`,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["Card"], {
className: "hover:border-primary transition-colors cursor-pointer h-full",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardContent"], {
className: "p-6 flex items-start gap-4",
filteredMembers.length === 0 ? /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "text-center py-12 text-muted-foreground",
children: "没有找到匹配的成员。"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 269,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "space-y-8",
children: membersByGeneration.map(({ generation, members })=>/*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex items-center gap-3 mb-4",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$avatar$2d$display$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["AvatarDisplay"], {
imageId: member.avatarImageId,
fallbackUrl: member.avatarUrl,
fallbackText: member.surname,
className: "h-16 w-16 border-2 border-border"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 246,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex-1 min-w-0",
/*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h2", {
className: "text-xl font-serif font-bold text-foreground",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex items-baseline justify-between",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", {
className: "text-xl font-bold font-serif truncate",
children: [
member.fullName,
member.courtesyName && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-sm font-normal text-muted-foreground ml-2",
children: [
"字 ",
member.courtesyName
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 257,
columnNumber: 29
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 254,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-xs font-mono bg-muted px-1.5 py-0.5 rounded text-muted-foreground whitespace-nowrap",
children: [
member.generation,
"世"
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 262,
columnNumber: 25
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 253,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-sm text-muted-foreground mt-1 truncate",
children: member.generationName ? `字辈: ${member.generationName}` : "未录入字辈"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 266,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-sm text-muted-foreground truncate",
children: member.ancestralHome || "籍贯未知"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 269,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "mt-3 flex flex-wrap gap-1",
children: [
member.deathDate && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-[10px] bg-neutral-100 text-neutral-600 px-1.5 py-0.5 rounded border border-neutral-200",
children: "已故"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 272,
columnNumber: 27
}, this),
member.tags?.map((tag)=>/*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-[10px] bg-primary/10 text-primary px-1.5 py-0.5 rounded border border-primary/20",
children: tag
}, tag, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 277,
columnNumber: 27
}, this))
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 270,
columnNumber: 23
}, this)
"第 ",
generation,
" 世"
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 252,
columnNumber: 21
lineNumber: 277,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-sm text-muted-foreground",
children: [
"共 ",
members.length,
" 人"
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 278,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex-1 h-px bg-border"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 279,
columnNumber: 19
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 245,
columnNumber: 19
lineNumber: 276,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",
children: members.map((member)=>/*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "relative group",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], {
href: `/members/${member.id}`,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["Card"], {
className: "hover:border-primary transition-colors cursor-pointer h-full",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardContent"], {
className: "p-3 flex items-start gap-2.5",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$avatar$2d$display$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["AvatarDisplay"], {
imageId: member.avatarImageId,
fallbackUrl: member.avatarUrl,
fallbackText: member.surname,
gender: member.gender,
className: "h-10 w-10 border border-border"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 287,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex-1 min-w-0",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex items-baseline justify-between gap-1.5",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", {
className: "text-base font-bold font-serif truncate",
children: [
member.fullName,
member.courtesyName && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-[11px] font-normal text-muted-foreground ml-1",
children: [
"字 ",
member.courtesyName
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 299,
columnNumber: 35
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 296,
columnNumber: 31
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 295,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-[11px] text-muted-foreground mt-0.5 truncate",
children: member.generationName ? `字辈: ${member.generationName}` : "未录入字辈"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 305,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
className: "text-[11px] text-muted-foreground truncate",
children: member.ancestralHome || "籍贯未知"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 308,
columnNumber: 29
}, this),
(member.deathDate || member.tags?.length) && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "mt-1.5 flex flex-wrap gap-1",
children: [
member.deathDate && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-[9px] bg-neutral-100 text-neutral-600 px-1 py-0.5 rounded border border-neutral-200",
children: "已故"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 312,
columnNumber: 35
}, this),
member.tags?.map((tag)=>/*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-[9px] bg-primary/10 text-primary px-1 py-0.5 rounded border border-primary/20",
children: tag
}, tag, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 317,
columnNumber: 35
}, this))
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 310,
columnNumber: 31
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 294,
columnNumber: 27
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 286,
columnNumber: 25
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 285,
columnNumber: 25
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 284,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["Button"], {
size: "sm",
variant: "ghost",
className: "absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity h-6 w-6 p-0",
onClick: ()=>{
setHighlightedMemberId(member.id);
router.push('/tree');
},
title: "在族谱图中定位",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$search$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Search$3e$__["Search"], {
className: "h-3 w-3"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 340,
columnNumber: 23
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 330,
columnNumber: 21
}, this)
]
}, member.id, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 283,
columnNumber: 21
}, this))
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 281,
columnNumber: 17
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 244,
columnNumber: 17
}, this)
}, member.id, false, {
]
}, generation, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 243,
lineNumber: 275,
columnNumber: 15
}, this))
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 236,
columnNumber: 9
lineNumber: 273,
columnNumber: 11
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 121,
lineNumber: 153,
columnNumber: 7
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/members/page.tsx",
lineNumber: 119,
lineNumber: 151,
columnNumber: 5
}, this);
}
_s(MembersPage, "MXcRI0mRCqZEuv5t+yxSbXnTVPM=", false, function() {
_s(MembersPage, "GIo5kDr+6J78ONa5dzO9v6i3Eho=", false, function() {
return [
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$context$2f$family$2d$context$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useFamily"]
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$context$2f$family$2d$context$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useFamily"],
__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$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRouter"]
];
});
_c = MembersPage;
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
@@ -0,0 +1,875 @@
(globalThis.TURBOPACK || (globalThis.TURBOPACK = [])).push([typeof document === "object" ? document.currentScript : undefined,
"[project]/Documents/go-new/chinese-family-tree/lib/mock-data.ts [app-client] (ecmascript)", ((__turbopack_context__) => {
"use strict";
__turbopack_context__.s([
"mockFamilyData",
()=>mockFamilyData
]);
// Helper to create a member quickly
const createMember = (id, name, gender, generation, props = {})=>{
const surname = "李";
return {
id,
surname,
givenName: name,
fullName: surname + name,
gender,
generation,
spouseIds: [],
childrenIds: [],
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
...props
};
};
const members = {
// ========== 第一代 (曾祖父母辈,1920年代出生) ==========
"1": createMember("1", "国强", "male", 1, {
ancestralHome: "广东省广州市",
bio: "李氏家族第一代,抗战时期参加革命工作,新中国成立后在政府部门工作,为人正直,深受敬重。",
tags: [
"革命干部",
"始祖"
],
birthDate: "1925-03-15",
deathDate: "2008-08-20",
spouseIds: [
"2"
],
childrenIds: [
"3",
"4",
"5"
]
}),
"2": createMember("2", "秀芳", "female", 1, {
fullName: "王秀芳",
surname: "王",
givenName: "秀芳",
ancestralHome: "广东省广州市",
bio: "知识分子家庭出身,建国后在学校任教,相夫教子,育有三子。",
birthDate: "1928-07-08",
deathDate: "2015-12-10",
spouseIds: [
"1"
],
childrenIds: [
"3",
"4",
"5"
]
}),
// ========== 第二代 (祖父母辈,1950年代出生) ==========
"3": createMember("3", "建华", "male", 2, {
fatherId: "1",
motherId: "2",
ancestralHome: "广东省深圳市",
birthPlace: "广东省深圳市",
bio: "国强长子,改革开放后下海经商,迁往深圳创办家族企业,事业有成。",
tags: [
"企业家"
],
birthDate: "1952-05-20",
deathDate: "2020-03-15",
spouseIds: [
"6"
],
childrenIds: [
"9",
"10"
]
}),
"4": createMember("4", "建国", "male", 2, {
fatherId: "1",
motherId: "2",
generationName: "建",
rank: 2,
bio: "次子,大学教授,追随教育事业迁往北京,从事教育工作四十余年,桃李满天下。",
tags: [
"教授",
"次子"
],
birthDate: "1955-11-03",
ancestralHome: "北京市",
birthPlace: "北京市",
spouseIds: [
"7"
],
childrenIds: [
"11",
"12",
"13"
]
}),
"5": createMember("5", "建军", "male", 2, {
fatherId: "1",
motherId: "2",
generationName: "建",
rank: 3,
bio: "三子,医生,支援西部建设迁往上海,从医三十余年,救死扶伤。",
tags: [
"医生",
"三子"
],
birthDate: "1958-11-03",
ancestralHome: "上海市",
birthPlace: "上海市",
spouseIds: [
"8"
],
childrenIds: [
"14"
]
}),
// 第二代配偶
"6": createMember("6", "丽华", "female", 2, {
fullName: "陈丽华",
surname: "陈",
givenName: "丽华",
ancestralHome: "广东省深圳市",
bio: "建华之妻,企业管理者,协助丈夫打理家族企业。",
birthDate: "1955-05-20",
deathDate: "2021-11-05",
spouseIds: [
"3"
],
childrenIds: [
"9",
"10"
]
}),
"7": createMember("7", "美玲", "female", 2, {
fullName: "张美玲",
surname: "张",
givenName: "美玲",
ancestralHome: "广东省广州市",
bio: "建国之妻,中学教师,与丈夫志同道合,共同从事教育事业。",
birthDate: "1957-01-15",
spouseIds: [
"4"
],
childrenIds: [
"11",
"12",
"13"
]
}),
"8": createMember("8", "雅琴", "female", 2, {
fullName: "林雅琴",
surname: "林",
givenName: "雅琴",
ancestralHome: "福建省厦门市",
bio: "建军之妻,护士长,温柔贤惠,善于持家。",
birthDate: "1960-08-10",
spouseIds: [
"5"
],
childrenIds: [
"14"
]
}),
// ========== 第三代 (父母辈,1980年代出生) ==========
"9": createMember("9", "志远", "male", 3, {
fatherId: "3",
motherId: "6",
generationName: "志",
rank: 1,
ancestralHome: "广东省深圳市",
birthPlace: "广东省深圳市",
bio: "建华长子,留学归国,接管家族企业,推动企业转型升级。",
tags: [
"企业家",
"海归"
],
birthDate: "1980-03-08",
phone: "13800138001",
email: "zhiyuan.li@company.com",
address: "广东省广州市天河区珠江新城XX路XX号",
spouseIds: [
"15"
],
childrenIds: [
"17",
"18"
]
}),
"10": createMember("10", "志强", "male", 3, {
fatherId: "3",
motherId: "6",
generationName: "志",
rank: 2,
ancestralHome: "北京市",
birthPlace: "北京市",
bio: "建华次子,互联网创业者,北上创业,创办科技公司。",
tags: [
"创业者",
"科技"
],
birthDate: "1983-07-22",
phone: "13900139002",
email: "zhiqiang.li@techco.com",
address: "北京市朝阳区望京SOHO",
spouseIds: [
"16"
],
childrenIds: [
"19"
]
}),
"11": createMember("11", "志明", "male", 3, {
fatherId: "4",
motherId: "7",
generationName: "志",
rank: 1,
ancestralHome: "广东省广州市",
birthPlace: "广东省广州市",
bio: "建国长子,大学副教授,从北京返回广州从事教育研究工作。",
tags: [
"副教授",
"学者"
],
birthDate: "1982-01-18",
phone: "13700137003",
telephone: "020-8888-8888",
email: "zhiming.li@university.edu.cn",
address: "广东省广州市海珠区大学城",
spouseIds: [
"20"
],
childrenIds: [
"21",
"22"
]
}),
"12": createMember("12", "志文", "male", 3, {
fatherId: "4",
motherId: "7",
generationName: "志",
rank: 2,
bio: "建国次子,作家,追求文学梦想迁往成都,出版多部文学作品。",
tags: [
"作家",
"文学"
],
birthDate: "1985-09-12",
ancestralHome: "四川省成都市",
birthPlace: "四川省成都市",
phone: "13600136004",
email: "zhiwen.li@writer.com"
}),
"13": createMember("13", "志勇", "male", 3, {
fatherId: "4",
motherId: "7",
generationName: "志",
rank: 3,
ancestralHome: "上海市",
birthPlace: "上海市",
bio: "建国三子,律师,从北京迁往上海,执业于知名律师事务所。",
tags: [
"律师"
],
birthDate: "1988-11-05",
phone: "13500135005",
email: "zhiyong.li@lawfirm.com",
address: "上海市浦东新区陆家嘴金融中心"
}),
"14": createMember("14", "志诚", "male", 3, {
fatherId: "5",
motherId: "8",
generationName: "志",
rank: 1,
ancestralHome: "广东省深圳市",
birthPlace: "广东省深圳市",
bio: "建军独子,医生,从上海迁往深圳,继承父业,在医院工作。",
tags: [
"医生"
],
birthDate: "1986-04-28",
phone: "13400134006",
telephone: "0755-6666-6666",
email: "zhicheng.li@hospital.com",
address: "广东省深圳市福田区人民医院",
spouseIds: [
"23"
],
childrenIds: [
"24"
]
}),
// 第三代配偶
"15": createMember("15", "晓雯", "female", 3, {
fullName: "赵晓雯",
surname: "赵",
givenName: "晓雯",
ancestralHome: "上海市",
bio: "志远之妻,金融行业从业者,MBA学位。",
birthDate: "1982-06-15",
spouseIds: [
"9"
],
childrenIds: [
"17",
"18"
]
}),
"16": createMember("16", "诗涵", "female", 3, {
fullName: "刘诗涵",
surname: "刘",
givenName: "诗涵",
ancestralHome: "北京市",
bio: "志强之妻,设计师,从事品牌设计工作。",
birthDate: "1985-10-08",
spouseIds: [
"10"
],
childrenIds: [
"19"
]
}),
"20": createMember("20", "雨欣", "female", 3, {
fullName: "周雨欣",
surname: "周",
givenName: "雨欣",
ancestralHome: "浙江省杭州市",
bio: "志明之妻,中学教师,温柔贤淑。",
birthDate: "1984-02-25",
spouseIds: [
"11"
],
childrenIds: [
"21",
"22"
]
}),
"23": createMember("23", "婉婷", "female", 3, {
fullName: "郑婉婷",
surname: "郑",
givenName: "婉婷",
ancestralHome: "广东省广州市",
bio: "志诚之妻,护士,在医院工作。",
birthDate: "1988-12-03",
spouseIds: [
"14"
],
childrenIds: [
"24"
]
}),
// ========== 第四代 (子女辈,2010年代出生) ==========
"17": createMember("17", "浩然", "male", 4, {
fatherId: "9",
motherId: "15",
generationName: "浩",
rank: 1,
bio: "志远长子,在读高中生,成绩优异。",
tags: [
"学生"
],
birthDate: "2010-05-10"
}),
"18": createMember("18", "思琪", "female", 4, {
fatherId: "9",
motherId: "15",
generationName: "思",
rank: 2,
bio: "志远次女,在读初中,喜欢绘画。",
tags: [
"学生"
],
birthDate: "2013-08-22"
}),
"19": createMember("19", "宇轩", "male", 4, {
fatherId: "10",
motherId: "16",
generationName: "宇",
rank: 1,
bio: "志强独子,在读小学,对编程感兴趣。",
tags: [
"学生"
],
birthDate: "2015-11-18"
}),
"21": createMember("21", "梓涵", "female", 4, {
fatherId: "11",
motherId: "20",
generationName: "梓",
rank: 1,
bio: "志明长女,在读大学,主修经济学。",
tags: [
"大学生"
],
birthDate: "2007-03-05"
}),
"22": createMember("22", "子轩", "male", 4, {
fatherId: "11",
motherId: "20",
generationName: "子",
rank: 2,
bio: "志明次子,在读高中,擅长数学。",
tags: [
"学生"
],
birthDate: "2010-07-14"
}),
"24": createMember("24", "欣怡", "female", 4, {
fatherId: "14",
motherId: "23",
generationName: "欣",
rank: 1,
bio: "志诚独女,在读初中,活泼可爱。",
tags: [
"学生"
],
birthDate: "2012-09-20"
})
};
const mockFamilyData = {
members,
rootId: "1"
};
if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) {
__turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$);
}
}),
"[project]/Documents/go-new/chinese-family-tree/lib/db.ts [app-client] (ecmascript)", ((__turbopack_context__) => {
"use strict";
__turbopack_context__.s([
"FamilyTreeDB",
()=>FamilyTreeDB,
"db",
()=>db
]);
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$40$4$2e$2$2e$1$2f$node_modules$2f$dexie$2f$import$2d$wrapper$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/dexie@4.2.1/node_modules/dexie/import-wrapper.mjs [app-client] (ecmascript)");
;
class FamilyTreeDB extends __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$40$4$2e$2$2e$1$2f$node_modules$2f$dexie$2f$import$2d$wrapper$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"] {
members;
settings;
images;
constructor(){
super("FamilyTreeDB");
this.version(1).stores({
members: "id, fullName, fatherId, motherId, [fatherId+motherId]",
settings: "key",
images: "id"
});
}
}
const db = new FamilyTreeDB();
if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) {
__turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$);
}
}),
"[project]/Documents/go-new/chinese-family-tree/lib/notifications.ts [app-client] (ecmascript)", ((__turbopack_context__) => {
"use strict";
__turbopack_context__.s([
"checkTodayAnniversaries",
()=>checkTodayAnniversaries,
"checkUpcomingAnniversaries",
()=>checkUpcomingAnniversaries,
"notifyTodayAnniversaries",
()=>notifyTodayAnniversaries,
"requestNotificationPermission",
()=>requestNotificationPermission,
"sendNotification",
()=>sendNotification,
"setupDailyNotificationCheck",
()=>setupDailyNotificationCheck
]);
async function requestNotificationPermission() {
if (("TURBOPACK compile-time value", "object") === "undefined" || !("Notification" in window)) {
console.warn("浏览器不支持通知");
return false;
}
if (Notification.permission === "granted") {
return true;
}
if (Notification.permission !== "denied") {
const permission = await Notification.requestPermission();
return permission === "granted";
}
return false;
}
function sendNotification(title, options) {
if (("TURBOPACK compile-time value", "object") === "undefined" || !("Notification" in window)) {
return;
}
if (Notification.permission === "granted") {
new Notification(title, {
icon: "/icon.svg",
badge: "/icon.svg",
...options
});
}
}
function checkTodayAnniversaries(members) {
const today = new Date();
const currentMonth = today.getMonth() + 1;
const currentDay = today.getDate();
const birthdays = [];
const deathdays = [];
members.forEach((member)=>{
// 检查生日
if (member.birthDate) {
const birthDate = new Date(member.birthDate);
if (birthDate.getMonth() + 1 === currentMonth && birthDate.getDate() === currentDay) {
birthdays.push(member);
}
}
// 检查忌日
if (member.deathDate) {
const deathDate = new Date(member.deathDate);
if (deathDate.getMonth() + 1 === currentMonth && deathDate.getDate() === currentDay) {
deathdays.push(member);
}
}
});
return {
birthdays,
deathdays
};
}
function checkUpcomingAnniversaries(members, days = 7) {
const today = new Date();
const birthdays = [];
const deathdays = [];
members.forEach((member)=>{
// 检查生日
if (member.birthDate) {
const birthDate = new Date(member.birthDate);
const thisYearBirthday = new Date(today.getFullYear(), birthDate.getMonth(), birthDate.getDate());
if (thisYearBirthday < today) {
thisYearBirthday.setFullYear(today.getFullYear() + 1);
}
const daysUntil = Math.ceil((thisYearBirthday.getTime() - today.getTime()) / (1000 * 60 * 60 * 24));
if (daysUntil > 0 && daysUntil <= days) {
birthdays.push({
member,
daysUntil
});
}
}
// 检查忌日
if (member.deathDate) {
const deathDate = new Date(member.deathDate);
const thisYearDeathday = new Date(today.getFullYear(), deathDate.getMonth(), deathDate.getDate());
if (thisYearDeathday < today) {
thisYearDeathday.setFullYear(today.getFullYear() + 1);
}
const daysUntil = Math.ceil((thisYearDeathday.getTime() - today.getTime()) / (1000 * 60 * 60 * 24));
if (daysUntil > 0 && daysUntil <= days) {
deathdays.push({
member,
daysUntil
});
}
}
});
return {
birthdays,
deathdays
};
}
function notifyTodayAnniversaries(members) {
const { birthdays, deathdays } = checkTodayAnniversaries(members);
if (birthdays.length > 0) {
const names = birthdays.map((m)=>m.fullName).join("、");
sendNotification("🎂 今日生日提醒", {
body: `今天是 ${names} 的生日!`,
tag: "birthday-today"
});
}
if (deathdays.length > 0) {
const names = deathdays.map((m)=>m.fullName).join("、");
sendNotification("🕯️ 今日忌日提醒", {
body: `今天是 ${names} 的忌日,缅怀先人。`,
tag: "deathday-today"
});
}
}
function setupDailyNotificationCheck(members) {
if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable
;
// 检查是否已经在今天检查过
const lastCheckDate = localStorage.getItem("lastNotificationCheck");
const today = new Date().toDateString();
if (lastCheckDate !== today) {
notifyTodayAnniversaries(members);
localStorage.setItem("lastNotificationCheck", today);
}
// 设置每小时检查一次(防止用户长时间开着页面)
setInterval(()=>{
const currentDate = new Date().toDateString();
const lastCheck = localStorage.getItem("lastNotificationCheck");
if (lastCheck !== currentDate) {
notifyTodayAnniversaries(members);
localStorage.setItem("lastNotificationCheck", currentDate);
}
}, 60 * 60 * 1000); // 每小时检查一次
}
if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) {
__turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$);
}
}),
"[project]/Documents/go-new/chinese-family-tree/context/family-context.tsx [app-client] (ecmascript)", ((__turbopack_context__) => {
"use strict";
__turbopack_context__.s([
"FamilyProvider",
()=>FamilyProvider,
"useFamily",
()=>useFamily
]);
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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/compiled/react/jsx-dev-runtime.js [app-client] (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$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/compiled/react/index.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$mock$2d$data$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/lib/mock-data.ts [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/lib/db.ts [app-client] (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$dexie$2d$react$2d$hooks$40$4$2e$2$2e$0_$40$types$2b$react$40$19$2e$2$2e$6_dexie$40$4$2e$2$2e$1_react$40$19$2e$2$2e$0$2f$node_modules$2f$dexie$2d$react$2d$hooks$2f$dist$2f$dexie$2d$react$2d$hooks$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/node_modules/.pnpm/dexie-react-hooks@4.2.0_@types+react@19.2.6_dexie@4.2.1_react@19.2.0/node_modules/dexie-react-hooks/dist/dexie-react-hooks.mjs [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$notifications$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/lib/notifications.ts [app-client] (ecmascript)");
;
var _s = __turbopack_context__.k.signature(), _s1 = __turbopack_context__.k.signature();
"use client";
;
;
;
;
;
const FamilyContext = /*#__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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createContext"])(undefined);
function FamilyProvider({ children }) {
_s();
const [searchResults, setSearchResults] = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])([]);
const [isInitialized, setIsInitialized] = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false);
const [highlightedMemberId, setHighlightedMemberId] = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null);
// Live query to get all members
const members = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$2d$react$2d$hooks$40$4$2e$2$2e$0_$40$types$2b$react$40$19$2e$2$2e$6_dexie$40$4$2e$2$2e$1_react$40$19$2e$2$2e$0$2f$node_modules$2f$dexie$2d$react$2d$hooks$2f$dist$2f$dexie$2d$react$2d$hooks$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLiveQuery"])({
"FamilyProvider.useLiveQuery[members]": ()=>__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.toArray()
}["FamilyProvider.useLiveQuery[members]"]);
// Live query to get rootId
const rootIdSetting = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$2d$react$2d$hooks$40$4$2e$2$2e$0_$40$types$2b$react$40$19$2e$2$2e$6_dexie$40$4$2e$2$2e$1_react$40$19$2e$2$2e$0$2f$node_modules$2f$dexie$2d$react$2d$hooks$2f$dist$2f$dexie$2d$react$2d$hooks$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLiveQuery"])({
"FamilyProvider.useLiveQuery[rootIdSetting]": ()=>__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].settings.get("rootId")
}["FamilyProvider.useLiveQuery[rootIdSetting]"]);
// Initialize DB with mock data if empty
(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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({
"FamilyProvider.useEffect": ()=>{
const initDb = {
"FamilyProvider.useEffect.initDb": async ()=>{
const count = await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.count();
if (count === 0) {
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].transaction("rw", __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].settings, {
"FamilyProvider.useEffect.initDb": async ()=>{
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.bulkAdd(Object.values(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$mock$2d$data$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["mockFamilyData"].members));
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].settings.put({
key: "rootId",
value: __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$mock$2d$data$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["mockFamilyData"].rootId
});
}
}["FamilyProvider.useEffect.initDb"]);
}
setIsInitialized(true);
}
}["FamilyProvider.useEffect.initDb"];
initDb();
}
}["FamilyProvider.useEffect"], []);
// 设置通知检查
(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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({
"FamilyProvider.useEffect": ()=>{
if (isInitialized && members && members.length > 0) {
// 检查通知权限并设置每日检查
if ("Notification" in window && Notification.permission === "granted") {
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$notifications$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["setupDailyNotificationCheck"])(members);
}
}
}
}["FamilyProvider.useEffect"], [
isInitialized,
members
]);
// Construct treeData from DB results
const treeData = {
rootId: rootIdSetting?.value || "",
members: (members || []).reduce((acc, member)=>{
acc[member.id] = member;
return acc;
}, {})
};
const getMember = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
"FamilyProvider.useCallback[getMember]": (id)=>{
return treeData.members[id];
}
}["FamilyProvider.useCallback[getMember]"], [
treeData
]);
const addMember = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
"FamilyProvider.useCallback[addMember]": async (member)=>{
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].transaction("rw", __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members, {
"FamilyProvider.useCallback[addMember]": async ()=>{
// Add the member
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.add(member);
// Update relationships (Father)
if (member.fatherId) {
const father = await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.get(member.fatherId);
if (father && !father.childrenIds.includes(member.id)) {
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.update(member.fatherId, {
childrenIds: [
...father.childrenIds,
member.id
]
});
}
}
// Update relationships (Mother)
if (member.motherId) {
const mother = await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.get(member.motherId);
if (mother && !mother.childrenIds.includes(member.id)) {
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.update(member.motherId, {
childrenIds: [
...mother.childrenIds,
member.id
]
});
}
}
// Update relationships (Spouses)
if (member.spouseIds && member.spouseIds.length > 0) {
for (const spouseId of member.spouseIds){
const spouse = await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.get(spouseId);
if (spouse && !spouse.spouseIds.includes(member.id)) {
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.update(spouseId, {
spouseIds: [
...spouse.spouseIds,
member.id
]
});
}
}
}
}
}["FamilyProvider.useCallback[addMember]"]);
}
}["FamilyProvider.useCallback[addMember]"], []);
const updateMember = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
"FamilyProvider.useCallback[updateMember]": async (id, updates)=>{
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.update(id, {
...updates,
updatedAt: new Date().toISOString()
});
}
}["FamilyProvider.useCallback[updateMember]"], []);
const deleteMember = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
"FamilyProvider.useCallback[deleteMember]": async (id)=>{
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].transaction("rw", __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].settings, {
"FamilyProvider.useCallback[deleteMember]": async ()=>{
// Remove from DB
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.delete(id);
// Note: In a real app, we should also remove references to this ID from other members'
// childrenIds, spouseIds, etc. For now, we'll keep it simple as per the original implementation.
// If we deleted the root, we might want to handle that, but for now let's leave it.
}
}["FamilyProvider.useCallback[deleteMember]"]);
}
}["FamilyProvider.useCallback[deleteMember]"], []);
const loadData = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
"FamilyProvider.useCallback[loadData]": async (data)=>{
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].transaction("rw", __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].settings, {
"FamilyProvider.useCallback[loadData]": async ()=>{
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.clear();
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.bulkAdd(Object.values(data.members));
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].settings.put({
key: "rootId",
value: data.rootId
});
}
}["FamilyProvider.useCallback[loadData]"]);
}
}["FamilyProvider.useCallback[loadData]"], []);
const resetData = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
"FamilyProvider.useCallback[resetData]": async ()=>{
await loadData(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$mock$2d$data$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["mockFamilyData"]);
}
}["FamilyProvider.useCallback[resetData]"], [
loadData
]);
const searchMembers = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
"FamilyProvider.useCallback[searchMembers]": (query)=>{
if (!query.trim()) {
setSearchResults([]);
return;
}
const lowerQuery = query.toLowerCase();
// Perform search on the in-memory treeData for simplicity and speed
// (Dexie also supports querying, but we already have the data loaded)
const results = Object.values(treeData.members).filter({
"FamilyProvider.useCallback[searchMembers].results": (member)=>member.fullName.includes(lowerQuery) || member.givenName.includes(lowerQuery) || member.courtesyName?.includes(lowerQuery) || member.artName?.includes(lowerQuery)
}["FamilyProvider.useCallback[searchMembers].results"]);
setSearchResults(results);
}
}["FamilyProvider.useCallback[searchMembers]"], [
treeData
]);
// Listen for import events (legacy support for the file input in settings if needed,
// but we should prefer using the context method)
(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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({
"FamilyProvider.useEffect": ()=>{
const handleImport = {
"FamilyProvider.useEffect.handleImport": (e)=>{
loadData(e.detail);
}
}["FamilyProvider.useEffect.handleImport"];
window.addEventListener("family-data-import", handleImport);
return ({
"FamilyProvider.useEffect": ()=>window.removeEventListener("family-data-import", handleImport)
})["FamilyProvider.useEffect"];
}
}["FamilyProvider.useEffect"], [
loadData
]);
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(FamilyContext.Provider, {
value: {
treeData,
getMember,
addMember,
updateMember,
deleteMember,
searchResults,
searchMembers,
loadData,
resetData,
isLoading: !isInitialized || !members,
highlightedMemberId,
setHighlightedMemberId
},
children: children
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/context/family-context.tsx",
lineNumber: 185,
columnNumber: 5
}, this);
}
_s(FamilyProvider, "Z8JbHypIWB7xWhr4KfFw1q/vc28=", false, function() {
return [
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$2d$react$2d$hooks$40$4$2e$2$2e$0_$40$types$2b$react$40$19$2e$2$2e$6_dexie$40$4$2e$2$2e$1_react$40$19$2e$2$2e$0$2f$node_modules$2f$dexie$2d$react$2d$hooks$2f$dist$2f$dexie$2d$react$2d$hooks$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLiveQuery"],
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$2d$react$2d$hooks$40$4$2e$2$2e$0_$40$types$2b$react$40$19$2e$2$2e$6_dexie$40$4$2e$2$2e$1_react$40$19$2e$2$2e$0$2f$node_modules$2f$dexie$2d$react$2d$hooks$2f$dist$2f$dexie$2d$react$2d$hooks$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLiveQuery"]
];
});
_c = FamilyProvider;
function useFamily() {
_s1();
const context = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useContext"])(FamilyContext);
if (context === undefined) {
throw new Error("useFamily must be used within a FamilyProvider");
}
return context;
}
_s1(useFamily, "b9L3QQ+jgeyIrH0NfHrJ8nn7VMU=");
var _c;
__turbopack_context__.k.register(_c, "FamilyProvider");
if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) {
__turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$);
}
}),
]);
//# sourceMappingURL=Documents_go-new_chinese-family-tree_a6cc4283._.js.map
File diff suppressed because one or more lines are too long
@@ -13,6 +13,15 @@
--tw-space-y-reverse: 0;
--tw-space-x-reverse: 0;
--tw-border-style: solid;
--tw-gradient-position: initial;
--tw-gradient-from: #0000;
--tw-gradient-via: #0000;
--tw-gradient-to: #0000;
--tw-gradient-stops: initial;
--tw-gradient-via-stops: initial;
--tw-gradient-from-position: 0%;
--tw-gradient-via-position: 50%;
--tw-gradient-to-position: 100%;
--tw-leading: initial;
--tw-font-weight: initial;
--tw-tracking: initial;
@@ -36,6 +45,19 @@
--tw-ring-offset-color: #fff;
--tw-ring-offset-shadow: 0 0 #0000;
--tw-outline-style: solid;
--tw-blur: initial;
--tw-brightness: initial;
--tw-contrast: initial;
--tw-grayscale: initial;
--tw-hue-rotate: initial;
--tw-invert: initial;
--tw-opacity: initial;
--tw-saturate: initial;
--tw-sepia: initial;
--tw-drop-shadow: initial;
--tw-drop-shadow-color: initial;
--tw-drop-shadow-alpha: 100%;
--tw-drop-shadow-size: initial;
--tw-backdrop-blur: initial;
--tw-backdrop-brightness: initial;
--tw-backdrop-contrast: initial;
@@ -76,6 +98,13 @@
--color-red-300: #ffa3a3;
--color-red-400: #ff6568;
--color-red-600: #e40014;
--color-yellow-50: #fefce8;
--color-yellow-200: #fff085;
--color-yellow-400: #fac800;
--color-yellow-800: #874b00;
--color-yellow-900: #733e0a;
--color-blue-400: #54a2ff;
--color-pink-400: #fb64b6;
--color-neutral-50: #fafafa;
--color-neutral-100: #f5f5f5;
--color-neutral-200: #e5e5e5;
@@ -90,6 +119,7 @@
--container-sm: 24rem;
--container-lg: 32rem;
--container-xl: 36rem;
--container-2xl: 42rem;
--container-3xl: 48rem;
--container-4xl: 56rem;
--text-xs: .75rem;
@@ -138,6 +168,13 @@
--color-red-300: lab(76.5514% 36.422 15.5335);
--color-red-400: lab(63.7053% 60.745 31.3109);
--color-red-600: lab(48.4493% 77.4328 61.5452);
--color-yellow-50: lab(98.6846% -1.79055 9.7766);
--color-yellow-200: lab(94.3433% -5.00429 52.9663);
--color-yellow-400: lab(83.2664% 8.65132 106.895);
--color-yellow-800: lab(38.7484% 23.5833 51.4916);
--color-yellow-900: lab(32.3865% 21.1273 38.5959);
--color-blue-400: lab(65.0361% -1.42065 -56.9802);
--color-pink-400: lab(64.5597% 64.3615 -12.7988);
--color-neutral-50: lab(98.26% 0 0);
--color-neutral-100: lab(96.52% -.0000298023 .0000119209);
--color-neutral-200: lab(90.952% 0 -.0000119209);
@@ -440,6 +477,10 @@
visibility: hidden;
}
.visible {
visibility: visible;
}
.sr-only {
clip-path: inset(50%);
white-space: nowrap;
@@ -488,10 +529,6 @@
top: calc(var(--spacing) * -3);
}
.-top-8 {
top: calc(var(--spacing) * -8);
}
.-top-12 {
top: calc(var(--spacing) * -12);
}
@@ -584,6 +621,10 @@
bottom: calc(var(--spacing) * 0);
}
.bottom-2 {
bottom: calc(var(--spacing) * 2);
}
.bottom-4 {
bottom: calc(var(--spacing) * 4);
}
@@ -822,6 +863,10 @@
margin-left: calc(var(--spacing) * 1);
}
.ml-1\.5 {
margin-left: calc(var(--spacing) * 1.5);
}
.ml-2 {
margin-left: calc(var(--spacing) * 2);
}
@@ -969,6 +1014,10 @@
height: var(--cell-size);
}
.h-0\.5 {
height: calc(var(--spacing) * .5);
}
.h-1\.5 {
height: calc(var(--spacing) * 1.5);
}
@@ -1017,6 +1066,10 @@
height: calc(var(--spacing) * 12);
}
.h-14 {
height: calc(var(--spacing) * 14);
}
.h-16 {
height: calc(var(--spacing) * 16);
}
@@ -1025,10 +1078,6 @@
height: calc(var(--spacing) * 20);
}
.h-28 {
height: calc(var(--spacing) * 28);
}
.h-32 {
height: calc(var(--spacing) * 32);
}
@@ -1037,6 +1086,10 @@
height: 1.15rem;
}
.h-\[300px\] {
height: 300px;
}
.h-\[400px\] {
height: 400px;
}
@@ -1089,6 +1142,14 @@
max-height: var(--radix-select-content-available-height);
}
.max-h-\[60vh\] {
max-height: 60vh;
}
.max-h-\[70vh\] {
max-height: 70vh;
}
.max-h-\[300px\] {
max-height: 300px;
}
@@ -1137,12 +1198,12 @@
width: calc(var(--spacing) * 0);
}
.w-1 {
width: calc(var(--spacing) * 1);
.w-0\.5 {
width: calc(var(--spacing) * .5);
}
.w-1\/2 {
width: 50%;
.w-1 {
width: calc(var(--spacing) * 1);
}
.w-2 {
@@ -1173,6 +1234,10 @@
width: calc(var(--spacing) * 6);
}
.w-7 {
width: calc(var(--spacing) * 7);
}
.w-8 {
width: calc(var(--spacing) * 8);
}
@@ -1189,6 +1254,10 @@
width: calc(var(--spacing) * 12);
}
.w-14 {
width: calc(var(--spacing) * 14);
}
.w-16 {
width: calc(var(--spacing) * 16);
}
@@ -1197,10 +1266,6 @@
width: calc(var(--spacing) * 20);
}
.w-28 {
width: calc(var(--spacing) * 28);
}
.w-32 {
width: calc(var(--spacing) * 32);
}
@@ -1217,10 +1282,6 @@
width: 100px;
}
.w-\[calc\(100\%-8rem\)\] {
width: calc(100% - 8rem);
}
.w-auto {
width: auto;
}
@@ -1245,6 +1306,10 @@
max-width: var(--skeleton-width);
}
.max-w-2xl {
max-width: var(--container-2xl);
}
.max-w-3xl {
max-width: var(--container-3xl);
}
@@ -1257,6 +1322,10 @@
max-width: calc(100% - 2rem);
}
.max-w-full {
max-width: 100%;
}
.max-w-max {
max-width: max-content;
}
@@ -1325,7 +1394,7 @@
flex: 1;
}
.shrink-0 {
.flex-shrink-0, .shrink-0 {
flex-shrink: 0;
}
@@ -1377,6 +1446,10 @@
transform-origin: var(--radix-tooltip-content-transform-origin);
}
.origin-center {
transform-origin: center;
}
.-translate-x-1\/2 {
--tw-translate-x: calc(calc(1 / 2 * 100%) * -1);
translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -1465,6 +1538,10 @@
touch-action: none;
}
.resize {
resize: both;
}
.resize-none {
resize: none;
}
@@ -1611,6 +1688,12 @@
margin-block-end: calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)));
}
:where(.space-y-0\.5 > :not(:last-child)) {
--tw-space-y-reverse: 0;
margin-block-start: calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));
margin-block-end: calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)));
}
:where(.space-y-1 > :not(:last-child)) {
--tw-space-y-reverse: 0;
margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));
@@ -1766,6 +1849,11 @@
border-width: 2px;
}
.border-4 {
border-style: var(--tw-border-style);
border-width: 4px;
}
.border-\[1\.5px\] {
border-style: var(--tw-border-style);
border-width: 1.5px;
@@ -1801,6 +1889,11 @@
border-left-width: 2px;
}
.border-l-4 {
border-left-style: var(--tw-border-style);
border-left-width: 4px;
}
.border-dashed {
--tw-border-style: dashed;
border-style: dashed;
@@ -1843,6 +1936,16 @@
}
}
.border-border\/60 {
border-color: var(--border);
}
@supports (color: color-mix(in lab, red, red)) {
.border-border\/60 {
border-color: color-mix(in oklab, var(--border) 60%, transparent);
}
}
.border-destructive {
border-color: var(--destructive);
}
@@ -1897,6 +2000,10 @@
border-color: #0000;
}
.border-yellow-400 {
border-color: var(--color-yellow-400);
}
.border-t-transparent {
border-top-color: #0000;
}
@@ -1917,6 +2024,16 @@
background-color: var(--background);
}
.bg-background\/50 {
background-color: var(--background);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-background\/50 {
background-color: color-mix(in oklab, var(--background) 50%, transparent);
}
}
.bg-background\/60 {
background-color: var(--background);
}
@@ -2003,6 +2120,46 @@
background-color: var(--foreground);
}
.bg-foreground\/20 {
background-color: var(--foreground);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-foreground\/20 {
background-color: color-mix(in oklab, var(--foreground) 20%, transparent);
}
}
.bg-foreground\/25 {
background-color: var(--foreground);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-foreground\/25 {
background-color: color-mix(in oklab, var(--foreground) 25%, transparent);
}
}
.bg-foreground\/30 {
background-color: var(--foreground);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-foreground\/30 {
background-color: color-mix(in oklab, var(--foreground) 30%, transparent);
}
}
.bg-foreground\/40 {
background-color: var(--foreground);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-foreground\/40 {
background-color: color-mix(in oklab, var(--foreground) 40%, transparent);
}
}
.bg-input {
background-color: var(--input);
}
@@ -2111,10 +2268,53 @@
background-color: var(--color-white);
}
.bg-yellow-50 {
background-color: var(--color-yellow-50);
}
.bg-gradient-to-br {
--tw-gradient-position: to bottom right in oklab;
background-image: linear-gradient(var(--tw-gradient-stops));
}
.bg-\[url\(\'https\:\/\/www\.transparenttextures\.com\/patterns\/rice-paper\.png\'\)\] {
background-image: url("https://www.transparenttextures.com/patterns/rice-paper.png");
}
.from-primary\/5 {
--tw-gradient-from: var(--primary);
}
@supports (color: color-mix(in lab, red, red)) {
.from-primary\/5 {
--tw-gradient-from: color-mix(in oklab, var(--primary) 5%, transparent);
}
}
.from-primary\/5 {
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
}
.via-background {
--tw-gradient-via: var(--background);
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-via-stops);
}
.to-secondary\/5 {
--tw-gradient-to: var(--secondary);
}
@supports (color: color-mix(in lab, red, red)) {
.to-secondary\/5 {
--tw-gradient-to: color-mix(in oklab, var(--secondary) 5%, transparent);
}
}
.to-secondary\/5 {
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
}
.bg-repeat {
background-repeat: repeat;
}
@@ -2127,10 +2327,18 @@
fill: var(--foreground);
}
.fill-muted-foreground {
fill: var(--muted-foreground);
}
.fill-primary {
fill: var(--primary);
}
.object-contain {
object-fit: contain;
}
.object-cover {
object-fit: cover;
}
@@ -2159,6 +2367,10 @@
padding: calc(var(--spacing) * 6);
}
.p-8 {
padding: calc(var(--spacing) * 8);
}
.p-12 {
padding: calc(var(--spacing) * 12);
}
@@ -2255,14 +2467,14 @@
padding-top: calc(var(--spacing) * 4);
}
.pt-8 {
padding-top: calc(var(--spacing) * 8);
}
.pt-20 {
padding-top: calc(var(--spacing) * 20);
}
.pt-\[3\.75rem\] {
padding-top: 3.75rem;
}
.pr-1 {
padding-right: calc(var(--spacing) * 1);
}
@@ -2404,10 +2616,18 @@
font-size: .8rem;
}
.text-\[9px\] {
font-size: 9px;
}
.text-\[10px\] {
font-size: 10px;
}
.text-\[11px\] {
font-size: 11px;
}
.leading-none {
--tw-leading: 1;
line-height: 1;
@@ -2492,6 +2712,10 @@
color: var(--background);
}
.text-blue-400 {
color: var(--color-blue-400);
}
.text-card-foreground {
color: var(--card-foreground);
}
@@ -2546,6 +2770,26 @@
}
}
.text-muted-foreground\/60 {
color: var(--muted-foreground);
}
@supports (color: color-mix(in lab, red, red)) {
.text-muted-foreground\/60 {
color: color-mix(in oklab, var(--muted-foreground) 60%, transparent);
}
}
.text-muted-foreground\/70 {
color: var(--muted-foreground);
}
@supports (color: color-mix(in lab, red, red)) {
.text-muted-foreground\/70 {
color: color-mix(in oklab, var(--muted-foreground) 70%, transparent);
}
}
.text-neutral-500 {
color: var(--color-neutral-500);
}
@@ -2554,6 +2798,10 @@
color: var(--color-neutral-600);
}
.text-pink-400 {
color: var(--color-pink-400);
}
.text-popover-foreground {
color: var(--popover-foreground);
}
@@ -2566,6 +2814,10 @@
color: var(--primary-foreground);
}
.text-red-400 {
color: var(--color-red-400);
}
.text-secondary-foreground {
color: var(--secondary-foreground);
}
@@ -2614,6 +2866,10 @@
opacity: 0;
}
.opacity-10 {
opacity: .1;
}
.opacity-20 {
opacity: .2;
}
@@ -2622,6 +2878,10 @@
opacity: .5;
}
.opacity-60 {
opacity: .6;
}
.opacity-70 {
opacity: .7;
}
@@ -2703,6 +2963,10 @@
--tw-ring-color: var(--sidebar-ring);
}
.ring-yellow-200 {
--tw-ring-color: var(--color-yellow-200);
}
.ring-offset-background {
--tw-ring-offset-color: var(--background);
}
@@ -2724,6 +2988,10 @@
outline-width: 1px;
}
.filter {
filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.backdrop-blur {
--tw-backdrop-blur: blur(8px);
-webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
@@ -2849,6 +3117,10 @@
user-select: none;
}
.slide-in-from-bottom-5 {
--tw-enter-translate-y: calc(.05 * 100%);
}
.zoom-in-95 {
--tw-enter-scale: .95;
}
@@ -2878,6 +3150,12 @@
}
}
@media (hover: hover) {
.group-hover\:opacity-30:is(:where(.group):hover *) {
opacity: .3;
}
}
@media (hover: hover) {
.group-hover\:opacity-100:is(:where(.group):hover *) {
opacity: 1;
@@ -3300,6 +3578,24 @@
}
}
@media (hover: hover) {
.hover\:bg-accent\/5:hover {
background-color: var(--accent);
}
@supports (color: color-mix(in lab, red, red)) {
.hover\:bg-accent\/5:hover {
background-color: color-mix(in oklab, var(--accent) 5%, transparent);
}
}
}
@media (hover: hover) {
.hover\:bg-background:hover {
background-color: var(--background);
}
}
@media (hover: hover) {
.hover\:bg-card:hover {
background-color: var(--card);
@@ -3324,6 +3620,18 @@
}
}
@media (hover: hover) {
.hover\:bg-muted\/30:hover {
background-color: var(--muted);
}
@supports (color: color-mix(in lab, red, red)) {
.hover\:bg-muted\/30:hover {
background-color: color-mix(in oklab, var(--muted) 30%, transparent);
}
}
}
@media (hover: hover) {
.hover\:bg-muted\/50:hover {
background-color: var(--muted);
@@ -3426,6 +3734,12 @@
}
}
@media (hover: hover) {
.hover\:opacity-90:hover {
opacity: .9;
}
}
@media (hover: hover) {
.hover\:opacity-100:hover {
opacity: 1;
@@ -4773,6 +5087,12 @@
}
}
@media (min-width: 48rem) {
.md\:col-span-2 {
grid-column: span 2 / span 2;
}
}
@media (min-width: 48rem) {
.md\:ml-12 {
margin-left: calc(var(--spacing) * 12);
@@ -4932,6 +5252,24 @@
}
}
@media (min-width: 64rem) {
.lg\:col-span-3 {
grid-column: span 3 / span 3;
}
}
@media (min-width: 64rem) {
.lg\:col-span-4 {
grid-column: span 4 / span 4;
}
}
@media (min-width: 64rem) {
.lg\:col-span-5 {
grid-column: span 5 / span 5;
}
}
@media (min-width: 64rem) {
.lg\:grid-cols-2 {
grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -4950,6 +5288,18 @@
}
}
@media (min-width: 64rem) {
.lg\:grid-cols-12 {
grid-template-columns: repeat(12, minmax(0, 1fr));
}
}
@media (min-width: 80rem) {
.xl\: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;
@@ -5000,10 +5350,24 @@
background-color: #0000;
}
.dark\:bg-yellow-900\/20:is(.dark *) {
background-color: #733e0a33;
}
@supports (color: color-mix(in lab, red, red)) {
.dark\:bg-yellow-900\/20:is(.dark *) {
background-color: color-mix(in oklab, var(--color-yellow-900) 20%, transparent);
}
}
.dark\:text-muted-foreground:is(.dark *) {
color: var(--muted-foreground);
}
.dark\:ring-yellow-800:is(.dark *) {
--tw-ring-color: var(--color-yellow-800);
}
@media (hover: hover) {
.dark\:hover\:bg-accent\/50:is(.dark *):hover {
background-color: var(--accent);
@@ -6011,6 +6375,57 @@
initial-value: solid;
}
@property --tw-gradient-position {
syntax: "*";
inherits: false
}
@property --tw-gradient-from {
syntax: "<color>";
inherits: false;
initial-value: #0000;
}
@property --tw-gradient-via {
syntax: "<color>";
inherits: false;
initial-value: #0000;
}
@property --tw-gradient-to {
syntax: "<color>";
inherits: false;
initial-value: #0000;
}
@property --tw-gradient-stops {
syntax: "*";
inherits: false
}
@property --tw-gradient-via-stops {
syntax: "*";
inherits: false
}
@property --tw-gradient-from-position {
syntax: "<length-percentage>";
inherits: false;
initial-value: 0%;
}
@property --tw-gradient-via-position {
syntax: "<length-percentage>";
inherits: false;
initial-value: 50%;
}
@property --tw-gradient-to-position {
syntax: "<length-percentage>";
inherits: false;
initial-value: 100%;
}
@property --tw-leading {
syntax: "*";
inherits: false
@@ -6136,6 +6551,72 @@
initial-value: solid;
}
@property --tw-blur {
syntax: "*";
inherits: false
}
@property --tw-brightness {
syntax: "*";
inherits: false
}
@property --tw-contrast {
syntax: "*";
inherits: false
}
@property --tw-grayscale {
syntax: "*";
inherits: false
}
@property --tw-hue-rotate {
syntax: "*";
inherits: false
}
@property --tw-invert {
syntax: "*";
inherits: false
}
@property --tw-opacity {
syntax: "*";
inherits: false
}
@property --tw-saturate {
syntax: "*";
inherits: false
}
@property --tw-sepia {
syntax: "*";
inherits: false
}
@property --tw-drop-shadow {
syntax: "*";
inherits: false
}
@property --tw-drop-shadow-color {
syntax: "*";
inherits: false
}
@property --tw-drop-shadow-alpha {
syntax: "<percentage>";
inherits: false;
initial-value: 100%;
}
@property --tw-drop-shadow-size {
syntax: "*";
inherits: false
}
@property --tw-backdrop-blur {
syntax: "*";
inherits: false
File diff suppressed because one or more lines are too long
@@ -2,8 +2,8 @@
script: typeof document === "object" ? document.currentScript : undefined,
chunks: [
"static/chunks/[root-of-the-server]__6d150df4._.css",
"static/chunks/a0629__pnpm_a8b2b3e1._.js",
"static/chunks/Documents_go-new_chinese-family-tree_da5a5998._.js"
"static/chunks/a0629__pnpm_099d4172._.js",
"static/chunks/Documents_go-new_chinese-family-tree_d7eac8a1._.js"
],
source: "dynamic"
});
@@ -1,8 +1,9 @@
(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_ecc939d1._.js",
"static/chunks/a0629__pnpm_083acf2b._.js"
"static/chunks/Documents_go-new_chinese-family-tree_9fe2625b._.js",
"static/chunks/a0629__pnpm_5bcfcdb9._.js",
"static/chunks/4c051_react-image-crop_dist_ReactCrop_bde06fd8.css"
],
source: "dynamic"
});
@@ -2,7 +2,7 @@
script: typeof document === "object" ? document.currentScript : undefined,
chunks: [
"static/chunks/Documents_go-new_chinese-family-tree_905c8b60._.js",
"static/chunks/a0629__pnpm_359a17bb._.js"
"static/chunks/a0629__pnpm_af89b66b._.js"
],
source: "dynamic"
});
@@ -0,0 +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_905c8b60._.js",
"static/chunks/a0629__pnpm_af89b66b._.js"
],
source: "dynamic"
});
@@ -1,8 +1,34 @@
(globalThis.TURBOPACK_CHUNK_LISTS || (globalThis.TURBOPACK_CHUNK_LISTS = [])).push({
script: typeof document === "object" ? document.currentScript : undefined,
chunks: [
"static/chunks/a0629__pnpm_79a0c251._.js",
"static/chunks/Documents_go-new_chinese-family-tree_2338f068._.js"
"static/chunks/Documents_go-new_chinese-family-tree_88cf4dd7._.js",
"static/chunks/56139_zrender_lib_ce23e365._.js",
"static/chunks/f639c_echarts_lib_util_d4941c19._.js",
"static/chunks/f639c_echarts_lib_model_76b10339._.js",
"static/chunks/f639c_echarts_lib_label_1eda581d._.js",
"static/chunks/f639c_echarts_lib_core_83e874fa._.js",
"static/chunks/f639c_echarts_lib_scale_c4e1b6f8._.js",
"static/chunks/f639c_echarts_lib_data_b614132d._.js",
"static/chunks/f639c_echarts_lib_component_tooltip_6c6de848._.js",
"static/chunks/f639c_echarts_lib_component_axis_85c6ff97._.js",
"static/chunks/f639c_echarts_lib_component_axisPointer_98ac8b14._.js",
"static/chunks/f639c_echarts_lib_component_helper_7aa6326d._.js",
"static/chunks/f639c_echarts_lib_component_dataZoom_e286f5bf._.js",
"static/chunks/f639c_echarts_lib_component_toolbox_521b5e37._.js",
"static/chunks/f639c_echarts_lib_component_marker_cd5e44e5._.js",
"static/chunks/f639c_echarts_lib_component_legend_f6ba321d._.js",
"static/chunks/f639c_echarts_lib_component_visualMap_ee0662bf._.js",
"static/chunks/f639c_echarts_lib_component_a60fa07b._.js",
"static/chunks/f639c_echarts_lib_chart_helper_d540efe4._.js",
"static/chunks/f639c_echarts_lib_chart_line_ce4c6105._.js",
"static/chunks/f639c_echarts_lib_chart_bar_5820a790._.js",
"static/chunks/f639c_echarts_lib_chart_treemap_7a38bd49._.js",
"static/chunks/f639c_echarts_lib_chart_graph_f9c2705e._.js",
"static/chunks/f639c_echarts_lib_chart_1638f649._.js",
"static/chunks/f639c_echarts_lib_coord_8d85a72c._.js",
"static/chunks/f639c_echarts_lib_10a7987a._.js",
"static/chunks/f639c_echarts_index_dade51e7.js",
"static/chunks/a0629__pnpm_f75ea52f._.js"
],
source: "dynamic"
});
@@ -0,0 +1,34 @@
(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_88cf4dd7._.js",
"static/chunks/56139_zrender_lib_ce23e365._.js",
"static/chunks/f639c_echarts_lib_util_d4941c19._.js",
"static/chunks/f639c_echarts_lib_model_76b10339._.js",
"static/chunks/f639c_echarts_lib_label_1eda581d._.js",
"static/chunks/f639c_echarts_lib_core_83e874fa._.js",
"static/chunks/f639c_echarts_lib_scale_c4e1b6f8._.js",
"static/chunks/f639c_echarts_lib_data_b614132d._.js",
"static/chunks/f639c_echarts_lib_component_tooltip_6c6de848._.js",
"static/chunks/f639c_echarts_lib_component_axis_85c6ff97._.js",
"static/chunks/f639c_echarts_lib_component_axisPointer_98ac8b14._.js",
"static/chunks/f639c_echarts_lib_component_helper_7aa6326d._.js",
"static/chunks/f639c_echarts_lib_component_dataZoom_e286f5bf._.js",
"static/chunks/f639c_echarts_lib_component_toolbox_521b5e37._.js",
"static/chunks/f639c_echarts_lib_component_marker_cd5e44e5._.js",
"static/chunks/f639c_echarts_lib_component_legend_f6ba321d._.js",
"static/chunks/f639c_echarts_lib_component_visualMap_ee0662bf._.js",
"static/chunks/f639c_echarts_lib_component_a60fa07b._.js",
"static/chunks/f639c_echarts_lib_chart_helper_d540efe4._.js",
"static/chunks/f639c_echarts_lib_chart_line_ce4c6105._.js",
"static/chunks/f639c_echarts_lib_chart_bar_5820a790._.js",
"static/chunks/f639c_echarts_lib_chart_treemap_7a38bd49._.js",
"static/chunks/f639c_echarts_lib_chart_graph_f9c2705e._.js",
"static/chunks/f639c_echarts_lib_chart_1638f649._.js",
"static/chunks/f639c_echarts_lib_coord_8d85a72c._.js",
"static/chunks/f639c_echarts_lib_10a7987a._.js",
"static/chunks/f639c_echarts_index_dade51e7.js",
"static/chunks/a0629__pnpm_f75ea52f._.js"
],
source: "dynamic"
});
@@ -0,0 +1,34 @@
(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_fcfa7d71._.js",
"static/chunks/56139_zrender_lib_ce23e365._.js",
"static/chunks/f639c_echarts_lib_util_d4941c19._.js",
"static/chunks/f639c_echarts_lib_model_76b10339._.js",
"static/chunks/f639c_echarts_lib_label_1eda581d._.js",
"static/chunks/f639c_echarts_lib_core_83e874fa._.js",
"static/chunks/f639c_echarts_lib_scale_c4e1b6f8._.js",
"static/chunks/f639c_echarts_lib_data_b614132d._.js",
"static/chunks/f639c_echarts_lib_component_tooltip_6c6de848._.js",
"static/chunks/f639c_echarts_lib_component_axis_85c6ff97._.js",
"static/chunks/f639c_echarts_lib_component_axisPointer_98ac8b14._.js",
"static/chunks/f639c_echarts_lib_component_helper_7aa6326d._.js",
"static/chunks/f639c_echarts_lib_component_dataZoom_e286f5bf._.js",
"static/chunks/f639c_echarts_lib_component_toolbox_521b5e37._.js",
"static/chunks/f639c_echarts_lib_component_marker_cd5e44e5._.js",
"static/chunks/f639c_echarts_lib_component_legend_f6ba321d._.js",
"static/chunks/f639c_echarts_lib_component_visualMap_ee0662bf._.js",
"static/chunks/f639c_echarts_lib_component_a60fa07b._.js",
"static/chunks/f639c_echarts_lib_chart_helper_d540efe4._.js",
"static/chunks/f639c_echarts_lib_chart_line_ce4c6105._.js",
"static/chunks/f639c_echarts_lib_chart_bar_5820a790._.js",
"static/chunks/f639c_echarts_lib_chart_treemap_7a38bd49._.js",
"static/chunks/f639c_echarts_lib_chart_graph_f9c2705e._.js",
"static/chunks/f639c_echarts_lib_chart_1638f649._.js",
"static/chunks/f639c_echarts_lib_coord_8d85a72c._.js",
"static/chunks/f639c_echarts_lib_10a7987a._.js",
"static/chunks/f639c_echarts_index_dade51e7.js",
"static/chunks/a0629__pnpm_1332b5ac._.js"
],
source: "dynamic"
});
@@ -0,0 +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_414e667a._.js",
"static/chunks/a0629__pnpm_0a25c034._.js"
],
source: "dynamic"
});
@@ -0,0 +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_6ed28c1d._.js",
"static/chunks/a0629__pnpm_0a25c034._.js"
],
source: "dynamic"
});
@@ -1,8 +1,35 @@
(globalThis.TURBOPACK_CHUNK_LISTS || (globalThis.TURBOPACK_CHUNK_LISTS = [])).push({
script: typeof document === "object" ? document.currentScript : undefined,
chunks: [
"static/chunks/6bb63_echarts-for-react_esm_index_e4f93e37.js",
"static/chunks/Documents_go-new_chinese-family-tree_176456ab._.js",
"static/chunks/a0629__pnpm_ee284266._.js"
"static/chunks/56139_zrender_lib_dd4f683d._.js",
"static/chunks/f639c_echarts_lib_util_d4941c19._.js",
"static/chunks/f639c_echarts_lib_model_76b10339._.js",
"static/chunks/f639c_echarts_lib_label_1eda581d._.js",
"static/chunks/f639c_echarts_lib_core_83e874fa._.js",
"static/chunks/f639c_echarts_lib_scale_c4e1b6f8._.js",
"static/chunks/f639c_echarts_lib_data_b614132d._.js",
"static/chunks/f639c_echarts_lib_component_tooltip_6c6de848._.js",
"static/chunks/f639c_echarts_lib_component_axis_85c6ff97._.js",
"static/chunks/f639c_echarts_lib_component_axisPointer_98ac8b14._.js",
"static/chunks/f639c_echarts_lib_component_helper_7aa6326d._.js",
"static/chunks/f639c_echarts_lib_component_dataZoom_e286f5bf._.js",
"static/chunks/f639c_echarts_lib_component_toolbox_521b5e37._.js",
"static/chunks/f639c_echarts_lib_component_marker_cd5e44e5._.js",
"static/chunks/f639c_echarts_lib_component_legend_f6ba321d._.js",
"static/chunks/f639c_echarts_lib_component_visualMap_ee0662bf._.js",
"static/chunks/f639c_echarts_lib_component_a60fa07b._.js",
"static/chunks/f639c_echarts_lib_chart_helper_d540efe4._.js",
"static/chunks/f639c_echarts_lib_chart_line_ce4c6105._.js",
"static/chunks/f639c_echarts_lib_chart_bar_5820a790._.js",
"static/chunks/f639c_echarts_lib_chart_treemap_7a38bd49._.js",
"static/chunks/f639c_echarts_lib_chart_graph_f9c2705e._.js",
"static/chunks/f639c_echarts_lib_chart_1638f649._.js",
"static/chunks/f639c_echarts_lib_coord_8d85a72c._.js",
"static/chunks/f639c_echarts_lib_92e26ca0._.js",
"static/chunks/f639c_echarts_index_dade51e7.js",
"static/chunks/a0629__pnpm_1b9dd1c4._.js"
],
source: "dynamic"
});
@@ -0,0 +1,35 @@
(globalThis.TURBOPACK_CHUNK_LISTS || (globalThis.TURBOPACK_CHUNK_LISTS = [])).push({
script: typeof document === "object" ? document.currentScript : undefined,
chunks: [
"static/chunks/6bb63_echarts-for-react_esm_index_e902ea49.js",
"static/chunks/Documents_go-new_chinese-family-tree_176456ab._.js",
"static/chunks/56139_zrender_lib_dd4f683d._.js",
"static/chunks/f639c_echarts_lib_util_d4941c19._.js",
"static/chunks/f639c_echarts_lib_model_76b10339._.js",
"static/chunks/f639c_echarts_lib_label_1eda581d._.js",
"static/chunks/f639c_echarts_lib_core_83e874fa._.js",
"static/chunks/f639c_echarts_lib_scale_c4e1b6f8._.js",
"static/chunks/f639c_echarts_lib_data_b614132d._.js",
"static/chunks/f639c_echarts_lib_component_tooltip_6c6de848._.js",
"static/chunks/f639c_echarts_lib_component_axis_85c6ff97._.js",
"static/chunks/f639c_echarts_lib_component_axisPointer_98ac8b14._.js",
"static/chunks/f639c_echarts_lib_component_helper_7aa6326d._.js",
"static/chunks/f639c_echarts_lib_component_dataZoom_e286f5bf._.js",
"static/chunks/f639c_echarts_lib_component_toolbox_521b5e37._.js",
"static/chunks/f639c_echarts_lib_component_marker_cd5e44e5._.js",
"static/chunks/f639c_echarts_lib_component_legend_f6ba321d._.js",
"static/chunks/f639c_echarts_lib_component_visualMap_ee0662bf._.js",
"static/chunks/f639c_echarts_lib_component_a60fa07b._.js",
"static/chunks/f639c_echarts_lib_chart_helper_d540efe4._.js",
"static/chunks/f639c_echarts_lib_chart_line_ce4c6105._.js",
"static/chunks/f639c_echarts_lib_chart_bar_5820a790._.js",
"static/chunks/f639c_echarts_lib_chart_treemap_7a38bd49._.js",
"static/chunks/f639c_echarts_lib_chart_graph_f9c2705e._.js",
"static/chunks/f639c_echarts_lib_chart_1638f649._.js",
"static/chunks/f639c_echarts_lib_coord_8d85a72c._.js",
"static/chunks/f639c_echarts_lib_92e26ca0._.js",
"static/chunks/f639c_echarts_index_dade51e7.js",
"static/chunks/a0629__pnpm_1b9dd1c4._.js"
],
source: "dynamic"
});
@@ -1,8 +1,9 @@
(globalThis.TURBOPACK_CHUNK_LISTS || (globalThis.TURBOPACK_CHUNK_LISTS = [])).push({
script: typeof document === "object" ? document.currentScript : undefined,
chunks: [
"static/chunks/a0629__pnpm_337b4455._.js",
"static/chunks/Documents_go-new_chinese-family-tree_d13ac92d._.js"
"static/chunks/ffc37_dom-to-image-more_dist_dom-to-image-more_min_b9d21b93.js",
"static/chunks/a0629__pnpm_49f8f44c._.js",
"static/chunks/Documents_go-new_chinese-family-tree_f50e5040._.js"
],
source: "dynamic"
});
@@ -0,0 +1,9 @@
(globalThis.TURBOPACK_CHUNK_LISTS || (globalThis.TURBOPACK_CHUNK_LISTS = [])).push({
script: typeof document === "object" ? document.currentScript : undefined,
chunks: [
"static/chunks/ffc37_dom-to-image-more_dist_dom-to-image-more_min_5e8fd208.js",
"static/chunks/a0629__pnpm_49f8f44c._.js",
"static/chunks/Documents_go-new_chinese-family-tree_f50e5040._.js"
],
source: "dynamic"
});
@@ -0,0 +1,8 @@
(globalThis.TURBOPACK_CHUNK_LISTS || (globalThis.TURBOPACK_CHUNK_LISTS = [])).push({
script: typeof document === "object" ? document.currentScript : undefined,
chunks: [
"static/chunks/ffc37_dom-to-image-more_dist_dom-to-image-more_min_a4b555c0.js",
"static/chunks/Documents_go-new_chinese-family-tree_fcc8f317._.js"
],
source: "dynamic"
});
@@ -1769,43 +1769,155 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
/*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["Card"], {
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardHeader"], {
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardTitle"], {
className: "flex items-center gap-2 text-lg font-serif",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$scroll$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Scroll$3e$__["Scroll"], {
className: "h-5 w-5"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 304,
columnNumber: 15
}, this),
"生平事迹 (Biography)"
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 303,
columnNumber: 13
}, this)
}, void 0, false, {
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardTitle"], {
className: "flex items-center gap-2 text-lg font-serif",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__User$3e$__["User"], {
className: "h-5 w-5"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 304,
columnNumber: 15
}, this),
"联系方式 (Contact Information)"
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 303,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardDescription"], {
children: "在世成员的联系方式"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 307,
columnNumber: 13
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 302,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardContent"], {
className: "space-y-4",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$textarea$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Textarea"], {
className: "min-h-[200px]",
placeholder: "记录生平事迹...",
value: formData.bio || "",
onChange: (e)=>handleChange("bio", e.target.value)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 309,
columnNumber: 13
}, this)
}, void 0, false, {
className: "grid grid-cols-1 md:grid-cols-2 gap-6",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "space-y-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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$label$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Label"], {
htmlFor: "phone",
children: "手机号 (Mobile Phone)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 311,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$input$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Input"], {
id: "phone",
type: "tel",
value: formData.phone || "",
onChange: (e)=>handleChange("phone", e.target.value),
placeholder: "e.g. 13800138000"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 312,
columnNumber: 15
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 310,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "space-y-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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$label$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Label"], {
htmlFor: "telephone",
children: "固定电话 (Telephone)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 321,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$input$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Input"], {
id: "telephone",
type: "tel",
value: formData.telephone || "",
onChange: (e)=>handleChange("telephone", e.target.value),
placeholder: "e.g. 0592-1234567"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 322,
columnNumber: 15
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 320,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "space-y-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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$label$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Label"], {
htmlFor: "email",
children: "邮箱 (Email)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 331,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$input$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Input"], {
id: "email",
type: "email",
value: formData.email || "",
onChange: (e)=>handleChange("email", e.target.value),
placeholder: "e.g. example@email.com"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 332,
columnNumber: 15
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 330,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "space-y-2 md:col-span-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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$label$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Label"], {
htmlFor: "address",
children: "现居地址 (Address)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 341,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$input$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Input"], {
id: "address",
value: formData.address || "",
onChange: (e)=>handleChange("address", e.target.value),
placeholder: "e.g. 福建省厦门市思明区XX路XX号"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 342,
columnNumber: 15
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 340,
columnNumber: 13
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 308,
lineNumber: 309,
columnNumber: 11
}, this)
]
@@ -1814,6 +1926,54 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
lineNumber: 301,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["Card"], {
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardHeader"], {
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardTitle"], {
className: "flex items-center gap-2 text-lg font-serif",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$scroll$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Scroll$3e$__["Scroll"], {
className: "h-5 w-5"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 356,
columnNumber: 15
}, this),
"生平事迹 (Biography)"
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 355,
columnNumber: 13
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 354,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardContent"], {
className: "space-y-4",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$textarea$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Textarea"], {
className: "min-h-[200px]",
placeholder: "记录生平事迹...",
value: formData.bio || "",
onChange: (e)=>handleChange("bio", e.target.value)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 361,
columnNumber: 13
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 360,
columnNumber: 11
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 353,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["Card"], {
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardHeader"], {
@@ -1824,19 +1984,19 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
className: "h-5 w-5"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 322,
lineNumber: 374,
columnNumber: 15
}, this),
"家庭关系 (Relationships)"
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 321,
lineNumber: 373,
columnNumber: 13
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 320,
lineNumber: 372,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardContent"], {
@@ -1852,7 +2012,7 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
children: "父亲 (Father)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 329,
lineNumber: 381,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Select"], {
@@ -1864,12 +2024,12 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
placeholder: "选择父亲 Select Father"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 335,
lineNumber: 387,
columnNumber: 21
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 334,
lineNumber: 386,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SelectContent"], {
@@ -1879,7 +2039,7 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
children: "无 (None)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 338,
lineNumber: 390,
columnNumber: 21
}, this),
potentialRelatives.filter((m)=>m.gender === "male").map((m)=>/*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SelectItem"], {
@@ -1892,25 +2052,25 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
]
}, m.id, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 342,
lineNumber: 394,
columnNumber: 25
}, this))
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 337,
lineNumber: 389,
columnNumber: 19
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 330,
lineNumber: 382,
columnNumber: 17
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 328,
lineNumber: 380,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -1921,7 +2081,7 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
children: "母亲 (Mother)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 351,
lineNumber: 403,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Select"], {
@@ -1933,12 +2093,12 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
placeholder: "选择母亲 Select Mother"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 357,
lineNumber: 409,
columnNumber: 21
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 356,
lineNumber: 408,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SelectContent"], {
@@ -1948,7 +2108,7 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
children: "无 (None)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 360,
lineNumber: 412,
columnNumber: 21
}, this),
potentialRelatives.filter((m)=>m.gender === "female").map((m)=>/*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SelectItem"], {
@@ -1961,25 +2121,25 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
]
}, m.id, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 364,
lineNumber: 416,
columnNumber: 25
}, this))
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 359,
lineNumber: 411,
columnNumber: 19
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 352,
lineNumber: 404,
columnNumber: 17
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 350,
lineNumber: 402,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -1990,7 +2150,7 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
children: "配偶 (Spouse)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 373,
lineNumber: 425,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Select"], {
@@ -2002,12 +2162,12 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
placeholder: "选择配偶 Select Spouse"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 376,
lineNumber: 428,
columnNumber: 21
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 375,
lineNumber: 427,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$select$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SelectContent"], {
@@ -2017,7 +2177,7 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
children: "无 (None)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 379,
lineNumber: 431,
columnNumber: 21
}, this),
potentialRelatives.filter((m)=>m.gender !== formData.gender) // Suggest opposite gender
@@ -2031,42 +2191,42 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
]
}, m.id, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 383,
lineNumber: 435,
columnNumber: 25
}, this))
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 378,
lineNumber: 430,
columnNumber: 19
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 374,
lineNumber: 426,
columnNumber: 17
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 372,
lineNumber: 424,
columnNumber: 15
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 327,
lineNumber: 379,
columnNumber: 13
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 326,
lineNumber: 378,
columnNumber: 11
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 319,
lineNumber: 371,
columnNumber: 9
}, this)
]
@@ -2085,7 +2245,7 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
children: "取消 (Cancel)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 396,
lineNumber: 448,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["Button"], {
@@ -2094,13 +2254,13 @@ function MemberForm({ initialData, existingMembers = [], onSubmit, onCancel }) {
children: "保存 (Save Member)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 399,
lineNumber: 451,
columnNumber: 9
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/members/member-form.tsx",
lineNumber: 395,
lineNumber: 447,
columnNumber: 7
}, this)
]
File diff suppressed because one or more lines are too long
@@ -425,12 +425,64 @@ __turbopack_context__.s([
]);
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/lib/utils.ts [app-client] (ecmascript)");
;
var _s = __turbopack_context__.k.signature();
"use client";
;
;
// 格式化日期显示(只显示年份)
function formatYear(dateString) {
if (!dateString) return '';
const year = dateString.split('-')[0];
return year;
}
function FamilyNode({ member, spouse, isRoot, onSelect }) {
_s();
const [avatarBlobUrl, setAvatarBlobUrl] = useState(undefined);
const [isLoading, setIsLoading] = useState(false);
const birthYear = formatYear(member.birthDate);
const deathYear = formatYear(member.deathDate);
// 生卒年月显示文本
const lifeSpan = birthYear ? deathYear ? `${birthYear}-${deathYear}` : `${birthYear}-` : '';
// 加载上传的头像(如果存在)
useEffect({
"FamilyNode.useEffect": ()=>{
let isMounted = true;
let objectUrl;
if (member?.avatarImageId) {
setIsLoading(true);
db.images.get(member.avatarImageId).then({
"FamilyNode.useEffect": (image)=>{
if (image && isMounted) {
objectUrl = URL.createObjectURL(image.blob);
setAvatarBlobUrl(objectUrl);
setIsLoading(false);
}
}
}["FamilyNode.useEffect"]).catch({
"FamilyNode.useEffect": ()=>{
if (isMounted) {
setIsLoading(false);
}
}
}["FamilyNode.useEffect"]);
} else {
setAvatarBlobUrl(undefined);
setIsLoading(false);
}
return ({
"FamilyNode.useEffect": ()=>{
isMounted = false;
if (objectUrl) {
URL.revokeObjectURL(objectUrl);
}
}
})["FamilyNode.useEffect"];
}
}["FamilyNode.useEffect"], [
member?.avatarImageId
]);
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("relative flex flex-col items-center gap-2 p-3 rounded-lg border-2 transition-all cursor-pointer hover:scale-105 shadow-sm w-32", isRoot ? "border-primary bg-primary/5" : "border-border bg-card", member.gender === "female" ? "rounded-full w-28 h-28 justify-center" : "rounded-lg"),
className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("relative flex flex-col items-center gap-2 p-3 rounded-lg border-2 transition-all cursor-pointer hover:scale-105 shadow-sm w-32", isRoot ? "border-primary bg-primary/5" : "border-border bg-card"),
onClick: ()=>onSelect?.(member),
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -441,41 +493,45 @@ function FamilyNode({ member, spouse, isRoot, onSelect }) {
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/family-node.tsx",
lineNumber: 23,
lineNumber: 74,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "h-10 w-10 rounded-full bg-muted flex items-center justify-center text-muted-foreground overflow-hidden border border-border/50",
children: member.avatarUrl ? /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("img", {
src: member.avatarUrl || "/placeholder.svg",
className: "h-12 w-12 rounded-full bg-muted flex items-center justify-center text-muted-foreground overflow-hidden border border-border/50",
children: avatarBlobUrl ? /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("img", {
src: avatarBlobUrl,
alt: member.fullName,
className: "h-full w-full object-cover"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/family-node.tsx",
lineNumber: 29,
lineNumber: 80,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "font-serif font-bold text-lg text-foreground/70",
children: member.surname
children: member.givenName
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/family-node.tsx",
lineNumber: 35,
lineNumber: 86,
columnNumber: 11
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/family-node.tsx",
lineNumber: 27,
lineNumber: 78,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "text-center",
className: "text-center w-full",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "font-serif font-bold text-foreground leading-tight",
children: member.givenName
}, void 0, false, {
children: [
member.surname,
" ",
member.givenName
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/family-node.tsx",
lineNumber: 40,
lineNumber: 91,
columnNumber: 9
}, this),
member.courtesyName && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -486,29 +542,38 @@ function FamilyNode({ member, spouse, isRoot, onSelect }) {
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/family-node.tsx",
lineNumber: 42,
lineNumber: 93,
columnNumber: 11
}, this),
lifeSpan && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "text-[9px] text-muted-foreground/70 mt-1 font-mono",
children: lifeSpan
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/family-node.tsx",
lineNumber: 96,
columnNumber: 11
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/family-node.tsx",
lineNumber: 39,
lineNumber: 90,
columnNumber: 7
}, this),
member.lifeStatus === "deceased" && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
member.deathDate && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "absolute -top-1 -right-1 h-2 w-2 rounded-full bg-neutral-400 ring-2 ring-background"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/family-node.tsx",
lineNumber: 47,
lineNumber: 103,
columnNumber: 9
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/family-node.tsx",
lineNumber: 15,
lineNumber: 67,
columnNumber: 5
}, this);
}
_s(FamilyNode, "5puKg1UIe7xwQ5TKpc/rIlus/W0=");
_c = FamilyNode;
var _c;
__turbopack_context__.k.register(_c, "FamilyNode");
@@ -526,18 +591,138 @@ __turbopack_context__.s([
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$components$2f$tree$2f$family$2d$node$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/components/tree/family-node.tsx [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$context$2f$family$2d$context$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/go-new/chinese-family-tree/context/family-context.tsx [app-client] (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$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/compiled/react/index.js [app-client] (ecmascript)");
;
var _s = __turbopack_context__.k.signature();
"use client";
;
;
;
function TreeLayout({ rootId, onSelectMember }) {
_s();
const { getMember } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$context$2f$family$2d$context$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useFamily"])();
const { getMember, treeData } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$context$2f$family$2d$context$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useFamily"])();
const root = getMember(rootId);
const containerRef = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(null);
const [connections, setConnections] = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])([]);
const nodeRefs = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(new Map());
// 节点间距配置
const HORIZONTAL_GAP = 32 // 2rem = 32px
;
const VERTICAL_GAP = 48 // 3rem = 48px
;
const CONNECTOR_HEIGHT = 48 // 连接线垂直高度
;
// 计算所有连线位置
const calculateConnections = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
"TreeLayout.useCallback[calculateConnections]": ()=>{
const newConnections = [];
const containerRect = containerRef.current?.getBoundingClientRect();
if (!containerRect) return;
// 检查是否有足够的节点已注册
if (nodeRefs.current.size === 0) return;
nodeRefs.current.forEach({
"TreeLayout.useCallback[calculateConnections]": (nodeElement, nodeId)=>{
const member = getMember(nodeId);
if (!member || !member.childrenIds || member.childrenIds.length === 0) return;
const parentRect = nodeElement.getBoundingClientRect();
const parentCenterX = parentRect.left + parentRect.width / 2 - containerRect.left;
const parentBottomY = parentRect.bottom - containerRect.top;
// 父节点到水平线的垂直连线
const verticalLineY = parentBottomY + CONNECTOR_HEIGHT / 2;
newConnections.push({
from: {
x: parentCenterX,
y: parentBottomY
},
to: {
x: parentCenterX,
y: verticalLineY
},
type: 'vertical'
});
// 获取所有子节点的位置
const childPositions = member.childrenIds.map({
"TreeLayout.useCallback[calculateConnections].childPositions": (childId)=>{
const childElement = nodeRefs.current.get(childId);
if (!childElement) return null;
const childRect = childElement.getBoundingClientRect();
return {
id: childId,
centerX: childRect.left + childRect.width / 2 - containerRect.left,
topY: childRect.top - containerRect.top
};
}
}["TreeLayout.useCallback[calculateConnections].childPositions"]).filter(Boolean);
if (childPositions.length === 0) return;
// 如果有多个子节点,绘制水平连线
if (childPositions.length > 1) {
const leftmostX = Math.min(...childPositions.map({
"TreeLayout.useCallback[calculateConnections].leftmostX": (p)=>p.centerX
}["TreeLayout.useCallback[calculateConnections].leftmostX"]));
const rightmostX = Math.max(...childPositions.map({
"TreeLayout.useCallback[calculateConnections].rightmostX": (p)=>p.centerX
}["TreeLayout.useCallback[calculateConnections].rightmostX"]));
newConnections.push({
from: {
x: leftmostX,
y: verticalLineY
},
to: {
x: rightmostX,
y: verticalLineY
},
type: 'horizontal'
});
}
// 每个子节点的垂直连线
childPositions.forEach({
"TreeLayout.useCallback[calculateConnections]": (child)=>{
newConnections.push({
from: {
x: child.centerX,
y: verticalLineY
},
to: {
x: child.centerX,
y: child.topY
},
type: 'vertical'
});
}
}["TreeLayout.useCallback[calculateConnections]"]);
}
}["TreeLayout.useCallback[calculateConnections]"]);
setConnections(newConnections);
}
}["TreeLayout.useCallback[calculateConnections]"], [
getMember
]);
(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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({
"TreeLayout.useEffect": ()=>{
// 多次尝试计算,确保 DOM 完全渲染
const timers = [];
timers.push(setTimeout(calculateConnections, 50));
timers.push(setTimeout(calculateConnections, 150));
timers.push(setTimeout(calculateConnections, 300));
timers.push(setTimeout(calculateConnections, 500));
// 监听窗口大小变化
window.addEventListener('resize', calculateConnections);
return ({
"TreeLayout.useEffect": ()=>{
timers.forEach({
"TreeLayout.useEffect": (timer)=>clearTimeout(timer)
}["TreeLayout.useEffect"]);
window.removeEventListener('resize', calculateConnections);
}
})["TreeLayout.useEffect"];
}
}["TreeLayout.useEffect"], [
calculateConnections,
treeData
]);
if (!root) return null;
// Recursive component to render the tree
const TreeNode = ({ memberId })=>{
// 递归渲染树节点
const TreeNode = ({ memberId, isRoot = false })=>{
const member = getMember(memberId);
if (!member) return null;
const hasChildren = member.childrenIds && member.childrenIds.length > 0;
@@ -545,132 +730,125 @@ function TreeLayout({ rootId, onSelectMember }) {
className: "flex flex-col items-center",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
ref: (el)=>{
if (el) {
nodeRefs.current.set(memberId, el);
} else {
nodeRefs.current.delete(memberId);
}
},
className: "relative z-10",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$tree$2f$family$2d$node$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["FamilyNode"], {
member: member,
onSelect: onSelectMember
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 27,
columnNumber: 11
}, this),
hasChildren && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "absolute top-full left-1/2 -translate-x-1/2 h-8 w-px bg-border"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 30,
columnNumber: 27
}, this)
]
}, void 0, true, {
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$tree$2f$family$2d$node$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["FamilyNode"], {
member: member,
onSelect: onSelectMember,
isRoot: isRoot
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 135,
columnNumber: 11
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 26,
lineNumber: 125,
columnNumber: 9
}, this),
hasChildren && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex items-start pt-8 relative",
children: [
member.childrenIds.length > 1 && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "absolute top-0 left-[50%] -translate-x-1/2 h-px bg-border w-[calc(100%-8rem)]"
}, void 0, false, {
className: "flex items-start relative",
style: {
marginTop: `${VERTICAL_GAP}px`,
gap: `${HORIZONTAL_GAP}px`
},
children: member.childrenIds.map((childId)=>/*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(TreeNode, {
memberId: childId
}, childId, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 37,
lineNumber: 148,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex gap-8 relative",
children: [
member.childrenIds.length > 1 && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "absolute top-0 left-0 right-0 h-px bg-transparent"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 43,
columnNumber: 17
}, this),
member.childrenIds.map((childId, index)=>/*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex flex-col items-center relative",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "h-8 w-px bg-border absolute -top-8 left-1/2 -translate-x-1/2"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 51,
columnNumber: 19
}, this),
member.childrenIds.length > 1 && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], {
children: [
index === 0 && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "absolute -top-8 right-0 w-1/2 h-px bg-border"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 56,
columnNumber: 39
}, this),
index === member.childrenIds.length - 1 && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "absolute -top-8 left-0 w-1/2 h-px bg-border"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 58,
columnNumber: 25
}, this),
index > 0 && index < member.childrenIds.length - 1 && /*#__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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "absolute -top-8 left-0 w-full h-px bg-border"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 61,
columnNumber: 25
}, 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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(TreeNode, {
memberId: childId
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 66,
columnNumber: 19
}, this)
]
}, childId, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 49,
columnNumber: 17
}, this))
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 40,
columnNumber: 13
}, this)
]
}, void 0, true, {
}, this))
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 34,
lineNumber: 140,
columnNumber: 11
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 25,
lineNumber: 123,
columnNumber: 7
}, this);
};
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "p-12 min-w-fit",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(TreeNode, {
memberId: rootId
}, void 0, false, {
className: "relative",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
ref: containerRef,
className: "p-12 min-w-fit relative",
style: {
minHeight: '100%'
},
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "absolute inset-0 pointer-events-none",
style: {
zIndex: 1
},
children: connections.map((conn, index)=>{
const isHorizontal = conn.type === 'horizontal';
const width = isHorizontal ? Math.abs(conn.to.x - conn.from.x) : 2;
const height = isHorizontal ? 2 : Math.abs(conn.to.y - conn.from.y);
const left = Math.min(conn.from.x, conn.to.x);
const top = Math.min(conn.from.y, conn.to.y);
// 跳过无效的连线(宽度或高度为0)
if (width <= 0 || height <= 0) return null;
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "absolute bg-foreground/40 rounded-full",
style: {
left: `${left}px`,
top: `${top}px`,
width: `${width}px`,
height: `${height}px`
}
}, index, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 172,
columnNumber: 15
}, this);
})
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 160,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "relative",
style: {
zIndex: 10
},
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(TreeNode, {
memberId: rootId,
isRoot: true
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 188,
columnNumber: 11
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 187,
columnNumber: 9
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 78,
lineNumber: 158,
columnNumber: 7
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/components/tree/tree-layout.tsx",
lineNumber: 77,
lineNumber: 157,
columnNumber: 5
}, this);
}
_s(TreeLayout, "4iVqxGJ3BVSCeSrEI+JXR0phw8s=", false, function() {
_s(TreeLayout, "L8DuWoGUvxDERpdCrEZF8kp6Sks=", false, function() {
return [
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$context$2f$family$2d$context$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useFamily"]
];
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
@@ -24,74 +24,406 @@ const createMember = (id, name, gender, generation, props = {})=>{
};
};
const members = {
"1": createMember("1", "文德", "male", 1, {
courtesyName: "博远",
ancestralHome: "陇西",
bio: "李氏入闽始祖,洪武年间迁居福建。",
// ========== 第一代 (曾祖父母辈,1920年代出生) ==========
"1": createMember("1", "国强", "male", 1, {
ancestralHome: "广东省广州市",
bio: "李氏家族第一代,抗战时期参加革命工作,新中国成立后在政府部门工作,为人正直,深受敬重。",
tags: [
"始祖",
"进士"
"革命干部",
"始祖"
],
birthDate: "1350-01-01",
deathDate: "1410-05-20"
birthDate: "1925-03-15",
deathDate: "2008-08-20",
spouseIds: [
"2"
],
childrenIds: [
"3",
"4",
"5"
]
}),
"2": createMember("2", "氏(王)", "female", 1, {
fullName: "王",
"2": createMember("2", "秀芳", "female", 1, {
fullName: "王秀芳",
surname: "王",
givenName: "",
givenName: "秀芳",
ancestralHome: "广东省广州市",
bio: "知识分子家庭出身,建国后在学校任教,相夫教子,育有三子。",
birthDate: "1928-07-08",
deathDate: "2015-12-10",
spouseIds: [
"1"
],
childrenIds: [
"3",
"4",
"5"
]
}),
// Generation 2
"3": createMember("3", "世昌", "male", 2, {
// ========== 第二代 (祖父母辈,1950年代出生) ==========
"3": createMember("3", "建华", "male", 2, {
fatherId: "1",
motherId: "2",
courtesyName: "继业"
}),
"4": createMember("4", "世盛", "male", 2, {
fatherId: "1",
motherId: "2",
courtesyName: "继荣"
}),
// Generation 3
"5": createMember("5", "宗仁", "male", 3, {
fatherId: "3",
generationName: "宗"
}),
"6": createMember("6", "宗义", "male", 3, {
fatherId: "3",
generationName: "宗"
}),
// Generation 24 (Modern)
"100": createMember("100", "建国", "male", 23, {
generationName: "建"
}),
"101": createMember("101", "明远", "male", 24, {
fatherId: "100",
generationName: "明",
birthDate: "1985-06-15",
ancestralHome: "广东省深圳市",
birthPlace: "广东省深圳市",
bio: "国强长子,改革开放后下海经商,迁往深圳创办家族企业,事业有成。",
tags: [
"户主"
"企业家"
],
birthDate: "1952-05-20",
deathDate: "2020-03-15",
spouseIds: [
"6"
],
childrenIds: [
"9",
"10"
]
}),
"102": createMember("102", "子豪", "male", 25, {
fatherId: "101",
birthDate: "2015-09-01"
"4": createMember("4", "建国", "male", 2, {
fatherId: "1",
motherId: "2",
generationName: "建",
rank: 2,
bio: "次子,大学教授,追随教育事业迁往北京,从事教育工作四十余年,桃李满天下。",
tags: [
"教授",
"次子"
],
birthDate: "1955-11-03",
ancestralHome: "北京市",
birthPlace: "北京市",
spouseIds: [
"7"
],
childrenIds: [
"11",
"12",
"13"
]
}),
"5": createMember("5", "建军", "male", 2, {
fatherId: "1",
motherId: "2",
generationName: "建",
rank: 3,
bio: "三子,医生,支援西部建设迁往上海,从医三十余年,救死扶伤。",
tags: [
"医生",
"三子"
],
birthDate: "1958-11-03",
ancestralHome: "上海市",
birthPlace: "上海市",
spouseIds: [
"8"
],
childrenIds: [
"14"
]
}),
// 第二代配偶
"6": createMember("6", "丽华", "female", 2, {
fullName: "陈丽华",
surname: "陈",
givenName: "丽华",
ancestralHome: "广东省深圳市",
bio: "建华之妻,企业管理者,协助丈夫打理家族企业。",
birthDate: "1955-05-20",
deathDate: "2021-11-05",
spouseIds: [
"3"
],
childrenIds: [
"9",
"10"
]
}),
"7": createMember("7", "美玲", "female", 2, {
fullName: "张美玲",
surname: "张",
givenName: "美玲",
ancestralHome: "广东省广州市",
bio: "建国之妻,中学教师,与丈夫志同道合,共同从事教育事业。",
birthDate: "1957-01-15",
spouseIds: [
"4"
],
childrenIds: [
"11",
"12",
"13"
]
}),
"8": createMember("8", "雅琴", "female", 2, {
fullName: "林雅琴",
surname: "林",
givenName: "雅琴",
ancestralHome: "福建省厦门市",
bio: "建军之妻,护士长,温柔贤惠,善于持家。",
birthDate: "1960-08-10",
spouseIds: [
"5"
],
childrenIds: [
"14"
]
}),
// ========== 第三代 (父母辈,1980年代出生) ==========
"9": createMember("9", "志远", "male", 3, {
fatherId: "3",
motherId: "6",
generationName: "志",
rank: 1,
ancestralHome: "广东省深圳市",
birthPlace: "广东省深圳市",
bio: "建华长子,留学归国,接管家族企业,推动企业转型升级。",
tags: [
"企业家",
"海归"
],
birthDate: "1980-03-08",
phone: "13800138001",
email: "zhiyuan.li@company.com",
address: "广东省广州市天河区珠江新城XX路XX号",
spouseIds: [
"15"
],
childrenIds: [
"17",
"18"
]
}),
"10": createMember("10", "志强", "male", 3, {
fatherId: "3",
motherId: "6",
generationName: "志",
rank: 2,
ancestralHome: "北京市",
birthPlace: "北京市",
bio: "建华次子,互联网创业者,北上创业,创办科技公司。",
tags: [
"创业者",
"科技"
],
birthDate: "1983-07-22",
phone: "13900139002",
email: "zhiqiang.li@techco.com",
address: "北京市朝阳区望京SOHO",
spouseIds: [
"16"
],
childrenIds: [
"19"
]
}),
"11": createMember("11", "志明", "male", 3, {
fatherId: "4",
motherId: "7",
generationName: "志",
rank: 1,
ancestralHome: "广东省广州市",
birthPlace: "广东省广州市",
bio: "建国长子,大学副教授,从北京返回广州从事教育研究工作。",
tags: [
"副教授",
"学者"
],
birthDate: "1982-01-18",
phone: "13700137003",
telephone: "020-8888-8888",
email: "zhiming.li@university.edu.cn",
address: "广东省广州市海珠区大学城",
spouseIds: [
"20"
],
childrenIds: [
"21",
"22"
]
}),
"12": createMember("12", "志文", "male", 3, {
fatherId: "4",
motherId: "7",
generationName: "志",
rank: 2,
bio: "建国次子,作家,追求文学梦想迁往成都,出版多部文学作品。",
tags: [
"作家",
"文学"
],
birthDate: "1985-09-12",
ancestralHome: "四川省成都市",
birthPlace: "四川省成都市",
phone: "13600136004",
email: "zhiwen.li@writer.com"
}),
"13": createMember("13", "志勇", "male", 3, {
fatherId: "4",
motherId: "7",
generationName: "志",
rank: 3,
ancestralHome: "上海市",
birthPlace: "上海市",
bio: "建国三子,律师,从北京迁往上海,执业于知名律师事务所。",
tags: [
"律师"
],
birthDate: "1988-11-05",
phone: "13500135005",
email: "zhiyong.li@lawfirm.com",
address: "上海市浦东新区陆家嘴金融中心"
}),
"14": createMember("14", "志诚", "male", 3, {
fatherId: "5",
motherId: "8",
generationName: "志",
rank: 1,
ancestralHome: "广东省深圳市",
birthPlace: "广东省深圳市",
bio: "建军独子,医生,从上海迁往深圳,继承父业,在医院工作。",
tags: [
"医生"
],
birthDate: "1986-04-28",
phone: "13400134006",
telephone: "0755-6666-6666",
email: "zhicheng.li@hospital.com",
address: "广东省深圳市福田区人民医院",
spouseIds: [
"23"
],
childrenIds: [
"24"
]
}),
// 第三代配偶
"15": createMember("15", "晓雯", "female", 3, {
fullName: "赵晓雯",
surname: "赵",
givenName: "晓雯",
ancestralHome: "上海市",
bio: "志远之妻,金融行业从业者,MBA学位。",
birthDate: "1982-06-15",
spouseIds: [
"9"
],
childrenIds: [
"17",
"18"
]
}),
"16": createMember("16", "诗涵", "female", 3, {
fullName: "刘诗涵",
surname: "刘",
givenName: "诗涵",
ancestralHome: "北京市",
bio: "志强之妻,设计师,从事品牌设计工作。",
birthDate: "1985-10-08",
spouseIds: [
"10"
],
childrenIds: [
"19"
]
}),
"20": createMember("20", "雨欣", "female", 3, {
fullName: "周雨欣",
surname: "周",
givenName: "雨欣",
ancestralHome: "浙江省杭州市",
bio: "志明之妻,中学教师,温柔贤淑。",
birthDate: "1984-02-25",
spouseIds: [
"11"
],
childrenIds: [
"21",
"22"
]
}),
"23": createMember("23", "婉婷", "female", 3, {
fullName: "郑婉婷",
surname: "郑",
givenName: "婉婷",
ancestralHome: "广东省广州市",
bio: "志诚之妻,护士,在医院工作。",
birthDate: "1988-12-03",
spouseIds: [
"14"
],
childrenIds: [
"24"
]
}),
// ========== 第四代 (子女辈,2010年代出生) ==========
"17": createMember("17", "浩然", "male", 4, {
fatherId: "9",
motherId: "15",
generationName: "浩",
rank: 1,
bio: "志远长子,在读高中生,成绩优异。",
tags: [
"学生"
],
birthDate: "2010-05-10"
}),
"18": createMember("18", "思琪", "female", 4, {
fatherId: "9",
motherId: "15",
generationName: "思",
rank: 2,
bio: "志远次女,在读初中,喜欢绘画。",
tags: [
"学生"
],
birthDate: "2013-08-22"
}),
"19": createMember("19", "宇轩", "male", 4, {
fatherId: "10",
motherId: "16",
generationName: "宇",
rank: 1,
bio: "志强独子,在读小学,对编程感兴趣。",
tags: [
"学生"
],
birthDate: "2015-11-18"
}),
"21": createMember("21", "梓涵", "female", 4, {
fatherId: "11",
motherId: "20",
generationName: "梓",
rank: 1,
bio: "志明长女,在读大学,主修经济学。",
tags: [
"大学生"
],
birthDate: "2007-03-05"
}),
"22": createMember("22", "子轩", "male", 4, {
fatherId: "11",
motherId: "20",
generationName: "子",
rank: 2,
bio: "志明次子,在读高中,擅长数学。",
tags: [
"学生"
],
birthDate: "2010-07-14"
}),
"24": createMember("24", "欣怡", "female", 4, {
fatherId: "14",
motherId: "23",
generationName: "欣",
rank: 1,
bio: "志诚独女,在读初中,活泼可爱。",
tags: [
"学生"
],
birthDate: "2012-09-20"
})
};
// Link relationships bi-directionally for the mock data
members["1"].spouseIds = [
"2"
];
members["1"].childrenIds = [
"3",
"4"
];
members["3"].childrenIds = [
"5",
"6"
];
const mockFamilyData = {
members,
rootId: "1"
@@ -155,6 +487,7 @@ function FamilyProvider({ children }) {
_s();
const [searchResults, setSearchResults] = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])([]);
const [isInitialized, setIsInitialized] = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false);
const [highlightedMemberId, setHighlightedMemberId] = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null);
// Live query to get all members
const members = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$2d$react$2d$hooks$40$4$2e$2$2e$0_$40$types$2b$react$40$19$2e$2$2e$6_dexie$40$4$2e$2$2e$1_react$40$19$2e$2$2e$0$2f$node_modules$2f$dexie$2d$react$2d$hooks$2f$dist$2f$dexie$2d$react$2d$hooks$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLiveQuery"])({
"FamilyProvider.useLiveQuery[members]": ()=>__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$lib$2f$db$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["db"].members.toArray()
@@ -336,16 +669,18 @@ function FamilyProvider({ children }) {
searchMembers,
loadData,
resetData,
isLoading: !isInitialized || !members
isLoading: !isInitialized || !members,
highlightedMemberId,
setHighlightedMemberId
},
children: children
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/context/family-context.tsx",
lineNumber: 171,
lineNumber: 175,
columnNumber: 5
}, this);
}
_s(FamilyProvider, "4aP1rNWeVZgMpJ1s4jlfi91bk4g=", false, function() {
_s(FamilyProvider, "MaXTifX1wt5nxXGJqZ0hkHvJfuc=", false, function() {
return [
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$2d$react$2d$hooks$40$4$2e$2$2e$0_$40$types$2b$react$40$19$2e$2$2e$6_dexie$40$4$2e$2$2e$1_react$40$19$2e$2$2e$0$2f$node_modules$2f$dexie$2d$react$2d$hooks$2f$dist$2f$dexie$2d$react$2d$hooks$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLiveQuery"],
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$node_modules$2f2e$pnpm$2f$dexie$2d$react$2d$hooks$40$4$2e$2$2e$0_$40$types$2b$react$40$19$2e$2$2e$6_dexie$40$4$2e$2$2e$1_react$40$19$2e$2$2e$0$2f$node_modules$2f$dexie$2d$react$2d$hooks$2f$dist$2f$dexie$2d$react$2d$hooks$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLiveQuery"]
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
@@ -202,7 +202,7 @@ function SiteHeader() {
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("header", {
className: "sticky top-0 z-50 w-full border-b border-border/40 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "container flex h-16 items-center px-4",
className: "container mx-auto flex h-16 items-center px-4",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "mr-8 flex items-center gap-2",
@@ -642,34 +642,26 @@ var _s = __turbopack_context__.k.signature();
;
function SettingsPage() {
_s();
const { treeData, addMember } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$context$2f$family$2d$context$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useFamily"])() // Actually need setTreeData but I didn't expose it directly. I should have.
;
// Wait, I didn't expose setTreeData in the context interface.
// I need to update the context to allow full data replacement or add a "loadData" function.
// Let me quickly check context/family-context.tsx
// ... It has 'addMember', 'updateMember', 'deleteMember'. No 'loadData'.
// I will assume I can update the context file first.
const { treeData, loadData, resetData } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$context$2f$family$2d$context$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useFamily"])();
const [importStatus, setImportStatus] = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])("");
const fileInputRef = (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(null);
// Since I can't easily modify the context interface without a separate edit step which I should do properly,
// I will modify the context file in this same block to add 'loadData'.
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "min-h-screen bg-background flex flex-col 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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["SiteHeader"], {}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 27,
lineNumber: 18,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("main", {
className: "container py-8 px-4 md:px-6 flex-1 max-w-3xl",
className: "container mx-auto py-8 px-4 md:px-6 flex-1 max-w-3xl",
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h1", {
className: "text-3xl font-serif font-bold mb-8",
children: "系统设置 (Settings)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 29,
lineNumber: 20,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -686,27 +678,27 @@ function SettingsPage() {
className: "h-5 w-5"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 35,
lineNumber: 26,
columnNumber: 17
}, this),
" 数据备份 (Backup)"
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 34,
lineNumber: 25,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardDescription"], {
children: "将家族数据导出为 JSON 文件进行本地保存。"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 37,
lineNumber: 28,
columnNumber: 15
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 33,
lineNumber: 24,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardContent"], {
@@ -729,18 +721,18 @@ function SettingsPage() {
children: "导出数据 (Export JSON)"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 40,
lineNumber: 31,
columnNumber: 15
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 39,
lineNumber: 30,
columnNumber: 13
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 32,
lineNumber: 23,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["Card"], {
@@ -754,27 +746,27 @@ function SettingsPage() {
className: "h-5 w-5"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 61,
lineNumber: 52,
columnNumber: 17
}, this),
" 数据恢复 (Restore)"
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 60,
lineNumber: 51,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardDescription"], {
children: "从 JSON 备份文件恢复数据。注意:这将覆盖当前的所有数据。"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 63,
lineNumber: 54,
columnNumber: 15
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 59,
lineNumber: 50,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardContent"], {
@@ -787,27 +779,27 @@ function SettingsPage() {
className: "h-4 w-4"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 67,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$alert$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["AlertTitle"], {
children: "警告"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 68,
lineNumber: 59,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$alert$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["AlertDescription"], {
children: "导入操作不可撤销。建议在导入前先导出当前数据备份。"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 69,
lineNumber: 60,
columnNumber: 17
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 66,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -822,21 +814,19 @@ function SettingsPage() {
const file = e.target.files?.[0];
if (!file) return;
const reader = new FileReader();
reader.onload = (event)=>{
reader.onload = async (event)=>{
try {
const json = JSON.parse(event.target?.result);
if (json.members && json.rootId) {
// Ideally call loadData(json) here
// Since I'm in the component, I'll dispatch a custom event or use the context method I'm about to add
const event = new CustomEvent("family-data-import", {
detail: json
});
window.dispatchEvent(event);
await loadData(json);
setImportStatus("导入成功!");
// Clear input so same file can be selected again if needed
if (fileInputRef.current) fileInputRef.current.value = "";
} else {
setImportStatus("错误:无效的数据格式");
}
} catch (err) {
console.error(err);
setImportStatus("错误:无法解析文件");
}
};
@@ -844,7 +834,7 @@ function SettingsPage() {
}
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 73,
lineNumber: 64,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["Button"], {
@@ -853,7 +843,7 @@ function SettingsPage() {
children: "选择文件..."
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 102,
lineNumber: 93,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
@@ -861,25 +851,25 @@ function SettingsPage() {
children: importStatus
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 105,
lineNumber: 96,
columnNumber: 17
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 72,
lineNumber: 63,
columnNumber: 15
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 65,
lineNumber: 56,
columnNumber: 13
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 58,
lineNumber: 49,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["Card"], {
@@ -893,74 +883,75 @@ function SettingsPage() {
className: "h-5 w-5"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 113,
lineNumber: 104,
columnNumber: 17
}, this),
" 重置系统"
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 112,
lineNumber: 103,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardDescription"], {
children: "清除所有数据并恢复到初始演示状态。"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 115,
lineNumber: 106,
columnNumber: 15
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 111,
lineNumber: 102,
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["CardContent"], {
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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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$client$5d$__$28$ecmascript$29$__["Button"], {
variant: "destructive",
onClick: ()=>{
onClick: async ()=>{
if (confirm("确定要重置吗?所有更改将丢失。")) {
window.location.reload(); // Simple way to reset state since it's in-memory
await resetData();
alert("数据已重置为演示状态。");
}
},
children: "重置所有数据"
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 118,
lineNumber: 109,
columnNumber: 15
}, this)
}, void 0, false, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 117,
lineNumber: 108,
columnNumber: 13
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 110,
lineNumber: 101,
columnNumber: 11
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 31,
lineNumber: 22,
columnNumber: 9
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 28,
lineNumber: 19,
columnNumber: 7
}, this)
]
}, void 0, true, {
fileName: "[project]/Documents/go-new/chinese-family-tree/app/settings/page.tsx",
lineNumber: 26,
lineNumber: 17,
columnNumber: 5
}, this);
}
_s(SettingsPage, "Lbb7IEySJxErIAasuOt4mphxT6I=", false, function() {
_s(SettingsPage, "2lCAN+BUAWm5q1VUv7U4Q5FCLl4=", false, function() {
return [
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$go$2d$new$2f$chinese$2d$family$2d$tree$2f$context$2f$family$2d$context$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useFamily"]
];
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
@@ -97,6 +97,15 @@
--tw-space-y-reverse: 0;
--tw-space-x-reverse: 0;
--tw-border-style: solid;
--tw-gradient-position: initial;
--tw-gradient-from: #0000;
--tw-gradient-via: #0000;
--tw-gradient-to: #0000;
--tw-gradient-stops: initial;
--tw-gradient-via-stops: initial;
--tw-gradient-from-position: 0%;
--tw-gradient-via-position: 50%;
--tw-gradient-to-position: 100%;
--tw-leading: initial;
--tw-font-weight: initial;
--tw-tracking: initial;
@@ -120,6 +129,19 @@
--tw-ring-offset-color: #fff;
--tw-ring-offset-shadow: 0 0 #0000;
--tw-outline-style: solid;
--tw-blur: initial;
--tw-brightness: initial;
--tw-contrast: initial;
--tw-grayscale: initial;
--tw-hue-rotate: initial;
--tw-invert: initial;
--tw-opacity: initial;
--tw-saturate: initial;
--tw-sepia: initial;
--tw-drop-shadow: initial;
--tw-drop-shadow-color: initial;
--tw-drop-shadow-alpha: 100%;
--tw-drop-shadow-size: initial;
--tw-backdrop-blur: initial;
--tw-backdrop-brightness: initial;
--tw-backdrop-contrast: initial;
@@ -160,6 +182,13 @@
--color-red-300: #ffa3a3;
--color-red-400: #ff6568;
--color-red-600: #e40014;
--color-yellow-50: #fefce8;
--color-yellow-200: #fff085;
--color-yellow-400: #fac800;
--color-yellow-800: #874b00;
--color-yellow-900: #733e0a;
--color-blue-400: #54a2ff;
--color-pink-400: #fb64b6;
--color-neutral-50: #fafafa;
--color-neutral-100: #f5f5f5;
--color-neutral-200: #e5e5e5;
@@ -174,6 +203,7 @@
--container-sm: 24rem;
--container-lg: 32rem;
--container-xl: 36rem;
--container-2xl: 42rem;
--container-3xl: 48rem;
--container-4xl: 56rem;
--text-xs: .75rem;
@@ -222,6 +252,13 @@
--color-red-300: lab(76.5514% 36.422 15.5335);
--color-red-400: lab(63.7053% 60.745 31.3109);
--color-red-600: lab(48.4493% 77.4328 61.5452);
--color-yellow-50: lab(98.6846% -1.79055 9.7766);
--color-yellow-200: lab(94.3433% -5.00429 52.9663);
--color-yellow-400: lab(83.2664% 8.65132 106.895);
--color-yellow-800: lab(38.7484% 23.5833 51.4916);
--color-yellow-900: lab(32.3865% 21.1273 38.5959);
--color-blue-400: lab(65.0361% -1.42065 -56.9802);
--color-pink-400: lab(64.5597% 64.3615 -12.7988);
--color-neutral-50: lab(98.26% 0 0);
--color-neutral-100: lab(96.52% -.0000298023 .0000119209);
--color-neutral-200: lab(90.952% 0 -.0000119209);
@@ -524,6 +561,10 @@
visibility: hidden;
}
.visible {
visibility: visible;
}
.sr-only {
clip-path: inset(50%);
white-space: nowrap;
@@ -572,10 +613,6 @@
top: calc(var(--spacing) * -3);
}
.-top-8 {
top: calc(var(--spacing) * -8);
}
.-top-12 {
top: calc(var(--spacing) * -12);
}
@@ -668,6 +705,10 @@
bottom: calc(var(--spacing) * 0);
}
.bottom-2 {
bottom: calc(var(--spacing) * 2);
}
.bottom-4 {
bottom: calc(var(--spacing) * 4);
}
@@ -906,6 +947,10 @@
margin-left: calc(var(--spacing) * 1);
}
.ml-1\.5 {
margin-left: calc(var(--spacing) * 1.5);
}
.ml-2 {
margin-left: calc(var(--spacing) * 2);
}
@@ -1053,6 +1098,10 @@
height: var(--cell-size);
}
.h-0\.5 {
height: calc(var(--spacing) * .5);
}
.h-1\.5 {
height: calc(var(--spacing) * 1.5);
}
@@ -1101,6 +1150,10 @@
height: calc(var(--spacing) * 12);
}
.h-14 {
height: calc(var(--spacing) * 14);
}
.h-16 {
height: calc(var(--spacing) * 16);
}
@@ -1109,10 +1162,6 @@
height: calc(var(--spacing) * 20);
}
.h-28 {
height: calc(var(--spacing) * 28);
}
.h-32 {
height: calc(var(--spacing) * 32);
}
@@ -1121,6 +1170,10 @@
height: 1.15rem;
}
.h-\[300px\] {
height: 300px;
}
.h-\[400px\] {
height: 400px;
}
@@ -1173,6 +1226,14 @@
max-height: var(--radix-select-content-available-height);
}
.max-h-\[60vh\] {
max-height: 60vh;
}
.max-h-\[70vh\] {
max-height: 70vh;
}
.max-h-\[300px\] {
max-height: 300px;
}
@@ -1221,12 +1282,12 @@
width: calc(var(--spacing) * 0);
}
.w-1 {
width: calc(var(--spacing) * 1);
.w-0\.5 {
width: calc(var(--spacing) * .5);
}
.w-1\/2 {
width: 50%;
.w-1 {
width: calc(var(--spacing) * 1);
}
.w-2 {
@@ -1257,6 +1318,10 @@
width: calc(var(--spacing) * 6);
}
.w-7 {
width: calc(var(--spacing) * 7);
}
.w-8 {
width: calc(var(--spacing) * 8);
}
@@ -1273,6 +1338,10 @@
width: calc(var(--spacing) * 12);
}
.w-14 {
width: calc(var(--spacing) * 14);
}
.w-16 {
width: calc(var(--spacing) * 16);
}
@@ -1281,10 +1350,6 @@
width: calc(var(--spacing) * 20);
}
.w-28 {
width: calc(var(--spacing) * 28);
}
.w-32 {
width: calc(var(--spacing) * 32);
}
@@ -1301,10 +1366,6 @@
width: 100px;
}
.w-\[calc\(100\%-8rem\)\] {
width: calc(100% - 8rem);
}
.w-auto {
width: auto;
}
@@ -1329,6 +1390,10 @@
max-width: var(--skeleton-width);
}
.max-w-2xl {
max-width: var(--container-2xl);
}
.max-w-3xl {
max-width: var(--container-3xl);
}
@@ -1341,6 +1406,10 @@
max-width: calc(100% - 2rem);
}
.max-w-full {
max-width: 100%;
}
.max-w-max {
max-width: max-content;
}
@@ -1409,7 +1478,7 @@
flex: 1;
}
.shrink-0 {
.flex-shrink-0, .shrink-0 {
flex-shrink: 0;
}
@@ -1461,6 +1530,10 @@
transform-origin: var(--radix-tooltip-content-transform-origin);
}
.origin-center {
transform-origin: center;
}
.-translate-x-1\/2 {
--tw-translate-x: calc(calc(1 / 2 * 100%) * -1);
translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -1549,6 +1622,10 @@
touch-action: none;
}
.resize {
resize: both;
}
.resize-none {
resize: none;
}
@@ -1695,6 +1772,12 @@
margin-block-end: calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)));
}
:where(.space-y-0\.5 > :not(:last-child)) {
--tw-space-y-reverse: 0;
margin-block-start: calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));
margin-block-end: calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)));
}
:where(.space-y-1 > :not(:last-child)) {
--tw-space-y-reverse: 0;
margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));
@@ -1850,6 +1933,11 @@
border-width: 2px;
}
.border-4 {
border-style: var(--tw-border-style);
border-width: 4px;
}
.border-\[1\.5px\] {
border-style: var(--tw-border-style);
border-width: 1.5px;
@@ -1885,6 +1973,11 @@
border-left-width: 2px;
}
.border-l-4 {
border-left-style: var(--tw-border-style);
border-left-width: 4px;
}
.border-dashed {
--tw-border-style: dashed;
border-style: dashed;
@@ -1927,6 +2020,16 @@
}
}
.border-border\/60 {
border-color: var(--border);
}
@supports (color: color-mix(in lab, red, red)) {
.border-border\/60 {
border-color: color-mix(in oklab, var(--border) 60%, transparent);
}
}
.border-destructive {
border-color: var(--destructive);
}
@@ -1981,6 +2084,10 @@
border-color: #0000;
}
.border-yellow-400 {
border-color: var(--color-yellow-400);
}
.border-t-transparent {
border-top-color: #0000;
}
@@ -2001,6 +2108,16 @@
background-color: var(--background);
}
.bg-background\/50 {
background-color: var(--background);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-background\/50 {
background-color: color-mix(in oklab, var(--background) 50%, transparent);
}
}
.bg-background\/60 {
background-color: var(--background);
}
@@ -2087,6 +2204,46 @@
background-color: var(--foreground);
}
.bg-foreground\/20 {
background-color: var(--foreground);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-foreground\/20 {
background-color: color-mix(in oklab, var(--foreground) 20%, transparent);
}
}
.bg-foreground\/25 {
background-color: var(--foreground);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-foreground\/25 {
background-color: color-mix(in oklab, var(--foreground) 25%, transparent);
}
}
.bg-foreground\/30 {
background-color: var(--foreground);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-foreground\/30 {
background-color: color-mix(in oklab, var(--foreground) 30%, transparent);
}
}
.bg-foreground\/40 {
background-color: var(--foreground);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-foreground\/40 {
background-color: color-mix(in oklab, var(--foreground) 40%, transparent);
}
}
.bg-input {
background-color: var(--input);
}
@@ -2195,10 +2352,53 @@
background-color: var(--color-white);
}
.bg-yellow-50 {
background-color: var(--color-yellow-50);
}
.bg-gradient-to-br {
--tw-gradient-position: to bottom right in oklab;
background-image: linear-gradient(var(--tw-gradient-stops));
}
.bg-\[url\(\'https\:\/\/www\.transparenttextures\.com\/patterns\/rice-paper\.png\'\)\] {
background-image: url("https://www.transparenttextures.com/patterns/rice-paper.png");
}
.from-primary\/5 {
--tw-gradient-from: var(--primary);
}
@supports (color: color-mix(in lab, red, red)) {
.from-primary\/5 {
--tw-gradient-from: color-mix(in oklab, var(--primary) 5%, transparent);
}
}
.from-primary\/5 {
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
}
.via-background {
--tw-gradient-via: var(--background);
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-via-stops);
}
.to-secondary\/5 {
--tw-gradient-to: var(--secondary);
}
@supports (color: color-mix(in lab, red, red)) {
.to-secondary\/5 {
--tw-gradient-to: color-mix(in oklab, var(--secondary) 5%, transparent);
}
}
.to-secondary\/5 {
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
}
.bg-repeat {
background-repeat: repeat;
}
@@ -2211,10 +2411,18 @@
fill: var(--foreground);
}
.fill-muted-foreground {
fill: var(--muted-foreground);
}
.fill-primary {
fill: var(--primary);
}
.object-contain {
object-fit: contain;
}
.object-cover {
object-fit: cover;
}
@@ -2243,6 +2451,10 @@
padding: calc(var(--spacing) * 6);
}
.p-8 {
padding: calc(var(--spacing) * 8);
}
.p-12 {
padding: calc(var(--spacing) * 12);
}
@@ -2339,14 +2551,14 @@
padding-top: calc(var(--spacing) * 4);
}
.pt-8 {
padding-top: calc(var(--spacing) * 8);
}
.pt-20 {
padding-top: calc(var(--spacing) * 20);
}
.pt-\[3\.75rem\] {
padding-top: 3.75rem;
}
.pr-1 {
padding-right: calc(var(--spacing) * 1);
}
@@ -2488,10 +2700,18 @@
font-size: .8rem;
}
.text-\[9px\] {
font-size: 9px;
}
.text-\[10px\] {
font-size: 10px;
}
.text-\[11px\] {
font-size: 11px;
}
.leading-none {
--tw-leading: 1;
line-height: 1;
@@ -2576,6 +2796,10 @@
color: var(--background);
}
.text-blue-400 {
color: var(--color-blue-400);
}
.text-card-foreground {
color: var(--card-foreground);
}
@@ -2630,6 +2854,26 @@
}
}
.text-muted-foreground\/60 {
color: var(--muted-foreground);
}
@supports (color: color-mix(in lab, red, red)) {
.text-muted-foreground\/60 {
color: color-mix(in oklab, var(--muted-foreground) 60%, transparent);
}
}
.text-muted-foreground\/70 {
color: var(--muted-foreground);
}
@supports (color: color-mix(in lab, red, red)) {
.text-muted-foreground\/70 {
color: color-mix(in oklab, var(--muted-foreground) 70%, transparent);
}
}
.text-neutral-500 {
color: var(--color-neutral-500);
}
@@ -2638,6 +2882,10 @@
color: var(--color-neutral-600);
}
.text-pink-400 {
color: var(--color-pink-400);
}
.text-popover-foreground {
color: var(--popover-foreground);
}
@@ -2650,6 +2898,10 @@
color: var(--primary-foreground);
}
.text-red-400 {
color: var(--color-red-400);
}
.text-secondary-foreground {
color: var(--secondary-foreground);
}
@@ -2698,6 +2950,10 @@
opacity: 0;
}
.opacity-10 {
opacity: .1;
}
.opacity-20 {
opacity: .2;
}
@@ -2706,6 +2962,10 @@
opacity: .5;
}
.opacity-60 {
opacity: .6;
}
.opacity-70 {
opacity: .7;
}
@@ -2787,6 +3047,10 @@
--tw-ring-color: var(--sidebar-ring);
}
.ring-yellow-200 {
--tw-ring-color: var(--color-yellow-200);
}
.ring-offset-background {
--tw-ring-offset-color: var(--background);
}
@@ -2808,6 +3072,10 @@
outline-width: 1px;
}
.filter {
filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
}
.backdrop-blur {
--tw-backdrop-blur: blur(8px);
-webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
@@ -2933,6 +3201,10 @@
user-select: none;
}
.slide-in-from-bottom-5 {
--tw-enter-translate-y: calc(.05 * 100%);
}
.zoom-in-95 {
--tw-enter-scale: .95;
}
@@ -2962,6 +3234,12 @@
}
}
@media (hover: hover) {
.group-hover\:opacity-30:is(:where(.group):hover *) {
opacity: .3;
}
}
@media (hover: hover) {
.group-hover\:opacity-100:is(:where(.group):hover *) {
opacity: 1;
@@ -3384,6 +3662,24 @@
}
}
@media (hover: hover) {
.hover\:bg-accent\/5:hover {
background-color: var(--accent);
}
@supports (color: color-mix(in lab, red, red)) {
.hover\:bg-accent\/5:hover {
background-color: color-mix(in oklab, var(--accent) 5%, transparent);
}
}
}
@media (hover: hover) {
.hover\:bg-background:hover {
background-color: var(--background);
}
}
@media (hover: hover) {
.hover\:bg-card:hover {
background-color: var(--card);
@@ -3408,6 +3704,18 @@
}
}
@media (hover: hover) {
.hover\:bg-muted\/30:hover {
background-color: var(--muted);
}
@supports (color: color-mix(in lab, red, red)) {
.hover\:bg-muted\/30:hover {
background-color: color-mix(in oklab, var(--muted) 30%, transparent);
}
}
}
@media (hover: hover) {
.hover\:bg-muted\/50:hover {
background-color: var(--muted);
@@ -3510,6 +3818,12 @@
}
}
@media (hover: hover) {
.hover\:opacity-90:hover {
opacity: .9;
}
}
@media (hover: hover) {
.hover\:opacity-100:hover {
opacity: 1;
@@ -4857,6 +5171,12 @@
}
}
@media (min-width: 48rem) {
.md\:col-span-2 {
grid-column: span 2 / span 2;
}
}
@media (min-width: 48rem) {
.md\:ml-12 {
margin-left: calc(var(--spacing) * 12);
@@ -5016,6 +5336,24 @@
}
}
@media (min-width: 64rem) {
.lg\:col-span-3 {
grid-column: span 3 / span 3;
}
}
@media (min-width: 64rem) {
.lg\:col-span-4 {
grid-column: span 4 / span 4;
}
}
@media (min-width: 64rem) {
.lg\:col-span-5 {
grid-column: span 5 / span 5;
}
}
@media (min-width: 64rem) {
.lg\:grid-cols-2 {
grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -5034,6 +5372,18 @@
}
}
@media (min-width: 64rem) {
.lg\:grid-cols-12 {
grid-template-columns: repeat(12, minmax(0, 1fr));
}
}
@media (min-width: 80rem) {
.xl\: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;
@@ -5084,10 +5434,24 @@
background-color: #0000;
}
.dark\:bg-yellow-900\/20:is(.dark *) {
background-color: #733e0a33;
}
@supports (color: color-mix(in lab, red, red)) {
.dark\:bg-yellow-900\/20:is(.dark *) {
background-color: color-mix(in oklab, var(--color-yellow-900) 20%, transparent);
}
}
.dark\:text-muted-foreground:is(.dark *) {
color: var(--muted-foreground);
}
.dark\:ring-yellow-800:is(.dark *) {
--tw-ring-color: var(--color-yellow-800);
}
@media (hover: hover) {
.dark\:hover\:bg-accent\/50:is(.dark *):hover {
background-color: var(--accent);
@@ -6095,6 +6459,57 @@
initial-value: solid;
}
@property --tw-gradient-position {
syntax: "*";
inherits: false
}
@property --tw-gradient-from {
syntax: "<color>";
inherits: false;
initial-value: #0000;
}
@property --tw-gradient-via {
syntax: "<color>";
inherits: false;
initial-value: #0000;
}
@property --tw-gradient-to {
syntax: "<color>";
inherits: false;
initial-value: #0000;
}
@property --tw-gradient-stops {
syntax: "*";
inherits: false
}
@property --tw-gradient-via-stops {
syntax: "*";
inherits: false
}
@property --tw-gradient-from-position {
syntax: "<length-percentage>";
inherits: false;
initial-value: 0%;
}
@property --tw-gradient-via-position {
syntax: "<length-percentage>";
inherits: false;
initial-value: 50%;
}
@property --tw-gradient-to-position {
syntax: "<length-percentage>";
inherits: false;
initial-value: 100%;
}
@property --tw-leading {
syntax: "*";
inherits: false
@@ -6220,6 +6635,72 @@
initial-value: solid;
}
@property --tw-blur {
syntax: "*";
inherits: false
}
@property --tw-brightness {
syntax: "*";
inherits: false
}
@property --tw-contrast {
syntax: "*";
inherits: false
}
@property --tw-grayscale {
syntax: "*";
inherits: false
}
@property --tw-hue-rotate {
syntax: "*";
inherits: false
}
@property --tw-invert {
syntax: "*";
inherits: false
}
@property --tw-opacity {
syntax: "*";
inherits: false
}
@property --tw-saturate {
syntax: "*";
inherits: false
}
@property --tw-sepia {
syntax: "*";
inherits: false
}
@property --tw-drop-shadow {
syntax: "*";
inherits: false
}
@property --tw-drop-shadow-color {
syntax: "*";
inherits: false
}
@property --tw-drop-shadow-alpha {
syntax: "<percentage>";
inherits: false;
initial-value: 100%;
}
@property --tw-drop-shadow-size {
syntax: "*";
inherits: false
}
@property --tw-backdrop-blur {
syntax: "*";
inherits: false
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
File diff suppressed because one or more lines are too long
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
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

Some files were not shown because too many files have changed in this diff Show More