HowToRead
Production:src/components/AssetPrediction/source/HowToRead/HowToRead.tsx
Installation
import { HowToRead } from "@/components/product/how-to-read/how-to-read";Overview
分析模組上的「How to read」入口。解釋這張圖到底在畫什麼、資料哪裡來、記號代表什麼 —— 但不為此永久佔用版面高度。
泡泡本體就是 @olab 的 Tooltip,沒有改。原型手刻 ::after 泡泡是因為 standalone HTML 沒有組件庫可用, 那不是要沿用的設計決策。我們自己的只有 trigger,兩種形狀:
icon—— Tooltip 自己的 trigger,裡面放 16px 問號。 預設。不佔版面。pill—— @olabButton(skin=outline、size=sm)當 trigger,透過 Tooltip 的asChild接上。 Button 本身就是那顆 pill:h-7 / px-3 / rounded-full, 不需要手刻。給密度高到裸問號會被忽略的模組用。
Tooltip 同時支援 hover 與點擊開合(Ark UI 行為),沒有指標裝置也讀得到。
Interactive Demo
icon — 卡頭標題旁(實際用法)
Volume profile
pill — 帶標籤
Prediction-market consensus
pill — 自訂標籤
上面三個都是真的可以 hover / 點開的 —— 泡泡的 hover、pressed、開合行為全部由 @olab Tooltip 提供, 本組件不覆寫任何 interaction state。
Static State Matrix
variant — icon / pill / pill 自訂標籤(皆為真組件)
這裡不模擬 hover / pressed。pill 的 trigger 是 @olab Button(skin=outline), 它的 rest / hover / pressed / selected / disabled 完整矩陣在 /live/button 已經有了 —— 在這裡再畫一份手繪版, 只會多出一份會跟 Button 漂開的假圖。icon 版則沒有自己的 state: 它是 Tooltip 原生 trigger 裡的一個 16px 字符,rest 與 hover 同為 text-primary,回饋靠游標形狀與泡泡出現。
baseline 對齊 — icon 必須對齊標題基線而不是置中
短標題
會換行的長模組標題名稱
窄容器 — pill 不縮,換行到下一列
Volume profile
Implementation Notes
來源:../opinion-labs-archive/prototypes/assets-forecasting/btc-dashboard-spike-v1.html 的 .howto-link / .howto-pill。
刻意偏離原型 —— 一律以 production 組件為準
- 泡泡外觀:原型是
bg-primary+border-secondary、無箭頭; 這裡用 @olab Tooltip 的原生外觀(bg-primary+ brand 描邊)。 再手刻一份等於把 drift 帶進來。 - pill 的邊框是白色不是灰色。原型
.howto-pill用border-secondary+text-tertiary; Button 的 outline skin 用border-white(role token,dark 解析成白)。 這是用真 Button 必然繼承的樣子 —— 想要灰框就得改 Button 本體或加 skin, 不在這裡用 className 蓋掉。 - pill 字級:原型 12px,Button sm 是
text-bodyM(14px)。同上,照 Button。 showArrow=false—— 這是唯一給 Tooltip 的參數。 箭頭指向 16px 的問號會蓋住 icon 本身。
已知缺口
- Tooltip 的
max-w-xs(320px)剛好等於原型 pill 版的寬度, 但 icon 版原型是 300px。差 20px,未特別處理。