basuicn 0.2.7 → 0.2.9
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 +171 -47
- package/README_CLI.md +29 -27
- package/dist/ui-cli.cjs +1 -1
- package/package.json +106 -104
- package/registry.json +118 -59
- package/scripts/bump-version.mjs +22 -0
- package/scripts/set-version.mjs +31 -0
- package/scripts/ui-cli.ts +1 -1
package/README.md
CHANGED
|
@@ -1,96 +1,220 @@
|
|
|
1
|
-
# basuicn — UI Component CLI
|
|
1
|
+
# basuicn — React UI Component CLI
|
|
2
2
|
|
|
3
|
-
Bộ sưu tập component React hiện đại,
|
|
3
|
+
Bộ sưu tập component React hiện đại, phân phối trực tiếp vào dự án qua CLI. Bạn sở hữu hoàn toàn mã nguồn — không runtime ẩn, không black box (tương tự shadcn/ui).
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Yêu cầu
|
|
8
8
|
|
|
9
|
-
- **Node.js
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
9
|
+
- **Node.js** 18+
|
|
10
|
+
- **React** 18+ / 19+
|
|
11
|
+
- **Framework**: Vite hoặc Next.js (App Router / Pages Router)
|
|
12
|
+
- **Styling**: Tailwind CSS v4
|
|
12
13
|
|
|
13
14
|
---
|
|
14
15
|
|
|
15
|
-
##
|
|
16
|
+
## Bắt đầu nhanh
|
|
16
17
|
|
|
17
18
|
### 1. Khởi tạo dự án
|
|
18
19
|
|
|
19
|
-
Di chuyển đến thư mục gốc của dự án React và chạy lệnh:
|
|
20
|
-
|
|
21
20
|
```bash
|
|
22
21
|
npx basuicn init
|
|
23
22
|
```
|
|
24
23
|
|
|
25
|
-
Lệnh này
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
24
|
+
Lệnh này tự động:
|
|
25
|
+
- Cài đặt runtime packages: `@base-ui/react`, `tailwind-variants`, `clsx`, `lucide-react`, ...
|
|
26
|
+
- Cấu hình `vite.config.ts` với Tailwind CSS v4 + path aliases (`@/`, `@components/`, `@lib/`, ...)
|
|
27
|
+
- Cập nhật `tsconfig.json` với `paths` tương ứng
|
|
28
|
+
- Copy core files: `cn.ts`, `ThemeProvider.tsx`, `themes.ts`, `index.css`
|
|
29
|
+
- Bọc `<App />` trong `<ThemeProvider>` tại `src/main.tsx`
|
|
31
30
|
|
|
32
|
-
|
|
31
|
+
> **Next.js**: CLI tự nhận diện App Router / Pages Router và cấu hình phù hợp (`postcss.config.mjs`, `app/layout.tsx`, `pages/_app.tsx`).
|
|
33
32
|
|
|
34
|
-
|
|
33
|
+
---
|
|
35
34
|
|
|
36
|
-
|
|
35
|
+
### 2. Thêm component
|
|
37
36
|
|
|
38
37
|
```bash
|
|
39
38
|
npx basuicn add button
|
|
40
|
-
npx basuicn add button input
|
|
41
|
-
npx basuicn add
|
|
39
|
+
npx basuicn add button input card # Thêm nhiều component
|
|
40
|
+
npx basuicn add # Chế độ interactive — chọn từ danh sách
|
|
42
41
|
```
|
|
43
42
|
|
|
44
|
-
|
|
43
|
+
Component được copy vào `src/components/ui/<name>/`. Bạn thoải mái chỉnh sửa sau.
|
|
45
44
|
|
|
46
|
-
|
|
45
|
+
> CLI tự động tải các component phụ thuộc nội bộ:
|
|
46
|
+
> - `select` → kéo theo `popover`
|
|
47
|
+
> - `table` → kéo theo `checkbox`, `spinner`
|
|
48
|
+
> - `sheet` → kéo theo `drawer`
|
|
49
|
+
> - `sidebar` → kéo theo `tooltip`
|
|
47
50
|
|
|
48
|
-
|
|
51
|
+
---
|
|
49
52
|
|
|
50
|
-
|
|
53
|
+
### 3. Cập nhật component
|
|
51
54
|
|
|
52
55
|
```bash
|
|
53
|
-
npx basuicn diff button
|
|
54
|
-
npx basuicn update button
|
|
56
|
+
npx basuicn diff button # Xem thay đổi giữa code local và registry
|
|
57
|
+
npx basuicn update button # Ghi đè bằng phiên bản mới nhất
|
|
58
|
+
npx basuicn update button card dialog # Cập nhật nhiều cùng lúc
|
|
55
59
|
```
|
|
56
60
|
|
|
57
61
|
---
|
|
58
62
|
|
|
59
|
-
### 4.
|
|
63
|
+
### 4. Xóa component
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npx basuicn remove button
|
|
67
|
+
npx basuicn remove dialog drawer sheet
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
60
71
|
|
|
61
|
-
|
|
72
|
+
### 5. Kiểm tra cấu hình (Doctor)
|
|
62
73
|
|
|
63
|
-
```bash
|
|
74
|
+
```bash
|
|
75
|
+
npx basuicn doctor
|
|
64
76
|
```
|
|
65
77
|
|
|
78
|
+
Kiểm tra toàn bộ: core files, ThemeProvider, CSS import, runtime packages, path aliases, Tailwind config — và gợi ý cách sửa nếu có vấn đề.
|
|
79
|
+
|
|
66
80
|
---
|
|
67
81
|
|
|
68
|
-
##
|
|
82
|
+
## Danh sách lệnh
|
|
69
83
|
|
|
70
84
|
| Lệnh | Mô tả |
|
|
71
85
|
|------|-------|
|
|
72
|
-
| `init` | Thiết lập
|
|
73
|
-
| `add <name
|
|
74
|
-
| `update <name
|
|
75
|
-
| `diff <name
|
|
76
|
-
| `remove <name
|
|
77
|
-
| `list` |
|
|
78
|
-
| `doctor` | Kiểm tra cấu hình
|
|
86
|
+
| `init` | Thiết lập dự án: cài packages, config Vite/Next.js, core files, ThemeProvider |
|
|
87
|
+
| `add <name...>` | Thêm component(s) vào `src/components/ui/` |
|
|
88
|
+
| `update <name...>` | Cập nhật component(s) lên phiên bản registry mới nhất |
|
|
89
|
+
| `diff <name...>` | So sánh code local với bản gốc trên registry |
|
|
90
|
+
| `remove <name...>` | Xóa component(s) và dọn thư mục trống |
|
|
91
|
+
| `list` | Liệt kê tất cả component có sẵn (hiển thị trạng thái installed/available) |
|
|
92
|
+
| `doctor` | Kiểm tra sức khỏe cấu hình dự án |
|
|
79
93
|
|
|
80
|
-
|
|
94
|
+
### Options
|
|
81
95
|
|
|
82
|
-
|
|
96
|
+
| Flag | Mô tả |
|
|
97
|
+
|------|-------|
|
|
98
|
+
| `--force` | Ghi đè file đã tồn tại khi `add` / `update` |
|
|
99
|
+
| `--local` | Đọc `registry.json` local thay vì fetch từ GitHub |
|
|
100
|
+
| `--help, -h` | Hiển thị hướng dẫn (dùng với command để xem chi tiết: `add --help`) |
|
|
101
|
+
| `--version, -v` | Hiển thị phiên bản CLI |
|
|
83
102
|
|
|
84
|
-
|
|
85
|
-
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Danh sách component
|
|
106
|
+
|
|
107
|
+
### Input & Form
|
|
108
|
+
| Component | Mô tả |
|
|
109
|
+
|-----------|-------|
|
|
110
|
+
| `button` | Button với nhiều variant, size, loading state |
|
|
111
|
+
| `input` | Text input cơ bản |
|
|
112
|
+
| `textarea` | Textarea với auto-resize |
|
|
113
|
+
| `checkbox` | Checkbox có label |
|
|
114
|
+
| `radio` / `radio-group` | Radio button và Radio Group |
|
|
115
|
+
| `switch` | Toggle switch |
|
|
116
|
+
| `toggle` | Toggle button |
|
|
117
|
+
| `select` | Dropdown select |
|
|
118
|
+
| `autocomplete` | Input với gợi ý tự động |
|
|
119
|
+
| `combobox` | Combobox tìm kiếm + chọn |
|
|
120
|
+
| `number-input` | Input số với nút tăng/giảm |
|
|
121
|
+
| `input-otp` | OTP input nhiều ô |
|
|
122
|
+
| `slider` | Range slider |
|
|
123
|
+
| `rate` | Đánh giá sao |
|
|
124
|
+
| `file-upload` | Upload file với drag & drop |
|
|
125
|
+
| `form` | Form wrapper tích hợp react-hook-form + zod |
|
|
126
|
+
| `calendar` | Bộ chọn ngày |
|
|
127
|
+
| `datepicker` | Input + calendar popup |
|
|
128
|
+
|
|
129
|
+
### Overlay & Popup
|
|
130
|
+
| Component | Mô tả |
|
|
131
|
+
|-----------|-------|
|
|
132
|
+
| `dialog` | Modal dialog |
|
|
133
|
+
| `alert-dialog` | Dialog xác nhận hành động |
|
|
134
|
+
| `drawer` | Drawer trượt từ cạnh màn hình |
|
|
135
|
+
| `sheet` | Sheet (alias drawer mở rộng) |
|
|
136
|
+
| `popover` | Popup neo đến element |
|
|
137
|
+
| `tooltip` | Tooltip hiển thị khi hover |
|
|
138
|
+
| `dropdown-menu` | Menu dropdown |
|
|
139
|
+
| `context-menu` | Menu chuột phải |
|
|
140
|
+
| `preview-card` | Card preview khi hover |
|
|
141
|
+
| `command` | Command palette (Ctrl+K) |
|
|
142
|
+
|
|
143
|
+
### Hiển thị dữ liệu
|
|
144
|
+
| Component | Mô tả |
|
|
145
|
+
|-----------|-------|
|
|
146
|
+
| `table` | Bảng dữ liệu với sort, filter, pagination |
|
|
147
|
+
| `chart` | Biểu đồ (line, bar, pie, ...) dựa trên Recharts |
|
|
148
|
+
| `carousel` | Carousel / slider ảnh |
|
|
149
|
+
| `timeline` | Timeline sự kiện |
|
|
150
|
+
| `accordion` | Accordion mở rộng/thu gọn |
|
|
151
|
+
| `collapsible` | Nội dung có thể ẩn/hiện |
|
|
152
|
+
| `tree-view` | Cây phân cấp |
|
|
153
|
+
| `table-contents` | Mục lục tự động từ headings |
|
|
154
|
+
|
|
155
|
+
### Navigation
|
|
156
|
+
| Component | Mô tả |
|
|
157
|
+
|-----------|-------|
|
|
158
|
+
| `breadcrumb` | Đường dẫn điều hướng |
|
|
159
|
+
| `tabs` | Tabs navigation |
|
|
160
|
+
| `pagination` | Phân trang |
|
|
161
|
+
| `menu-bar` | Menu bar ngang |
|
|
162
|
+
| `sidebar` | Sidebar điều hướng |
|
|
163
|
+
|
|
164
|
+
### Feedback & Trạng thái
|
|
165
|
+
| Component | Mô tả |
|
|
166
|
+
|-----------|-------|
|
|
167
|
+
| `toast` | Thông báo toast (Sonner) — tự thêm `<Toaster />` vào `main.tsx` |
|
|
168
|
+
| `alert` | Thông báo inline |
|
|
169
|
+
| `spinner` | Loading spinner |
|
|
170
|
+
| `progress` | Thanh tiến trình |
|
|
171
|
+
| `skeleton` | Skeleton loading placeholder |
|
|
172
|
+
| `empty` | Trạng thái trống (empty state) |
|
|
173
|
+
|
|
174
|
+
### Layout & Misc
|
|
175
|
+
| Component | Mô tả |
|
|
176
|
+
|-----------|-------|
|
|
177
|
+
| `card` | Card container |
|
|
178
|
+
| `badge` | Badge / tag nhỏ |
|
|
179
|
+
| `avatar` | Avatar ảnh / initials |
|
|
180
|
+
| `separator` | Đường kẻ phân cách |
|
|
181
|
+
| `aspect-ratio` | Container giữ tỉ lệ khung hình |
|
|
182
|
+
| `resizable` | Panel chia tay có thể kéo resize |
|
|
183
|
+
| `scroll-area` | Vùng cuộn tùy chỉnh |
|
|
184
|
+
| `typography` | Các thẻ heading, paragraph chuẩn hóa style |
|
|
185
|
+
| `pretty-code` | Hiển thị code với syntax highlight (Shiki) |
|
|
86
186
|
|
|
87
187
|
---
|
|
88
188
|
|
|
89
|
-
##
|
|
189
|
+
## Dành cho Maintainers
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# Chạy dev server (showcase)
|
|
193
|
+
npm run dev
|
|
194
|
+
|
|
195
|
+
# Build registry từ source components
|
|
196
|
+
npm run registry:build
|
|
197
|
+
|
|
198
|
+
# Đồng bộ theme CSS từ themes.ts
|
|
199
|
+
npm run theme:sync
|
|
200
|
+
|
|
201
|
+
# Build CLI binary
|
|
202
|
+
npm run build:cli
|
|
203
|
+
|
|
204
|
+
# Kích hoạt auto version bump sau mỗi commit
|
|
205
|
+
npm run setup-hooks
|
|
206
|
+
|
|
207
|
+
# Đặt version thủ công
|
|
208
|
+
npm run version:set 1.0.0 # Set thẳng
|
|
209
|
+
npm run version:set major # 0.x.x → 1.0.0
|
|
210
|
+
npm run version:set minor # x.2.x → x.3.0
|
|
211
|
+
|
|
212
|
+
# Publish lên npm
|
|
213
|
+
npm publish
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
90
217
|
|
|
91
|
-
|
|
218
|
+
## License
|
|
92
219
|
|
|
93
|
-
|
|
94
|
-
2. **Đồng bộ Theme**: `npm run theme:sync` (Tạo file CSS theme từ `themes.ts`).
|
|
95
|
-
3. **Xây dựng Registry**: `npm run registry:build` (Gom toàn bộ code component vào `registry.json`).
|
|
96
|
-
4. **Publish**: `npm publish`
|
|
220
|
+
MIT
|
package/README_CLI.md
CHANGED
|
@@ -1,44 +1,46 @@
|
|
|
1
|
-
# basuicn CLI
|
|
1
|
+
# basuicn CLI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Công cụ dòng lệnh để thêm, cập nhật và quản lý các component UI trong dự án React.
|
|
4
4
|
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
Để bắt đầu sử dụng `basuicn` trong dự án của bạn, hãy chạy:
|
|
5
|
+
## Cài đặt & Khởi tạo
|
|
8
6
|
|
|
9
7
|
```bash
|
|
10
8
|
npx basuicn init
|
|
11
9
|
```
|
|
12
10
|
|
|
13
|
-
|
|
11
|
+
Tự động cài packages, cấu hình Vite/Next.js, Tailwind CSS v4, path aliases và ThemeProvider.
|
|
14
12
|
|
|
15
|
-
##
|
|
13
|
+
## Các lệnh
|
|
16
14
|
|
|
17
|
-
### Thêm Component
|
|
18
15
|
```bash
|
|
19
|
-
npx basuicn add <component
|
|
16
|
+
npx basuicn add <name...> # Thêm component
|
|
17
|
+
npx basuicn update <name...> # Cập nhật lên phiên bản mới nhất
|
|
18
|
+
npx basuicn diff <name...> # So sánh với bản gốc trên registry
|
|
19
|
+
npx basuicn remove <name...> # Xóa component
|
|
20
|
+
npx basuicn list # Danh sách tất cả component
|
|
21
|
+
npx basuicn doctor # Kiểm tra cấu hình dự án
|
|
20
22
|
```
|
|
21
|
-
Ví dụ: `npx basuicn add button input`.
|
|
22
23
|
|
|
23
|
-
###
|
|
24
|
-
- **So sánh**: `npx basuicn diff <component-name>` để xem các thay đổi bạn đã sửa so với bản gốc.
|
|
25
|
-
- **Cập nhật**: `npx basuicn update <component-name>` để lấy bản mới nhất từ remote registry.
|
|
24
|
+
### Options
|
|
26
25
|
|
|
27
|
-
### Kiểm tra lỗi cấu hình
|
|
28
|
-
Nếu component không hiển thị đúng style hoặc lỗi import, hãy dùng:
|
|
29
|
-
```bash
|
|
30
|
-
npx basuicn doctor
|
|
31
26
|
```
|
|
27
|
+
--force Ghi đè file đã tồn tại
|
|
28
|
+
--local Dùng registry.json local thay vì fetch từ GitHub
|
|
29
|
+
--help Hướng dẫn chi tiết (vd: npx basuicn add --help)
|
|
30
|
+
--version Hiển thị phiên bản
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Cơ chế hoạt động
|
|
34
|
+
|
|
35
|
+
1. Fetch metadata từ `registry.json` trên GitHub
|
|
36
|
+
2. Cài đặt npm packages cần thiết
|
|
37
|
+
3. Tải về các component phụ thuộc nội bộ tự động
|
|
38
|
+
4. Copy source code vào `src/components/ui/<name>/`
|
|
39
|
+
5. Patch `main.tsx` / `layout.tsx` nếu component yêu cầu (vd: `toast`)
|
|
32
40
|
|
|
33
|
-
##
|
|
41
|
+
## Bảo mật
|
|
34
42
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
2. Tự động cài đặt các thư viện `npm` tương ứng.
|
|
38
|
-
3. Kiểm tra và tải các component phụ thuộc nội bộ.
|
|
39
|
-
4. Copy source code trực tiếp vào thư mục dự án của bạn.
|
|
40
|
-
5. (Tùy chọn) Thêm code khởi tạo vào `src/main.tsx` nếu component cần (ví dụ: `Toaster`).
|
|
43
|
+
- Không có runtime dependency sau khi cài đặt — bạn sở hữu hoàn toàn mã nguồn
|
|
44
|
+
- Mã nguồn mở 100%, thoải mái tùy chỉnh
|
|
41
45
|
|
|
42
|
-
|
|
43
|
-
- Không phụ thuộc vào runtime sau khi cài đặt.
|
|
44
|
-
- Mã nguồn mở 100%, bạn có thể thoải mái tùy chỉnh sau khi copy vào dự án.
|
|
46
|
+
Xem thêm tại [README.md](./README.md).
|
package/dist/ui-cli.cjs
CHANGED
|
@@ -27,7 +27,7 @@ var import_fs = __toESM(require("fs"), 1);
|
|
|
27
27
|
var import_path = __toESM(require("path"), 1);
|
|
28
28
|
var import_child_process = require("child_process");
|
|
29
29
|
var import_readline = __toESM(require("readline"), 1);
|
|
30
|
-
var VERSION = "0.2.
|
|
30
|
+
var VERSION = "0.2.9";
|
|
31
31
|
var REGISTRY_LOCAL = "./registry.json";
|
|
32
32
|
var REGISTRY_REMOTE = "https://raw.githubusercontent.com/Basuicn/basuicn-core/main/registry.json";
|
|
33
33
|
var c = {
|
package/package.json
CHANGED
|
@@ -1,104 +1,106 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "basuicn",
|
|
3
|
-
"private": false,
|
|
4
|
-
"version": "0.2.
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"basuicn": "./dist/ui-cli.cjs"
|
|
8
|
-
},
|
|
9
|
-
"files": [
|
|
10
|
-
"dist",
|
|
11
|
-
"registry.json",
|
|
12
|
-
"scripts",
|
|
13
|
-
"README_CLI.md"
|
|
14
|
-
],
|
|
15
|
-
"scripts": {
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"test
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"@
|
|
34
|
-
"@
|
|
35
|
-
"@
|
|
36
|
-
"@
|
|
37
|
-
"@
|
|
38
|
-
"@
|
|
39
|
-
"@
|
|
40
|
-
"@
|
|
41
|
-
"@
|
|
42
|
-
"@storybook/addon-
|
|
43
|
-
"@storybook/addon-
|
|
44
|
-
"@storybook/
|
|
45
|
-
"@
|
|
46
|
-
"@
|
|
47
|
-
"@
|
|
48
|
-
"@
|
|
49
|
-
"@
|
|
50
|
-
"@testing-library/
|
|
51
|
-
"@
|
|
52
|
-
"@
|
|
53
|
-
"@types/
|
|
54
|
-
"@types/
|
|
55
|
-
"@types/
|
|
56
|
-
"@
|
|
57
|
-
"@
|
|
58
|
-
"@
|
|
59
|
-
"@vitest/
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"eslint
|
|
68
|
-
"eslint-plugin-
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"react
|
|
77
|
-
"react-
|
|
78
|
-
"react-
|
|
79
|
-
"react-
|
|
80
|
-
"react-
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"rehype-
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
"recharts": "^
|
|
103
|
-
|
|
104
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "basuicn",
|
|
3
|
+
"private": false,
|
|
4
|
+
"version": "0.2.9",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"basuicn": "./dist/ui-cli.cjs"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"registry.json",
|
|
12
|
+
"scripts",
|
|
13
|
+
"README_CLI.md"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"setup-hooks": "git config core.hooksPath .githooks",
|
|
17
|
+
"version:set": "node scripts/set-version.mjs",
|
|
18
|
+
"dev": "vite",
|
|
19
|
+
"build": "tsc -b && vite build",
|
|
20
|
+
"build:cli": "node scripts/build-cli.mjs",
|
|
21
|
+
"lint": "eslint .",
|
|
22
|
+
"preview": "vite preview",
|
|
23
|
+
"test": "vitest",
|
|
24
|
+
"test:ui": "vitest --ui",
|
|
25
|
+
"test:coverage": "vitest run --coverage",
|
|
26
|
+
"registry:build": "npx -y tsx scripts/build-registry.ts",
|
|
27
|
+
"theme:sync": "npx -y tsx scripts/generate-theme-css.ts",
|
|
28
|
+
"ui:add": "npx -y tsx scripts/ui-cli.ts add",
|
|
29
|
+
"storybook": "storybook dev -p 6006",
|
|
30
|
+
"build-storybook": "storybook build"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@babel/core": "^7.29.0",
|
|
34
|
+
"@base-ui/react": "^1.3.0",
|
|
35
|
+
"@chromatic-com/storybook": "^5.1.1",
|
|
36
|
+
"@codesandbox/sandpack-react": "^2.20.0",
|
|
37
|
+
"@eslint/js": "^9.39.4",
|
|
38
|
+
"@fontsource-variable/geist": "^5.2.8",
|
|
39
|
+
"@hookform/resolvers": "^5.2.2",
|
|
40
|
+
"@monaco-editor/react": "^4.7.0",
|
|
41
|
+
"@rolldown/plugin-babel": "^0.2.1",
|
|
42
|
+
"@storybook/addon-a11y": "^10.3.4",
|
|
43
|
+
"@storybook/addon-docs": "^10.3.4",
|
|
44
|
+
"@storybook/addon-onboarding": "^10.3.4",
|
|
45
|
+
"@storybook/addon-vitest": "^10.3.4",
|
|
46
|
+
"@storybook/react-vite": "^10.3.4",
|
|
47
|
+
"@tailwindcss/vite": "^4.2.2",
|
|
48
|
+
"@tanstack/react-table": "^8.21.3",
|
|
49
|
+
"@tanstack/react-virtual": "^3.13.23",
|
|
50
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
51
|
+
"@testing-library/react": "^16.3.2",
|
|
52
|
+
"@testing-library/user-event": "^14.6.1",
|
|
53
|
+
"@types/babel__core": "^7.20.5",
|
|
54
|
+
"@types/hast": "^3.0.4",
|
|
55
|
+
"@types/node": "^24.12.0",
|
|
56
|
+
"@types/react": "^19.2.14",
|
|
57
|
+
"@types/react-dom": "^19.2.3",
|
|
58
|
+
"@vitejs/plugin-react": "^6.0.1",
|
|
59
|
+
"@vitest/browser-playwright": "^4.1.2",
|
|
60
|
+
"@vitest/coverage-v8": "^4.1.2",
|
|
61
|
+
"@vitest/ui": "^4.1.2",
|
|
62
|
+
"autoprefixer": "^10.4.27",
|
|
63
|
+
"babel-plugin-react-compiler": "^1.0.0",
|
|
64
|
+
"clsx": "^2.1.1",
|
|
65
|
+
"date-fns": "^4.1.0",
|
|
66
|
+
"dayjs": "^1.11.20",
|
|
67
|
+
"eslint": "^9.39.4",
|
|
68
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
69
|
+
"eslint-plugin-react-refresh": "^0.5.2",
|
|
70
|
+
"eslint-plugin-storybook": "^10.3.4",
|
|
71
|
+
"globals": "^17.4.0",
|
|
72
|
+
"jsdom": "^29.0.1",
|
|
73
|
+
"lucide-react": "^0.577.0",
|
|
74
|
+
"playwright": "^1.59.1",
|
|
75
|
+
"postcss": "^8.5.8",
|
|
76
|
+
"react": "^19.2.4",
|
|
77
|
+
"react-day-picker": "^9.14.0",
|
|
78
|
+
"react-dom": "^19.2.4",
|
|
79
|
+
"react-hook-form": "^7.72.0",
|
|
80
|
+
"react-live": "^4.1.8",
|
|
81
|
+
"react-resizable-panels": "^4.8.0",
|
|
82
|
+
"react-router-dom": "^7.13.2",
|
|
83
|
+
"rehype-parse": "^9.0.1",
|
|
84
|
+
"rehype-pretty-code": "^0.14.3",
|
|
85
|
+
"rehype-react": "^8.0.0",
|
|
86
|
+
"shiki": "^4.0.2",
|
|
87
|
+
"sonner": "^2.0.7",
|
|
88
|
+
"storybook": "^10.3.4",
|
|
89
|
+
"tailwind-merge": "^3.5.0",
|
|
90
|
+
"tailwind-variants": "^3.2.2",
|
|
91
|
+
"tailwindcss": "^4.2.2",
|
|
92
|
+
"tailwindcss-animate": "^1.0.7",
|
|
93
|
+
"tw-animate-css": "^1.4.0",
|
|
94
|
+
"typescript": "~5.9.3",
|
|
95
|
+
"typescript-eslint": "^8.57.0",
|
|
96
|
+
"unified": "^11.0.5",
|
|
97
|
+
"vite": "^8.0.1",
|
|
98
|
+
"vitest": "^4.1.2",
|
|
99
|
+
"zod": "^4.3.6"
|
|
100
|
+
},
|
|
101
|
+
"dependencies": {
|
|
102
|
+
"@recharts/devtools": "^0.0.11",
|
|
103
|
+
"keen-slider": "^6.8.6",
|
|
104
|
+
"recharts": "^3.8.1"
|
|
105
|
+
}
|
|
106
|
+
}
|