shadcn/ui Table 示範
shadcn/ui 表格比較
這篇文章展示了使用 原始 Tailwind CSS 和 shadcn/ui 兩種方式建立的表格。
方式 1: 原始 Tailwind CSS 版本
使用自訂 Tailwind class 的 UniversalTable 元件:
| ID | 姓名 | 職位 | 狀態 | 評分 |
|---|---|---|---|---|
| 1 | Alice | Developer | 活躍 | 95 |
| 2 | Bob | Designer | 活躍 | 88 |
| 3 | Charlie | Manager | 離線 | 92 |
| 4 | Diana | Developer | 活躍 | 97 |
| 5 | Eve | QA | 忙碌 | 90 |
特色
- ✅ 完全自訂樣式
- ✅ 淡色分格線
- ✅ Hover 效果
- ✅ 響應式設計
方式 2: shadcn/ui 版本
使用 shadcn/ui 設計系統的 UniversalTableShadcn 元件:
| ID | 姓名 | 職位 | 狀態 | 評分 |
|---|---|---|---|---|
| 1 | Alice | Developer | 活躍 | 95 |
| 2 | Bob | Designer | 活躍 | 88 |
| 3 | Charlie | Manager | 離線 | 92 |
| 4 | Diana | Developer | 活躍 | 97 |
| 5 | Eve | QA | 忙碌 | 90 |
特色
- ✅ 符合 shadcn/ui 設計語言
- ✅ 支援深色模式(透過 CSS 變數)
- ✅ 內建空資料狀態
- ✅ 更簡潔的圓角邊框
- ✅ 可選的 caption 支援
設計差異
原始 Tailwind 版本
- 明確的分格線(垂直 + 水平)
- 灰色背景表頭
- 直接使用 Tailwind utility classes
- 適合需要明確格線的資料表
shadcn/ui 版本
- 只有水平分格線(更現代)
- 使用 CSS 變數(支援主題切換)
- 更柔和的 hover 效果
- 符合 shadcn/ui 設計規範
- 適合現代化的 UI 設計
如何選擇?
使用原始 Tailwind 版本,如果你需要:
- 完全控制樣式細節
- 明確的垂直分格線
- 不需要深色模式
- 簡單直接的實作
使用 shadcn/ui 版本,如果你需要:
- 統一的設計系統
- 深色模式支援
- 更現代化的外觀
- 與其他 shadcn/ui 元件整合
在 MDX 中使用
原始版本
import { UniversalTable } from '../../components/UniversalTable'
<UniversalTable client:load data={data} columns={columns} />
shadcn/ui 版本
import { UniversalTableShadcn } from '../../components/UniversalTableShadcn'
<UniversalTableShadcn
client:load
data={data}
columns={columns}
caption="可選的表格說明文字"
/>
技術細節
兩個版本都使用:
- TanStack Table v8 - 強大的表格邏輯
- React - UI 元件框架
- Astro Islands - 只在需要時載入 JS
差異在於樣式層:
- 原始版本:直接使用 Tailwind classes
- shadcn/ui 版本:使用 shadcn/ui Table 元件 + CSS 變數
兩種方式都很棒,選擇最適合你專案需求的即可!