cdp-material-sdk 0.0.5

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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +67 -0
  3. package/dist/DataScope-B7ffH5qN.js +106 -0
  4. package/dist/components/core/types.d.ts +16 -0
  5. package/dist/components/data-scope/DataScope.d.ts +45 -0
  6. package/dist/constants/event.d.ts +22 -0
  7. package/dist/context/DataContainerRuntimeContext.d.ts +16 -0
  8. package/dist/context/DataScopeContext.d.ts +51 -0
  9. package/dist/context/PageContext.d.ts +26 -0
  10. package/dist/hooks/useConcurrentLoading.d.ts +16 -0
  11. package/dist/hooks/useDataContainer.d.ts +61 -0
  12. package/dist/hooks/useDualLoading.d.ts +22 -0
  13. package/dist/host-react.d.ts +15 -0
  14. package/dist/host-react.js +11 -0
  15. package/dist/index.d.ts +2 -0
  16. package/dist/index.js +42 -0
  17. package/dist/plugin.d.ts +45 -0
  18. package/dist/portable.d.ts +20 -0
  19. package/dist/portable.js +33 -0
  20. package/dist/protocol/adapter.d.ts +50 -0
  21. package/dist/protocol/common-schemas.d.ts +64 -0
  22. package/dist/protocol/events.d.ts +48 -0
  23. package/dist/protocol/manifest-types.d.ts +10 -0
  24. package/dist/protocol/manifest.d.ts +144 -0
  25. package/dist/protocol/traits.d.ts +7 -0
  26. package/dist/types/category.d.ts +15 -0
  27. package/dist/utils/mergeInitialValue.d.ts +10 -0
  28. package/dist/validateManifest-CYqjvQe_.js +355 -0
  29. package/dist/validation/validateManifest.d.ts +59 -0
  30. package/docs/component-development/FAQ.md +203 -0
  31. package/docs/component-development/README.md +176 -0
  32. package/docs/component-development/getting-started/01-/345/210/233/345/273/272/346/210/226/346/216/245/345/205/245/347/273/204/344/273/266/345/272/223/345/267/245/347/250/213.md +172 -0
  33. package/docs/component-development/getting-started/02-/345/210/233/345/273/272/347/273/204/344/273/266/345/214/205/345/271/266/346/263/250/345/206/214.md +185 -0
  34. package/docs/component-development/getting-started/03-/345/274/200/345/217/221/346/234/200/345/260/217/345/217/257/350/277/220/350/241/214/347/273/204/344/273/266.md +196 -0
  35. package/docs/component-development/getting-started/04-/346/236/204/345/273/272/345/217/221/345/270/203/344/270/216/345/256/277/344/270/273/346/216/245/345/205/245.md +147 -0
  36. package/docs/component-development/getting-started/05-/350/207/252/346/243/200/344/270/216/346/216/222/351/224/231.md +186 -0
  37. package/docs/component-development/recipes//344/275/277/347/224/250Adapter/351/200/202/351/205/215/347/273/204/344/273/266API.md +131 -0
  38. package/docs/component-development/recipes//345/243/260/346/230/216/344/272/213/344/273/266.md +229 -0
  39. package/docs/component-development/recipes//345/243/260/346/230/216/345/212/250/344/275/234/344/270/216/347/212/266/346/200/201.md +188 -0
  40. package/docs/component-development/recipes//345/243/260/346/230/216/345/270/203/345/261/200/345/256/271/345/231/250/347/273/204/344/273/266.md +221 -0
  41. package/docs/component-development/recipes//345/243/260/346/230/216/346/217/222/346/247/275.md +141 -0
  42. package/docs/component-development/recipes//345/243/260/346/230/216/346/225/260/346/215/256/345/255/227/346/256/265/347/273/204/344/273/266.md +147 -0
  43. package/docs/component-development/recipes//345/243/260/346/230/216/346/225/260/346/215/256/345/256/271/345/231/250/347/273/204/344/273/266.md +258 -0
  44. package/docs/component-development/recipes//346/216/245/345/205/245/347/254/254/344/270/211/346/226/271React/347/273/204/344/273/266/345/272/223.md +209 -0
  45. package/docs/component-development/recipes//351/205/215/347/275/256DOM/346/240/271/350/212/202/347/202/271/346/263/250/345/205/245.md +222 -0
  46. package/docs/component-development/recipes//351/205/215/347/275/256Loading/347/255/226/347/225/245.md +198 -0
  47. package/docs/component-development/recipes//351/205/215/347/275/256/350/256/276/350/256/241/345/231/250/345/205/203/344/277/241/346/201/257.md +153 -0
  48. package/docs/component-development/reference/ActionsState/346/250/241/345/236/213.md +124 -0
  49. package/docs/component-development/reference/DOM/346/240/271/350/212/202/347/202/271/346/263/250/345/205/245/346/250/241/345/236/213.md +125 -0
  50. package/docs/component-development/reference/Events/346/250/241/345/236/213.md +170 -0
  51. package/docs/component-development/reference/Loading/347/255/226/347/225/245/346/250/241/345/236/213.md +140 -0
  52. package/docs/component-development/reference/Manifest/345/255/227/346/256/265/345/217/202/350/200/203.md +251 -0
  53. package/docs/component-development/reference/SDK/345/257/274/345/205/245/350/276/271/347/225/214.md +119 -0
  54. package/docs/component-development/reference/Slots/346/250/241/345/236/213.md +110 -0
  55. package/docs/component-development/reference/Traits/350/203/275/345/212/233/346/250/241/345/236/213.md +165 -0
  56. package/docs/component-development/reference/validateManifest/346/240/241/351/252/214/350/247/204/345/210/231.md +171 -0
  57. package/docs/component-development/reference//345/274/225/346/223/216/345/237/272/347/241/200/350/203/275/345/212/233/346/250/241/345/236/213.md +70 -0
  58. package/docs/component-development/reference//347/244/272/344/276/213/344/273/243/347/240/201/347/264/242/345/274/225.md +163 -0
  59. package/package.json +67 -0
@@ -0,0 +1,171 @@
1
+ ---
2
+ type: reference
3
+ capability: validation
4
+ related:
5
+ - reference/Manifest字段参考.md
6
+ - reference/Events模型.md
7
+ - reference/ActionsState模型.md
8
+ - reference/Slots模型.md
9
+ - reference/DOM根节点注入模型.md
10
+ - reference/Loading策略模型.md
11
+ - reference/Traits能力模型.md
12
+ - getting-started/05-自检与排错.md
13
+ ---
14
+ # validateManifest 校验规则
15
+
16
+ `validateManifest()` 是 `cdp-material-sdk/portable` 提供的纯函数校验工具,可在第三方组件包工程中直接使用。
17
+
18
+ ---
19
+
20
+ ## 使用方式
21
+
22
+ ```ts
23
+ import {
24
+ validateManifest,
25
+ validateManifests,
26
+ printValidationResult,
27
+ } from 'cdp-material-sdk/portable';
28
+
29
+ const result = validateManifest(manifest);
30
+ printValidationResult(result);
31
+ ```
32
+
33
+ 返回结构:
34
+
35
+ ```ts
36
+ interface ValidationResult {
37
+ valid: boolean;
38
+ errors: ValidationError[];
39
+ warnings: ValidationError[];
40
+ }
41
+ ```
42
+
43
+ ---
44
+
45
+ ## 基础字段
46
+
47
+ | 规则 | 级别 |
48
+ |------|------|
49
+ | 缺少 `type` | error |
50
+ | 缺少 `meta` | error |
51
+ | 缺少 `meta.title` | error |
52
+ | 缺少 `meta.category` | error |
53
+ | `meta.category` 不合法 | error |
54
+ | `meta.valueSchema.type` 不合法 | error |
55
+
56
+ ---
57
+
58
+ ## Traits 与 valueSchema
59
+
60
+ | 规则 | 级别 |
61
+ |------|------|
62
+ | 声明 `DATA_FIELD` 或 `DATA_CONTAINER`,但缺少 `meta.valueSchema` | warning |
63
+
64
+ ---
65
+
66
+ ## Events
67
+
68
+ 模型说明见 [Events 模型](./Events模型.md),任务步骤见 [声明事件](../recipes/声明事件.md)。
69
+
70
+ | 规则 | 级别 |
71
+ |------|------|
72
+ | 标准事件缺少 `type` | error |
73
+ | 标准事件类型不属于协议 | error |
74
+ | 自定义事件缺少 `type` | error |
75
+ | 自定义事件名不是 namespaced 形态 | error |
76
+ | 自定义事件缺少 `payloadSchema` | error |
77
+
78
+ ---
79
+
80
+ ## Adapter Events
81
+
82
+ | 规则 | 级别 |
83
+ |------|------|
84
+ | adapter 标准事件缺少 `type` | error |
85
+ | adapter 标准事件类型不属于协议 | error |
86
+ | adapter 标准事件未先在 `events` 声明 | error |
87
+ | adapter 标准事件缺少 `propName` | error |
88
+ | adapter 自定义事件名不是 namespaced 形态 | error |
89
+ | adapter 自定义事件未先在 `customEvents` 声明 | error |
90
+ | adapter 自定义事件缺少 `propName` | error |
91
+
92
+ ---
93
+
94
+ ## Actions
95
+
96
+ 模型说明和诊断工具见 [Actions / State 模型](./ActionsState模型.md),任务步骤见 [声明动作与状态](../recipes/声明动作与状态.md)。
97
+
98
+ | 规则 | 级别 |
99
+ |------|------|
100
+ | action 缺少 `title` | error |
101
+ | action 缺少 `returns` | warning |
102
+ | action 声明了 `params`,但 `params.type !== 'object'` | error |
103
+
104
+ ---
105
+
106
+ ## State
107
+
108
+ 模型说明和诊断工具见 [Actions / State 模型](./ActionsState模型.md)。
109
+
110
+ | 规则 | 级别 |
111
+ |------|------|
112
+ | state 缺少 `title` | error |
113
+ | state 缺少 `schema` | error |
114
+ | state `schema.type` 不合法 | error |
115
+
116
+ ---
117
+
118
+ ## Slots
119
+
120
+ 模型说明见 [Slots 模型](./Slots模型.md),任务步骤见 [声明插槽](../recipes/声明插槽.md)。
121
+
122
+ | 规则 | 级别 |
123
+ |------|------|
124
+ | slot 缺少 `title` | error |
125
+ | 动态 slot 缺少 `dynamicSource` | error |
126
+ | 动态 slot 缺少 `dynamicKey` | error |
127
+ | 作用域 slot 缺少 `scopeDescription` | warning |
128
+ | `allowedChildren` 不是字符串数组 | error |
129
+
130
+ ---
131
+
132
+ ## rootPath
133
+
134
+ 模型说明见 [DOM 根节点注入模型](./DOM根节点注入模型.md),任务步骤见 [配置 DOM 根节点注入](../recipes/配置DOM根节点注入.md)。
135
+
136
+ | 规则 | 级别 | 说明 |
137
+ |------|------|------|
138
+ | 未声明 `engine.render.injection.rootPath` | warning | 宿主会外层 `<div>` 兜底,建议显式声明 |
139
+ | 使用自定义 rootPath | warning | 提醒作者确认该路径 props 已透传到真实 DOM |
140
+
141
+ 自定义 rootPath 是合法选择。若组件已经按规则透传,可以忽略该提示。
142
+
143
+ ---
144
+
145
+ ## Loading
146
+
147
+ 当前校验工具主要覆盖 manifest 结构、events、actions、state、slots 和 rootPath。`engine.render.loading` 的策略选择需作者按 [Loading 策略模型](./Loading策略模型.md) 自检。
148
+
149
+ ---
150
+
151
+ ## Error 与 Warning 处理建议
152
+
153
+ | 级别 | 建议 |
154
+ |------|------|
155
+ | error | 必须修复 |
156
+ | warning | 需要确认是否符合预期;确认后可接受 |
157
+
158
+ ---
159
+
160
+ ## 任务路径
161
+
162
+ 本文档只保留本层级职责内容:Recipe 提供任务步骤,Reference 提供稳定模型和规则,validateManifest 文档提供校验级别事实源。
163
+
164
+ - 字段参考:[Manifest字段参考](./Manifest字段参考.md)
165
+ - 模型参考:[Events模型](./Events模型.md)
166
+ - 模型参考:[ActionsState模型](./ActionsState模型.md)
167
+ - 模型参考:[Slots模型](./Slots模型.md)
168
+ - 模型参考:[DOM根节点注入模型](./DOM根节点注入模型.md)
169
+ - 模型参考:[Loading策略模型](./Loading策略模型.md)
170
+ - 模型参考:[Traits能力模型](./Traits能力模型.md)
171
+ - 自检与排错:[05-自检与排错](../getting-started/05-自检与排错.md)
@@ -0,0 +1,70 @@
1
+ ---
2
+ type: reference
3
+ capability: engine-base
4
+ related:
5
+ - reference/DOM根节点注入模型.md
6
+ - recipes/配置DOM根节点注入.md
7
+ - reference/ActionsState模型.md
8
+ - reference/Events模型.md
9
+ ---
10
+ # 引擎基础能力模型
11
+
12
+ 引擎基础能力是宿主自动赋予所有组件的通用运行时能力。组件作者通常不需要在 manifest 中重复声明这些能力,只需要避免冲突,并确保组件根节点能承接宿主注入。
13
+
14
+ ---
15
+
16
+ ## 基础能力总览
17
+
18
+ | 能力 | 外部含义 | 组件作者需要做什么 |
19
+ |------|----------|-------------------|
20
+ | `hidden` prop | 宿主告诉组件当前是否隐藏 | 可按需读取,但不要改成其他业务语义 |
21
+ | `getHidden` action | 外部流程读取组件显隐状态 | 不要重复声明同名 action |
22
+ | `setHidden` action | 外部流程设置组件显隐状态 | 不要重复声明同名 action |
23
+ | `toggleHidden` action | 外部流程切换组件显隐状态 | 不要重复声明同名 action |
24
+ | `hidden` state | 外部表达式、编排或 AI 读取当前显隐状态 | 不要重复声明同名 state |
25
+ | `mount` / `unmount` events | 基础生命周期通知 | 普通组件不需要重复声明 |
26
+
27
+ ---
28
+
29
+ ## 与组件 manifest 的关系
30
+
31
+ 基础能力由宿主在运行时补充。第三方组件 manifest 应只声明组件自己的业务能力,例如:
32
+
33
+ - 业务 actions,例如 `refresh`、`clear`、`focus`。
34
+ - 业务 state,例如 `selectedRows`、`keyword`。
35
+ - 业务 events,例如 `valueChange`、`itemClick` 或自定义事件。
36
+
37
+ 不要为了获得显隐控制而在 manifest 中手写 `getHidden`、`setHidden`、`toggleHidden` 或 `hidden` state。
38
+
39
+ ---
40
+
41
+ ## 与 DOM 根节点注入的关系
42
+
43
+ 基础能力中的显隐、选中、定位等能力需要和组件真实 DOM 对齐。组件作者不需要关心宿主内部使用了哪些 DOM 标记,只需要确认:
44
+
45
+ - 组件声明了合适的 `engine.render.injection.rootPath`。
46
+ - rootPath 指向的 props 最终展开到了真实 DOM 节点。
47
+ - 设计器选中、显隐控制和组件视觉区域一致。
48
+
49
+ 具体配置方式见 [DOM 根节点注入模型](./DOM根节点注入模型.md) 和 [配置 DOM 根节点注入](../recipes/配置DOM根节点注入.md)。
50
+
51
+ ---
52
+
53
+ ## 与 actions / state / events 的关系
54
+
55
+ | 文档 | 说明 |
56
+ |------|------|
57
+ | [Actions / State 模型](./ActionsState模型.md) | 描述组件自定义 actions 和 state 的声明方式 |
58
+ | [Events 模型](./Events模型.md) | 描述组件自定义事件与标准事件 |
59
+ | [DOM 根节点注入模型](./DOM根节点注入模型.md) | 描述基础能力如何与真实 DOM 根节点对齐 |
60
+
61
+ ---
62
+
63
+ ## 任务路径
64
+
65
+ 本文档只保留本层级职责内容:Reference 提供稳定模型和规则,Recipe 提供任务步骤。
66
+
67
+ - 模型参考:[DOM 根节点注入模型](./DOM根节点注入模型.md)
68
+ - 任务 Recipe:[配置DOM根节点注入](../recipes/配置DOM根节点注入.md)
69
+ - 模型参考:[ActionsState模型](./ActionsState模型.md)
70
+ - 模型参考:[Events模型](./Events模型.md)
@@ -0,0 +1,163 @@
1
+ ---
2
+ type: reference
3
+ capability: examples
4
+ related:
5
+ - getting-started/03-开发最小可运行组件.md
6
+ - recipes/接入第三方React组件库.md
7
+ - recipes/声明事件.md
8
+ - recipes/声明动作与状态.md
9
+ - recipes/声明插槽.md
10
+ ---
11
+ # 示例代码索引
12
+
13
+ 本文汇总文档内可直接参考的组件开发示例。第三方组件作者不需要访问宿主源码,也不需要依赖宿主内部测试文件。
14
+
15
+ ---
16
+
17
+ ## 最小组件包
18
+
19
+ 适合第一次接入或新建独立组件包。
20
+
21
+ - **工程结构:** [创建或接入组件库工程](../getting-started/01-创建或接入组件库工程.md)
22
+ - **组件包注册:** [创建组件包并注册](../getting-started/02-创建组件包并注册.md)
23
+ - **最小组件:** [开发最小可运行组件](../getting-started/03-开发最小可运行组件.md)
24
+ - **构建交付:** [构建发布与宿主接入](../getting-started/04-构建发布与宿主接入.md)
25
+ - **交付前自检:** [自检与排错](../getting-started/05-自检与排错.md)
26
+
27
+ ---
28
+
29
+ ## 复制模板:组件包入口
30
+
31
+ ```ts
32
+ import type {
33
+ EngineComponentPackage,
34
+ EngineComponentPlugin,
35
+ } from 'cdp-material-sdk/portable';
36
+ import { AcmeText } from './components/AcmeText';
37
+ import { acmeTextManifest } from './components/AcmeText/manifest';
38
+
39
+ const pkg: EngineComponentPackage = {
40
+ id: '@acme/cdp-components',
41
+ version: '1.0.0',
42
+ components: [
43
+ {
44
+ component: AcmeText,
45
+ manifest: acmeTextManifest,
46
+ },
47
+ ],
48
+ };
49
+
50
+ const plugin: EngineComponentPlugin = {
51
+ id: pkg.id,
52
+ version: pkg.version,
53
+ install: (api) => {
54
+ api.registerPackage(pkg);
55
+ },
56
+ };
57
+
58
+ export default plugin;
59
+ ```
60
+
61
+ ---
62
+
63
+ ## 复制模板:最小 React 组件
64
+
65
+ ```tsx
66
+ import { forwardRef } from 'react';
67
+ import type { BaseUIProps } from 'cdp-material-sdk/portable';
68
+
69
+ export interface AcmeTextProps extends BaseUIProps<HTMLDivElement> {
70
+ text?: string;
71
+ }
72
+
73
+ export const AcmeText = forwardRef<HTMLDivElement, AcmeTextProps>((props, ref) => {
74
+ const { text = 'Hello CDP', slotProps } = props;
75
+
76
+ return (
77
+ <div {...slotProps?.root} ref={ref}>
78
+ {text}
79
+ </div>
80
+ );
81
+ });
82
+ ```
83
+
84
+ ---
85
+
86
+ ## 复制模板:最小 Manifest
87
+
88
+ ```ts
89
+ import {
90
+ COMPONENT_CATEGORY,
91
+ INJECT_PATH_SLOT_PROPS,
92
+ type ComponentManifest,
93
+ } from 'cdp-material-sdk/portable';
94
+
95
+ export const acmeTextManifest = {
96
+ type: 'acme.Text',
97
+ meta: {
98
+ title: '文本',
99
+ category: COMPONENT_CATEGORY.GENERAL,
100
+ },
101
+ engine: {
102
+ render: {
103
+ injection: {
104
+ rootPath: INJECT_PATH_SLOT_PROPS,
105
+ },
106
+ },
107
+ },
108
+ props: {
109
+ type: 'object',
110
+ properties: {
111
+ text: {
112
+ type: 'string',
113
+ title: '文本内容',
114
+ default: 'Hello CDP',
115
+ },
116
+ },
117
+ },
118
+ } satisfies ComponentManifest;
119
+ ```
120
+
121
+ ---
122
+
123
+ ## 按场景查示例
124
+
125
+ | 场景 | 文档 |
126
+ |------|------|
127
+ | 包装 Ant Design、ECharts 或自研 UI Kit | [接入第三方 React 组件库](../recipes/接入第三方React组件库.md) |
128
+ | 输入框、选择器、开关 | [声明数据字段组件](../recipes/声明数据字段组件.md) |
129
+ | Form、Table、List | [声明数据容器组件](../recipes/声明数据容器组件.md) |
130
+ | 点击、值变化、行点击 | [声明事件](../recipes/声明事件.md) |
131
+ | 刷新、清空、聚焦、读取选中项 | [声明动作与状态](../recipes/声明动作与状态.md) |
132
+ | 卡片区、表格列模板、列表项模板 | [声明插槽](../recipes/声明插槽.md) |
133
+ | 第三方组件 props / events 名称不同 | [使用 Adapter 适配组件 API](../recipes/使用Adapter适配组件API.md) |
134
+ | 设计器选中、显隐、根 DOM 注入 | [配置 DOM 根节点注入](../recipes/配置DOM根节点注入.md) |
135
+ | 外部控制加载态 | [配置 Loading 策略](../recipes/配置Loading策略.md) |
136
+
137
+ ---
138
+
139
+ ## SDK 校验工具
140
+
141
+ 第三方作者应从 `cdp-material-sdk/portable` 导入校验工具:
142
+
143
+ ```ts
144
+ import {
145
+ validateManifest,
146
+ validateManifests,
147
+ printValidationResult,
148
+ } from 'cdp-material-sdk/portable';
149
+ ```
150
+
151
+ 不要依赖 SDK 源码路径或宿主内部路径。
152
+
153
+ ---
154
+
155
+ ## 任务路径
156
+
157
+ 本文档只保留本层级职责内容:Recipe 提供任务步骤,Reference 提供稳定模型和规则,validateManifest 文档提供校验级别事实源。
158
+
159
+ - 关联文档:[03-开发最小可运行组件](../getting-started/03-开发最小可运行组件.md)
160
+ - 任务 Recipe:[接入第三方React组件库](../recipes/接入第三方React组件库.md)
161
+ - 任务 Recipe:[声明事件](../recipes/声明事件.md)
162
+ - 任务 Recipe:[声明动作与状态](../recipes/声明动作与状态.md)
163
+ - 任务 Recipe:[声明插槽](../recipes/声明插槽.md)
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "cdp-material-sdk",
3
+ "version": "0.0.5",
4
+ "license": "MIT",
5
+ "publishConfig": {
6
+ "access": "public",
7
+ "provenance": true
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/GroovyKetchup/cdp-material-sdk.git"
12
+ },
13
+ "homepage": "https://github.com/GroovyKetchup/cdp-material-sdk#readme",
14
+ "bugs": {
15
+ "url": "https://github.com/GroovyKetchup/cdp-material-sdk/issues"
16
+ },
17
+ "type": "module",
18
+ "main": "./dist/index.js",
19
+ "module": "./dist/index.js",
20
+ "types": "./dist/index.d.ts",
21
+ "scripts": {
22
+ "build": "node scripts/build-material-sdk.mjs && tsc -p tsconfig.build.json",
23
+ "pack:dry-run": "npm pack --json --dry-run",
24
+ "release:check": "npm run build && npm run pack:dry-run"
25
+ },
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/index.d.ts",
29
+ "import": "./dist/index.js"
30
+ },
31
+ "./portable": {
32
+ "types": "./dist/portable.d.ts",
33
+ "import": "./dist/portable.js"
34
+ },
35
+ "./host-react": {
36
+ "types": "./dist/host-react.d.ts",
37
+ "import": "./dist/host-react.js"
38
+ }
39
+ },
40
+ "files": [
41
+ "dist",
42
+ "docs/component-development",
43
+ "README.md",
44
+ "LICENSE"
45
+ ],
46
+ "dependencies": {
47
+ "@types/json-schema": "^7.0.15",
48
+ "json-schema-to-ts": "^3.1.1",
49
+ "lodash-es": "^4.17.21",
50
+ "zustand": "^5.0.9"
51
+ },
52
+ "peerDependencies": {
53
+ "@types/react": "^19.1.16",
54
+ "@types/react-dom": "^19.1.9",
55
+ "react": "^19.1.1",
56
+ "react-dom": "^19.1.1"
57
+ },
58
+ "devDependencies": {
59
+ "@types/lodash-es": "^4.17.12",
60
+ "@types/react": "^19.1.16",
61
+ "@types/react-dom": "^19.1.9",
62
+ "react": "^19.1.1",
63
+ "react-dom": "^19.1.1",
64
+ "typescript": "~5.9.3",
65
+ "vite": "^7.1.7"
66
+ }
67
+ }