Asset Dashboard
Production:src/components/AssetPrediction/source/AssetDashboardPage/AssetDashboardPage.tsx
Installation
import { AssetDashboardPage } from "@/components/product/asset-dashboard-page/asset-dashboard-page";Page
Implementation Notes
重組自 ../opinion-labs-archive/prototypes/assets-forecasting/btc-dashboard-spike-v1.html。 原型是 standalone HTML 全手刻;這一版凡是 production 有的一律換成真組件。
用了哪些真組件
| 頁面上的東西 | 組件 |
|---|---|
| Hero / rail 卡殼 | Card(@olab) |
| 所有時間切換(1M/3M/6M/1Y、1m…1D、結算日、24H/7D/30D、expiry) | Button(@olab)—— DurationSwitch 模式,一排 Button 帶 active,不是 Tabs |
| Bitcoin markets 四張卡 | MarketCard(本 repo,type=single = binary) |
| 全市場表格 | 刻意不做(2026-07-28 裁決)—— 改為 View all (N) markets 連結,TextLink(@olab) |
| 三張分析卡 | AnalysisCard + MetricReadout + HowToRead |
| 機率分佈曲線 | DistributionChart |
| Volume profile 柱列 | VolumeProfileChart |
| 右欄事件軌 | EventTimeline |
| 收藏 | WatchlistButton |
| 文字 / 版面 | Typography + Stack / Inline(@olab) |
production 有、但這個 repo 拿不到的
Header/Footer/HomeTopSift—— 頁面 chrome。chart.tsx(lightweight-charts)/AdvancedChart/ ECharts —— K 線圖本體。TopicCardView→MarketCard代打。LabelAccordion—— 全市場表格改成常開,不摺疊。ChartSkeleton/ChartLoadingAnimation—— 沒有 loading 態展示。
N8 水平價格軸:已建,但刻意不是組件
put wall / zero gamma / call wall / spot 與 expected move 帶讀在同一條價格軸上。 2026-07-28 user 裁決走頁內一次性 SVG: 它只出現一次、沒有第二個消費者,正是 CLAUDE.md「≥2 個頁面」那條門檻要濾掉的情況, 所以不佔 Allowed List 名額、也不另開 preview 頁。軸下方仍保留 MetricReadout —— 軸講的是相對位置,精確數字還是得寫出來,「大概在那邊」不能拿來交易。
全中性配色:level 是用未平倉量與 IV 曲面推出來的估計,wall 不是好事、floor 也不是壞事, 所以沒有任何一處吃 trend 或 outcome 色。spot 是唯一的白色記號, 因為它是這排估計值裡唯一被量到的事實。 標籤避讓走貪婪逐列打包(估字寬偏保守,寧可太早分開)—— 目前三個 level 因為軸的 domain 就是由它們自己撐出來的,永遠不會撞; 真正會用到的是 zero gamma 貼在 call wall 上那種情況。
仍是佔位的模組(頁面上有標)
- N10 K 線圖與它的疊層 —— VWAP、settlement 標記。Expected move 未來扇形已於 2026-08-17 從規格移除(user 裁決「此路不通」);EM 要不要出現在這張圖上、以什麼形式出現,是規格裡優先級最高的 未裁決項。production 根本沒有 candlestick(逐檔查 OpinionLabs/frontend@main:
candlestick全 repo 0 筆,TopicChart建的是 echarts 平滑折線),所以沒有可對齊的對象。2026-07-28 裁決改以規格交付 dev,本 repo 不實作 —— 見docs/asset-forecasting/n10-candle-chart-spec.md。
⚠ 發現一個 @olab 既有 bug(不是本頁造成)
Select 的預設 trigger 會在 Ark UI 自己的 <button> 裡再渲染一顆 olab Button,形成巢狀 button,React 會報 hydration error。 既有的 /live/select 頁面有一模一樣的問題, 所以是 Select 本體的事(packages/components/src/components/Select/index.tsx:76), 不在這裡用 workaround 蓋掉。