This commit is contained in:
freedakgmail
2025-11-23 16:15:32 +08:00
parent 222824f438
commit bae0e2c45a
11 changed files with 449 additions and 392 deletions
+33
View File
@@ -4059,3 +4059,36 @@ It can also happen if the client has a browser extension installed which messes
[04:47:36.999] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {}
[04:47:37.119] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:47:37.156] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:48:09.723] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:48:27.273] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:48:27.845] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/relationship color: rgb(120, 120, 120) color: inherit {"dp":"/relationship","o":"http://localhost:3000/relationship","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763885549688}
[04:48:27.865] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {}
[04:48:27.892] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:48:27.908] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:48:29.804] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:48:29.920] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:48:29.923] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/?treeId=cmib8zhrq0003hhxlvnsi96nh color: rgb(120, 120, 120) color: inherit {"dp":"/","o":"http://localhost:3000/?treeId=cmib8zhrq0003hhxlvnsi96nh","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763885552225}
[04:48:47.301] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:49:33.528] Server LOG ✓ Compiled in 79ms
[04:49:37.389] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:49:41.562] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:50:19.107] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:50:33.969] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:50:59.923] Server LOG ✓ Compiled in 142ms
[04:51:06.360] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:51:07.697] Browser INFO %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold
[04:51:07.956] Browser LOG %c[Vercel Web Analytics]%c Debug mode is enabled by default in development. No requests will be sent to the server. color: rgb(120, 120, 120) color: inherit
[04:51:07.956] Browser LOG %c[Vercel Web Analytics]%c Running queued event color: rgb(120, 120, 120) color: inherit pageview {"path":"/","route":"/"}
[04:51:07.956] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/?treeId=cmib8zhrq0003hhxlvnsi96nh color: rgb(120, 120, 120) color: inherit {"dp":"/","o":"http://localhost:3000/?treeId=cmib8zhrq0003hhxlvnsi96nh","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763885710257}
[04:51:07.974] Server LOG 🌳 GET /api/trees/[treeId] 返回数据: {}
[04:51:08.060] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {}
[04:51:08.165] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:51:08.200] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:51:18.015] Browser INFO %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold
[04:51:18.147] Server LOG 🌳 GET /api/trees/[treeId] 返回数据: {}
[04:51:18.157] Browser LOG %c[Vercel Web Analytics]%c Debug mode is enabled by default in development. No requests will be sent to the server. color: rgb(120, 120, 120) color: inherit
[04:51:18.157] Browser LOG %c[Vercel Web Analytics]%c Running queued event color: rgb(120, 120, 120) color: inherit pageview {"path":"/","route":"/"}
[04:51:18.157] Browser LOG %c[Vercel Web Analytics]%c [pageview] http://localhost:3000/?treeId=cmib8zhrq0003hhxlvnsi96nh color: rgb(120, 120, 120) color: inherit {"dp":"/","o":"http://localhost:3000/?treeId=cmib8zhrq0003hhxlvnsi96nh","sdkn":"@vercel/analytics/next","sdkv":"1.5.0","sv":"0.1.3","ts":1763885720465}
[04:51:18.219] Server LOG 👥 GET /api/trees/[treeId]/members 返回数据: {}
[04:51:18.357] Server LOG 🌳 GET /api/trees 返回数据: {}
[04:51:18.392] Server LOG 🌳 GET /api/trees 返回数据: {}
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -2450,6 +2450,36 @@
}
}
.bg-primary\/40 {
background-color: var(--primary);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-primary\/40 {
background-color: color-mix(in oklab, var(--primary) 40%, transparent);
}
}
.bg-primary\/60 {
background-color: var(--primary);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-primary\/60 {
background-color: color-mix(in oklab, var(--primary) 60%, transparent);
}
}
.bg-primary\/70 {
background-color: var(--primary);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-primary\/70 {
background-color: color-mix(in oklab, var(--primary) 70%, transparent);
}
}
.bg-purple-50 {
background-color: var(--color-purple-50);
}
@@ -3202,6 +3232,16 @@
}
}
.text-primary\/80 {
color: var(--primary);
}
@supports (color: color-mix(in lab, red, red)) {
.text-primary\/80 {
color: color-mix(in oklab, var(--primary) 80%, transparent);
}
}
.text-purple-700 {
color: var(--color-purple-700);
}
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
@@ -2534,6 +2534,36 @@
}
}
.bg-primary\/40 {
background-color: var(--primary);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-primary\/40 {
background-color: color-mix(in oklab, var(--primary) 40%, transparent);
}
}
.bg-primary\/60 {
background-color: var(--primary);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-primary\/60 {
background-color: color-mix(in oklab, var(--primary) 60%, transparent);
}
}
.bg-primary\/70 {
background-color: var(--primary);
}
@supports (color: color-mix(in lab, red, red)) {
.bg-primary\/70 {
background-color: color-mix(in oklab, var(--primary) 70%, transparent);
}
}
.bg-purple-50 {
background-color: var(--color-purple-50);
}
@@ -3286,6 +3316,16 @@
}
}
.text-primary\/80 {
color: var(--primary);
}
@supports (color: color-mix(in lab, red, red)) {
.text-primary\/80 {
color: color-mix(in oklab, var(--primary) 80%, transparent);
}
}
.text-purple-700 {
color: var(--color-purple-700);
}
File diff suppressed because one or more lines are too long
+2
View File
File diff suppressed because one or more lines are too long
+12 -18
View File
@@ -191,12 +191,6 @@ export default function DashboardPage() {
{session && currentTree?.ownerId === session.user?.id && (
<CollaboratorDialog />
)}
<Link href="/relationship">
<Button variant="outline" className="gap-2 bg-transparent">
<Calculator className="h-4 w-4" />
</Button>
</Link>
{(currentTree?.currentUserRole === "OWNER" || currentTree?.currentUserRole === "EDITOR") && (
<Link href="/members/new">
<Button className="gap-2 bg-primary text-primary-foreground hover:bg-primary/90">
@@ -249,11 +243,11 @@ export default function DashboardPage() {
</div>
<div className="flex flex-col space-y-4">
<div className="flex items-center justify-center gap-3 py-2">
<span className="text-5xl font-serif font-bold text-blue-600 dark:text-blue-400 tracking-wider">
<span className="text-5xl font-serif font-bold text-primary tracking-wider">
1
</span>
<span className="text-4xl font-bold text-muted-foreground">:</span>
<span className="text-5xl font-serif font-bold text-pink-600 dark:text-pink-400 tracking-wider">
<span className="text-5xl font-serif font-bold text-primary tracking-wider">
{stats.maleCount > 0 ? (stats.femaleCount / stats.maleCount).toFixed(2) : '0'}
</span>
</div>
@@ -264,32 +258,32 @@ export default function DashboardPage() {
{/* 双色进度条 */}
<div className="space-y-2">
<div className="flex items-center justify-between text-xs">
<span className="text-blue-600 dark:text-blue-400 font-medium flex items-center gap-1">
<span className="w-2 h-2 rounded-full bg-blue-500"></span>
<span className="text-primary/80 font-medium flex items-center gap-1">
<span className="w-2 h-2 rounded-full bg-primary/60"></span>
{stats.maleCount}
</span>
<span className="text-pink-600 dark:text-pink-400 font-medium flex items-center gap-1">
<span className="text-primary/80 font-medium flex items-center gap-1">
{stats.femaleCount}
<span className="w-2 h-2 rounded-full bg-pink-500"></span>
<span className="w-2 h-2 rounded-full bg-primary/60"></span>
</span>
</div>
<div className="h-3 bg-muted rounded-full overflow-hidden flex">
<div className="h-3 bg-background/60 border border-border/50 rounded-full overflow-hidden flex">
<div
className="h-full bg-gradient-to-r from-blue-600 to-blue-500 transition-all duration-500 flex items-center justify-center"
className="h-full bg-primary/70 transition-all duration-500 flex items-center justify-center"
style={{ width: `${stats.totalMembers > 0 ? (stats.maleCount / stats.totalMembers * 100) : 0}%` }}
>
{stats.totalMembers > 0 && stats.maleCount > 0 && (
<span className="text-[10px] text-white font-bold px-1">
<span className="text-[10px] text-primary-foreground font-bold px-1">
{Math.round(stats.maleCount / stats.totalMembers * 100)}%
</span>
)}
</div>
<div
className="h-full bg-gradient-to-r from-pink-500 to-pink-600 transition-all duration-500 flex items-center justify-center"
className="h-full bg-primary/40 transition-all duration-500 flex items-center justify-center"
style={{ width: `${stats.totalMembers > 0 ? (stats.femaleCount / stats.totalMembers * 100) : 0}%` }}
>
{stats.totalMembers > 0 && stats.femaleCount > 0 && (
<span className="text-[10px] text-white font-bold px-1">
<span className="text-[10px] text-primary-foreground font-bold px-1">
{Math.round(stats.femaleCount / stats.totalMembers * 100)}%
</span>
)}
@@ -298,7 +292,7 @@ export default function DashboardPage() {
</div>
</div>
</CardContent>
<div className="absolute bottom-0 left-0 right-0 h-1 bg-gradient-to-r from-blue-500 via-purple-500 to-pink-500 opacity-0 group-hover:opacity-100 transition-opacity" />
<div className="absolute bottom-0 left-0 right-0 h-1 bg-gradient-to-r from-primary/50 via-primary to-primary/50 opacity-0 group-hover:opacity-100 transition-opacity" />
</Card>
</div>