refactor: overhaul UI for streamlined user experience

Redesign navigation, home overview, user portrait, and valuation pages
with improved functionality and responsive design.

Co-authored-by: null <4804959+fnvtk@users.noreply.github.com>
This commit is contained in:
v0
2025-07-18 13:47:12 +00:00
parent 440b310c6f
commit 2408d50cb0
316 changed files with 55785 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
export default function Loading() {
return null
}

135
app/user-profile/page.tsx Normal file
View File

@@ -0,0 +1,135 @@
"use client"
import { useState } from "react"
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"
import { Search, Filter, Download, Users, UserPlus, UserCheck, UserX } from "lucide-react"
import { UserProfileOverview } from "@/components/user-profile/user-profile-overview"
import { UserProfileSegments } from "@/components/user-profile/user-profile-segments"
import { UserProfileTags } from "@/components/user-profile/user-profile-tags"
import { UserProfileAnalytics } from "@/components/user-profile/user-profile-analytics"
export default function UserProfilePage() {
const [activeTab, setActiveTab] = useState("overview")
const [searchQuery, setSearchQuery] = useState("")
return (
<div className="container mx-auto py-6 space-y-6">
<div className="flex justify-between items-center">
<h1 className="text-3xl font-bold"></h1>
<div className="flex space-x-2">
<Button variant="outline">
<Download className="mr-2 h-4 w-4" />
</Button>
<Button>
<UserPlus className="mr-2 h-4 w-4" />
</Button>
</div>
</div>
<div className="grid grid-cols-1 md:grid-cols-4 gap-4">
<Card>
<CardHeader className="pb-2">
<CardTitle className="text-sm font-medium"></CardTitle>
</CardHeader>
<CardContent>
<div className="flex items-center">
<Users className="h-5 w-5 text-muted-foreground mr-2" />
<div className="text-2xl font-bold">24,521</div>
</div>
<p className="text-xs text-muted-foreground mt-1"> 8%</p>
</CardContent>
</Card>
<Card>
<CardHeader className="pb-2">
<CardTitle className="text-sm font-medium"></CardTitle>
</CardHeader>
<CardContent>
<div className="flex items-center">
<UserCheck className="h-5 w-5 text-green-500 mr-2" />
<div className="text-2xl font-bold">16,842</div>
</div>
<p className="text-xs text-muted-foreground mt-1"> 68.7%</p>
</CardContent>
</Card>
<Card>
<CardHeader className="pb-2">
<CardTitle className="text-sm font-medium"></CardTitle>
</CardHeader>
<CardContent>
<div className="flex items-center">
<UserPlus className="h-5 w-5 text-blue-500 mr-2" />
<div className="text-2xl font-bold">1,254</div>
</div>
<p className="text-xs text-muted-foreground mt-1"> 12%</p>
</CardContent>
</Card>
<Card>
<CardHeader className="pb-2">
<CardTitle className="text-sm font-medium"></CardTitle>
</CardHeader>
<CardContent>
<div className="flex items-center">
<UserX className="h-5 w-5 text-red-500 mr-2" />
<div className="text-2xl font-bold">342</div>
</div>
<p className="text-xs text-muted-foreground mt-1"> 1.4%</p>
</CardContent>
</Card>
</div>
<Card>
<CardHeader>
<CardTitle></CardTitle>
<CardDescription></CardDescription>
</CardHeader>
<CardContent>
<Tabs value={activeTab} onValueChange={setActiveTab} className="space-y-4">
<div className="flex justify-between items-center">
<TabsList>
<TabsTrigger value="overview"></TabsTrigger>
<TabsTrigger value="segments"></TabsTrigger>
<TabsTrigger value="tags"></TabsTrigger>
<TabsTrigger value="analytics"></TabsTrigger>
</TabsList>
<div className="flex space-x-2">
<div className="relative w-64">
<Search className="absolute left-2 top-2.5 h-4 w-4 text-muted-foreground" />
<Input
placeholder="搜索用户画像..."
className="pl-8"
value={searchQuery}
onChange={(e) => setSearchQuery(e.target.value)}
/>
</div>
<Button variant="outline" size="icon">
<Filter className="h-4 w-4" />
</Button>
</div>
</div>
<TabsContent value="overview" className="space-y-4">
<UserProfileOverview />
</TabsContent>
<TabsContent value="segments" className="space-y-4">
<UserProfileSegments />
</TabsContent>
<TabsContent value="tags" className="space-y-4">
<UserProfileTags />
</TabsContent>
<TabsContent value="analytics" className="space-y-4">
<UserProfileAnalytics />
</TabsContent>
</Tabs>
</CardContent>
</Card>
</div>
)
}