iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
自我挑戰組

30 天打造 Accessible UI Kit:從 shadcn/ui 到自己的 Design System 系列

現在已經有 shadcn/ui 這麼方便的元件,為什麼還要打造自己的 UI Kit?

這 30 天,我將以 shadcn/ui 為起點,使用 React、TypeScript、Tailwind CSS 等技術,從元件的拆解、客製化到設計規範,逐步建立自己的 Design System。

過程中也會從實作理解鍵盤操作、Focus、ARIA、色彩對比等 Accessibility 議題,思考如何在客製化元件的同時保留良好的無障礙體驗。

希望 30 天後,不只是「會使用元件」,而是真正打造出一套能持續擴充的 Accessible UI Kit!

參賽天數 24 天 | 共 24 篇文章 | 0 人訂閱 訂閱系列文 RSS系列文
DAY 1

Day1: 都有 shadcn/ui 了,為什麼還要做自己的 UI Kit?

現在前端已經有非常多成熟的 UI Library。 從 Button、Input、Select,到 Dialog、Tabs 等複雜的互動元件,很多時候不需要從零...

2026-09-15 ‧ 由 juicy44528 分享
DAY 2

Day2: 開工!用 Vite + React + TypeScript 建立 UI Kit

Day 1 提到,希望把不同系統中重複出現的 UI 整理成共用元件,也希望把 Accessibility 從開發後期的檢查項目,往前移到 Component 的...

2026-09-16 ‧ 由 juicy44528 分享
DAY 3

Day 3: shadcn/ui 到底是什麼?它和一般元件庫有什麼不同?

Day 2 建好了 React + TypeScript + Vite 的基本環境在開始第一個component之前---shadcn/ui 到底是什麼? 開官...

2026-09-17 ‧ 由 juicy44528 分享
DAY 4

Day 4: 拆開 shadcn/ui Button:一顆元件裡到底有什麼?

Day 2 建好了 Vite + React + TypeScript 專案,Day 3 也了解了 shadcn/ui 和一般 Component Librar...

2026-09-18 ‧ 由 juicy44528 分享
DAY 5

Day 5: 在做元件之前,先建立自己的 Design Tokens

Day 4 拆開第一顆 shadcn/ui Button 時,可以看到不少這樣的 Class: bg-primary text-primary-foregrou...

2026-09-19 ‧ 由 juicy44528 分享
DAY 6

Day 6: Tailwind CSS + SCSS,可以一起用嗎?

一開始規劃這套 UI Kit 時,技術清單裡其實有 Tailwind CSS + SCSS React Component 使用 Tailwind CSS L...

2026-09-20 ‧ 由 juicy44528 分享
DAY 7

Day 7: 第一個元件 Button:從 shadcn/ui 變成自己的 Button

前幾天已經把 shadcn/ui 的 Button 拆開來看過,也建立了自己的 Design Tokens。到了今天,終於可以開始動第一個真正的元件:Butto...

2026-09-21 ‧ 由 juicy44528 分享
DAY 8

Day 8: Button 不只是能按:從鍵盤操作開始做無障礙

昨天終於完成了第一顆自己的 Button,也定義了 variant、size 和 data-cui-* Component Contract。今天先不急著做第二...

2026-09-22 ‧ 由 juicy44528 分享
DAY 9

Day9: Button 加上 Icon:圖示尺寸與 ARIA 誰負責?

前面幾天把 Button 的 Variant、Size、Focus 等基礎規則整理好後,今天來加入另一個 UI 中很常見的元素:Icon 像這樣: <Bu...

2026-09-23 ‧ 由 juicy44528 分享
DAY 10

Day10: Button v1 完成:Shape、Loading 與 Component API

Day 10|Button v1 完成:Shape、Loading 與 Component API 前幾天一路從 shadcn/ui 的 Button 開始拆解...

2026-09-24 ‧ 由 juicy44528 分享