0.0.0.5
This commit is contained in:
+47
-11
@@ -138,7 +138,7 @@ export default function TimelinePage() {
|
||||
}
|
||||
return evs
|
||||
})
|
||||
.sort((a, b) => a.date.localeCompare(b.date))
|
||||
.sort((a, b) => b.date.localeCompare(a.date)) // 倒序排列:最新的在上面
|
||||
|
||||
// -- Migration Logic --
|
||||
// Find moves between generations (Father -> Child location change)
|
||||
@@ -329,31 +329,67 @@ export default function TimelinePage() {
|
||||
</div>
|
||||
|
||||
{/* Content Card */}
|
||||
<div className="bg-card rounded-lg px-4 py-2 transition-all hover:bg-accent/5">
|
||||
<div className="flex items-center gap-4 flex-wrap">
|
||||
<div className="bg-card rounded-lg px-4 py-2 transition-all hover:bg-accent/5 border border-border/50">
|
||||
<div className="flex items-center gap-2 flex-wrap text-sm">
|
||||
<span
|
||||
className={`text-xs px-2 py-0.5 rounded-full flex-shrink-0 ${event.type === "birth" ? "bg-primary/10 text-primary" : "bg-neutral-100 text-neutral-500"
|
||||
}`}
|
||||
>
|
||||
{event.type === "birth" ? "诞生" : "逝世"}
|
||||
</span>
|
||||
<span className="font-serif font-bold text-base">{event.member.fullName}</span>
|
||||
<span className="text-sm text-muted-foreground">第{event.member.generation}世</span>
|
||||
<span className="font-serif font-bold">{event.member.fullName}</span>
|
||||
<span className={`text-xs px-1.5 py-0.5 rounded ${event.member.gender === "male" ? "bg-blue-100 text-blue-700" : "bg-pink-100 text-pink-700"}`}>
|
||||
{event.member.gender === "male" ? "男" : "女"}
|
||||
</span>
|
||||
<span className="text-xs text-muted-foreground">第{event.member.generation}世</span>
|
||||
|
||||
{/* 父母信息 */}
|
||||
{event.member.fatherId && (
|
||||
<span className="text-xs px-1.5 py-0.5 rounded bg-orange-50 text-orange-700 border border-orange-200">
|
||||
父:{getMember(event.member.fatherId)?.fullName || "未知"}
|
||||
</span>
|
||||
)}
|
||||
{event.member.motherId && (
|
||||
<span className="text-xs px-1.5 py-0.5 rounded bg-orange-50 text-orange-700 border border-orange-200">
|
||||
母:{getMember(event.member.motherId)?.fullName || "未知"}
|
||||
</span>
|
||||
)}
|
||||
|
||||
{/* 配偶信息 */}
|
||||
{event.member.spouseIds && event.member.spouseIds.length > 0 && (
|
||||
<span className="text-xs px-1.5 py-0.5 rounded bg-purple-50 text-purple-700 border border-purple-200">
|
||||
配偶:{getMember(event.member.spouseIds[0])?.fullName || "未知"}
|
||||
</span>
|
||||
)}
|
||||
|
||||
{/* 子女信息 */}
|
||||
{event.member.childrenIds && event.member.childrenIds.length > 0 && (
|
||||
<span className="text-xs px-1.5 py-0.5 rounded bg-green-50 text-green-700 border border-green-200">
|
||||
子女:{event.member.childrenIds.length}人
|
||||
</span>
|
||||
)}
|
||||
|
||||
{/* 出生地信息 */}
|
||||
{event.type === "birth" && (event.member.birthPlace || event.member.ancestralHome) && (
|
||||
<span className="text-sm text-muted-foreground">
|
||||
出生于 {event.member.birthPlace || event.member.ancestralHome}
|
||||
<span className="text-xs text-muted-foreground">
|
||||
📍{event.member.birthPlace || event.member.ancestralHome}
|
||||
</span>
|
||||
)}
|
||||
|
||||
{/* 享年 */}
|
||||
{event.type === "death" && event.member.birthDate && (
|
||||
<span className="text-sm text-muted-foreground">
|
||||
享年 {event.year - Number.parseInt(event.member.birthDate.substring(0, 4))} 岁
|
||||
<span className="text-xs text-muted-foreground">
|
||||
享年{event.year - Number.parseInt(event.member.birthDate.substring(0, 4))}岁
|
||||
</span>
|
||||
)}
|
||||
|
||||
{/* 葬地 */}
|
||||
{event.type === "death" && event.member.burialPlace && (
|
||||
<span className="text-sm text-muted-foreground">
|
||||
葬于 {event.member.burialPlace}
|
||||
<span className="text-xs text-muted-foreground">
|
||||
⚰️{event.member.burialPlace}
|
||||
</span>
|
||||
)}
|
||||
|
||||
<span className="text-xs text-muted-foreground font-mono ml-auto">{event.date}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user