"use client" import * as React from "react" import { useState, useMemo } from "react" import { motion, AnimatePresence } from "motion/react" import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Progress } from "@/components/ui/progress" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs" import { Coins, Gift, Inbox, Layers, Shield, Info, ArrowRight, Terminal, Activity, User, ExternalLink, Code2, Copy, Check } from "lucide-react" import { Area, AreaChart, XAxis, ResponsiveContainer, Tooltip as RechartsTooltip } from "recharts" import { toast } from "sonner" // ========================================== // 1. 卡片类组件 (Cards) // ========================================== function FeatureCard({ title, description, linkText, href }: { title: string description: string linkText: string href?: string }) { return ( {title} {description} ) } function ReceiveBanner() { const [isVisible, setIsVisible] = useState(true) return ( {isVisible && (

获得积分收益

通过无代码选项快速开始探索或使用与我们的 API 集成的可自定义积分服务。集成方式多样,满足各种场景需求。

)}
) } // ========================================== // 2. 仪表盘组件 (Dashboards) // ========================================== const MOCK_CHART_DATA = [ { date: "06-01", total: 12000, income: 400, expense: 200 }, { date: "06-02", total: 13500, income: 1500, expense: 300 }, { date: "06-03", total: 12800, income: 300, expense: 1000 }, { date: "06-04", total: 15000, income: 2500, expense: 300 }, { date: "06-05", total: 14200, income: 200, expense: 1000 }, { date: "06-06", total: 16800, income: 3000, expense: 400 }, { date: "06-07", total: 17500, income: 1200, expense: 500 }, ] function MockTrendChart() { return ( 积分变动趋势 (静态模拟)
) } function MockIncomeStats() { const stats = [ { date: "06-07", amount: 1200, percentage: 80 }, { date: "06-06", amount: 3000, percentage: 100 }, { date: "06-05", amount: 200, percentage: 15 }, { date: "06-04", amount: 2500, percentage: 90 }, { date: "06-03", amount: 300, percentage: 20 }, { date: "06-02", amount: 1500, percentage: 65 }, { date: "06-01", amount: 400, percentage: 25 }, ] return (
7天收入统计 (静态模拟)
LDC 9,100.00
{stats.map((s) => (
{s.date} +{s.amount.toFixed(2)}
))}
) } function MockTopCustomers() { const customers = [ { rank: 1, name: "dev_user", count: 42, amount: 28500 }, { rank: 2, name: "linux_do_fan", count: 28, amount: 19800 }, { rank: 3, name: "gorm_expert", count: 19, amount: 12400 }, { rank: 4, name: "nextjs_coder", count: 12, amount: 8500 }, { rank: 5, name: "redis_helper", count: 8, amount: 5000 }, ] return ( Top 客户统计 (静态模拟)
{customers.map((c) => (
#{c.rank} {c.name}
{c.amount.toLocaleString()} LDC
{c.count}单
))}
) } // ========================================== // 3. 数据表格组件 (Tables) // ========================================== interface MockOrder { id: string order_name: string amount: number type: 'payment' | 'transfer' | 'community' | 'red_envelope' status: 'success' | 'pending' | 'expired' | 'disputing' | 'refund' order_no: string created_at: string } const MOCK_ORDERS: MockOrder[] = [ { id: "1", order_name: "API 接口充值积分", amount: 1000, type: "payment", status: "success", order_no: "ORD202606070001", created_at: "2026-06-07 14:20:15" }, { id: "2", order_name: "退款原路退回", amount: 500, type: "payment", status: "refund", order_no: "ORD202606070002", created_at: "2026-06-07 12:05:44" }, { id: "3", order_name: "拼手气红包分配", amount: 200, type: "red_envelope", status: "success", order_no: "ORD202606060012", created_at: "2026-06-06 18:30:00" }, { id: "4", order_name: "在线流转纠纷处理", amount: 1500, type: "transfer", status: "disputing", order_no: "ORD202606050025", created_at: "2026-06-05 09:12:10" }, { id: "5", order_name: "社区绑定自动转入", amount: 350, type: "community", status: "pending", order_no: "ORD202606040081", created_at: "2026-06-04 23:45:19" }, { id: "6", order_name: "红包超时未领过期退回", amount: 100, type: "red_envelope", status: "expired", order_no: "ORD202606030009", created_at: "2026-06-03 15:00:00" }, ] function MockTransactionTable() { const getStatusBadge = (status: MockOrder["status"]) => { const map = { success: { text: "交易成功", class: "bg-green-500/10 text-green-600 border-green-500/20" }, pending: { text: "等待付款", class: "bg-amber-500/10 text-amber-600 border-amber-500/20" }, expired: { text: "订单过期", class: "bg-slate-500/10 text-slate-500 border-slate-500/20" }, disputing: { text: "争议中", class: "bg-rose-500/10 text-rose-600 border-rose-500/20" }, refund: { text: "交易退款", class: "bg-indigo-500/10 text-indigo-600 border-indigo-500/20" }, } return ( {map[status].text} ) } const getTypeBadge = (type: MockOrder["type"]) => { const map = { payment: { text: "消耗", class: "bg-orange-500/10 text-orange-600" }, transfer: { text: "流转", class: "bg-blue-500/10 text-blue-600" }, community: { text: "社区", class: "bg-purple-500/10 text-purple-600" }, red_envelope: { text: "红包", class: "bg-red-500/10 text-red-600" }, } return ( {map[type].text} ) } return (
{MOCK_ORDERS.map((order) => ( ))}
名称 类型 额度 状态 流水编号 交易时间 操作
{order.order_name} {getTypeBadge(order.type)} {order.amount.toFixed(2)} {getStatusBadge(order.status)} {order.order_no} {order.created_at}
) } // ========================================== // 4. Tab 导航组件 (Tabs) // ========================================== function MockTradeTabs() { const [activeTab, setActiveTab] = useState("receive") const tabContent = { receive: { title: "积分收益 (Receive)", description: "本模块汇集用户所有的进账记录。可通过 API、活动赚取等形式增加积分值。", icon: Coins, color: "text-emerald-500", bgColor: "bg-emerald-500/10", }, payment: { title: "积分消耗 (Payment)", description: "本模块汇总用户的出账流水。支持兑换、系统扣减与在线付款场景的费用记账。", icon: Gift, color: "text-orange-500", bgColor: "bg-orange-500/10", }, community: { title: "社区划转 (Community)", description: "对接 Discourse 外部论坛同步时自动调度的积分余额转换事件。", icon: Shield, color: "text-purple-500", bgColor: "bg-purple-500/10", }, online: { title: "在线流转 (Online)", description: "指代用户通过付款链接或集市网关主动进行的收单支付流转活动记录。", icon: Activity, color: "text-blue-500", bgColor: "bg-blue-500/10", }, all: { title: "所有活动 (All Activities)", description: "汇总上述所有分类的完整历史日志,支持按分类检索和导出报表。", icon: Layers, color: "text-slate-500", bgColor: "bg-slate-500/10", }, } const activeInfo = tabContent[activeTab as keyof typeof tabContent] || tabContent.receive return ( 积分收益 积分消耗 社区划转 在线流转 所有活动

{activeInfo.title}

{activeInfo.description}

) } // ========================================== // 5. 代码片段复制辅助组件 // ========================================== function CodeShowcase({ code, title }: { code: string; title: string }) { const [copied, setCopied] = useState(false) const handleCopy = async () => { try { await navigator.clipboard.writeText(code) setCopied(true) toast.success("代码片段已复制到剪贴板") setTimeout(() => setCopied(false), 2000) } catch { toast.error("复制失败") } } return (
{title}
        {code}
      
) } // ========================================== // 主组件 (Main Showcase) // ========================================== export default function ComponentLibraryPage() { const [activeCategory, setActiveCategory] = useState("cards") const categories = [ { id: "cards", title: "卡片组件 (Cards)", desc: "页面核心功能聚合引导卡片", icon: User }, { id: "dashboards", title: "大盘统计 (Dashboards)", desc: "交易波动与客户数据展示图表", icon: Activity }, { id: "tables", title: "数据表格 (Tables)", desc: "支持多类型与状态的明细流水表", icon: Layers }, { id: "tabs", title: "多标签页 (Tabs)", desc: "分类管理多页签内容切换", icon: Info }, ] const codeSnippets = useMemo(() => { return { cards: `// FeatureCard: 三栏网格功能展示卡片 interface FeatureCardProps { title: string; description: string; linkText: string; href?: string; } export function FeatureCard({ title, description, linkText, href }: FeatureCardProps) { return ( {title} {description} ); }`, dashboards: `// 7天收入统计: 进度条数据统计卡片 interface IncomeStatItem { date: string; amount: number; percentage: number; } export function IncomeStatsCard({ stats }: { stats: IncomeStatItem[] }) { return ( 7天收入统计
{stats.map(s => (
{s.date} +{s.amount.toFixed(2)}
))}
); }`, tables: `// 活动记录表格: 数据明细展现 interface MockOrder { id: string; order_name: string; amount: number; type: 'payment' | 'transfer' | 'community' | 'red_envelope'; status: 'success' | 'pending' | 'expired' | 'disputing' | 'refund'; order_no: string; created_at: string; } export function TransactionTable({ orders }: { orders: MockOrder[] }) { return ( {orders.map(order => ( ))}
名称 额度 状态
{order.order_name} {order.amount.toFixed(2)} {order.status}
); }`, tabs: `// Tab 触发器及多模块切换导航 import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs"; export function MockTradeTabs() { return ( 积分收益 积分消耗 积分收益模块内容... 积分消耗模块内容... ); }`, } }, []) return (

静态组件库 (Component Library)

展示项目重构中提取的有价值静态组件资源,提供可视化的静态演示与代码片段,便于平台后续的二次开发集成。

{/* 左侧导航 */}
{categories.map((cat) => ( ))}
{/* 右侧主展示区 */}
{activeCategory === "cards" && (

卡片组件展示

组件代码片段 (FeatureCard)

)} {activeCategory === "dashboards" && (

大盘数据组件展示

组件代码片段 (IncomeStats)

)} {activeCategory === "tables" && (

活动明细表格展示

组件代码片段 (TransactionTable)

)} {activeCategory === "tabs" && (

多标签导航展示

组件代码片段 (MockTradeTabs)

)}
) }