AssetDashboardTimeline
Production:src/components/AssetPrediction/source/AssetDashboardTimeline/AssetDashboardTimeline.tsx
Installation
import { AssetDashboardTimeline } from "@/components/product/asset-dashboard-timeline/asset-dashboard-timeline";Overview
資產 dashboard hero 圖表切換的另一半:走到今天的價格歷史, 接著是各結算日上市場給的價格。跟 K 線圖二選一,由 hero 的圖型切換鈕控制。
它就是 AssetPriceTimeline 的放大版(2026-08-18 user 裁決):size="hero",其他什麼都沒有。 在那之前這裡是同一張圖的第二份 652 行實作, 自己的資料模組、自己的比例(歷史佔 62% 而不是 40%)、自己的軸(右邊標結算日、y 軸在圖外)、 自己的記號。同一個資產的兩張圖對「一個記號是什麼意思」各說各話,本來就是要解決的問題; dashboard 要的是更大的同一張圖,不是另一張圖。
放大版比卡片版多的,就是尺寸真的買得起的那幾樣,而且它們現在住在共用組件的 hero size 裡, 所以 trending 卡不可能跟它們不一致:
- 圖例一排:Historical price / Market-implied center
- 歷史線下的漸層
- today 虛線頂端標 Now
- plot 高度 300(卡片是 140 / 190)
其餘一律與卡片版逐項相同:today 固定在寬度 40%、y 軸標籤在圖內的 grid line 上、 兩半的 x 軸都走月份、未來是虛線接空心圓、最後一點標收盤價。 跟著一起消失的是結算日軸標、62% 分割,以及歷史線上的實心已結算圓點—— 那個記號同日從兩張圖一起移除,因為歷史線畫的是資產自己的價格, 已結算的 market 不是價格。
歷史那半邊改成連續 hover: 滑到哪就讀哪一天的收盤,游標落點畫一顆實心圓,chip 寫「價格 · 日期」。 未來那半邊維持入口語法。
未來那半邊的記號是入口:hover 出 chip、點下去開 market preview。 hit area 是時間帶不是點 —— 每檔 market 擁有軸上一段,切在相鄰兩檔的中點,整條 band 全高可點。 歷史那半邊同理,整個左半是一塊 hit area:垂直方向任一高度都算數, 不需要瞄準線本身。
線、面積、記號一律 brand —— 同一個資產的價格沒有極性。格線 / Now / 軸走中性--color-data-*,這張圖永遠不會有綠紅。
x 軸是分段的:不論選哪個區間,歷史固定佔左 40%、未來分右邊 60%。 所以 1M 與 1Y 的未來都讀得到,但跨過 Now 的斜率不是速率,不可以那樣讀。
Interactive Demo
切換區間:歷史窗變寬 / 變窄,但 Now 的位置與右邊的結算日不動 —— 這就是分段 x 軸。
Static State Matrix
range = 1M(歷史 30 天)
range = 3M(歷史 90 天)
range = 6M(歷史 180 天)
range = 1Y(歷史 360 天)
market preview 開啟(Aug 29)—— 由 store 常駐驅動,非截圖模擬
Implementation Notes
來源是 ../opinion-labs-archive/prototypes/assets-forecasting/btc-dashboard-spike-v1.html的 timeline 模式(`#ct-btn` 切過去的那個畫面)。2026-07-28 稽核時發現 hero 的 timeline 模式被塞了 trending 卡的組件代打,圖例 / 軸的設計缺席,於是照 prototype 重做成獨立組件。2026-08-18 又收了回來:獨立組件解決的是「缺圖例、缺尺寸」, 代價卻是兩份會各自漂移的實作。現在共用組件有 hero size,兩個問題同時沒了——這一顆退回 15 行的 wrapper。
缺口
- 資產與歷史資料現在來自共用的
ASSETS表(Bitcoin 那一列),不再是本組件私有的 mock。好處是 hero 價格、表格列、sparkline 與這張圖是同一個數; 代價是 series 只有一年的日收盤,1Y 以上的窗沒有資料可切。 - 這一顆沒有自己的實作了,所以它也沒有自己的缺口: 記號、hover、軸、顏色的缺口一律在
AssetPriceTimeline那一頁。 - prototype 的 timeline 可以拖曳平移視窗、雙擊回到預設窗(
pointermove那段)。這一版沒有平移, 只有區間切換。 - preview 面板裡的 market 標題是可點的,但這一頁與 dashboard 都沒有傳
onOpenMarket,因為本 repo 沒有這些 mock market 的目的地。trending 卡那張也是同樣狀況, 兩邊一致;接真資料時兩處一起接。