传承千年文脉 · 记录家族荣光
{/* 图标 */}华夏家谱
{/* 哲理文字 - 滚动显示 */}家族是根,文化是魂 · 记录过往,传承未来
让每一个故事都成为永恒 · 血脉相连,世代相传
铭记历史,启迪后人 · 家风永续,德泽绵长
{/* 重复内容实现无缝滚动 */}家族是根,文化是魂 · 记录过往,传承未来
让每一个故事都成为永恒 · 血脉相连,世代相传
铭记历史,启迪后人 · 家风永续,德泽绵长
"use client" import type React from "react" import Link from "next/link" import Image from "next/image" import dynamic from "next/dynamic" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { ChineseCard, ChineseCardContent, ChineseCardHeader, ChineseCardTitle, ChineseCardDescription, ChineseDivider } from "@/components/ui/chinese-card" import { Dialog, DialogContent, DialogTitle } from "@/components/ui/dialog" import { SiteHeader } from "@/components/site-header" import { ScrollArea } from "@/components/ui/scroll-area" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { UserPlus, Network, Map, Calendar, Users, ArrowRight, Clock, Search, BookOpen, BarChart3, Calculator, Loader2, Images, ChevronDown, ChevronUp, EyeOff } from "lucide-react" import { useFamily } from "@/context/family-context" import { useMemo, useState, useEffect, useRef, useCallback } from "react" import { useRouter } from "next/navigation" import { format } from "date-fns" import { useSession } from "next-auth/react" import { useSearchParams } from "next/navigation" import { CollaboratorDialog } from "@/components/tree/collaborator-dialog" import { permissions } from "@/lib/permissions" import { isInCurrentMonth, solar2lunar, lunar2solar } from "@/lib/lunar-calendar" import { MemberNameWithStatus } from "@/components/member-name-with-status" import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible" import { Switch } from "@/components/ui/switch" import type { FamilyPhoto } from "@/types/family" // 动态导入统计图表组件(减少初始加载体积) const StatisticsCharts = dynamic( () => import("@/components/dashboard/statistics-charts").then(mod => ({ default: mod.StatisticsCharts })), { ssr: false, loading: () => (
传承千年文脉 · 记录家族荣光
{/* 图标 */}家族是根,文化是魂 · 记录过往,传承未来
让每一个故事都成为永恒 · 血脉相连,世代相传
铭记历史,启迪后人 · 家风永续,德泽绵长
{/* 重复内容实现无缝滚动 */}家族是根,文化是魂 · 记录过往,传承未来
让每一个故事都成为永恒 · 血脉相连,世代相传
铭记历史,启迪后人 · 家风永续,德泽绵长
{currentTree?.description || '记录家族历史,传承家族文化'} {stats.maxGeneration > 0 && ` · 第 ${stats.maxGeneration} 代传人`}
家族成员
家族历史
性别比例
管理员已隐藏
)}暂无照片
在成员详情页可以添加照片
第 {anniversary.member.generation} 世 · 距今 {yearsAgo} 年 {anniversary.type === 'death' && ' · 已故'} {anniversary.isLunar && anniversary.lunarDisplay && ( · {anniversary.lunarDisplay} )}
此月无忆
第 {event.member.generation} 世 · {yearsAgo} 年 {event.type === 'death' && ' · 已故'} {event.isLunar && event.lunarDisplay && ( · {event.lunarDisplay} )} · {daysUntil}天后
来日无期
{activity.action === 'CREATE' && '创建了成员'} {activity.action === 'UPDATE' && '更新了成员'} {activity.action === 'DELETE' && '删除了成员'} {activity.action === 'IMPORT' && '导入了数据'}
)}静待修谱
{member.fullName}
第 {member.generation} 世
未有籍贯记录
{title}
{subtitle}