@zeroman.yang/react-auto-components 0.1.0

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.
Files changed (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +260 -0
  3. package/dist/adapters/xlsx.d.ts +7 -0
  4. package/dist/components/AutoChat/VirtualChatMessages.d.ts +16 -0
  5. package/dist/components/AutoChat/index.d.ts +4 -0
  6. package/dist/components/AutoChat/types.d.ts +89 -0
  7. package/dist/components/AutoChat/useChatScroll.d.ts +10 -0
  8. package/dist/components/AutoDialog/index.d.ts +46 -0
  9. package/dist/components/AutoForm/AutoForm.d.ts +2 -0
  10. package/dist/components/AutoForm/ChoiceField.d.ts +16 -0
  11. package/dist/components/AutoForm/FormField.d.ts +8 -0
  12. package/dist/components/AutoForm/index.d.ts +2 -0
  13. package/dist/components/AutoForm/types.d.ts +28 -0
  14. package/dist/components/AutoMenu/index.d.ts +35 -0
  15. package/dist/components/AutoSearchPanel/index.d.ts +21 -0
  16. package/dist/components/AutoTable/AutoTable.d.ts +2 -0
  17. package/dist/components/AutoTable/FilterEditor.d.ts +7 -0
  18. package/dist/components/AutoTable/SettingsPanel.d.ts +7 -0
  19. package/dist/components/AutoTable/TableHeader.d.ts +18 -0
  20. package/dist/components/AutoTable/export.d.ts +11 -0
  21. package/dist/components/AutoTable/features.d.ts +9 -0
  22. package/dist/components/AutoTable/index.d.ts +4 -0
  23. package/dist/components/AutoTable/settings.d.ts +34 -0
  24. package/dist/components/AutoTable/types.d.ts +107 -0
  25. package/dist/components/AutoTable/useTableData.d.ts +9 -0
  26. package/dist/components/AutoTable/useTableSettings.d.ts +7 -0
  27. package/dist/components/AutoTabs/index.d.ts +29 -0
  28. package/dist/core/AutoConfigProvider.d.ts +34 -0
  29. package/dist/core/config.d.ts +10 -0
  30. package/dist/core/i18n.d.ts +2 -0
  31. package/dist/core/query.d.ts +24 -0
  32. package/dist/core/types.d.ts +93 -0
  33. package/dist/index.d.ts +11 -0
  34. package/dist/index.js +3246 -0
  35. package/dist/internal/Popover.d.ts +16 -0
  36. package/dist/style.css +2 -0
  37. package/dist/xlsx.js +9 -0
  38. package/docs/auto-chat.md +89 -0
  39. package/docs/i18n/de/README.md +203 -0
  40. package/docs/i18n/de/auto-chat.md +82 -0
  41. package/docs/i18n/de/migration.md +71 -0
  42. package/docs/i18n/es/README.md +203 -0
  43. package/docs/i18n/es/auto-chat.md +82 -0
  44. package/docs/i18n/es/migration.md +71 -0
  45. package/docs/i18n/fr/README.md +203 -0
  46. package/docs/i18n/fr/auto-chat.md +82 -0
  47. package/docs/i18n/fr/migration.md +71 -0
  48. package/docs/i18n/ja/README.md +203 -0
  49. package/docs/i18n/ja/auto-chat.md +82 -0
  50. package/docs/i18n/ja/migration.md +71 -0
  51. package/docs/i18n/ko/README.md +203 -0
  52. package/docs/i18n/ko/auto-chat.md +82 -0
  53. package/docs/i18n/ko/migration.md +71 -0
  54. package/docs/i18n/pt-BR/README.md +203 -0
  55. package/docs/i18n/pt-BR/auto-chat.md +82 -0
  56. package/docs/i18n/pt-BR/migration.md +71 -0
  57. package/docs/i18n/ru/README.md +203 -0
  58. package/docs/i18n/ru/auto-chat.md +82 -0
  59. package/docs/i18n/ru/migration.md +71 -0
  60. package/docs/i18n/zh-CN/README.md +217 -0
  61. package/docs/i18n/zh-CN/auto-chat.md +82 -0
  62. package/docs/i18n/zh-CN/migration.md +71 -0
  63. package/docs/i18n/zh-TW/README.md +217 -0
  64. package/docs/i18n/zh-TW/auto-chat.md +82 -0
  65. package/docs/i18n/zh-TW/migration.md +71 -0
  66. package/docs/migration.md +71 -0
  67. package/package.json +111 -0
@@ -0,0 +1,82 @@
1
+ # AutoChat
2
+
3
+ [English](../../auto-chat.md) | [简体中文](../zh-CN/auto-chat.md) | **繁體中文** | [日本語](../ja/auto-chat.md) | [한국어](../ko/auto-chat.md) | [Español](../es/auto-chat.md) | [Français](../fr/auto-chat.md) | [Deutsch](../de/auto-chat.md) | [Português (Brasil)](../pt-BR/auto-chat.md) | [Русский](../ru/auto-chat.md)
4
+
5
+ 提供可選輸入框、串流跟隨與更早歷史載入的對話版面。AutoChat 不新增執行時期相依性,也不會發送網路請求、持久化訊息、解析 Markdown、執行工具輸出或渲染原始 HTML。
6
+
7
+ ## 用法
8
+
9
+ ```tsx
10
+ import { useState } from "react";
11
+ import { AutoChat, type AutoChatMessage } from "@zeroman.yang/react-auto-components";
12
+ import "@zeroman.yang/react-auto-components/style.css";
13
+
14
+ export function Conversation() {
15
+ const [messages, setMessages] = useState<AutoChatMessage[]>([]);
16
+ return (
17
+ <AutoChat
18
+ height={600}
19
+ messages={messages}
20
+ onSend={async (text) => {
21
+ setMessages((current) => [
22
+ ...current,
23
+ { id: crypto.randomUUID(), role: "user", content: text },
24
+ ]);
25
+ // 在此呼叫你的服務並更新 messages。
26
+ }}
27
+ />
28
+ );
29
+ }
30
+ ```
31
+
32
+ ## 自帶渲染器
33
+
34
+ 將 React 節點作為 `content` 傳入,或以應用自有欄位擴充 `AutoChatMessage` 並提供 `renderMessage(message, { index })`。在此串接既有的 Markdown 渲染器、程式碼檢視器、附件卡片或工具結果元件。AutoChat 不解釋這些格式;純字串以文字呈現。宿主渲染器負責連結、HTML 與所有互動內容。
35
+
36
+ 每則訊息都有穩定唯一的 `id` 與 `role`:`user`、`assistant`、`system`、`tool` 或 `error`。可選的 `author`、`avatar`、`meta` 與 `streaming` 自訂訊息外殼;`renderActions(message, context)` 提供訊息操作。串流回覆更新時保持同一 ID,並以不可變方式替換 messages 陣列。
37
+
38
+ ## 行為與屬性
39
+
40
+ | 屬性 | 行為 |
41
+ | --- | --- |
42
+ | `height` | CSS 高度,預設 `100%`。為父容器給定高度,或傳數字如 `600`。歷史記錄在元件內部捲動。 |
43
+ | `autoFollow` | 預設 `true`。跟隨底部的新內容與高度變化;讀者上捲時暫停。**回到最新** 恢復跟隨。 |
44
+ | `hasMore`, `onLoadOlder`, `loadingOlder` | 顯示更早歷史按鈕。以穩定 ID 前插訊息;可見訊息保持錨定。請求會去重,失敗的請求可重試。 |
45
+ | `onSend(text)` | 啟用輸入框。接收原始非空文字;可回傳 Promise。接受則清空草稿;拒絕則保留草稿並顯示通用錯誤。較新的草稿不會被較舊的發送清空。 |
46
+ | `value`, `defaultValue`, `onValueChange` | 受控或本機輸入框內容。使用受控值時由宿主套用變更。 |
47
+ | `generating`, `onStop` | 生成期間停用發送並提供停止按鈕。宿主必須自行取消串流/請求並更新 `generating`。 |
48
+ | `sendOnEnter` | 預設 `true`;Shift+Enter 換行。輸入法組字事件與確認鍵不會送出。設為 `false` 僅按鈕發送。 |
49
+ | `disabled`, `composer` | 停用內建編輯器,或在使用外部編輯器時隱藏(`composer={false}`)。 |
50
+ | `conversationKey` | 切換對話時重設本機草稿、進行中 UI 與捲動。受控值與取消仍由宿主管理。 |
51
+ | `header`, `footer`, `empty`, `composerExtra` | React 內容插槽。 |
52
+ | `size`, `density` | 覆蓋全域 `AutoConfigProvider` 設定。 |
53
+ | `labels` | 覆蓋內建英文文案。Provider 也會翻譯 `chat.send`、`chat.latest` 等 `chat.*` 鍵。 |
54
+ | `onSendError`, `onLoadError` | 接收原始錯誤供應用記錄;內部錯誤細節不會自動顯示。 |
55
+
56
+ 大量歷史記錄時設定 `virtual`,重用套件既有的 TanStack Virtual 相依性。只有可見訊息與少量 overscan 視窗會掛載,動態列高會被量測。必要時調整 `estimatedMessageHeight`(預設 `120`)與 `overscan`(預設 `6`)。前插歷史時保持訊息 ID 穩定。虛擬模式下,需要跨列卸載存續的互動狀態請保存在宿主。一般對話預設使用非虛擬版面。
57
+
58
+ **大型歷史** 示範載入 1,000、10,000 或 50,000 筆可變高度訊息,回報實際掛載訊息數,並支援附加 100 筆、串流、載入更早歷史與跳至任一端。
59
+
60
+ `AutoChatHandle` ref 暴露 `scrollToBottom()`、`scrollToMessage(id)`(回傳 ID 是否存在)、`focusComposer()` 與 `getScrollElement()`。歷史區域使用可鍵盤聚焦的日誌;獨立狀態區播報發送/生成狀態,不會播報每個串流 token。
61
+
62
+ 本機串流模擬、取消、自訂工具卡片、分頁、發送失敗與十語言 UI 見[可執行示範](../../../test-project/src/examples/ChatDemo.tsx)。
63
+
64
+ ## 示範中的富渲染
65
+
66
+ 私有 `test-project` 安裝了 [react-markdown](https://github.com/remarkjs/react-markdown) 與 [remark-gfm](https://github.com/remarkjs/remark-gfm)。這些相依性不屬於元件庫。格式選擇器可插入 Markdown(標題、強調、任務清單與 GFM 表格)、程式碼、JSON、資料表、本機圖片或可互動的 React 評審卡片。
67
+
68
+ `ChatRenderers.tsx` 依結構化訊息資料選擇 React 元件;`ChatTaskCard.tsx` 示範本機互動狀態。Markdown 使用 `skipHtml` 與函式庫預設的 URL 處理,不會編譯 JSX 或執行程式碼區塊。同一個 Markdown 渲染器也展示串流回覆。自訂元件由應用提供,不會從可執行訊息文字實例化。
69
+
70
+ ```tsx
71
+ import Markdown from "react-markdown";
72
+ import remarkGfm from "remark-gfm";
73
+
74
+ <AutoChat
75
+ messages={messages}
76
+ renderMessage={(message) => (
77
+ <Markdown remarkPlugins={[remarkGfm]} skipHtml>
78
+ {String(message.content ?? "")}
79
+ </Markdown>
80
+ )}
81
+ />
82
+ ```
@@ -0,0 +1,71 @@
1
+ # 元件整合指南
2
+
3
+ [English](../../migration.md) | [简体中文](../zh-CN/migration.md) | **繁體中文** | [日本語](../ja/migration.md) | [한국어](../ko/migration.md) | [Español](../es/migration.md) | [Français](../fr/migration.md) | [Deutsch](../de/migration.md) | [Português (Brasil)](../pt-BR/migration.md) | [Русский](../ru/migration.md)
4
+
5
+ 透過 React 泛型、回呼與 Provider 來設定元件。下表將常見的應用需求對應到公開 API 與可執行的範例。
6
+
7
+ | 原始使用情境 | React API | 可執行範例/測試 |
8
+ | --- | --- | --- |
9
+ | 表單欄位與 v-model | `fields: Field<T>[]`、`value/onChange` 或 `defaultValue` | `test-project/src/examples/FormDemo.tsx` 的表單頁面;`tests/form*.test.tsx` |
10
+ | 插槽與附加內容 | 欄位 `render`、資料行 `render/header`、ReactNode | 表單/表格頁面 |
11
+ | 表單實例操作 | `ref.validate/reset/getValues/setValue/focus` | `tests/form.test.tsx` |
12
+ | 搜尋、關聯條件、RSQL | `buildQuery`、`matchesQuery`、`serializeRsql` | 搜尋頁面;`tests/query.test.ts` |
13
+ | 本機/遠端表格資料 | `data` 或 `dataSource(query,{signal})` | 表格頁面;`tests/table.test.tsx` |
14
+ | 版面/篩選/排序/匯出預設組態 | 設定對話方塊中的獨立預設組態,可透過 `versions` 分別失效 | 表格頁面;`tests/table-settings.test.ts` |
15
+ | 樹狀結構、詳細資料、彙總、合併儲存格 | `getChildren/renderExpanded`、資料行的 `summary/merge` | 樹狀與展開範例;`tests/table-advanced.test.tsx` |
16
+ | 新增、編輯、刪除 | `formFields` 與 `onAdd/onEdit/onDelete` | 瀏覽器 CRUD 測試 |
17
+ | 命令式對話方塊 | `AutoDialogProvider` + `useAutoDialog().open()` | 對話方塊頁面;`tests/dialog.test.tsx` |
18
+ | 分頁與巢狀分頁 | `AutoTabs` 的 items、value/onChange、keepMounted | 分頁頁面;`tests/tabs.test.tsx` |
19
+ | 聊天訊息清單與對話介面 | `AutoChat`、`messages`、`onSend`、`renderMessage` | `test-project/src/examples/Chat*.tsx` 聊天頁面;`tests/chat.test.tsx` |
20
+
21
+ ## 欄位型別
22
+
23
+ `input/email/textarea/integer/float/percentage/progress/switch/select/select-v2/radio/checkbox/cascader/autocomplete/date/datetime/daterange/datetimerange/upload/text/title/tip/button/append/custom`。
24
+
25
+ `select-v2` 將選項虛擬化。日期範圍使用兩個具有獨立標籤的原生輸入框;`dateValue` 用來選擇字串或時間戳記。數字輸入允許編輯過程中的中間狀態;請使用欄位規則,在提交時驗證業務限制。`rules` 支援非同步驗證,隱藏欄位則跳過驗證。選項會保留數字/布林值,不會強制轉為字串。
26
+
27
+ ```tsx
28
+ const fields: Field<User>[] = [
29
+ { name: 'name', label: '姓名', required: true },
30
+ { name: 'note', label: '備註', hidden: values => !values.enabled,
31
+ render: ({ value, onChange, disabled }) =>
32
+ <textarea disabled={disabled} value={String(value ?? '')}
33
+ onChange={event => onChange(event.target.value)} /> },
34
+ ];
35
+ ```
36
+
37
+ 完整 API 請參閱匯出的 TypeScript 型別。`Field<T>` 綁定 T 的實際鍵值;標題與提示等結構性項目不需要資料屬性。
38
+
39
+ ## 伺服器端資料來源
40
+
41
+ ```tsx
42
+ const dataSource: DataSource<User> = async (query, { signal }) => {
43
+ const response = await fetch('/api/users/search', {
44
+ method: 'POST', signal,
45
+ headers: { 'Content-Type': 'application/json' },
46
+ body: JSON.stringify(query),
47
+ });
48
+ if (!response.ok) throw new Error('載入失敗');
49
+ return response.json(); // { rows: User[], total: number }
50
+ };
51
+ ```
52
+
53
+ 頁面索引從 0 開始。`sort` 是有序的欄位陣列;`filter` 是結構化查詢樹。元件會取消舊請求,並防止延遲回應覆寫較新的查詢。當資料來源閉包外的業務條件變更時,請呼叫表格的 `ref.refresh()`。請保持資料來源函式的參照穩定,以避免不必要的請求。RSQL 序列化只是供需要此格式的後端使用的介接器,不會執行查詢字串。
54
+
55
+ ## 應用程式上傳與持久化
56
+
57
+ 欄位的 `upload(files, signal)` 會在應用程式儲存檔案後回傳欄位值。元件負責顯示上傳失敗;呼叫端提供上傳 URL、驗證與物件儲存政策。
58
+
59
+ ```tsx
60
+ <AutoConfigProvider config={{
61
+ namespace: 'tenant-admin',
62
+ canAccess: access => !access.permissions?.length || access.permissions.every(p => myPermissions.includes(p)),
63
+ settings: {
64
+ load: key => api.loadTableSettings(key),
65
+ save: (key, settings) => api.saveTableSettings(key, settings),
66
+ },
67
+ notify: (message, level) => showToast(message, level),
68
+ }}>{children}</AutoConfigProvider>
69
+ ```
70
+
71
+ 本機變更會立即套用;遠端儲存會依序執行,失敗後可選擇重試。變更已持久化設定的格式時,請使用新的 table id 或版本,以避免載入不相容的設定。
@@ -0,0 +1,71 @@
1
+ # Component integration guide
2
+
3
+ **English** | [简体中文](i18n/zh-CN/migration.md) | [繁體中文](i18n/zh-TW/migration.md) | [日本語](i18n/ja/migration.md) | [한국어](i18n/ko/migration.md) | [Español](i18n/es/migration.md) | [Français](i18n/fr/migration.md) | [Deutsch](i18n/de/migration.md) | [Português (Brasil)](i18n/pt-BR/migration.md) | [Русский](i18n/ru/migration.md)
4
+
5
+ Configure components through React generics, callbacks, and providers. The following table maps common application needs to the public APIs and runnable examples.
6
+
7
+ | Original use case | React API | Runnable example / test |
8
+ | --- | --- | --- |
9
+ | Form fields and v-model | `fields: Field<T>[]`, `value/onChange`, or `defaultValue` | Form page in `test-project/src/examples/FormDemo.tsx`; `tests/form*.test.tsx` |
10
+ | Slots and appended content | Field `render`, column `render/header`, ReactNode | Form/table pages |
11
+ | Form instance operations | `ref.validate/reset/getValues/setValue/focus` | `tests/form.test.tsx` |
12
+ | Search, related conditions, RSQL | `buildQuery`, `matchesQuery`, `serializeRsql` | Search page; `tests/query.test.ts` |
13
+ | Local/remote table data | Either `data` or `dataSource(query,{signal})` | Table page; `tests/table.test.tsx` |
14
+ | Layout/filter/sort/export presets | Independent presets in the settings dialog, invalidated separately by `versions` | Table page; `tests/table-settings.test.ts` |
15
+ | Trees, details, summaries, merged cells | `getChildren/renderExpanded`, column `summary/merge` | Tree and expansion examples; `tests/table-advanced.test.tsx` |
16
+ | Add, edit, delete | `formFields` and `onAdd/onEdit/onDelete` | Browser CRUD tests |
17
+ | Imperative dialogs | `AutoDialogProvider` + `useAutoDialog().open()` | Dialog page; `tests/dialog.test.tsx` |
18
+ | Tabs and nested tabs | `AutoTabs` items, value/onChange, keepMounted | Tabs page; `tests/tabs.test.tsx` |
19
+ | Chat message lists and conversation UI | `AutoChat`, `messages`, `onSend`, `renderMessage` | Chat pages in `test-project/src/examples/Chat*.tsx`; `tests/chat.test.tsx` |
20
+
21
+ ## Field types
22
+
23
+ `input/email/textarea/integer/float/percentage/progress/switch/select/select-v2/radio/checkbox/cascader/autocomplete/date/datetime/daterange/datetimerange/upload/text/title/tip/button/append/custom`.
24
+
25
+ `select-v2` virtualizes options. Date ranges use two native inputs with separate labels; `dateValue` chooses strings or timestamps. Numeric inputs allow intermediate editing states; use field rules to validate business constraints on submission. `rules` supports async validation, while hidden fields skip validation. Options preserve numeric/boolean values instead of coercing them to strings.
26
+
27
+ ```tsx
28
+ const fields: Field<User>[] = [
29
+ { name: 'name', label: 'Name', required: true },
30
+ { name: 'note', label: 'Note', hidden: values => !values.enabled,
31
+ render: ({ value, onChange, disabled }) =>
32
+ <textarea disabled={disabled} value={String(value ?? '')}
33
+ onChange={event => onChange(event.target.value)} /> },
34
+ ];
35
+ ```
36
+
37
+ See the exported TypeScript types for the full API. `Field<T>` binds to actual keys of T; structural items such as titles and tips do not need a data property.
38
+
39
+ ## Server-side data sources
40
+
41
+ ```tsx
42
+ const dataSource: DataSource<User> = async (query, { signal }) => {
43
+ const response = await fetch('/api/users/search', {
44
+ method: 'POST', signal,
45
+ headers: { 'Content-Type': 'application/json' },
46
+ body: JSON.stringify(query),
47
+ });
48
+ if (!response.ok) throw new Error('Failed to load');
49
+ return response.json(); // { rows: User[], total: number }
50
+ };
51
+ ```
52
+
53
+ Page indexes start at 0. `sort` is an ordered array of fields; `filter` is a structured query tree. Components cancel old requests and prevent late responses from overwriting newer queries. Call the table's `ref.refresh()` when business conditions outside the data-source closure change. Keep the data-source function stable to avoid unnecessary requests. RSQL serialization is only an adapter for backends that require it; it does not execute query strings.
54
+
55
+ ## Application uploads and persistence
56
+
57
+ A field's `upload(files, signal)` returns the field value after the application saves the files. The component displays upload failures; callers provide upload URLs, authentication, and object-storage policies.
58
+
59
+ ```tsx
60
+ <AutoConfigProvider config={{
61
+ namespace: 'tenant-admin',
62
+ canAccess: access => !access.permissions?.length || access.permissions.every(p => myPermissions.includes(p)),
63
+ settings: {
64
+ load: key => api.loadTableSettings(key),
65
+ save: (key, settings) => api.saveTableSettings(key, settings),
66
+ },
67
+ notify: (message, level) => showToast(message, level),
68
+ }}>{children}</AutoConfigProvider>
69
+ ```
70
+
71
+ Local changes apply immediately; remote saves run serially, with a retry option after failures. When changing persisted settings formats, use a new table id or version to avoid loading incompatible settings.
package/package.json ADDED
@@ -0,0 +1,111 @@
1
+ {
2
+ "name": "@zeroman.yang/react-auto-components",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "files": [
6
+ "dist",
7
+ "README.md",
8
+ "LICENSE",
9
+ "docs/migration.md",
10
+ "docs/i18n/*/README.md",
11
+ "docs/i18n/*/migration.md",
12
+ "docs/auto-chat.md",
13
+ "docs/i18n/*/auto-chat.md"
14
+ ],
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "import": "./dist/index.js"
19
+ },
20
+ "./style.css": "./dist/style.css",
21
+ "./xlsx": {
22
+ "types": "./dist/adapters/xlsx.d.ts",
23
+ "import": "./dist/xlsx.js"
24
+ }
25
+ },
26
+ "sideEffects": [
27
+ "**/*.css"
28
+ ],
29
+ "scripts": {
30
+ "dev": "vite --config vite.demo.config.ts",
31
+ "build": "vite build && tsc -p tsconfig.build.json && node scripts/finalize-build.mjs",
32
+ "build:demo": "vite build --config vite.demo.config.ts",
33
+ "demo:build": "pnpm build && pnpm prepare:test-project && pnpm build:demo",
34
+ "demo:screenshot": "node scripts/update-demo-screenshot.mjs",
35
+ "demo:update": "node scripts/update-demo.mjs",
36
+ "test": "vitest run",
37
+ "typecheck": "tsc --noEmit",
38
+ "check:public": "node scripts/check-public-source.mjs",
39
+ "test:e2e": "pnpm --dir test-project test",
40
+ "prepare:test-project": "node scripts/prepare-test-project.mjs",
41
+ "format": "prettier --write src tests test-project/src test-project/tests *.ts",
42
+ "prepack": "pnpm build",
43
+ "prepublishOnly": "pnpm typecheck && pnpm test"
44
+ },
45
+ "peerDependencies": {
46
+ "react": ">=19.0.0 <20",
47
+ "react-dom": ">=19.0.0 <20"
48
+ },
49
+ "engines": {
50
+ "node": ">=22.12.0"
51
+ },
52
+ "packageManager": "pnpm@12.5.1",
53
+ "dependencies": {
54
+ "@floating-ui/react": "^0.27.20",
55
+ "@radix-ui/react-context-menu": "^2.3.7",
56
+ "@radix-ui/react-dialog": "^1.1.23",
57
+ "@radix-ui/react-tabs": "^1.1.21",
58
+ "@tanstack/react-form": "^1.33.5",
59
+ "@tanstack/react-table": "^9.2.4",
60
+ "@tanstack/react-virtual": "^3.14.13"
61
+ },
62
+ "devDependencies": {
63
+ "@babel/core": "^8.0.6",
64
+ "@playwright/test": "^1.63.0",
65
+ "@rolldown/plugin-babel": "^0.2.4",
66
+ "@testing-library/jest-dom": "^7.0.1",
67
+ "@testing-library/react": "^16.3.3",
68
+ "@testing-library/user-event": "^14.6.7",
69
+ "@types/babel__core": "^7.20.5",
70
+ "@types/node": "^26.6.3",
71
+ "@types/react": "^19.3.0",
72
+ "@types/react-dom": "^19.3.0",
73
+ "@vitejs/plugin-react": "^6.1.1",
74
+ "babel-plugin-react-compiler": "^1.0.0",
75
+ "jsdom": "^30.1.1",
76
+ "prettier": "^3.9.9",
77
+ "react": ">=19.0.0 <20",
78
+ "react-dom": ">=19.0.0 <20",
79
+ "typescript": "^7.0.2",
80
+ "vite": "^8.3.1",
81
+ "vitest": "^5.0.2"
82
+ },
83
+ "optionalDependencies": {
84
+ "exceljs": "^4.4.0"
85
+ },
86
+ "description": "Schema-driven React 19 components for forms, tables, search, dialogs, menus, tabs and chat.",
87
+ "license": "MIT",
88
+ "author": "Zeroman",
89
+ "repository": {
90
+ "type": "git",
91
+ "url": "git+https://github.com/Zeroman/react-auto-components.git"
92
+ },
93
+ "homepage": "https://github.com/Zeroman/react-auto-components#readme",
94
+ "bugs": {
95
+ "url": "https://github.com/Zeroman/react-auto-components/issues"
96
+ },
97
+ "keywords": [
98
+ "react",
99
+ "typescript",
100
+ "components",
101
+ "form",
102
+ "table",
103
+ "schema-driven",
104
+ "virtualization",
105
+ "chat"
106
+ ],
107
+ "publishConfig": {
108
+ "access": "public",
109
+ "registry": "https://registry.npmjs.org/"
110
+ }
111
+ }