鐵人賽到今天終於能來說說 tailwind 和 shadcn 的客製化組合技:
承上篇
成功在專案中安裝 shadcn 之後,在專案的根目錄會生成 components.json,這個檔案是整個 shadcn 組件系統的核心設定檔,用來記錄你是怎麼安裝、管理和客製化這些 UI 元件。
components.json 的個別欄位介紹:
之前在 DAY 04 已經介紹 Tailwind v3 透過 tailwind.config.ts 來進行客制化的樣式管理,所以在配置components.json 時,一定要在 config 欄位指定 tailwind.config.ts,但在 Tailwind v4 之後,則預設用 @theme,直接在 CSS 檔裡定義。
回到我們上篇建立的 Next.js 專案,假設我們需要新增一套有深淺模式的色票:
首先需要在 :root 中 .dark 中分別加入色票的變數
為示範,我在 :root 加入
:root {
--brand: #fff000; //黃色
...
}
在 .dark加入
.dark {
--brand: #545011; //灰黃色
...
}
再來就是在 @theme inline 中把在 :root 與 .dark 定義好的變數(即 --brand)映射到 Tailwind 的色票名稱(像是 --color-brand),這樣就能透過 bg-brand、text-brand 等 utility class 直接使用,並且會隨著主題自動切換。
@theme inline {
--color-brand: var(--brand);
...
}
最後假設我想定義所有 shadcn 的預設按鈕顏色都是 brand 的話,直接進入 components/ui/button.tsx進行修改 (即反白處):
這樣能在淺色模式與深色模式中自動切換啦