pick-ui-library

pick-ui-library

熱門

從精選的推薦清單中,為指定的前端任務挑選合適的函式庫——涵蓋數字、一次性密碼輸入框、圖表、指令選單、虛擬化、拖放、提示訊息、狀態管理、樣式處理等。僅在明確呼叫時執行,不會自動觸發。

2萬星標
1086分支
更新於 2026/7/23
SKILL.md
唯讀
名稱
pick-ui-library
描述

從精選的推薦清單中,為指定的前端任務挑選合適的函式庫——涵蓋數字、一次性密碼輸入框、圖表、指令選單、虛擬化、拖放、提示訊息、狀態管理、樣式處理等。僅在明確呼叫時執行,不會自動觸發。

挑選合適的函式庫

這是一個查詢技能。當被呼叫時(例如「我需要提示訊息」、「拖放該用什麼?」),將任務與下方精選清單比對,並推薦對應的函式庫。這些是經過品味篩選的推薦——除非使用者要求其他選項,或任務確實不在清單涵蓋範圍內,否則請勿推薦清單以外的替代方案。

使用方式

  1. 辨識任務,而非使用者提到的函式庫名稱。例如「我需要顯示下拉選單」屬於 UI 基礎元件任務(base-ui),即使使用者問的是其他東西。
  2. 檢查已安裝的套件。 先查看 package.json。如果專案已經使用了清單中的某個函式庫,就沿用。如果使用了競爭對手(例如 react-window 而非 Virtuoso),可以標註推薦,但未經要求不要隨意更換相依套件。
  3. 推薦一個函式庫,用一句話說明它的用途,並在請求包含安裝/整合時執行。當清單有明確答案時,不要提供多個選項。
  4. 如果任務不在清單涵蓋範圍內,明確告知,並根據自身知識推薦——但需清楚說明已離開精選清單。

清單

UI 元件與基礎元件

任務 函式庫
無樣式、可存取的 UI 元件(對話框、彈出視窗、選單、選擇器等) base-ui
指令選單(⌘K 面板) cmdk
提示訊息 / 通知 Sonner
一次性密碼 / 驗證碼輸入框 input-otp
可自訂的 GUI / 控制面板 Levadialkit 是替代方案

動畫與視覺

任務 函式庫
通用動畫(彈簧、佈局動畫、進出場) motion (Framer Motion)
數字動畫(計數器、價格、統計數字) NumberFlow
動態文字元件 torph
3D 地球 Cobe
動態 OG 圖片(HTML/CSS → SVG/PNG) Satori
語法高亮 shiki

當你需要彈簧、佈局動畫、進出場動畫或手勢驅動的值時,使用 motion。單純的 hover 或淡入淡出不需要——純 CSS 轉場才是正確的工具。

圖表

任務 函式庫
即時 / 串流圖表 Liveline
一般圖表(靜態或互動儀表板) recharts

區分方式:如果資料點即時到達且圖表隨時間滾動,使用 Liveline。其他情況皆使用 recharts。

互動與效能

任務 函式庫
拖放 dnd kit
虛擬化(長列表、大型表格) Virtuoso

狀態與樣式

任務 函式庫
狀態管理 zustand
條件式組合 className 字串 clsx
型別安全、基於變體的 Tailwind 樣式 cva
主題切換 / 深色模式(載入時無閃爍) next-themes

樣式區分:clsx 用於臨時的條件類別;cva 用於元件有實際變體(尺寸、意圖、狀態)且需要型別 API 的情況。兩者可以組合使用——cva 內部使用 clsx 風格的輸入。

常見誤用情況

  • 手刻提示訊息或使用 modal 函式庫實作 → Sonner 正是為此而生。
  • 使用 <div> 實作的下拉選單/對話框,手動處理焦點 → base-ui 能處理無障礙、焦點鎖定和關閉行為。
  • 透過重新渲染文字來製作數字動畫 → NumberFlow 能正確處理數字轉場。
  • 直接渲染超過 1000 行的列表 → 在考慮分頁 hack 之前,先使用 Virtuoso。
  • 使用每個元件一個 useState 的 props 網路來管理共享狀態 → zustand。
  • 三層深度的樣板字面量 className 三元運算式 → clsx(如果是變體形式則用 cva)。