跳至主要内容

元件總覽

內容來源

本頁內容源自 appfuse-web/lib/components/README.md,如有差異以 README 為準。

AppFuse Web 提供一套完整的企業級 React 元件庫,所有元件皆可透過 @appfuse/appfuse-web 匯入。

匯入路徑

// UI 元件(按鈕、表格、下拉選單等)
import { Button, DataTable, Dropdown } from '@appfuse/appfuse-web/components'

// 表單元件(Input、Select、Checkbox 等)
import { Input, Select, Checkbox } from '@appfuse/appfuse-web/form'

// 表單驗證
import { schema, validatorResolver } from '@appfuse/appfuse-web/form/validator'

// 訊息系統
import { prompt, MessageToast, MessageDialog } from '@appfuse/appfuse-web/messaging'

// Hooks
import { useTimeout, useInfiniteList } from '@appfuse/appfuse-web/hooks'

// 工具函數
import { cn, time, logger, i18n } from '@appfuse/appfuse-web/utils'

元件分類

表單元件

匯入路徑:@appfuse/appfuse-web/form

用於資料輸入和表單處理,整合 react-hook-form。

文字輸入

元件說明Storybook
Input單行文字輸入,支援 text / number / date / email / password查看
Textarea多行文字輸入,自動調整高度查看
TagInput標籤輸入,多值輸入、可創建新標籤查看
RichTextEditor富文本編輯器,基於 Slate.js查看

選擇輸入

元件說明Storybook
Select下拉選單,支援單選/多選、搜尋、創建查看
Checkbox / CheckboxGroup核取方塊,支援布林/多選模式查看
Radio / RadioGroup單選按鈕查看
Switch開關切換查看

檔案輸入

元件說明Storybook
FileInput檔案上傳,支援拖放、多檔、驗證查看
MediaInput媒體上傳,支援圖片/影片預覽、裁切查看

表單驗證

匯入路徑:@appfuse/appfuse-web/form/validator

匯出說明
schema輕量驗證 Schema 建構器(~5KB,替代 Zod)
validatorResolverreact-hook-form resolver
mapViolationsToFormErrors後端違例轉換為表單錯誤
createServerErrorHandler伺服器錯誤處理器

詳細用法請參閱 表單元件指南

動作元件

匯入路徑:@appfuse/appfuse-web/components

元件說明Storybook
Button按鈕,支援 variant / color / density / loading / confirmation查看

資料顯示

匯入路徑:@appfuse/appfuse-web/components

元件說明Storybook
DataTable資料表格,傳統分頁模式查看
VirtualTable虛擬化表格,無限捲動模式查看
Icon圖示,Lucide React 包裝查看
MediaViewer媒體查看器,圖片/影片檢視查看
AuthImage認證圖片,帶 Token 的圖片載入查看

圖表元件

匯入路徑:@appfuse/appfuse-web/components

基於 @nivo 的圖表元件,支援主題配色。

元件說明Storybook
LineChart折線圖查看
AreaChart面積圖查看
BarChart長條圖查看
PieChart圓餅圖查看
RadarChart雷達圖查看
ScatterPlot散佈圖查看
FunnelChart漏斗圖查看
ParallelCoordinates平行座標圖查看

版面配置

匯入路徑:@appfuse/appfuse-web/components

元件說明Storybook
CollapsibleCard可折疊卡片查看

導航元件

匯入路徑:@appfuse/appfuse-web/components

元件說明Storybook
Tabs索引標籤,支援鍵盤導航查看

覆蓋層元件

匯入路徑:@appfuse/appfuse-web/components

元件說明Storybook
Dropdown下拉選單,Compound Component 模式查看

回饋元件

匯入路徑:@appfuse/appfuse-web/components(元件)/ @appfuse/appfuse-web/messaging(服務)

元件說明Storybook
Toast快顯通知(低階元件)查看
Dialog對話框(低階元件)查看
MessageToast全域通知容器(搭配 prompt API)
MessageDialog全域對話框容器(搭配 prompt API)

詳細用法請參閱 訊息系統指南

Hooks

匯入路徑:@appfuse/appfuse-web/hooks

Hook說明
useTimeoutsetTimeout 包裝,自動清理
useIntervalsetInterval 包裝,自動清理
useFloatingPortal浮動定位(Dropdown / Tooltip 用)
useInfiniteListTanStack Query 無限捲動

工具函數

匯入路徑:@appfuse/appfuse-web/utils

模組說明
createHttpClient / HttpClientProvider / useHttpClientHTTP 客戶端(axios 封裝)
i18n / useTranslation / I18nProvider國際化
time / toDateString日期時間處理(date-fns 封裝)
logger日誌系統(loglevel 封裝)
cnCSS 類別合併(clsx + tailwind-merge)
cookieCookie 操作
environ環境配置
browser瀏覽器偵測
numeral數字格式化
template字串模板
filterRSQL/FIQL 查詢建構

詳細用法請參閱 工具函數指南

互動式展示

所有元件都可以在 Storybook 中互動式瀏覽和測試。

共用屬性

大部分元件支援以下共用屬性,確保 API 一致性:

屬性說明適用元件
label浮動標籤(自動翻譯)所有 Data Input、Form 元件
variant外觀變體(bordered / ghostInput, Select, TagInput, RichTextEditor, MediaInput, FileInput
density間距密度(compact / comfortable所有 Data Input 元件
color顏色變體(8 種語意色)所有 Data Input 元件、Button
disabled停用狀態所有表單元件
readOnly唯讀模式所有表單元件

設計原則

  1. 可存取性 (a11y):所有元件遵循 WCAG 2.1 AA 標準
  2. 密度支援compact(40px)和 comfortable(48px,預設)兩種密度
  3. 顏色變體:支援 8 種 DaisyUI 語意顏色(default / primary / secondary / accent / info / success / warning / error)
  4. 主題化:支援 DaisyUI 主題切換(含深色模式),禁止使用 dark: prefix 或硬編碼顏色
  5. TypeScript:完整的型別定義與 JSDoc