多语言金融设计系统
Go/Rust/TS 三语言,专为交易终端打造

一份令牌,三语言消费。64 个 React 金融组件 + Go templ + Rust Leptos 覆盖 K 线、深度图、订单簿、行情表格全场景。
不是又一个 UI 库 — 是 Go 和 Rust 原生的金融设计系统。

$ npm install @libra-design/react
Go Native Rust (crates.io) TypeScript 64 React 组件 22 金融专有 10 主题
124
组件总数
React + Go + Rust
3
语言绑定
TS · Go · Rust
10
金融主题
17 暗色 + 17 亮色端点
64
React 组件
22 金融专有
为什么选 Libra

不是又一个 UI 库,是金融终端的完整基础设施

🌐
多语言原生
Token 层用 Go 编写,自动生成 TypeScript 类型和 Rust 结构体。React/Go templ/Rust Leptos 三套组件共享同一套设计令牌,一次设计到处运行。
📊
金融专精
64 个组件中 22 个为金融交易专用:K 线图、分时图、深度图、订单簿、行情表格、涨跌标签、价格卡片…… 开箱即用。
🎨
主题即令牌
10 套金融术语主题(Terminal/Ticker/Vault/Margin…),每套 17+17 个颜色端点,Go/Rust/TS 三端一致。暗亮滑块实时混合。
组件实拍

真实渲染,不是原型图

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

KLineChart 截图

KLineChart · K 线图

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

SVGMA5/10/20成交量柱零依赖
TimeShareChart 截图

TimeShareChart · 分时图

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

价格线均价线成交量柱分时面板
DepthChart 截图

DepthChart · 深度图

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

买卖盘口累积深度价差标记
StockTable 截图

StockTable · 行情表格

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

排序列固定拖拽虚拟滚动ColumnPicker
Badge / PriceDisplay / StockCard 截图

Badge · PriceDisplay · StockCard

涨跌标签(涨/跌/平)+ 价格展示卡片(带 OHLC 四价)+ 股票卡片(代码/名称/价格/涨跌幅/成交量/市值)。金融级涨跌色,支持正负号、精度、箭头。

涨跌标签价格卡片股票卡片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 一行接入
特性一览

为交易终端而生

ConfigurableGrid
排序、列固定、宽拖拽、虚拟滚动、行展开、列分组、键盘导航、多选、筛选、拖拽、条件着色 — Excel 级表格
KLineChart
OHLCV 蜡烛图 + MA5/10/20/60 均线 + 成交量柱,纯 SVG,无外部依赖
TimeShareChart
日内价格走势 + 均价线 + 成交量柱,适合分时面板嵌入
DepthChart
买卖盘口深度聚合 + 价差标记,订单簿可视化
StockTable
开箱即用行情表,ColumnPicker 一键编辑列,localStorage 持久化
10 套主题
Terminal/Ticker/Vault/Margin/Ledger… 命名金融主题 + 亮暗 mix 滑块实时混合
零依赖侵入
纯 CSS 变量主题,不与 antd/arco 冲突,可渐进式嵌入现有系统
TypeScript
完整类型导出,泛型 ColumnDef<T>,所有 Props 接口可导入
代码即示

所见即所得

KLineChart · K 线图

import { KLineChart } from '@libra-design/react'
import '@libra-design/tokens/css'

<KLineChart
  data={ohlcvData}
  width={800}
  height={400}
/>

TimeShareChart · 分时图

9:3010:3011:3013:3014:3015:00
均价 价格
import { TimeShareChart } from '@libra-design/react'

<TimeShareChart
  data={ticks}
  width={600}
  height={300}
/>

StockTable · 行情表格 + 行点击弹窗

代码名称最新价涨跌幅成交量
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>
    </>
  )
}

Badge · PriceDisplay · StockCard

+2.13% -1.34% 0.00% Connected Delayed Failed
贵州茅台
1,689.50
+2.13%
五粮液
142.80
-1.34%
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} />
64 个组件

完整组件清单

按场景分类,覆盖金融交易终端所有常见 UI 需求。

交易终端 (6)

ConfigurableGrid
通用可配置表格 — 排序/固定/宽拖拽/虚拟滚动/行展开/列分组/键盘导航/多选/筛选/拖拽/条件着色
Phase 2-4
StockTable
开箱即用行情表,ColumnPicker 列编辑,localStorage 持久化
ColumnPicker
列编辑器弹层 — DnD 拖拽、行内编辑、3 套预设、导出 JSON
MarketTable
行情表格 — 排序/自定义列/对齐
MarketBoard
市场概览板 — 三档行情展示
Screener
股票筛选器

金融图表 (4)

KLineChart
K 线图 — OHLCV + MA5/10/20/60 均线
TimeShareChart
分时图 — 日内价格走势 + 均价线 + 成交量
DepthChart
深度图 — 买卖盘口聚合展示
MiniChart
内嵌迷你走势图

金融展示 (8)

PriceDisplay
价格展示 — 涨跌额/涨跌幅/箭头
ChangeBadge
涨跌标签
StockCard
股票卡片 — 代码/名称/价格/涨跌/成交量
Statistic
数值统计 — 前缀/后缀/精度/趋势
OrderBook
订单簿 — 买卖挂单
Heatmap
热力图
Watchlist
自选股监控列表
NewsFeed
快讯流

金融深度 (4)

OrderForm
下单面板 — 价格/数量/方向
PositionCard
持仓卡片
LiveTicker
实时行情滚动
HeatmapSector
板块热力图

基础 (12) · 导航 (5) · 反馈 (5) · 表单 (2) · 布局 (4) · 数据展示 (3) · 覆盖层 (10) · 日历 & 交互 (2)

Button、Card、Badge、Tag、Input、Select、Switch、Modal、Tooltip、Tabs、Table、Pagination、Drawer、Toast、Form、Calendar、DockPanel、Command、ThemeSwitcher、Watermark 等 42 个通用组件。

Button Card Badge Tag Input Textarea Checkbox RadioGroup Slider Switch Select Table Divider Space Flex Modal Tooltip Alert Progress Skeleton Tabs Accordion Breadcrumb Pagination DropdownMenu Popover Drawer Collapsible Toggle Segmented DatePicker Command ThemeSwitcher Watermark Toast Form Label Avatar Empty DataCard Steps Timeline Calendar DockPanel
主题预设

10 套金融术语主题

每套 = 17 个暗色端点 + 17 个亮色端点。点击即时切换,mix 滑块在暗亮之间平滑混合。

常见问题

FAQ

Libra Design 与 antd / arco 有什么区别?
Libra 专注金融交易终端场景,核心差异在于 (1) 22 个金融专有组件(K 线、分时、深度、行情表格等),(2) 三语言共享(React + Go templ + Rust Leptos),(3) 10 套金融术语主题系统。antd/arco 更适合通用后台,Libra 填补的是它们没有的赛道。
Go 和 Rust 版本的成熟度如何?
Token 层(颜色、间距、字体)Go 版本已发布 v0.2.0(go-tokens),通过 templ 提供 CSS 变量注入。Rust 版本(libra-tokens)已完成 crate 发布。组件层 Go templ 版本和 Rust Leptos 版本仍在开发中,React 版本最成熟(64 组件)。
能否与现有系统集成?
可以。Libra 使用纯 CSS 变量主题系统,不会与 antd/arco 等库冲突。你可以只引入所需的金融组件(如 KLineChart、StockTable),渐进式地嵌入现有系统。非侵入设计是核心原则之一。
K 线图和分时图支持多少数据点?
图表基于纯 SVG 渲染,没有数据上限。实际性能取决于 DOM 节点数——测试显示 500 根 K 线以内流畅运行。如果数据量极大,建议结合虚拟 DOM 或仅渲染可见范围。
是否支持主题定制?
支持。你可以通过 CSS 变量覆盖任意端点,也可以基于现有 10 套主题修改后提交 PR。Go 版本的 token 在 go-tokens 仓库中,顶层修改后通过代码生成同步到 TS 和 Rust。
开源协议和贡献方式?
MIT 协议。GitHub 仓库接受 Issue 和 PR,欢迎任何形式的贡献。多语言之间 token 对齐通过 codegen 保证,修改 Go token 后重新生成即可同步到所有语言。

开始构建

选择你的语言

TS npm install @libra-design/react
Go go get github.com/goodie1972/go-tokens
Rust cargo add libra-tokens