以下截图均来自生产级渲染,无滤镜。每张图即是 <Component /> 的最终输出。

OHLCV 蜡烛图 + MA5/MA10/MA20 均线 + 成交量柱。纯 SVG 渲染,零外部依赖,支持任意数量 K 线。每根蜡烛线带影线、实体、涨跌色,成交量柱位于下方同步对齐。

日内价格走势线 + 均价线 (SMA) + 成交量柱。适合嵌入分时面板、行情详情弹窗。价格线上涨段呈红色,下跌段呈绿色,均价线虚线辅助观察偏离度。

买卖盘口累积深度曲线。买方(红色)自右向左累积,卖方(绿色)自左向右累积,交叉点为当前最优价。支持自定义价格精度和 lot 大小。

可排序、列固定、列宽拖拽、虚拟滚动、行展开、列分组、键盘导航、多选、筛选、拖拽重排、条件着色。ColumnPicker 配合 localStorage 持久化列配置。

涨跌标签(涨/跌/平)+ 价格展示卡片(带 OHLC 四价)+ 股票卡片(代码/名称/价格/涨跌幅/成交量/市值)。金融级涨跌色,支持正负号、精度、箭头。
| 场景 | 传统方式 | Libra |
|---|---|---|
| K 线图 | 集成 echarts/highcharts,数据转换 + 均线计算 + 成交量柱 | React: <KLineChart /> · Go: templ · Rust: Leptos |
| 分时图 | d3/svg 手绘坐标轴、网格线、均价线、成交量 | <TimeShareChart data={ticks} /> |
| 深度图 | canvas 手动计算买卖盘口聚合、价差、深度堆叠 | <DepthChart data={levels} /> |
| 行情表格 | antd Table + 排序 + 固定列 + 格式 + 虚拟滚动 + 多选 + 筛选 + 拖拽 | <StockTable data={stocks} /> |
| 主题系统 | 自研 token 系统 + CSS 变量 + 暗/亮两套 | 10 套金融主题 · Go/Rust/TS 三语言共享 |
| 行点击弹窗 | useState + Modal + Tabs + 分时/K 线拼装 | onRowClick → Modal 一行接入 |
import { KLineChart } from '@libra-design/react' import '@libra-design/tokens/css' <KLineChart data={ohlcvData} width={800} height={400} />
import { TimeShareChart } from '@libra-design/react' <TimeShareChart data={ticks} width={600} height={300} />
| 代码 | 名称 | 最新价 | 涨跌幅 | 成交量 |
|---|
import { StockTable, Modal, Tabs, TimeShareChart, KLineChart } from '@libra-design/react' function App() { const [stock, setStock] = useState(null) return ( <> <StockTable data={data} onRowClick={(r) => setStock(r)} columnPicker navigable selectable /> <Modal open={!!stock} onClose={() => setStock(null)}> <TimeShareChart data={ts} /> </Modal> </> ) }
import { Badge, PriceDisplay, StockCard } from '@libra-design/react' <Badge variant="up">+2.13%</Badge> <PriceDisplay value={1689.50} change={35.20} changePercent={2.13} /> <StockCard name="贵州茅台" code="sh600519" price={1689.50} change={35.20} changePercent={2.13} />
按场景分类,覆盖金融交易终端所有常见 UI 需求。
Button、Card、Badge、Tag、Input、Select、Switch、Modal、Tooltip、Tabs、Table、Pagination、Drawer、Toast、Form、Calendar、DockPanel、Command、ThemeSwitcher、Watermark 等 42 个通用组件。
每套 = 17 个暗色端点 + 17 个亮色端点。点击即时切换,mix 滑块在暗亮之间平滑混合。