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 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, được phân phối trực tiếp vào dự án của bạn thông qua CLI. Không cần cài đặt dependencies cồng kềnh, bạn hoàn toàn kiểm soát nguồn của mình (tương tự shadcn/ui).
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 nguồn không runtime ẩn, không black box (tương tự shadcn/ui).
4
4
 
5
5
  ---
6
6
 
7
- ## 🚀 Yêu cầu hệ thống
7
+ ## Yêu cầu
8
8
 
9
- - **Node.js**: Phiên bản 18 trở lên.
10
- - **Framework**: React + Vite + TypeScript.
11
- - **Styling**: Tailwind CSS v4 (hoặc v3).
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
- ## 📦 Bắt đầu nhanh
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 sẽ thực hiện một chuỗi các thao tác tự động:
26
- - **Cài đặt thư viện**: `@base-ui/react`, `tailwind-variants`, `clsx`, `tailwind-merge`, `lucide-react`, ...
27
- - **Cấu hình Vite**: Tự động thêm alias `@/`, `@components/`, `@lib/`, ... vào `vite.config.ts`.
28
- - **Cấu hình TypeScript**: Thêm `paths` tương ứng vào `tsconfig.json`.
29
- - **Core Components**: Copy các file tiện ích như `cn.ts`, `ThemeProvider.tsx`, `themes.ts` và biến CSS theme vào dự án.
30
- - **Patching Entry**: Tự động bọc ứng dụng của bạn trong `<ThemeProvider>` tại file `src/main.tsx`.
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
- ### 2. Thêm Component
33
+ ---
35
34
 
36
- Sử dụng lệnh `add` để tải component bạn cần:
35
+ ### 2. Thêm component
37
36
 
38
37
  ```bash
39
38
  npx basuicn add button
40
- npx basuicn add button input switch # Thêm nhiều component cùng lúc
41
- npx basuicn add toast # Tự động thêm <Toaster /> vào main.tsx
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
- > **Lưu ý**: CLI sẽ tự động nhận diện và tải về các component phụ thuộc (ví dụ `add select` sẽ tự tải thêm `popover`).
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
- ### 3. Cập nhật & So sánh (Update & Diff)
51
+ ---
49
52
 
50
- Nếu phiên bản mới của component từ thư viện gốc, bạn có thể kiểm tra và cập nhật:
53
+ ### 3. Cập nhật component
51
54
 
52
55
  ```bash
53
- npx basuicn diff button # Xem sự khác biệt giữa code local và bản gốc trên registry
54
- npx basuicn update button # Ghi đè phiên bản cục bộ bằng bản mới nhất
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. Kiểm tra sức khỏe dự án (Doctor)
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
- Nếu bạn gặp lỗi về import hoặc cấu hình, hãy chạy lệnh sau để CLI kiểm tra và gợi ý cách sửa lỗi:
72
+ ### 5. Kiểm tra cấu hình (Doctor)
62
73
 
63
- ```bash\nnpx basuicn doctor
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
- ## 🛠 Danh sách các lệnh (Commands)
82
+ ## Danh sách lệnh
69
83
 
70
84
  | Lệnh | Mô tả |
71
85
  |------|-------|
72
- | `init` | Thiết lập môi trường dự án ban đầu. |
73
- | `add <name>` | Thêm component vào thư mục `src/components/ui/`. |
74
- | `update <name>` | Cập nhật component lên phiên bản mới nhất. |
75
- | `diff <name>` | So sánh code hiện tại với bản gốc. |
76
- | `remove <name>` | Xóa component khỏi dự án. |
77
- | `list` | Xem danh sách tất cả các component có sẵn. |
78
- | `doctor` | Kiểm tra cấu hình và các file core của dự án. |
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) dọn thư mục trống |
91
+ | `list` | Liệt 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
- ## 📂 Tùy chọn (Options)
96
+ | Flag | 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
- - `--force`: Ghi đè các file đã tồn tại nếu có xung đột khi `add` hoặc `init`.
85
- - `--local`: Chỉ dành cho phát triển — Đọc `registry.json` từ thư mục cục bộ thay vì từ GitHub.
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
- ## 👨‍💻 Dành cho Maintainers
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
- Nếu bạn muốn đóng góp hoặc tự xây dựng registry riêng:
218
+ ## License
92
219
 
93
- 1. **Biên dịch CLI**: `npm run build:cli`
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 Documentation
1
+ # basuicn CLI
2
2
 
3
- Bộ công cụ dòng lệnh mạnh mẽ để quản lý các component UI. Tương thích hoàn toàn với dự án React + Vite + TypeScript + Tailwind CSS.
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
- ## 🚀 Cài đặt & Khởi tạo
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
- Lệnh này sẽ chuẩn bị mọi thứ cần thiết: dependencies, path aliases, Tailwind v4 configuration, `ThemeProvider` để quản lý giao diện sáng/tối.
11
+ Tự động cài packages, cấu hình Vite/Next.js, Tailwind CSS v4, path aliases và ThemeProvider.
14
12
 
15
- ## 🛠 Lệnh thông dụng
13
+ ## Các lệnh
16
14
 
17
- ### Thêm Component
18
15
  ```bash
19
- npx basuicn add <component-name>
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
- ### Quản lý phiên bản
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
- ## ⚙️ Cơ chế hoạt động
41
+ ## Bảo mật
34
42
 
35
- CLI hoạt động dựa trên một file `registry.json` phân phối từ GitHub. Khi bạn thêm một component:
36
- 1. CLI tải Metadata của component đó.
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 runtime dependency sau khi cài đặt bạn sở hữu hoàn toàn nguồn
44
+ - nguồn mở 100%, thoải mái tùy chỉnh
41
45
 
42
- ## 🛡 Bảo mật & Tin cậy
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.7";
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.7",
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
- "dev": "vite",
17
- "build": "tsc -b && vite build",
18
- "build:cli": "node scripts/build-cli.mjs",
19
- "lint": "eslint .",
20
- "preview": "vite preview",
21
- "test": "vitest",
22
- "test:ui": "vitest --ui",
23
- "test:coverage": "vitest run --coverage",
24
- "registry:build": "npx -y tsx scripts/build-registry.ts",
25
- "theme:sync": "npx -y tsx scripts/generate-theme-css.ts",
26
- "ui:add": "npx -y tsx scripts/ui-cli.ts add",
27
- "storybook": "storybook dev -p 6006",
28
- "build-storybook": "storybook build"
29
- },
30
- "devDependencies": {
31
- "@babel/core": "^7.29.0",
32
- "@base-ui/react": "^1.3.0",
33
- "@chromatic-com/storybook": "^5.1.1",
34
- "@codesandbox/sandpack-react": "^2.20.0",
35
- "@eslint/js": "^9.39.4",
36
- "@fontsource-variable/geist": "^5.2.8",
37
- "@hookform/resolvers": "^5.2.2",
38
- "@monaco-editor/react": "^4.7.0",
39
- "@rolldown/plugin-babel": "^0.2.1",
40
- "@storybook/addon-a11y": "^10.3.4",
41
- "@storybook/addon-docs": "^10.3.4",
42
- "@storybook/addon-onboarding": "^10.3.4",
43
- "@storybook/addon-vitest": "^10.3.4",
44
- "@storybook/react-vite": "^10.3.4",
45
- "@tailwindcss/vite": "^4.2.2",
46
- "@tanstack/react-table": "^8.21.3",
47
- "@tanstack/react-virtual": "^3.13.23",
48
- "@testing-library/jest-dom": "^6.9.1",
49
- "@testing-library/react": "^16.3.2",
50
- "@testing-library/user-event": "^14.6.1",
51
- "@types/babel__core": "^7.20.5",
52
- "@types/hast": "^3.0.4",
53
- "@types/node": "^24.12.0",
54
- "@types/react": "^19.2.14",
55
- "@types/react-dom": "^19.2.3",
56
- "@vitejs/plugin-react": "^6.0.1",
57
- "@vitest/browser-playwright": "^4.1.2",
58
- "@vitest/coverage-v8": "^4.1.2",
59
- "@vitest/ui": "^4.1.2",
60
- "autoprefixer": "^10.4.27",
61
- "babel-plugin-react-compiler": "^1.0.0",
62
- "clsx": "^2.1.1",
63
- "date-fns": "^4.1.0",
64
- "dayjs": "^1.11.20",
65
- "eslint": "^9.39.4",
66
- "eslint-plugin-react-hooks": "^7.0.1",
67
- "eslint-plugin-react-refresh": "^0.5.2",
68
- "eslint-plugin-storybook": "^10.3.4",
69
- "globals": "^17.4.0",
70
- "jsdom": "^29.0.1",
71
- "lucide-react": "^0.577.0",
72
- "playwright": "^1.59.1",
73
- "postcss": "^8.5.8",
74
- "react": "^19.2.4",
75
- "react-day-picker": "^9.14.0",
76
- "react-dom": "^19.2.4",
77
- "react-hook-form": "^7.72.0",
78
- "react-live": "^4.1.8",
79
- "react-resizable-panels": "^4.8.0",
80
- "react-router-dom": "^7.13.2",
81
- "rehype-parse": "^9.0.1",
82
- "rehype-pretty-code": "^0.14.3",
83
- "rehype-react": "^8.0.0",
84
- "shiki": "^4.0.2",
85
- "sonner": "^2.0.7",
86
- "storybook": "^10.3.4",
87
- "tailwind-merge": "^3.5.0",
88
- "tailwind-variants": "^3.2.2",
89
- "tailwindcss": "^4.2.2",
90
- "tailwindcss-animate": "^1.0.7",
91
- "tw-animate-css": "^1.4.0",
92
- "typescript": "~5.9.3",
93
- "typescript-eslint": "^8.57.0",
94
- "unified": "^11.0.5",
95
- "vite": "^8.0.1",
96
- "vitest": "^4.1.2",
97
- "zod": "^4.3.6"
98
- },
99
- "dependencies": {
100
- "@recharts/devtools": "^0.0.11",
101
- "keen-slider": "^6.8.6",
102
- "recharts": "^3.8.1"
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
+ }