"use client" import { useState } from "react" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Badge } from "@/components/ui/badge" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { PlusCircle, Search, Users, BarChart2, Edit, Trash2, ChevronDown, ChevronRight } from "lucide-react" import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible" interface UserSegment { id: string name: string description: string userCount: number criteria: string[] createdAt: Date updatedAt: Date status: "active" | "draft" } export function UserProfileSegments() { const [searchQuery, setSearchQuery] = useState("") const [openSections, setOpenSections] = useState({ segmentList: true, }) const toggleSection = (section) => { setOpenSections((prev) => ({ ...prev, [section]: !prev[section], })) } // 模拟数据 const segments: UserSegment[] = [ { id: "1", name: "高价值用户", description: "消费金额高且频次高的用户群体", userCount: 2450, criteria: ["消费金额>5000", "消费频次>10次/月", "活跃度>80%"], createdAt: new Date(2023, 5, 15), updatedAt: new Date(2023, 6, 20), status: "active", }, { id: "2", name: "新注册用户", description: "最近30天内注册的新用户", userCount: 1254, criteria: ["注册时间<30天"], createdAt: new Date(2023, 4, 10), updatedAt: new Date(2023, 6, 18), status: "active", }, { id: "3", name: "流失风险用户", description: "最近活跃度下降的用户", userCount: 876, criteria: ["最近登录>15天", "活跃度下降>50%"], createdAt: new Date(2023, 3, 5), updatedAt: new Date(2023, 5, 25), status: "active", }, { id: "4", name: "企业客户", description: "企业类型的客户群体", userCount: 542, criteria: ["用户类型=企业", "员工数>50人"], createdAt: new Date(2023, 2, 20), updatedAt: new Date(2023, 6, 19), status: "active", }, { id: "5", name: "潜在高转化用户", description: "浏览行为活跃但未转化的用户", userCount: 1320, criteria: ["浏览次数>20次/周", "未购买"], createdAt: new Date(2023, 1, 15), updatedAt: new Date(2023, 4, 10), status: "draft", }, ] // 过滤分群 const filteredSegments = segments.filter( (segment) => segment.name.toLowerCase().includes(searchQuery.toLowerCase()) || segment.description.toLowerCase().includes(searchQuery.toLowerCase()), ) const formatDate = (date: Date) => { return date.toLocaleDateString("zh-CN", { year: "numeric", month: "2-digit", day: "2-digit", }) } return (