用途:为 PolyFlup Svelte 仪表盘提供编码标准与 UI 指南,统一前后端数据展示与组件实现方式。
格式化与结构:使用 Biome,2 空格缩进,启用推荐规则,忽略 CSS 文件格式化。组件位于 ui/src/lib/components/,UI 组件位于其 ui/ 子目录,各组件从 index.ts 导出;stores 位于 ui/src/lib/stores/。命名上,组件用 PascalCase.svelte,工具用 camelCase.js,CSS 用 Tailwind 工具类。
Svelte 模式:使用响应式声明 $: winRate = ...;图表提示优先用 {#snippet}(Svelte 5 语法);初始化与定时器用 onMount,并在返回函数中清理定时器;全局状态用 store 模式。
组件库:shadcn-svelte 提供可定制样式的无障碍组件;图标用 Lucide Icons;图表用基于 D3 的 LayerChart(AreaChart、BarChart);缩放用 d3-scale。
主题:深/浅色切换并持久化存储,通过 CSS 变量(如 var(--color-chart-1))实现,使用 theme.init()、theme.toggle()、$theme,配合 Tailwind 的 dark:bg-slate-900 等类。
API 集成:端点为 http://${hostname}:3001/api/stats,每 5 秒轮询更新;连接失败显示错误横幅,首次加载显示加载指示。
数据可视化:权益曲线用 AreaChart 展示最近 50 笔累计盈亏;资产分解用 BarChart 按交易对展示盈亏。BTC 用 rgb(255, 153, 0),ETH 用 rgb(99, 127, 235),SOL 用 rgb(153, 69, 255),XRP 用 rgb(2, 140, 255);盈利绿色亏损红色。
表格与卡片:近期交易表格实时流式展示,列为 ID、Time (UTC)、Market、Side、Edge、Price、PnL、Status;状态徽章 LIVE(amber)、STOP LOSS(destructive)、TAKE PROFIT(emerald)、REVERSED(outline)、SETTLED(secondary);方向徽章含 emoji,📈 UP(default)、📉 DOWN(destructive)。统计卡片网格为移动端 1 列、平板 2 列、桌面 4 列,指标含总盈亏、胜率、止损数、止盈数,正数 emerald-600、负数 rose-600,标签大写带图标,箭头用 ArrowUpRight/ArrowDownRight。安装与运行命令文中未提供。