@nhatdev94/common-ui 1.3.5 → 1.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -207
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,38 +1,24 @@
|
|
|
1
1
|
# 📦 Common UI Library
|
|
2
|
+
## Document Version: 1.0
|
|
3
|
+
## Status: 🟢 Stable
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
**Document Version:** 1.1\
|
|
5
|
-
**Last Updated:**
|
|
6
|
-
**Owner:**
|
|
7
|
-
**Status:**
|
|
5
|
+
@nhatdev94/common-ui là thư viện UI component dùng chung, giúp chuẩn hóa giao diện, giảm thiểu trùng lặp code và đảm bảo tính nhất quán cho toàn bộ hệ sinh thái frontend.
|
|
8
6
|
|
|
9
7
|
------------------------------------------------------------------------
|
|
10
8
|
|
|
11
|
-
##
|
|
12
|
-
|
|
13
|
-
This package requires:
|
|
14
|
-
|
|
15
|
-
- React 18+
|
|
16
|
-
- Tailwind CSS v4
|
|
17
|
-
|
|
18
|
-
------------------------------------------------------------------------
|
|
19
|
-
|
|
20
|
-
🚀 Hướng dẫn tích hợp cho dự án mới
|
|
21
|
-
|
|
22
|
-
Để sử dụng thư viện trong các dự án mới (Vite, Next.js, v.v.), vui lòng làm theo các bước hướng dẫn dưới đây.
|
|
23
|
-
|
|
24
|
-
1️⃣ Cài đặt
|
|
9
|
+
## 1️⃣ Hướng dẫn tích hợp cho dự án mới
|
|
10
|
+
Để sử dụng thư viện trong các dự án (Vite, Next.js, v.v.), vui lòng thực hiện các bước sau:
|
|
25
11
|
|
|
12
|
+
### Cài đặt package
|
|
26
13
|
``` bash
|
|
27
14
|
npm install @nhatdev94/common-ui
|
|
28
15
|
```
|
|
29
16
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
Mở file CSS chính của bạn (ví dụ: src/index.css hoặc app/globals.css) và cấu hình như sau:
|
|
33
|
-
|
|
17
|
+
### Thiết lập Styles & Themes
|
|
18
|
+
Mở file CSS chính (ví dụ: src/index.css hoặc app/globals.css) và cấu hình:
|
|
34
19
|
``` bash
|
|
35
20
|
@import "tailwindcss";
|
|
21
|
+
// src/index.css
|
|
36
22
|
|
|
37
23
|
/* -----------------------------------------------------------
|
|
38
24
|
* IMPORT THEME
|
|
@@ -40,214 +26,62 @@ Mở file CSS chính của bạn (ví dụ: src/index.css hoặc app/globals.css
|
|
|
40
26
|
* ----------------------------------------------------------- */
|
|
41
27
|
@import "@nhatdev94/common-ui/themes/default.css";
|
|
42
28
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
Nếu bạn nhận thấy các Component hiển thị nhưng bị mất các class tiện ích của Tailwind (như padding, margin, màu sắc động), đó là do Tailwind v4 chưa quét qua mã nguồn của thư viện.
|
|
46
|
-
|
|
47
|
-
Hãy thêm dòng @source bên dưới phần import trong file CSS:
|
|
48
|
-
|
|
49
|
-
``` bash
|
|
29
|
+
/* Chỉnh sửa đường dẫn đến node_modules của bạn */
|
|
50
30
|
@source "../node_modules/@nhatdev94/common-ui/dist/**/*.js";
|
|
51
31
|
```
|
|
52
32
|
|
|
53
33
|
------------------------------------------------------------------------
|
|
54
34
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
Sau khi thiết lập xong, bạn có thể bắt đầu sử dụng các component trong dự án của mình:
|
|
35
|
+
## 2️⃣ Hướng dẫn sử dụng Components
|
|
36
|
+
Thư viện được xây dựng theo tư duy Atomic Design, đảm bảo các component là Stateless by default và Business-agnostic.
|
|
58
37
|
|
|
38
|
+
### Storybook
|
|
59
39
|
``` bash
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
export default function App() {
|
|
63
|
-
return (
|
|
64
|
-
<div className="flex gap-4 p-8">
|
|
65
|
-
<Button variant="primary">Click Me</Button>
|
|
66
|
-
<Button variant="outline">Cancel</Button>
|
|
67
|
-
</div>
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
------------------------------------------------------------------------
|
|
73
|
-
|
|
74
|
-
🛠 **Quy trình Cập nhật và Nâng cấp Package (Workflow)**
|
|
75
|
-
|
|
76
|
-
1. **Giai đoạn Cập nhật Package (Pkg Side)**
|
|
77
|
-
|
|
78
|
-
Khi có yêu cầu thay đổi tính năng hoặc sửa lỗi trong package:
|
|
79
|
-
|
|
80
|
-
- **Modify Code**: Thực hiện thay đổi logic trong source code của package.
|
|
81
|
-
- **Test**: Chạy unit test của package để đảm bảo không làm hỏng các tính năng cũ.
|
|
82
|
-
- **Bump Version**: Cập nhật phiên bản trong file package.json theo nguyên tắc Semantic Versioning (SemVer):
|
|
83
|
-
+ *Major (v1.0.0 -> v2.0.0)*: Có thay đổi lớn, không tương thích ngược.
|
|
84
|
-
+ *Minor (v1.0.0 -> v1.1.0)*: Thêm tính năng mới nhưng vẫn tương thích ngược.
|
|
85
|
-
+ *Patch (v1.0.0 -> v1.0.1)*: Sửa lỗi nhỏ.
|
|
86
|
-
- **Build & Publish**: Chạy lệnh build (nếu có) và đẩy lên Registry (NPM, GitHub Packages, hoặc Azure Artifacts).
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
npm publish
|
|
40
|
+
npm run storybook
|
|
90
41
|
```
|
|
42
|
+
### Component
|
|
91
43
|
|
|
92
|
-
2. **Giai đoạn Tích hợp vào Ứng dụng (App Side)**
|
|
93
|
-
|
|
94
|
-
Sau khi package đã có phiên bản mới trên kho lưu trữ, ứng dụng chính cần được cập nhật:
|
|
95
|
-
- **Upgrade Command**: Sử dụng lệnh để cài đặt phiên bản cụ thể.
|
|
96
44
|
```bash
|
|
97
|
-
|
|
98
|
-
```
|
|
99
|
-
- **Regression Test**: Chạy ứng dụng chính để kiểm tra xem package mới có hoạt động trơn tru với các module khác không.
|
|
100
|
-
|
|
101
|
-
------------------------------------------------------------------------
|
|
102
|
-
|
|
103
|
-
# 1. Executive Summary
|
|
104
|
-
|
|
105
|
-
`@nhatdev94/common-ui` là thư viện UI component dùng chung cho toàn bộ hệ
|
|
106
|
-
sinh thái frontend của công ty.
|
|
107
|
-
|
|
108
|
-
Mục tiêu:
|
|
109
|
-
|
|
110
|
-
- Chuẩn hóa giao diện giữa các hệ thống
|
|
111
|
-
- Giảm duplication code
|
|
112
|
-
- Tăng tốc độ phát triển
|
|
113
|
-
- Đảm bảo tính nhất quán (consistency)
|
|
114
|
-
- Tăng khả năng maintain và scale
|
|
115
|
-
|
|
116
|
-
------------------------------------------------------------------------
|
|
117
|
-
|
|
118
|
-
# 2. Scope
|
|
119
|
-
|
|
120
|
-
## 2.1 In Scope
|
|
121
|
-
|
|
122
|
-
- Atomic UI Components (Button, Input, Modal, Table, etc.)
|
|
123
|
-
- Design tokens (color, spacing, typography)
|
|
124
|
-
- Accessibility compliant components
|
|
45
|
+
import { Button } from '@nhatdev94/common-ui'
|
|
125
46
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
- Application routing
|
|
132
|
-
- Domain-specific UI
|
|
133
|
-
|
|
134
|
-
------------------------------------------------------------------------
|
|
135
|
-
|
|
136
|
-
# 3. Architecture Overview
|
|
137
|
-
|
|
138
|
-
## 3.1 Design Principles
|
|
139
|
-
|
|
140
|
-
1. Component-driven development
|
|
141
|
-
2. Stateless by default
|
|
142
|
-
3. Business-agnostic
|
|
143
|
-
4. Backward-compatible changes
|
|
144
|
-
5. Accessibility-first mindset
|
|
145
|
-
|
|
146
|
-
------------------------------------------------------------------------
|
|
147
|
-
|
|
148
|
-
## 3.2 Tech Stack
|
|
149
|
-
|
|
150
|
-
- React 18+
|
|
151
|
-
- TypeScript
|
|
152
|
-
- TailwindCSS
|
|
153
|
-
- Storybook
|
|
154
|
-
- Vitest
|
|
155
|
-
- tsup
|
|
156
|
-
|
|
157
|
-
------------------------------------------------------------------------
|
|
158
|
-
|
|
159
|
-
# 4. Folder Structure
|
|
160
|
-
|
|
161
|
-
``` bash
|
|
162
|
-
common-ui/
|
|
163
|
-
├─ src/
|
|
164
|
-
│ ├─ components/
|
|
165
|
-
│ ├─ hooks/
|
|
166
|
-
│ ├─ lib/
|
|
167
|
-
│ ├─ stories/
|
|
168
|
-
│ ├─ themes/
|
|
169
|
-
│ └─ index.ts
|
|
170
|
-
├─ .storybook/
|
|
171
|
-
├─ dist/
|
|
172
|
-
├─ package.json
|
|
173
|
-
├─ tsconfig.json
|
|
174
|
-
├─ tsup.config.json
|
|
175
|
-
└─ README.md
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
------------------------------------------------------------------------
|
|
179
|
-
|
|
180
|
-
# 5. Component Standards
|
|
181
|
-
|
|
182
|
-
## Naming Convention
|
|
183
|
-
|
|
184
|
-
- PascalCase cho component name
|
|
185
|
-
- KebabCase cho file name
|
|
186
|
-
- Props interface: `ComponentNameProps`
|
|
187
|
-
- Không sử dụng default export
|
|
188
|
-
|
|
189
|
-
## Rules
|
|
190
|
-
|
|
191
|
-
- Không gọi API
|
|
192
|
-
- Không import từ application layer
|
|
193
|
-
- Không chứa business validation logic
|
|
194
|
-
- Không phụ thuộc Redux / Zustand / App Context
|
|
195
|
-
|
|
196
|
-
------------------------------------------------------------------------
|
|
197
|
-
|
|
198
|
-
# 6. Storybook Governance
|
|
199
|
-
|
|
200
|
-
- Mỗi component bắt buộc có story
|
|
201
|
-
- Có default state và variants
|
|
202
|
-
- Có edge cases
|
|
203
|
-
|
|
204
|
-
Run:
|
|
205
|
-
|
|
206
|
-
``` bash
|
|
207
|
-
npm run storybook
|
|
47
|
+
export default async function DemoPage() {
|
|
48
|
+
return (
|
|
49
|
+
<Button>Click Me<Button>
|
|
50
|
+
)
|
|
51
|
+
}
|
|
208
52
|
```
|
|
209
53
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
``` bash
|
|
213
|
-
npm run build-storybook
|
|
214
|
-
```
|
|
54
|
+
- [Data Table](./src/docs/table.md)
|
|
215
55
|
|
|
216
56
|
------------------------------------------------------------------------
|
|
217
57
|
|
|
218
|
-
|
|
58
|
+
## 3️⃣ Quy trình cập nhật và nâng cấp Package
|
|
219
59
|
|
|
220
|
-
|
|
60
|
+
### Các quy tắc (Rules) cần tuân thủ
|
|
61
|
+
Để đảm bảo tính ổn định, mọi đóng góp phải tuân thủ:
|
|
221
62
|
|
|
222
|
-
|
|
223
|
-
------- ------------------
|
|
224
|
-
MAJOR Breaking changes
|
|
225
|
-
MINOR New feature
|
|
226
|
-
PATCH Bug fix
|
|
63
|
+
- **Naming**: Sử dụng PascalCase cho tên component và kebab-case cho tên file.
|
|
227
64
|
|
|
228
|
-
|
|
65
|
+
- **No Side Effects**: Tuyệt đối không gọi API hoặc chứa logic nghiệp vụ (Business logic).
|
|
229
66
|
|
|
230
|
-
|
|
67
|
+
- **Independence**: Không phụ thuộc vào Redux, Zustand hoặc App Context của dự án tích hợp.
|
|
231
68
|
|
|
232
|
-
|
|
233
|
-
2. Lint & Test (planned)
|
|
234
|
-
3. Review
|
|
235
|
-
4. Merge to main
|
|
236
|
-
5. Automated publish (planned)
|
|
69
|
+
- **Naming Props**: Interface cho props phải có định dạng ComponentNameProps.
|
|
237
70
|
|
|
238
|
-
|
|
71
|
+
### Quy trình thực hiện (Workflow)
|
|
72
|
+
#### Giai đoạn 1: Cập nhật tại Package (Pkg Side)
|
|
73
|
+
- **Modify Code**: Chỉnh sửa source code trong `src/components`.
|
|
239
74
|
|
|
240
|
-
|
|
75
|
+
- **Test**: Chạy unit test và kiểm tra trên `npm run storybook`.
|
|
241
76
|
|
|
242
|
-
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
77
|
+
- **Bump Version**: Cập nhật phiên bản trong `package.json` theo chuẩn SemVer:
|
|
78
|
+
+ PATCH: Sửa lỗi nhỏ.
|
|
79
|
+
+ MINOR: Thêm tính năng mới (tương thích ngược).
|
|
80
|
+
+ MAJOR: Thay đổi lớn (không tương thích ngược).
|
|
246
81
|
|
|
247
|
-
|
|
82
|
+
- **Build & Publish**: Chạy `npm run build` và đẩy lên registry bằng `npm publish`.
|
|
248
83
|
|
|
249
|
-
|
|
84
|
+
#### Giai đoạn 2: Tích hợp vào Ứng dụng (App Side)
|
|
85
|
+
- **Upgrade**: Chạy lệnh `npm install @nhatdev94/common-ui@latest`.
|
|
250
86
|
|
|
251
|
-
|
|
252
|
-
ecosystem, đảm bảo consistency, scalability và maintainability cho sản
|
|
253
|
-
phẩm.
|
|
87
|
+
- **Regression Test**: Kiểm tra lại các module liên quan để đảm bảo không có lỗi phát sinh.
|