AssetRow
Production:src/components/AssetPrediction/source/AssetPredictionPage/AssetTable.tsx
Installation
import { AssetRow, AssetRowHeader } from "@/components/product/asset-row/asset-row";Overview
一個資產讀成一列:身份、spot、90 天走勢、市場現在的說法、幾個市場在跑。 Trending 卡是「我們在推的兩個資產」,這一列是「其餘的往下讀」。
整列可點,進該資產的 dashboard。可點的列才有 hover 底色(bg-white-2,跟 market-cds-row / order-book 同一個 mode-aware overlay)——沒有 dashboard 的列不給 hover,affordance 與 hover 必須一致。
收藏星是列裡唯一的獨立控制項。導航用的是覆蓋整列的絕對定位 anchor, 不是把整列包進連結裡:連結裡包按鈕是無效 HTML 也會 hydration 出錯。 星星靠 relative 浮在 anchor 之上,保有自己的點擊。
Interactive Demo
Asset
Spot
90D
What markets imply
Markets
移過去看 hover 底色(只有 Bitcoin 有 dashboard),點星星切換收藏, 點列的其他地方進 dashboard。
Static State Matrix
Hover · 有 dashboard(底色模擬)
Implementation Notes
原本這一列住在 AssetPredictionPage 的 @olab Table columns 陣列裡。 Table 不畫 row hover,而且 cell 內容是 render prop, 列的長相被拆散在設定物件裡、也沒有地方可以 preview—— 所以抽成組件。
欄寬是共用常數(ASSET_ROW_GRID_CLASSES), header 與列共用同一組 grid,標題才會落在自己的欄上。常數內含兩個 fold: md(960)以上是完整七欄;以下換 mobile 緊湊版——gap 減半、ticker 方塊與「What markets imply」欄整個拿掉(該句由 dashboard 承載)、 數值欄縮到 mobile 內容寬。低於各 fold 自己的 min-width 就水平捲動, 不壓縮欄位——市場預期區間被折成兩行會被誤讀成兩個數字。
缺口
- 每列都可點進 dashboard,但本 repo 只有 Bitcoin 那頁真的存在, 所以每列目前都連到同一頁。
- 排序不由列負責(沒有可點的欄頭)——排序在頁面的 Select 上。