@tdesign-react/chat 1.0.2-alpha.9 → 1.1.0-alpha.1

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 (303) hide show
  1. package/es/_chunks/dep-f2051ebd.js +839 -0
  2. package/es/_chunks/dep-f2051ebd.js.map +1 -0
  3. package/es/_util/reactify.js +1 -1
  4. package/es/_util/useDynamicStyle.js +1 -1
  5. package/es/attachments/index.js +1 -1
  6. package/es/chat-actionbar/index.js +1 -1
  7. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.d.ts +196 -0
  8. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js +301 -0
  9. package/es/chat-engine/components/a2ui/A2UIActivityRenderer.js.map +1 -0
  10. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.d.ts +37 -0
  11. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js +116 -0
  12. package/es/chat-engine/components/a2ui/A2UIComponentRenderer.js.map +1 -0
  13. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.d.ts +42 -0
  14. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js +113 -0
  15. package/es/chat-engine/components/a2ui/A2UIErrorBoundary.js.map +1 -0
  16. package/es/chat-engine/components/a2ui/A2UISkeleton.d.ts +60 -0
  17. package/es/chat-engine/components/a2ui/A2UISkeleton.js +197 -0
  18. package/es/chat-engine/components/a2ui/A2UISkeleton.js.map +1 -0
  19. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.d.ts +44 -0
  20. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js +139 -0
  21. package/es/chat-engine/components/a2ui/A2UISurfaceRenderer.js.map +1 -0
  22. package/es/chat-engine/components/a2ui/containers/A2UICard.d.ts +22 -0
  23. package/es/chat-engine/components/a2ui/containers/A2UICard.js +82 -0
  24. package/es/chat-engine/components/a2ui/containers/A2UICard.js.map +1 -0
  25. package/es/chat-engine/components/a2ui/containers/A2UIColumn.d.ts +18 -0
  26. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js +81 -0
  27. package/es/chat-engine/components/a2ui/containers/A2UIColumn.js.map +1 -0
  28. package/es/chat-engine/components/a2ui/containers/A2UIList.d.ts +14 -0
  29. package/es/chat-engine/components/a2ui/containers/A2UIList.js +62 -0
  30. package/es/chat-engine/components/a2ui/containers/A2UIList.js.map +1 -0
  31. package/es/chat-engine/components/a2ui/containers/A2UIRow.d.ts +20 -0
  32. package/es/chat-engine/components/a2ui/containers/A2UIRow.js +84 -0
  33. package/es/chat-engine/components/a2ui/containers/A2UIRow.js.map +1 -0
  34. package/es/chat-engine/components/a2ui/containers/A2UITabs.d.ts +14 -0
  35. package/es/chat-engine/components/a2ui/containers/A2UITabs.js +69 -0
  36. package/es/chat-engine/components/a2ui/containers/A2UITabs.js.map +1 -0
  37. package/es/chat-engine/components/a2ui/containers/index.d.ts +8 -0
  38. package/es/chat-engine/components/a2ui/containers/index.js +30 -0
  39. package/es/chat-engine/components/a2ui/containers/index.js.map +1 -0
  40. package/es/chat-engine/components/a2ui/index.d.ts +11 -0
  41. package/es/chat-engine/components/a2ui/index.js +62 -0
  42. package/es/chat-engine/components/a2ui/index.js.map +1 -0
  43. package/es/chat-engine/components/a2ui/primitives/A2UIButton.d.ts +33 -0
  44. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js +80 -0
  45. package/es/chat-engine/components/a2ui/primitives/A2UIButton.js.map +1 -0
  46. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.d.ts +12 -0
  47. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js +43 -0
  48. package/es/chat-engine/components/a2ui/primitives/A2UICheckBox.js.map +1 -0
  49. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.d.ts +50 -0
  50. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js +54 -0
  51. package/es/chat-engine/components/a2ui/primitives/A2UICheckboxGroup.js.map +1 -0
  52. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.d.ts +13 -0
  53. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js +89 -0
  54. package/es/chat-engine/components/a2ui/primitives/A2UIChoicePicker.js.map +1 -0
  55. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.d.ts +12 -0
  56. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js +25 -0
  57. package/es/chat-engine/components/a2ui/primitives/A2UIDivider.js.map +1 -0
  58. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.d.ts +13 -0
  59. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js +138942 -0
  60. package/es/chat-engine/components/a2ui/primitives/A2UIIcon.js.map +1 -0
  61. package/es/chat-engine/components/a2ui/primitives/A2UIImage.d.ts +12 -0
  62. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js +75 -0
  63. package/es/chat-engine/components/a2ui/primitives/A2UIImage.js.map +1 -0
  64. package/es/chat-engine/components/a2ui/primitives/A2UIInput.d.ts +20 -0
  65. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js +63 -0
  66. package/es/chat-engine/components/a2ui/primitives/A2UIInput.js.map +1 -0
  67. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.d.ts +56 -0
  68. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js +64 -0
  69. package/es/chat-engine/components/a2ui/primitives/A2UIRadioGroup.js.map +1 -0
  70. package/es/chat-engine/components/a2ui/primitives/A2UISlider.d.ts +12 -0
  71. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js +55 -0
  72. package/es/chat-engine/components/a2ui/primitives/A2UISlider.js.map +1 -0
  73. package/es/chat-engine/components/a2ui/primitives/A2UIText.d.ts +12 -0
  74. package/es/chat-engine/components/a2ui/primitives/A2UIText.js +104 -0
  75. package/es/chat-engine/components/a2ui/primitives/A2UIText.js.map +1 -0
  76. package/es/chat-engine/components/a2ui/primitives/A2UITextField.d.ts +12 -0
  77. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js +80 -0
  78. package/es/chat-engine/components/a2ui/primitives/A2UITextField.js.map +1 -0
  79. package/es/chat-engine/components/a2ui/primitives/index.d.ts +15 -0
  80. package/es/chat-engine/components/a2ui/primitives/index.js +39 -0
  81. package/es/chat-engine/components/a2ui/primitives/index.js.map +1 -0
  82. package/es/chat-engine/components/a2ui/registry.d.ts +35 -0
  83. package/es/chat-engine/components/a2ui/registry.js +74 -0
  84. package/es/chat-engine/components/a2ui/registry.js.map +1 -0
  85. package/es/chat-engine/components/activity/index.js +1 -1
  86. package/es/chat-engine/components/activity/registry.d.ts +1 -1
  87. package/es/chat-engine/components/activity/registry.js +1 -1
  88. package/es/chat-engine/components/activity/registry.js.map +1 -1
  89. package/es/chat-engine/components/activity/render.d.ts +2 -2
  90. package/es/chat-engine/components/activity/render.js +1 -1
  91. package/es/chat-engine/components/activity/render.js.map +1 -1
  92. package/es/chat-engine/components/activity/types.js +1 -1
  93. package/es/chat-engine/components/index.d.ts +1 -0
  94. package/es/chat-engine/components/index.js +57 -9
  95. package/es/chat-engine/components/index.js.map +1 -1
  96. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.d.ts +36 -0
  97. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js +36 -0
  98. package/es/chat-engine/components/json-render/A2UIJsonRenderActivityRenderer.js.map +1 -0
  99. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.d.ts +46 -0
  100. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js +36 -0
  101. package/es/chat-engine/components/json-render/JsonRenderActivityRenderer.js.map +1 -0
  102. package/es/chat-engine/components/json-render/SurfaceStateManager.d.ts +113 -0
  103. package/es/chat-engine/components/json-render/SurfaceStateManager.js +195 -0
  104. package/es/chat-engine/components/json-render/SurfaceStateManager.js.map +1 -0
  105. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.d.ts +49 -0
  106. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js +307 -0
  107. package/es/chat-engine/components/json-render/adapters/a2ui-to-jsonrender.js.map +1 -0
  108. package/es/chat-engine/components/json-render/adapters/a2ui-types.d.ts +96 -0
  109. package/es/chat-engine/components/json-render/adapters/a2ui-types.js +7 -0
  110. package/es/chat-engine/components/json-render/adapters/a2ui-types.js.map +1 -0
  111. package/es/chat-engine/components/json-render/adapters/index.d.ts +7 -0
  112. package/es/chat-engine/components/json-render/adapters/index.js +11 -0
  113. package/es/chat-engine/components/json-render/adapters/index.js.map +1 -0
  114. package/es/chat-engine/components/json-render/catalog/a2ui-binding.d.ts +64 -0
  115. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js +36 -0
  116. package/es/chat-engine/components/json-render/catalog/a2ui-binding.js.map +1 -0
  117. package/es/chat-engine/components/json-render/catalog/a2ui-registry.d.ts +78 -0
  118. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js +36 -0
  119. package/es/chat-engine/components/json-render/catalog/a2ui-registry.js.map +1 -0
  120. package/es/chat-engine/components/json-render/catalog/button.d.ts +14 -0
  121. package/es/chat-engine/components/json-render/catalog/button.js +71 -0
  122. package/es/chat-engine/components/json-render/catalog/button.js.map +1 -0
  123. package/es/chat-engine/components/json-render/catalog/card.d.ts +11 -0
  124. package/es/chat-engine/components/json-render/catalog/card.js +57 -0
  125. package/es/chat-engine/components/json-render/catalog/card.js.map +1 -0
  126. package/es/chat-engine/components/json-render/catalog/index.d.ts +127 -0
  127. package/es/chat-engine/components/json-render/catalog/index.js +36 -0
  128. package/es/chat-engine/components/json-render/catalog/index.js.map +1 -0
  129. package/es/chat-engine/components/json-render/catalog/input.d.ts +20 -0
  130. package/es/chat-engine/components/json-render/catalog/input.js +36 -0
  131. package/es/chat-engine/components/json-render/catalog/input.js.map +1 -0
  132. package/es/chat-engine/components/json-render/catalog/layout.d.ts +44 -0
  133. package/es/chat-engine/components/json-render/catalog/layout.js +129 -0
  134. package/es/chat-engine/components/json-render/catalog/layout.js.map +1 -0
  135. package/es/chat-engine/components/json-render/catalog/text.d.ts +11 -0
  136. package/es/chat-engine/components/json-render/catalog/text.js +31 -0
  137. package/es/chat-engine/components/json-render/catalog/text.js.map +1 -0
  138. package/es/chat-engine/components/json-render/catalog.d.ts +549 -0
  139. package/es/chat-engine/components/json-render/catalog.js +147 -0
  140. package/es/chat-engine/components/json-render/catalog.js.map +1 -0
  141. package/es/chat-engine/components/json-render/config.d.ts +154 -0
  142. package/es/chat-engine/components/json-render/config.js +36 -0
  143. package/es/chat-engine/components/json-render/config.js.map +1 -0
  144. package/es/chat-engine/components/json-render/contexts/actions.d.ts +74 -0
  145. package/es/chat-engine/components/json-render/contexts/actions.js +290 -0
  146. package/es/chat-engine/components/json-render/contexts/actions.js.map +1 -0
  147. package/es/chat-engine/components/json-render/contexts/data.d.ts +45 -0
  148. package/es/chat-engine/components/json-render/contexts/data.js +104 -0
  149. package/es/chat-engine/components/json-render/contexts/data.js.map +1 -0
  150. package/es/chat-engine/components/json-render/contexts/validation.d.ts +59 -0
  151. package/es/chat-engine/components/json-render/contexts/validation.js +151 -0
  152. package/es/chat-engine/components/json-render/contexts/validation.js.map +1 -0
  153. package/es/chat-engine/components/json-render/contexts/visibility.d.ts +29 -0
  154. package/es/chat-engine/components/json-render/contexts/visibility.js +56 -0
  155. package/es/chat-engine/components/json-render/contexts/visibility.js.map +1 -0
  156. package/es/chat-engine/components/json-render/engine.d.ts +58 -0
  157. package/es/chat-engine/components/json-render/engine.js +88 -0
  158. package/es/chat-engine/components/json-render/engine.js.map +1 -0
  159. package/es/chat-engine/components/json-render/index.d.ts +34 -0
  160. package/es/chat-engine/components/json-render/index.js +36 -0
  161. package/es/chat-engine/components/json-render/index.js.map +1 -0
  162. package/es/chat-engine/components/json-render/performance.d.ts +91 -0
  163. package/es/chat-engine/components/json-render/performance.js +135 -0
  164. package/es/chat-engine/components/json-render/performance.js.map +1 -0
  165. package/es/chat-engine/components/json-render/renderer.d.ts +71 -0
  166. package/es/chat-engine/components/json-render/renderer.js +124 -0
  167. package/es/chat-engine/components/json-render/renderer.js.map +1 -0
  168. package/es/chat-engine/components/json-render/types.d.ts +69 -0
  169. package/es/chat-engine/components/json-render/types.js +7 -0
  170. package/es/chat-engine/components/json-render/types.js.map +1 -0
  171. package/es/chat-engine/components/provider/agent-state.js +39 -2
  172. package/es/chat-engine/components/provider/agent-state.js.map +1 -1
  173. package/es/chat-engine/components/toolcall/index.js +32 -2
  174. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  175. package/es/chat-engine/components/toolcall/registry.js +1 -1
  176. package/es/chat-engine/components/toolcall/render.d.ts +1 -1
  177. package/es/chat-engine/components/toolcall/render.js +33 -4
  178. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  179. package/es/chat-engine/components/toolcall/types.js +1 -1
  180. package/es/chat-engine/core/a2ui/index.d.ts +10 -0
  181. package/es/chat-engine/core/a2ui/index.js +24 -0
  182. package/es/chat-engine/core/a2ui/index.js.map +1 -0
  183. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.d.ts +197 -0
  184. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js +438 -0
  185. package/es/chat-engine/core/a2ui/processor/A2uiMessageProcessor.js.map +1 -0
  186. package/es/chat-engine/core/a2ui/processor/ComponentTree.d.ts +53 -0
  187. package/es/chat-engine/core/a2ui/processor/ComponentTree.js +158 -0
  188. package/es/chat-engine/core/a2ui/processor/ComponentTree.js.map +1 -0
  189. package/es/chat-engine/core/a2ui/processor/DataStore.d.ts +63 -0
  190. package/es/chat-engine/core/a2ui/processor/DataStore.js +172 -0
  191. package/es/chat-engine/core/a2ui/processor/DataStore.js.map +1 -0
  192. package/es/chat-engine/core/a2ui/processor/PathResolver.d.ts +47 -0
  193. package/es/chat-engine/core/a2ui/processor/PathResolver.js +99 -0
  194. package/es/chat-engine/core/a2ui/processor/PathResolver.js.map +1 -0
  195. package/es/chat-engine/core/a2ui/types/index.d.ts +4 -0
  196. package/es/chat-engine/core/a2ui/types/index.js +9 -0
  197. package/es/chat-engine/core/a2ui/types/index.js.map +1 -0
  198. package/es/chat-engine/core/a2ui/types/types.d.ts +770 -0
  199. package/es/chat-engine/core/a2ui/types/types.js +104 -0
  200. package/es/chat-engine/core/a2ui/types/types.js.map +1 -0
  201. package/es/chat-engine/core/a2ui/utils/binding.d.ts +34 -0
  202. package/es/chat-engine/core/a2ui/utils/binding.js +1784 -0
  203. package/es/chat-engine/core/a2ui/utils/binding.js.map +1 -0
  204. package/es/chat-engine/core/a2ui/utils/index.d.ts +5 -0
  205. package/es/chat-engine/core/a2ui/utils/index.js +13 -0
  206. package/es/chat-engine/core/a2ui/utils/index.js.map +1 -0
  207. package/es/chat-engine/core/a2ui/utils/validation.d.ts +70 -0
  208. package/es/chat-engine/core/a2ui/utils/validation.js +333 -0
  209. package/es/chat-engine/core/a2ui/utils/validation.js.map +1 -0
  210. package/es/chat-engine/core/adapters/agui/activity-manager.d.ts +102 -0
  211. package/es/chat-engine/core/adapters/agui/activity-manager.js +144 -0
  212. package/es/chat-engine/core/adapters/agui/activity-manager.js.map +1 -0
  213. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +42 -2
  214. package/es/chat-engine/core/adapters/agui/event-mapper.js +90 -50
  215. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -1
  216. package/es/chat-engine/core/adapters/agui/events.d.ts +222 -222
  217. package/es/chat-engine/core/adapters/agui/events.js +34 -34
  218. package/es/chat-engine/core/adapters/agui/events.js.map +1 -1
  219. package/es/chat-engine/core/adapters/agui/index.d.ts +22 -2
  220. package/es/chat-engine/core/adapters/agui/index.js +34 -14
  221. package/es/chat-engine/core/adapters/agui/index.js.map +1 -1
  222. package/es/chat-engine/core/adapters/agui/state-manager.js +1 -1
  223. package/es/chat-engine/core/adapters/agui/types.d.ts +57 -56
  224. package/es/chat-engine/core/adapters/agui/types.js +5 -5
  225. package/es/chat-engine/core/adapters/agui/types.js.map +1 -1
  226. package/es/chat-engine/core/adapters/agui/utils.d.ts +9 -3
  227. package/es/chat-engine/core/adapters/agui/utils.js +23 -4
  228. package/es/chat-engine/core/adapters/agui/utils.js.map +1 -1
  229. package/es/chat-engine/core/event-bus/ChatEventBus.d.ts +88 -0
  230. package/es/chat-engine/core/event-bus/ChatEventBus.js +295 -0
  231. package/es/chat-engine/core/event-bus/ChatEventBus.js.map +1 -0
  232. package/es/chat-engine/core/event-bus/index.d.ts +5 -0
  233. package/es/chat-engine/core/event-bus/index.js +13 -0
  234. package/es/chat-engine/core/event-bus/index.js.map +1 -0
  235. package/es/chat-engine/core/event-bus/types.d.ts +230 -0
  236. package/es/chat-engine/core/event-bus/types.js +32 -0
  237. package/es/chat-engine/core/event-bus/types.js.map +1 -0
  238. package/es/chat-engine/core/index.d.ts +16 -1
  239. package/es/chat-engine/core/index.js +174 -17
  240. package/es/chat-engine/core/index.js.map +1 -1
  241. package/es/chat-engine/core/processor/index.js +1 -1
  242. package/es/chat-engine/core/server/batch-client.js +1 -1
  243. package/es/chat-engine/core/server/connection-manager.js +1 -1
  244. package/es/chat-engine/core/server/errors.js +1 -1
  245. package/es/chat-engine/core/server/index.js +1 -1
  246. package/es/chat-engine/core/server/llm-service.js +17 -15
  247. package/es/chat-engine/core/server/llm-service.js.map +1 -1
  248. package/es/chat-engine/core/server/sse-client.js +1 -1
  249. package/es/chat-engine/core/server/sse-parser.js +1 -1
  250. package/es/chat-engine/core/server/types.js +1 -1
  251. package/es/chat-engine/core/store/message.js +2 -2
  252. package/es/chat-engine/core/store/message.js.map +1 -1
  253. package/es/chat-engine/core/store/model.js +1 -1
  254. package/es/chat-engine/core/store/reactiveState.js +1 -1
  255. package/es/chat-engine/core/type.d.ts +18 -2
  256. package/es/chat-engine/core/type.js +1 -1
  257. package/es/chat-engine/core/utils/eventEmitter.js +1 -1
  258. package/es/chat-engine/core/utils/index.js +1 -1
  259. package/es/chat-engine/core/utils/logger.js +1 -1
  260. package/es/chat-engine/hooks/a2ui/A2UIContext.d.ts +90 -0
  261. package/es/chat-engine/hooks/a2ui/A2UIContext.js +97 -0
  262. package/es/chat-engine/hooks/a2ui/A2UIContext.js.map +1 -0
  263. package/es/chat-engine/hooks/a2ui/index.d.ts +12 -0
  264. package/es/chat-engine/hooks/a2ui/index.js +19 -0
  265. package/es/chat-engine/hooks/a2ui/index.js.map +1 -0
  266. package/es/chat-engine/hooks/a2ui/useA2UIAction.d.ts +40 -0
  267. package/es/chat-engine/hooks/a2ui/useA2UIAction.js +74 -0
  268. package/es/chat-engine/hooks/a2ui/useA2UIAction.js.map +1 -0
  269. package/es/chat-engine/hooks/a2ui/useA2UISurface.d.ts +36 -0
  270. package/es/chat-engine/hooks/a2ui/useA2UISurface.js +39 -0
  271. package/es/chat-engine/hooks/a2ui/useA2UISurface.js.map +1 -0
  272. package/es/chat-engine/hooks/a2ui/useDataBinding.d.ts +53 -0
  273. package/es/chat-engine/hooks/a2ui/useDataBinding.js +111 -0
  274. package/es/chat-engine/hooks/a2ui/useDataBinding.js.map +1 -0
  275. package/es/chat-engine/hooks/index.js +38 -4
  276. package/es/chat-engine/hooks/index.js.map +1 -1
  277. package/es/chat-engine/hooks/useAgentActivity.d.ts +1 -2
  278. package/es/chat-engine/hooks/useAgentActivity.js +1 -1
  279. package/es/chat-engine/hooks/useAgentActivity.js.map +1 -1
  280. package/es/chat-engine/hooks/useAgentState.js +39 -2
  281. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  282. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  283. package/es/chat-engine/hooks/useChat.d.ts +3 -3
  284. package/es/chat-engine/hooks/useChat.js +40 -2
  285. package/es/chat-engine/hooks/useChat.js.map +1 -1
  286. package/es/chat-engine/hooks/useJsonRenderActivity.d.ts +56 -0
  287. package/es/chat-engine/hooks/useJsonRenderActivity.js +63 -0
  288. package/es/chat-engine/hooks/useJsonRenderActivity.js.map +1 -0
  289. package/es/chat-engine/index.d.ts +1 -3
  290. package/es/chat-engine/index.js +30 -8
  291. package/es/chat-engine/index.js.map +1 -1
  292. package/es/chat-filecard/index.js +1 -1
  293. package/es/chat-loading/index.js +1 -1
  294. package/es/chat-markdown/index.js +1 -1
  295. package/es/chat-message/index.js +1 -1
  296. package/es/chat-sender/index.js +1 -1
  297. package/es/chat-thinking/index.js +1 -1
  298. package/es/chatbot/docs/react-best-practice.d.ts +13 -0
  299. package/es/chatbot/index.js +1 -1
  300. package/es/index.js +27 -5
  301. package/es/index.js.map +1 -1
  302. package/es/style/index.js +1 -1
  303. package/package.json +6 -3
@@ -0,0 +1,12 @@
1
+ /**
2
+ * A2UI Image 组件
3
+ * A2UI v0.9 标准图片组件
4
+ */
5
+ import React from 'react';
6
+ import type { A2UIImageComponent } from '../../../core/a2ui';
7
+ export interface A2UIImageProps extends Omit<A2UIImageComponent, 'component'> {
8
+ className?: string;
9
+ style?: React.CSSProperties;
10
+ }
11
+ export declare const A2UIImage: React.FC<A2UIImageProps>;
12
+ export default A2UIImage;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.14
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
8
+ import React__default, { useMemo } from 'react';
9
+ import { Image } from 'tdesign-react';
10
+ import { useDataBinding } from '../../../hooks/a2ui/useDataBinding.js';
11
+ import '@babel/runtime/helpers/slicedToArray';
12
+ import '../../../hooks/a2ui/A2UIContext.js';
13
+ import '../../../core/a2ui/utils/index.js';
14
+ import '../../../core/a2ui/utils/binding.js';
15
+ import '@babel/runtime/helpers/typeof';
16
+ import '../../../core/a2ui/utils/validation.js';
17
+ import '@babel/runtime/helpers/toConsumableArray';
18
+
19
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
21
+ var usageHintSizeMap = {
22
+ icon: {
23
+ width: 24,
24
+ height: 24
25
+ },
26
+ avatar: {
27
+ width: 40,
28
+ height: 40
29
+ },
30
+ smallFeature: {
31
+ width: 80,
32
+ height: 80
33
+ },
34
+ mediumFeature: {
35
+ width: 160,
36
+ height: 160
37
+ },
38
+ largeFeature: {
39
+ width: 320,
40
+ height: 320
41
+ },
42
+ header: {
43
+ width: "100%",
44
+ height: 200
45
+ }
46
+ };
47
+ var A2UIImage = function A2UIImage(_ref) {
48
+ var id = _ref.id,
49
+ url = _ref.url,
50
+ _ref$fit = _ref.fit,
51
+ fit = _ref$fit === void 0 ? "cover" : _ref$fit,
52
+ usageHint = _ref.usageHint,
53
+ className = _ref.className,
54
+ style = _ref.style;
55
+ var resolvedUrl = useDataBinding(url);
56
+ var sizeStyle = useMemo(function () {
57
+ if (usageHint && typeof usageHint === "string" && usageHintSizeMap[usageHint]) {
58
+ return usageHintSizeMap[usageHint];
59
+ }
60
+ return {};
61
+ }, [usageHint]);
62
+ var isAvatar = usageHint === "avatar";
63
+ return /* @__PURE__ */React__default.createElement(Image, {
64
+ className: className,
65
+ style: _objectSpread(_objectSpread({}, sizeStyle), {}, {
66
+ borderRadius: isAvatar ? "50%" : void 0
67
+ }, style),
68
+ src: resolvedUrl || "",
69
+ fit: fit
70
+ });
71
+ };
72
+ A2UIImage.displayName = "A2UIImage";
73
+
74
+ export { A2UIImage, A2UIImage as default };
75
+ //# sourceMappingURL=A2UIImage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"A2UIImage.js","sources":["../../../../../../pro-components/chat/chat-engine/components/a2ui/primitives/A2UIImage.tsx"],"sourcesContent":["/**\n * A2UI Image 组件\n * A2UI v0.9 标准图片组件\n */\n\nimport React, { useMemo } from 'react';\nimport { Image } from 'tdesign-react';\nimport { useDataBinding } from '../../../hooks/a2ui/useDataBinding';\nimport type { A2UIImageComponent } from '../../../core/a2ui';\n\nexport interface A2UIImageProps extends Omit<A2UIImageComponent, 'component'> {\n className?: string;\n style?: React.CSSProperties;\n}\n\n// usageHint 到尺寸的映射\nconst usageHintSizeMap: Record<string, { width?: number | string; height?: number | string }> = {\n icon: { width: 24, height: 24 },\n avatar: { width: 40, height: 40 },\n smallFeature: { width: 80, height: 80 },\n mediumFeature: { width: 160, height: 160 },\n largeFeature: { width: 320, height: 320 },\n header: { width: '100%', height: 200 },\n};\n\nexport const A2UIImage: React.FC<A2UIImageProps> = ({\n id,\n url,\n fit = 'cover',\n usageHint,\n className,\n style,\n}) => {\n // 解析 URL\n const resolvedUrl = useDataBinding<string>(url);\n\n // 根据 usageHint 计算尺寸\n const sizeStyle = useMemo(() => {\n if (usageHint && typeof usageHint === 'string' && usageHintSizeMap[usageHint]) {\n return usageHintSizeMap[usageHint];\n }\n return {};\n }, [usageHint]);\n\n // 如果是 avatar,使用圆形\n const isAvatar = usageHint === 'avatar';\n\n return (\n <Image\n className={className}\n style={{\n ...sizeStyle,\n borderRadius: isAvatar ? '50%' : undefined,\n ...style,\n }}\n src={resolvedUrl || ''}\n fit={fit as 'none' | 'fill' | 'contain' | 'cover' | 'scale-down'}\n />\n );\n};\n\nA2UIImage.displayName = 'A2UIImage';\n\nexport default A2UIImage;\n"],"names":["usageHintSizeMap","icon","width","height","avatar","smallFeature","mediumFeature","largeFeature","header","A2UIImage","id","_ref","url","_ref$fit","fit","usageHint","className","style","resolvedUrl","useDataBinding","sizeStyle","useMemo","isAvatar","React","createElement","Image","_objectSpread","borderRadius","src","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;AAgBA,IAAMA,gBAA0F,GAAA;AAC9FC,EAAAA,IAAM,EAAA;AAAEC,IAAAA,KAAO,EAAA,EAAA;AAAIC,IAAAA,QAAQ,EAAA;GAAG;AAC9BC,EAAAA,MAAQ,EAAA;AAAEF,IAAAA,KAAO,EAAA,EAAA;AAAIC,IAAAA,QAAQ,EAAA;GAAG;AAChCE,EAAAA,YAAc,EAAA;AAAEH,IAAAA,KAAO,EAAA,EAAA;AAAIC,IAAAA,QAAQ,EAAA;GAAG;AACtCG,EAAAA,aAAe,EAAA;AAAEJ,IAAAA,KAAO,EAAA,GAAA;AAAKC,IAAAA,QAAQ,GAAA;GAAI;AACzCI,EAAAA,YAAc,EAAA;AAAEL,IAAAA,KAAO,EAAA,GAAA;AAAKC,IAAAA,QAAQ,GAAA;GAAI;AACxCK,EAAAA,MAAQ,EAAA;AAAEN,IAAAA,KAAO,EAAA,MAAA;AAAQC,IAAAA,QAAQ,GAAA;AAAI,GAAA;AACvC,CAAA,CAAA;IAEaM,YAAsC,SAAtCA,gBAOP;AAAA,EAAA,IANJC,EAAA,GAAAC,IAAA,CAAAD,EAAA;IACAE,GAAA,GAAAD,IAAA,CAAAC,GAAA;IAAAC,QAAA,GAAAF,IAAA,CACAG,GAAM;AAANA,IAAAA,GAAM,GAAAD,QAAA,KAAA,KAAA,CAAA,GAAA,OAAA,GAAAA,QAAA;IACNE,SAAA,GAAAJ,IAAA,CAAAI,SAAA;IACAC,SAAA,GAAAL,IAAA,CAAAK,SAAA;IACAC,KAAA,GAAAN,IAAA,CAAAM,KAAA,CAAA;AAGM,EAAA,IAAAC,WAAA,GAAcC,eAAuBP,GAAG,CAAA,CAAA;AAGxC,EAAA,IAAAQ,SAAA,GAAYC,QAAQ,YAAM;IAC9B,IAAIN,SAAa,IAAA,OAAOA,SAAc,KAAA,QAAA,IAAYf,iBAAiBe,SAAY,CAAA,EAAA;MAC7E,OAAOf,gBAAiB,CAAAe,SAAA,CAAA,CAAA;AAC1B,KAAA;AACA,IAAA,OAAO,EAAC,CAAA;AACV,GAAA,EAAG,CAACA,SAAS,CAAC,CAAA,CAAA;AAGd,EAAA,IAAMO,WAAWP,SAAc,KAAA,QAAA,CAAA;AAE/B,EAAA,sBACGQ,cAAA,CAAAC,aAAA,CAAAC,KAAA,EAAA;AACCT,IAAAA,SAAA,EAAAA,SAAA;AACAC,IAAAA,KAAO,EAAAS,aAAA,CAAAA,aAAA,KACFN,SAAA,CAAA,EAAA,EAAA,EAAA;AACHO,MAAAA,YAAA,EAAcL,WAAW,KAAQ,GAAA,KAAA,CAAA;AAAA,KAAA,EAC9BL,KAAA,CACL;IACAW,KAAKV,WAAe,IAAA,EAAA;AACpBJ,IAAAA,GAAA,EAAAA,GAAAA;AACF,GAAA,CAAA,CAAA;AAEJ,EAAA;AAEAL,SAAA,CAAUoB,WAAc,GAAA,WAAA;;;;"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * A2UI Input 组件
3
+ * 复用 TDesign Input,支持双向数据绑定
4
+ */
5
+ import React from 'react';
6
+ import type { A2UIInputComponent } from '../../../core/a2ui';
7
+ export interface A2UIInputProps extends Omit<A2UIInputComponent, 'component'> {
8
+ className?: string;
9
+ style?: React.CSSProperties;
10
+ }
11
+ /**
12
+ * A2UI Input
13
+ *
14
+ * Props 映射说明:
15
+ * - value -> 支持双向绑定,使用 useTwoWayBinding
16
+ * - disabled/placeholder/type/clearable/status/tips/size/maxlength -> 直接透传 TDesign
17
+ * - label -> TDesign label
18
+ */
19
+ export declare const A2UIInput: React.FC<A2UIInputProps>;
20
+ export default A2UIInput;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.14
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
8
+ import React__default, { useCallback } from 'react';
9
+ import { Input } from 'tdesign-react';
10
+ import { useTwoWayBinding, useDataBinding } from '../../../hooks/a2ui/useDataBinding.js';
11
+ import '../../../hooks/a2ui/A2UIContext.js';
12
+ import '@babel/runtime/helpers/defineProperty';
13
+ import '../../../core/a2ui/utils/index.js';
14
+ import '../../../core/a2ui/utils/binding.js';
15
+ import '@babel/runtime/helpers/typeof';
16
+ import '../../../core/a2ui/utils/validation.js';
17
+ import '@babel/runtime/helpers/toConsumableArray';
18
+
19
+ var A2UIInput = function A2UIInput(_ref) {
20
+ var value = _ref.value,
21
+ placeholder = _ref.placeholder,
22
+ disabled = _ref.disabled,
23
+ label = _ref.label,
24
+ _ref$type = _ref.type,
25
+ type = _ref$type === void 0 ? "text" : _ref$type,
26
+ _ref$clearable = _ref.clearable,
27
+ clearable = _ref$clearable === void 0 ? false : _ref$clearable,
28
+ _ref$status = _ref.status,
29
+ status = _ref$status === void 0 ? "default" : _ref$status,
30
+ tips = _ref.tips,
31
+ _ref$size = _ref.size,
32
+ size = _ref$size === void 0 ? "medium" : _ref$size,
33
+ maxlength = _ref.maxlength,
34
+ className = _ref.className,
35
+ style = _ref.style;
36
+ var _useTwoWayBinding = useTwoWayBinding(value, ""),
37
+ _useTwoWayBinding2 = _slicedToArray(_useTwoWayBinding, 2),
38
+ inputValue = _useTwoWayBinding2[0],
39
+ setInputValue = _useTwoWayBinding2[1];
40
+ var resolvedDisabled = useDataBinding(disabled);
41
+ var handleChange = useCallback(function (val) {
42
+ setInputValue(val);
43
+ }, [setInputValue]);
44
+ return /* @__PURE__ */React__default.createElement(Input, {
45
+ className: className,
46
+ style: style,
47
+ value: inputValue,
48
+ placeholder: placeholder,
49
+ disabled: resolvedDisabled,
50
+ label: label,
51
+ type: type,
52
+ clearable: clearable,
53
+ status: status,
54
+ tips: tips,
55
+ size: size,
56
+ maxlength: maxlength,
57
+ onChange: handleChange
58
+ });
59
+ };
60
+ A2UIInput.displayName = "A2UIInput";
61
+
62
+ export { A2UIInput, A2UIInput as default };
63
+ //# sourceMappingURL=A2UIInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"A2UIInput.js","sources":["../../../../../../pro-components/chat/chat-engine/components/a2ui/primitives/A2UIInput.tsx"],"sourcesContent":["/**\n * A2UI Input 组件\n * 复用 TDesign Input,支持双向数据绑定\n */\n\nimport React, { useCallback } from 'react';\nimport { Input } from 'tdesign-react';\nimport { useDataBinding, useTwoWayBinding } from '../../../hooks/a2ui/useDataBinding';\nimport type { A2UIInputComponent } from '../../../core/a2ui';\n\nexport interface A2UIInputProps extends Omit<A2UIInputComponent, 'component'> {\n className?: string;\n style?: React.CSSProperties;\n}\n\n/**\n * A2UI Input\n * \n * Props 映射说明:\n * - value -> 支持双向绑定,使用 useTwoWayBinding\n * - disabled/placeholder/type/clearable/status/tips/size/maxlength -> 直接透传 TDesign\n * - label -> TDesign label\n */\nexport const A2UIInput: React.FC<A2UIInputProps> = ({\n value,\n placeholder,\n disabled,\n label,\n type = 'text',\n clearable = false,\n status = 'default',\n tips,\n size = 'medium',\n maxlength,\n className,\n style,\n}) => {\n // 双向绑定值\n const [inputValue, setInputValue] = useTwoWayBinding<string>(value, '');\n \n // 解析其他绑定值\n const resolvedDisabled = useDataBinding<boolean | undefined>(disabled);\n\n // 处理 onChange\n const handleChange = useCallback(\n (val: string) => {\n setInputValue(val);\n },\n [setInputValue]\n );\n\n return (\n <Input\n className={className}\n style={style}\n value={inputValue}\n placeholder={placeholder as string}\n disabled={resolvedDisabled as boolean}\n label={label as React.ReactNode}\n type={type as 'text' | 'password' | 'number' | 'tel' | 'url' | 'search'}\n clearable={clearable as boolean}\n status={status as 'default' | 'error' | 'warning' | 'success'}\n tips={tips as React.ReactNode}\n size={size as 'small' | 'medium' | 'large'}\n maxlength={maxlength as number}\n onChange={handleChange}\n />\n );\n};\n\nA2UIInput.displayName = 'A2UIInput';\n\nexport default A2UIInput;\n"],"names":["A2UIInput","value","_ref","placeholder","disabled","label","_ref$type","type","_ref$clearable","clearable","_ref$status","status","tips","_ref$size","size","maxlength","className","style","_useTwoWayBinding","useTwoWayBinding","_useTwoWayBinding2","_slicedToArray","inputValue","setInputValue","resolvedDisabled","useDataBinding","handleChange","useCallback","val","React","createElement","Input","onChange","displayName"],"mappings":";;;;;;;;;;;;;;;;;;IAuBaA,YAAsC,SAAtCA,gBAaP;AAAA,EAAA,IAZJC,KAAA,GAAAC,IAAA,CAAAD,KAAA;IACAE,WAAA,GAAAD,IAAA,CAAAC,WAAA;IACAC,QAAA,GAAAF,IAAA,CAAAE,QAAA;IACAC,KAAA,GAAAH,IAAA,CAAAG,KAAA;IAAAC,SAAA,GAAAJ,IAAA,CACAK,IAAO;AAAPA,IAAAA,IAAO,GAAAD,SAAA,KAAA,KAAA,CAAA,GAAA,MAAA,GAAAA,SAAA;IAAAE,cAAA,GAAAN,IAAA,CACPO,SAAY;AAAZA,IAAAA,SAAY,GAAAD,cAAA,KAAA,KAAA,CAAA,GAAA,KAAA,GAAAA,cAAA;IAAAE,WAAA,GAAAR,IAAA,CACZS,MAAS;AAATA,IAAAA,MAAS,GAAAD,WAAA,KAAA,KAAA,CAAA,GAAA,SAAA,GAAAA,WAAA;IACTE,IAAA,GAAAV,IAAA,CAAAU,IAAA;IAAAC,SAAA,GAAAX,IAAA,CACAY,IAAO;AAAPA,IAAAA,IAAO,GAAAD,SAAA,KAAA,KAAA,CAAA,GAAA,QAAA,GAAAA,SAAA;IACPE,SAAA,GAAAb,IAAA,CAAAa,SAAA;IACAC,SAAA,GAAAd,IAAA,CAAAc,SAAA;IACAC,KAAA,GAAAf,IAAA,CAAAe,KAAA,CAAA;AAGA,EAAA,IAAAC,iBAAA,GAAoCC,gBAAA,CAAyBlB,OAAO,EAAE,CAAA;IAAAmB,kBAAA,GAAAC,cAAA,CAAAH,iBAAA,EAAA,CAAA,CAAA;AAA/DI,IAAAA,UAAY,GAAAF,kBAAA,CAAA,CAAA,CAAA;AAAAG,IAAAA,aAAa,GAAAH,kBAAA,CAAA,CAAA,CAAA,CAAA;AAG1B,EAAA,IAAAI,gBAAA,GAAmBC,eAAoCrB,QAAQ,CAAA,CAAA;AAGrE,EAAA,IAAMsB,YAAe,GAAAC,WAAA,CACnB,UAACC,GAAgB,EAAA;IACfL,aAAA,CAAcK,GAAG,CAAA,CAAA;AACnB,GAAA,EACA,CAACL,aAAa,CAChB,CAAA,CAAA;AAEA,EAAA,sBACGM,cAAA,CAAAC,aAAA,CAAAC,KAAA,EAAA;AACCf,IAAAA,SAAA,EAAAA,SAAA;AACAC,IAAAA,KAAA,EAAAA,KAAA;AACAhB,IAAAA,KAAO,EAAAqB,UAAA;AACPnB,IAAAA,WAAA,EAAAA,WAAA;AACAC,IAAAA,QAAU,EAAAoB,gBAAA;AACVnB,IAAAA,KAAA,EAAAA,KAAA;AACAE,IAAAA,IAAA,EAAAA,IAAA;AACAE,IAAAA,SAAA,EAAAA,SAAA;AACAE,IAAAA,MAAA,EAAAA,MAAA;AACAC,IAAAA,IAAA,EAAAA,IAAA;AACAE,IAAAA,IAAA,EAAAA,IAAA;AACAC,IAAAA,SAAA,EAAAA,SAAA;AACAiB,IAAAA,QAAU,EAAAN,YAAAA;AACZ,GAAA,CAAA,CAAA;AAEJ,EAAA;AAEA1B,SAAA,CAAUiC,WAAc,GAAA,WAAA;;;;"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * A2UI RadioGroup 组件
3
+ * 复用 TDesign RadioGroup,支持双向数据绑定
4
+ *
5
+ * 用于单选场景,选中状态自动同步到数据模型
6
+ */
7
+ import React from 'react';
8
+ import type { Bindable } from '../../../core/a2ui';
9
+ /** 选项定义 */
10
+ export interface A2UIRadioOption {
11
+ /** 选项显示文本 */
12
+ label: Bindable<string>;
13
+ /** 选项值 */
14
+ value: string | number | boolean;
15
+ /** 是否禁用 */
16
+ disabled?: boolean;
17
+ }
18
+ export interface A2UIRadioGroupProps {
19
+ id?: string;
20
+ /** 选中值,支持数据绑定 */
21
+ value?: Bindable<string | number | boolean>;
22
+ /** 选项列表 */
23
+ options: A2UIRadioOption[];
24
+ /** 是否禁用 */
25
+ disabled?: Bindable<boolean>;
26
+ /** 组件风格:radio 或 button */
27
+ theme?: 'radio' | 'button';
28
+ /** 按钮形式的变体:outline/primary-filled/default-filled */
29
+ variant?: 'outline' | 'primary-filled' | 'default-filled';
30
+ /** 尺寸 */
31
+ size?: 'small' | 'medium' | 'large';
32
+ /** 是否允许取消选中 */
33
+ allowUncheck?: boolean;
34
+ className?: string;
35
+ style?: React.CSSProperties;
36
+ }
37
+ /**
38
+ * A2UI RadioGroup
39
+ *
40
+ * 使用示例(A2UI 协议):
41
+ * ```json
42
+ * {
43
+ * "component": "RadioGroup",
44
+ * "id": "user-type",
45
+ * "value": { "path": "/form/userType" },
46
+ * "theme": "button",
47
+ * "variant": "outline",
48
+ * "options": [
49
+ * { "label": "个人用户", "value": "personal" },
50
+ * { "label": "企业用户", "value": "business" }
51
+ * ]
52
+ * }
53
+ * ```
54
+ */
55
+ export declare const A2UIRadioGroup: React.FC<A2UIRadioGroupProps>;
56
+ export default A2UIRadioGroup;
@@ -0,0 +1,64 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.14
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _typeof from '@babel/runtime/helpers/typeof';
8
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
9
+ import React__default, { useCallback } from 'react';
10
+ import { RadioGroup } from 'tdesign-react';
11
+ import { useTwoWayBinding, useDataBinding } from '../../../hooks/a2ui/useDataBinding.js';
12
+ import '../../../hooks/a2ui/A2UIContext.js';
13
+ import '@babel/runtime/helpers/defineProperty';
14
+ import '../../../core/a2ui/utils/index.js';
15
+ import '../../../core/a2ui/utils/binding.js';
16
+ import '../../../core/a2ui/utils/validation.js';
17
+ import '@babel/runtime/helpers/toConsumableArray';
18
+
19
+ var A2UIRadioGroup = function A2UIRadioGroup(_ref) {
20
+ var value = _ref.value,
21
+ options = _ref.options,
22
+ disabled = _ref.disabled,
23
+ _ref$theme = _ref.theme,
24
+ theme = _ref$theme === void 0 ? "button" : _ref$theme,
25
+ _ref$variant = _ref.variant,
26
+ variant = _ref$variant === void 0 ? "outline" : _ref$variant,
27
+ _ref$size = _ref.size,
28
+ size = _ref$size === void 0 ? "medium" : _ref$size,
29
+ _ref$allowUncheck = _ref.allowUncheck,
30
+ allowUncheck = _ref$allowUncheck === void 0 ? false : _ref$allowUncheck,
31
+ className = _ref.className,
32
+ style = _ref.style;
33
+ var _useTwoWayBinding = useTwoWayBinding(value, void 0),
34
+ _useTwoWayBinding2 = _slicedToArray(_useTwoWayBinding, 2),
35
+ selectedValue = _useTwoWayBinding2[0],
36
+ setSelectedValue = _useTwoWayBinding2[1];
37
+ var resolvedDisabled = useDataBinding(disabled);
38
+ var handleChange = useCallback(function (val) {
39
+ setSelectedValue(val);
40
+ }, [setSelectedValue]);
41
+ var resolvedOptions = options.map(function (opt) {
42
+ return {
43
+ label: _typeof(opt.label) === "object" && "path" in opt.label ? opt.label : opt.label,
44
+ value: opt.value,
45
+ disabled: opt.disabled
46
+ };
47
+ });
48
+ return /* @__PURE__ */React__default.createElement(RadioGroup, {
49
+ className: className,
50
+ style: style,
51
+ value: selectedValue,
52
+ options: resolvedOptions,
53
+ disabled: resolvedDisabled,
54
+ theme: theme,
55
+ variant: variant,
56
+ size: size,
57
+ allowUncheck: allowUncheck,
58
+ onChange: handleChange
59
+ });
60
+ };
61
+ A2UIRadioGroup.displayName = "A2UIRadioGroup";
62
+
63
+ export { A2UIRadioGroup, A2UIRadioGroup as default };
64
+ //# sourceMappingURL=A2UIRadioGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"A2UIRadioGroup.js","sources":["../../../../../../pro-components/chat/chat-engine/components/a2ui/primitives/A2UIRadioGroup.tsx"],"sourcesContent":["/**\n * A2UI RadioGroup 组件\n * 复用 TDesign RadioGroup,支持双向数据绑定\n * \n * 用于单选场景,选中状态自动同步到数据模型\n */\n\nimport React, { useCallback } from 'react';\nimport { RadioGroup } from 'tdesign-react';\nimport { useDataBinding, useTwoWayBinding } from '../../../hooks/a2ui/useDataBinding';\nimport type { Bindable } from '../../../core/a2ui';\n\n/** 选项定义 */\nexport interface A2UIRadioOption {\n /** 选项显示文本 */\n label: Bindable<string>;\n /** 选项值 */\n value: string | number | boolean;\n /** 是否禁用 */\n disabled?: boolean;\n}\n\nexport interface A2UIRadioGroupProps {\n id?: string;\n /** 选中值,支持数据绑定 */\n value?: Bindable<string | number | boolean>;\n /** 选项列表 */\n options: A2UIRadioOption[];\n /** 是否禁用 */\n disabled?: Bindable<boolean>;\n /** 组件风格:radio 或 button */\n theme?: 'radio' | 'button';\n /** 按钮形式的变体:outline/primary-filled/default-filled */\n variant?: 'outline' | 'primary-filled' | 'default-filled';\n /** 尺寸 */\n size?: 'small' | 'medium' | 'large';\n /** 是否允许取消选中 */\n allowUncheck?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\n/**\n * A2UI RadioGroup\n * \n * 使用示例(A2UI 协议):\n * ```json\n * {\n * \"component\": \"RadioGroup\",\n * \"id\": \"user-type\",\n * \"value\": { \"path\": \"/form/userType\" },\n * \"theme\": \"button\",\n * \"variant\": \"outline\",\n * \"options\": [\n * { \"label\": \"个人用户\", \"value\": \"personal\" },\n * { \"label\": \"企业用户\", \"value\": \"business\" }\n * ]\n * }\n * ```\n */\nexport const A2UIRadioGroup: React.FC<A2UIRadioGroupProps> = ({\n value,\n options,\n disabled,\n theme = 'button',\n variant = 'outline',\n size = 'medium',\n allowUncheck = false,\n className,\n style,\n}) => {\n // 双向绑定值\n const [selectedValue, setSelectedValue] = useTwoWayBinding(value, undefined);\n \n // 解析禁用状态\n const resolvedDisabled = useDataBinding(disabled);\n\n // 处理选中变化\n const handleChange = useCallback(\n (val: string | number | boolean) => {\n setSelectedValue(val);\n },\n [setSelectedValue]\n );\n\n // 转换选项格式\n const resolvedOptions = options.map((opt) => ({\n label: typeof opt.label === 'object' && 'path' in opt.label ? opt.label : opt.label,\n value: opt.value,\n disabled: opt.disabled,\n }));\n\n return (\n <RadioGroup\n className={className}\n style={style}\n value={selectedValue}\n options={resolvedOptions as any}\n disabled={resolvedDisabled}\n theme={theme}\n variant={variant}\n size={size}\n allowUncheck={allowUncheck}\n onChange={handleChange}\n />\n );\n};\n\nA2UIRadioGroup.displayName = 'A2UIRadioGroup';\n\nexport default A2UIRadioGroup;\n"],"names":["A2UIRadioGroup","value","_ref","options","disabled","_ref$theme","theme","_ref$variant","variant","_ref$size","size","_ref$allowUncheck","allowUncheck","className","style","_useTwoWayBinding","useTwoWayBinding","_useTwoWayBinding2","_slicedToArray","selectedValue","setSelectedValue","resolvedDisabled","useDataBinding","handleChange","useCallback","val","resolvedOptions","map","opt","label","_typeof","React","createElement","RadioGroup","onChange","displayName"],"mappings":";;;;;;;;;;;;;;;;;;IA4DaA,iBAAgD,SAAhDA,qBAUP;AAAA,EAAA,IATJC,KAAA,GAAAC,IAAA,CAAAD,KAAA;IACAE,OAAA,GAAAD,IAAA,CAAAC,OAAA;IACAC,QAAA,GAAAF,IAAA,CAAAE,QAAA;IAAAC,UAAA,GAAAH,IAAA,CACAI,KAAQ;AAARA,IAAAA,KAAQ,GAAAD,UAAA,KAAA,KAAA,CAAA,GAAA,QAAA,GAAAA,UAAA;IAAAE,YAAA,GAAAL,IAAA,CACRM,OAAU;AAAVA,IAAAA,OAAU,GAAAD,YAAA,KAAA,KAAA,CAAA,GAAA,SAAA,GAAAA,YAAA;IAAAE,SAAA,GAAAP,IAAA,CACVQ,IAAO;AAAPA,IAAAA,IAAO,GAAAD,SAAA,KAAA,KAAA,CAAA,GAAA,QAAA,GAAAA,SAAA;IAAAE,iBAAA,GAAAT,IAAA,CACPU,YAAe;AAAfA,IAAAA,YAAe,GAAAD,iBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,GAAAA,iBAAA;IACfE,SAAA,GAAAX,IAAA,CAAAW,SAAA;IACAC,KAAA,GAAAZ,IAAA,CAAAY,KAAA,CAAA;EAGA,IAAAC,iBAAA,GAA0CC,gBAAA,CAAiBf,OAAO,KAAS,CAAA,CAAA;IAAAgB,kBAAA,GAAAC,cAAA,CAAAH,iBAAA,EAAA,CAAA,CAAA;AAApEI,IAAAA,aAAe,GAAAF,kBAAA,CAAA,CAAA,CAAA;AAAAG,IAAAA,gBAAgB,GAAAH,kBAAA,CAAA,CAAA,CAAA,CAAA;AAGhC,EAAA,IAAAI,gBAAA,GAAmBC,eAAelB,QAAQ,CAAA,CAAA;AAGhD,EAAA,IAAMmB,YAAe,GAAAC,WAAA,CACnB,UAACC,GAAmC,EAAA;IAClCL,gBAAA,CAAiBK,GAAG,CAAA,CAAA;AACtB,GAAA,EACA,CAACL,gBAAgB,CACnB,CAAA,CAAA;AAGA,EAAA,IAAMM,eAAkB,GAAAvB,OAAA,CAAQwB,GAAI,CAAA,UAACC,GAAS,EAAA;IAAA,OAAA;MAC5CC,KAAA,EAAOC,OAAA,CAAOF,GAAA,CAAIC,KAAU,CAAA,KAAA,QAAA,IAAY,UAAUD,GAAI,CAAAC,KAAA,GAAQD,GAAI,CAAAC,KAAA,GAAQD,GAAI,CAAAC,KAAA;MAC9E5B,OAAO2B,GAAI,CAAA3B,KAAA;MACXG,UAAUwB,GAAI,CAAAxB,QAAAA;KACd,CAAA;AAAA,GAAA,CAAA,CAAA;AAEF,EAAA,sBACG2B,cAAA,CAAAC,aAAA,CAAAC,UAAA,EAAA;AACCpB,IAAAA,SAAA,EAAAA,SAAA;AACAC,IAAAA,KAAA,EAAAA,KAAA;AACAb,IAAAA,KAAO,EAAAkB,aAAA;AACPhB,IAAAA,OAAS,EAAAuB,eAAA;AACTtB,IAAAA,QAAU,EAAAiB,gBAAA;AACVf,IAAAA,KAAA,EAAAA,KAAA;AACAE,IAAAA,OAAA,EAAAA,OAAA;AACAE,IAAAA,IAAA,EAAAA,IAAA;AACAE,IAAAA,YAAA,EAAAA,YAAA;AACAsB,IAAAA,QAAU,EAAAX,YAAAA;AACZ,GAAA,CAAA,CAAA;AAEJ,EAAA;AAEAvB,cAAA,CAAemC,WAAc,GAAA,gBAAA;;;;"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * A2UI Slider 组件
3
+ * A2UI v0.9 标准滑块组件
4
+ */
5
+ import React from 'react';
6
+ import type { A2UISliderComponent } from '../../../core/a2ui';
7
+ export interface A2UISliderProps extends Omit<A2UISliderComponent, 'component'> {
8
+ className?: string;
9
+ style?: React.CSSProperties;
10
+ }
11
+ export declare const A2UISlider: React.FC<A2UISliderProps>;
12
+ export default A2UISlider;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.14
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
8
+ import React__default, { useCallback } from 'react';
9
+ import { Slider } from 'tdesign-react';
10
+ import { useDataBinding, useTwoWayBinding } from '../../../hooks/a2ui/useDataBinding.js';
11
+ import '../../../hooks/a2ui/A2UIContext.js';
12
+ import '@babel/runtime/helpers/defineProperty';
13
+ import '../../../core/a2ui/utils/index.js';
14
+ import '../../../core/a2ui/utils/binding.js';
15
+ import '@babel/runtime/helpers/typeof';
16
+ import '../../../core/a2ui/utils/validation.js';
17
+ import '@babel/runtime/helpers/toConsumableArray';
18
+
19
+ var A2UISlider = function A2UISlider(_ref) {
20
+ var id = _ref.id,
21
+ label = _ref.label,
22
+ _ref$min = _ref.min,
23
+ min = _ref$min === void 0 ? 0 : _ref$min,
24
+ _ref$max = _ref.max,
25
+ max = _ref$max === void 0 ? 100 : _ref$max,
26
+ value = _ref.value,
27
+ className = _ref.className,
28
+ style = _ref.style;
29
+ var resolvedLabel = useDataBinding(label);
30
+ var _useTwoWayBinding = useTwoWayBinding(value, min),
31
+ _useTwoWayBinding2 = _slicedToArray(_useTwoWayBinding, 2),
32
+ sliderValue = _useTwoWayBinding2[0],
33
+ setSliderValue = _useTwoWayBinding2[1];
34
+ var handleChange = useCallback(function (val) {
35
+ setSliderValue(val);
36
+ }, [setSliderValue]);
37
+ return /* @__PURE__ */React__default.createElement("div", {
38
+ className: className,
39
+ style: style
40
+ }, resolvedLabel && /* @__PURE__ */React__default.createElement("label", {
41
+ style: {
42
+ display: "block",
43
+ marginBottom: 8
44
+ }
45
+ }, resolvedLabel), /* @__PURE__ */React__default.createElement(Slider, {
46
+ value: sliderValue,
47
+ min: min,
48
+ max: max,
49
+ onChange: handleChange
50
+ }));
51
+ };
52
+ A2UISlider.displayName = "A2UISlider";
53
+
54
+ export { A2UISlider, A2UISlider as default };
55
+ //# sourceMappingURL=A2UISlider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"A2UISlider.js","sources":["../../../../../../pro-components/chat/chat-engine/components/a2ui/primitives/A2UISlider.tsx"],"sourcesContent":["/**\n * A2UI Slider 组件\n * A2UI v0.9 标准滑块组件\n */\n\nimport React, { useCallback } from 'react';\nimport { Slider } from 'tdesign-react';\nimport { useDataBinding, useTwoWayBinding } from '../../../hooks/a2ui/useDataBinding';\nimport type { A2UISliderComponent } from '../../../core/a2ui';\n\nexport interface A2UISliderProps extends Omit<A2UISliderComponent, 'component'> {\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const A2UISlider: React.FC<A2UISliderProps> = ({\n id,\n label,\n min = 0,\n max = 100,\n value,\n className,\n style,\n}) => {\n // 解析标签\n const resolvedLabel = useDataBinding<React.ReactNode>(label);\n // 双向绑定值\n const [sliderValue, setSliderValue] = useTwoWayBinding<number>(value, min as number);\n\n // 处理 onChange\n const handleChange = useCallback(\n (val: number) => {\n setSliderValue(val);\n },\n [setSliderValue]\n );\n\n return (\n <div className={className} style={style}>\n {resolvedLabel && (\n <label style={{ display: 'block', marginBottom: 8 }}>{resolvedLabel}</label>\n )}\n <Slider\n value={sliderValue}\n min={min as number}\n max={max as number}\n onChange={handleChange}\n />\n </div>\n );\n};\n\nA2UISlider.displayName = 'A2UISlider';\n\nexport default A2UISlider;\n"],"names":["A2UISlider","id","_ref","label","_ref$min","min","_ref$max","max","value","className","style","resolvedLabel","useDataBinding","_useTwoWayBinding","useTwoWayBinding","_useTwoWayBinding2","_slicedToArray","sliderValue","setSliderValue","handleChange","useCallback","val","React","createElement","display","marginBottom","Slider","onChange","displayName"],"mappings":";;;;;;;;;;;;;;;;;;IAeaA,aAAwC,SAAxCA,iBAQP;AAAA,EAAA,IAPJC,EAAA,GAAAC,IAAA,CAAAD,EAAA;IACAE,KAAA,GAAAD,IAAA,CAAAC,KAAA;IAAAC,QAAA,GAAAF,IAAA,CACAG,GAAM;AAANA,IAAAA,GAAM,GAAAD,QAAA,KAAA,KAAA,CAAA,GAAA,CAAA,GAAAA,QAAA;IAAAE,QAAA,GAAAJ,IAAA,CACNK,GAAM;AAANA,IAAAA,GAAM,GAAAD,QAAA,KAAA,KAAA,CAAA,GAAA,GAAA,GAAAA,QAAA;IACNE,KAAA,GAAAN,IAAA,CAAAM,KAAA;IACAC,SAAA,GAAAP,IAAA,CAAAO,SAAA;IACAC,KAAA,GAAAR,IAAA,CAAAQ,KAAA,CAAA;AAGM,EAAA,IAAAC,aAAA,GAAgBC,eAAgCT,KAAK,CAAA,CAAA;AAE3D,EAAA,IAAAU,iBAAA,GAAsCC,gBAAA,CAAyBN,OAAOH,GAAa,CAAA;IAAAU,kBAAA,GAAAC,cAAA,CAAAH,iBAAA,EAAA,CAAA,CAAA;AAA5EI,IAAAA,WAAa,GAAAF,kBAAA,CAAA,CAAA,CAAA;AAAAG,IAAAA,cAAc,GAAAH,kBAAA,CAAA,CAAA,CAAA,CAAA;AAGlC,EAAA,IAAMI,YAAe,GAAAC,WAAA,CACnB,UAACC,GAAgB,EAAA;IACfH,cAAA,CAAeG,GAAG,CAAA,CAAA;AACpB,GAAA,EACA,CAACH,cAAc,CACjB,CAAA,CAAA;AAEA,EAAA,sBACGI,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAId,IAAAA,SAAA,EAAAA,SAAA;AAAsBC,IAAAA,KAAA,EAAAA,KAAAA;GAAA,EACxBC,gCACEW,cAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAMb,IAAAA,KAAO,EAAA;AAAEc,MAAAA,OAAS,EAAA,OAAA;AAASC,MAAAA,cAAc,CAAA;AAAE,KAAA;GAAI,EAAAd,aAAc,kBAErEW,cAAA,CAAAC,aAAA,CAAAG,MAAA,EAAA;AACClB,IAAAA,KAAO,EAAAS,WAAA;AACPZ,IAAAA,GAAA,EAAAA,GAAA;AACAE,IAAAA,GAAA,EAAAA,GAAA;AACAoB,IAAAA,QAAU,EAAAR,YAAAA;AAAA,GACZ,CACF,CAAA,CAAA;AAEJ,EAAA;AAEAnB,UAAA,CAAW4B,WAAc,GAAA,YAAA;;;;"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * A2UI Text 组件
3
+ * 用于渲染文本内容
4
+ */
5
+ import React from 'react';
6
+ import type { A2UITextComponent } from '../../../core/a2ui';
7
+ export interface A2UITextProps extends Omit<A2UITextComponent, 'component'> {
8
+ className?: string;
9
+ style?: React.CSSProperties;
10
+ }
11
+ export declare const A2UIText: React.FC<A2UITextProps>;
12
+ export default A2UIText;
@@ -0,0 +1,104 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.14
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
8
+ import React__default, { useMemo } from 'react';
9
+ import classNames from 'classnames';
10
+ import { useDataBinding } from '../../../hooks/a2ui/useDataBinding.js';
11
+ import '@babel/runtime/helpers/slicedToArray';
12
+ import '../../../hooks/a2ui/A2UIContext.js';
13
+ import '../../../core/a2ui/utils/index.js';
14
+ import '../../../core/a2ui/utils/binding.js';
15
+ import '@babel/runtime/helpers/typeof';
16
+ import '../../../core/a2ui/utils/validation.js';
17
+ import '@babel/runtime/helpers/toConsumableArray';
18
+
19
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
21
+ var usageHintStyleMap = {
22
+ h1: {
23
+ fontSize: "2em",
24
+ fontWeight: 700,
25
+ margin: "0.67em 0"
26
+ },
27
+ h2: {
28
+ fontSize: "1.5em",
29
+ fontWeight: 600,
30
+ margin: "0.75em 0"
31
+ },
32
+ h3: {
33
+ fontSize: "1.25em",
34
+ fontWeight: 600,
35
+ margin: "0.83em 0"
36
+ },
37
+ h4: {
38
+ fontSize: "1em",
39
+ fontWeight: 600,
40
+ margin: "1.12em 0"
41
+ },
42
+ h5: {
43
+ fontSize: "0.875em",
44
+ fontWeight: 600,
45
+ margin: "1.5em 0"
46
+ },
47
+ caption: {
48
+ fontSize: "0.875em",
49
+ color: "var(--td-text-color-secondary, #666)"
50
+ },
51
+ body: {}
52
+ };
53
+ var variantStyleMap = {
54
+ body: {},
55
+ heading: {
56
+ fontWeight: 600,
57
+ fontSize: "1.25em"
58
+ },
59
+ caption: {
60
+ fontSize: "0.875em",
61
+ color: "var(--td-text-color-secondary, #666)"
62
+ },
63
+ code: {
64
+ fontFamily: "monospace",
65
+ backgroundColor: "var(--td-bg-color-component, #f5f5f5)",
66
+ padding: "2px 6px",
67
+ borderRadius: "4px"
68
+ }
69
+ };
70
+ var A2UIText = function A2UIText(_ref) {
71
+ var text = _ref.text,
72
+ usageHint = _ref.usageHint,
73
+ variant = _ref.variant,
74
+ className = _ref.className,
75
+ style = _ref.style;
76
+ var resolvedText = useDataBinding(text);
77
+ var computedStyle = useMemo(function () {
78
+ if (usageHint && typeof usageHint === "string") {
79
+ return usageHintStyleMap[usageHint] || {};
80
+ }
81
+ if (variant && typeof variant === "string") {
82
+ return variantStyleMap[variant] || {};
83
+ }
84
+ return {};
85
+ }, [usageHint, variant]);
86
+ var Tag = useMemo(function () {
87
+ if (usageHint === "h1") return "h1";
88
+ if (usageHint === "h2") return "h2";
89
+ if (usageHint === "h3") return "h3";
90
+ if (usageHint === "h4") return "h4";
91
+ if (usageHint === "h5") return "h5";
92
+ if (variant === "heading") return "h3";
93
+ if (variant === "code") return "code";
94
+ return "span";
95
+ }, [usageHint, variant]);
96
+ return /*#__PURE__*/React__default.createElement(Tag, {
97
+ className: classNames("a2ui-text", className),
98
+ style: _objectSpread(_objectSpread({}, computedStyle), style)
99
+ }, resolvedText);
100
+ };
101
+ A2UIText.displayName = "A2UIText";
102
+
103
+ export { A2UIText, A2UIText as default };
104
+ //# sourceMappingURL=A2UIText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"A2UIText.js","sources":["../../../../../../pro-components/chat/chat-engine/components/a2ui/primitives/A2UIText.tsx"],"sourcesContent":["/**\n * A2UI Text 组件\n * 用于渲染文本内容\n */\n\nimport React, { useMemo } from 'react';\nimport classNames from 'classnames';\nimport { useDataBinding } from '../../../hooks/a2ui/useDataBinding';\nimport type { A2UITextComponent } from '../../../core/a2ui';\n\nexport interface A2UITextProps extends Omit<A2UITextComponent, 'component'> {\n className?: string;\n style?: React.CSSProperties;\n}\n\n// A2UI v0.9 usageHint 映射到样式\nconst usageHintStyleMap: Record<string, React.CSSProperties> = {\n h1: { fontSize: '2em', fontWeight: 700, margin: '0.67em 0' },\n h2: { fontSize: '1.5em', fontWeight: 600, margin: '0.75em 0' },\n h3: { fontSize: '1.25em', fontWeight: 600, margin: '0.83em 0' },\n h4: { fontSize: '1em', fontWeight: 600, margin: '1.12em 0' },\n h5: { fontSize: '0.875em', fontWeight: 600, margin: '1.5em 0' },\n caption: { fontSize: '0.875em', color: 'var(--td-text-color-secondary, #666)' },\n body: {},\n};\n\n// 向后兼容旧版 variant\nconst variantStyleMap: Record<string, React.CSSProperties> = {\n body: {},\n heading: { fontWeight: 600, fontSize: '1.25em' },\n caption: { fontSize: '0.875em', color: 'var(--td-text-color-secondary, #666)' },\n code: {\n fontFamily: 'monospace',\n backgroundColor: 'var(--td-bg-color-component, #f5f5f5)',\n padding: '2px 6px',\n borderRadius: '4px',\n },\n};\n\nexport const A2UIText: React.FC<A2UITextProps> = ({\n text,\n usageHint,\n // 向后兼容旧版 variant\n variant,\n className,\n style,\n}: A2UITextProps & { variant?: string }) => {\n // 解析绑定值\n const resolvedText = useDataBinding(text);\n\n // 优先使用 usageHint(A2UI v0.9),其次使用 variant(向后兼容)\n const computedStyle = useMemo(() => {\n if (usageHint && typeof usageHint === 'string') {\n return usageHintStyleMap[usageHint] || {};\n }\n if (variant && typeof variant === 'string') {\n return variantStyleMap[variant] || {};\n }\n return {};\n }, [usageHint, variant]);\n\n // 根据 usageHint 选择标签\n const Tag: keyof JSX.IntrinsicElements = useMemo(() => {\n if (usageHint === 'h1') return 'h1';\n if (usageHint === 'h2') return 'h2';\n if (usageHint === 'h3') return 'h3';\n if (usageHint === 'h4') return 'h4';\n if (usageHint === 'h5') return 'h5';\n if (variant === 'heading') return 'h3';\n if (variant === 'code') return 'code';\n return 'span';\n }, [usageHint, variant]);\n\n return React.createElement(\n Tag,\n {\n className: classNames('a2ui-text', className),\n style: { ...computedStyle, ...style },\n },\n resolvedText as React.ReactNode\n );\n};\n\nA2UIText.displayName = 'A2UIText';\n\nexport default A2UIText;\n"],"names":["usageHintStyleMap","h1","fontSize","fontWeight","margin","h2","h3","h4","h5","caption","color","body","variantStyleMap","heading","code","fontFamily","backgroundColor","padding","borderRadius","A2UIText","text","_ref","usageHint","variant","className","style","resolvedText","useDataBinding","computedStyle","useMemo","Tag","React","createElement","classNames","_objectSpread","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;AAgBA,IAAMA,iBAAyD,GAAA;AAC7DC,EAAAA,IAAI;AAAEC,IAAAA,QAAA,EAAU;AAAOC,IAAAA,UAAY,EAAA,GAAA;AAAKC,IAAAA,QAAQ,UAAA;GAAW;AAC3DC,EAAAA,IAAI;AAAEH,IAAAA,QAAA,EAAU;AAASC,IAAAA,UAAY,EAAA,GAAA;AAAKC,IAAAA,QAAQ,UAAA;GAAW;AAC7DE,EAAAA,IAAI;AAAEJ,IAAAA,QAAA,EAAU;AAAUC,IAAAA,UAAY,EAAA,GAAA;AAAKC,IAAAA,QAAQ,UAAA;GAAW;AAC9DG,EAAAA,IAAI;AAAEL,IAAAA,QAAA,EAAU;AAAOC,IAAAA,UAAY,EAAA,GAAA;AAAKC,IAAAA,QAAQ,UAAA;GAAW;AAC3DI,EAAAA,IAAI;AAAEN,IAAAA,QAAA,EAAU;AAAWC,IAAAA,UAAY,EAAA,GAAA;AAAKC,IAAAA,QAAQ,SAAA;GAAU;AAC9DK,EAAAA,OAAS,EAAA;AAAEP,IAAAA,QAAU,EAAA,SAAA;AAAWQ,IAAAA,OAAO,sCAAA;GAAuC;AAC9EC,EAAAA,MAAM,EAAC;AACT,CAAA,CAAA;AAGA,IAAMC,eAAuD,GAAA;EAC3DD,MAAM,EAAC;AACPE,EAAAA,OAAS,EAAA;AAAEV,IAAAA,UAAY,EAAA,GAAA;AAAKD,IAAAA,UAAU,QAAA;GAAS;AAC/CO,EAAAA,OAAS,EAAA;AAAEP,IAAAA,QAAU,EAAA,SAAA;AAAWQ,IAAAA,OAAO,sCAAA;GAAuC;AAC9EI,EAAAA,IAAM,EAAA;AACJC,IAAAA,UAAY,EAAA,WAAA;AACZC,IAAAA,eAAiB,EAAA,uCAAA;AACjBC,IAAAA,OAAS,EAAA,SAAA;AACTC,IAAAA,YAAc,EAAA,KAAA;AAChB,GAAA;AACF,CAAA,CAAA;IAEaC,WAAoC,SAApCA,eAO+B;AAAA,EAAA,IAN1CC,IAAA,GAAAC,IAAA,CAAAD,IAAA;IACAE,SAAA,GAAAD,IAAA,CAAAC,SAAA;IAEAC,OAAA,GAAAF,IAAA,CAAAE,OAAA;IACAC,SAAA,GAAAH,IAAA,CAAAG,SAAA;IACAC,KAAA,GAAAJ,IAAA,CAAAI,KAAA,CAAA;AAGM,EAAA,IAAAC,YAAA,GAAeC,eAAeP,IAAI,CAAA,CAAA;AAGlC,EAAA,IAAAQ,aAAA,GAAgBC,QAAQ,YAAM;AAC9B,IAAA,IAAAP,SAAA,IAAa,OAAOA,SAAA,KAAc,QAAU,EAAA;AACvC,MAAA,OAAAtB,iBAAA,CAAkBsB,cAAc,EAAC,CAAA;AAC1C,KAAA;AACI,IAAA,IAAAC,OAAA,IAAW,OAAOA,OAAA,KAAY,QAAU,EAAA;AACnC,MAAA,OAAAX,eAAA,CAAgBW,YAAY,EAAC,CAAA;AACtC,KAAA;AACA,IAAA,OAAO,EAAC,CAAA;AACV,GAAG,EAAA,CAACD,SAAW,EAAAC,OAAO,CAAC,CAAA,CAAA;AAGjB,EAAA,IAAAO,GAAA,GAAmCD,QAAQ,YAAM;AACrD,IAAA,IAAIP,SAAc,KAAA,IAAA,EAAa,OAAA,IAAA,CAAA;AAC/B,IAAA,IAAIA,SAAc,KAAA,IAAA,EAAa,OAAA,IAAA,CAAA;AAC/B,IAAA,IAAIA,SAAc,KAAA,IAAA,EAAa,OAAA,IAAA,CAAA;AAC/B,IAAA,IAAIA,SAAc,KAAA,IAAA,EAAa,OAAA,IAAA,CAAA;AAC/B,IAAA,IAAIA,SAAc,KAAA,IAAA,EAAa,OAAA,IAAA,CAAA;AAC/B,IAAA,IAAIC,OAAY,KAAA,SAAA,EAAkB,OAAA,IAAA,CAAA;AAClC,IAAA,IAAIA,OAAY,KAAA,MAAA,EAAe,OAAA,MAAA,CAAA;AACxB,IAAA,OAAA,MAAA,CAAA;AACT,GAAG,EAAA,CAACD,SAAW,EAAAC,OAAO,CAAC,CAAA,CAAA;AAEvB,EAAA,oBAAOQ,cAAM,CAAAC,aAAA,CACXF,GAAA,EACA;AACEN,IAAAA,SAAA,EAAWS,UAAW,CAAA,WAAA,EAAaT,SAAS,CAAA;AAC5CC,IAAAA,KAAO,EAAAS,aAAA,CAAAA,aAAA,CAAKN,EAAAA,EAAAA,aAAA,GAAkBH,KAAM,CAAA;GACtC,EACAC,YACF,CAAA,CAAA;AACF,EAAA;AAEAP,QAAA,CAASgB,WAAc,GAAA,UAAA;;;;"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * A2UI TextField 组件
3
+ * A2UI v0.9 标准输入框组件
4
+ */
5
+ import React from 'react';
6
+ import type { A2UITextFieldComponent } from '../../../core/a2ui';
7
+ export interface A2UITextFieldProps extends Omit<A2UITextFieldComponent, 'component'> {
8
+ className?: string;
9
+ style?: React.CSSProperties;
10
+ }
11
+ export declare const A2UITextField: React.FC<A2UITextFieldProps>;
12
+ export default A2UITextField;
@@ -0,0 +1,80 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.14
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
8
+ import React__default, { useCallback } from 'react';
9
+ import { Textarea, Input } from 'tdesign-react';
10
+ import { useDataBinding, useTwoWayBinding } from '../../../hooks/a2ui/useDataBinding.js';
11
+ import '../../../hooks/a2ui/A2UIContext.js';
12
+ import '@babel/runtime/helpers/defineProperty';
13
+ import '../../../core/a2ui/utils/index.js';
14
+ import '../../../core/a2ui/utils/binding.js';
15
+ import '@babel/runtime/helpers/typeof';
16
+ import '../../../core/a2ui/utils/validation.js';
17
+ import '@babel/runtime/helpers/toConsumableArray';
18
+
19
+ var A2UITextField = function A2UITextField(_ref) {
20
+ var id = _ref.id,
21
+ label = _ref.label,
22
+ text = _ref.text,
23
+ _ref$usageHint = _ref.usageHint,
24
+ usageHint = _ref$usageHint === void 0 ? "shortText" : _ref$usageHint,
25
+ validationRegexp = _ref.validationRegexp,
26
+ placeholder = _ref.placeholder,
27
+ disabled = _ref.disabled,
28
+ className = _ref.className,
29
+ style = _ref.style;
30
+ var resolvedLabel = useDataBinding(label);
31
+ var _useTwoWayBinding = useTwoWayBinding(text, ""),
32
+ _useTwoWayBinding2 = _slicedToArray(_useTwoWayBinding, 2),
33
+ inputValue = _useTwoWayBinding2[0],
34
+ setInputValue = _useTwoWayBinding2[1];
35
+ var resolvedDisabled = useDataBinding(disabled);
36
+ var handleChange = useCallback(function (val) {
37
+ if (validationRegexp && typeof validationRegexp === "string") {
38
+ var regex = new RegExp(validationRegexp);
39
+ if (!regex.test(val) && val !== "") {
40
+ return;
41
+ }
42
+ }
43
+ setInputValue(val);
44
+ }, [setInputValue, validationRegexp]);
45
+ if (usageHint === "longText") {
46
+ return /* @__PURE__ */React__default.createElement("div", {
47
+ className: className,
48
+ style: style
49
+ }, resolvedLabel && /* @__PURE__ */React__default.createElement("label", {
50
+ style: {
51
+ display: "block",
52
+ marginBottom: 4
53
+ }
54
+ }, resolvedLabel), /* @__PURE__ */React__default.createElement(Textarea, {
55
+ value: inputValue,
56
+ placeholder: placeholder,
57
+ disabled: resolvedDisabled,
58
+ onChange: handleChange,
59
+ autosize: {
60
+ minRows: 3,
61
+ maxRows: 10
62
+ }
63
+ }));
64
+ }
65
+ var inputType = usageHint === "obscured" ? "password" : usageHint === "number" ? "number" : "text";
66
+ return /* @__PURE__ */React__default.createElement(Input, {
67
+ className: className,
68
+ style: style,
69
+ value: inputValue,
70
+ placeholder: placeholder,
71
+ disabled: resolvedDisabled,
72
+ label: resolvedLabel,
73
+ type: inputType,
74
+ onChange: handleChange
75
+ });
76
+ };
77
+ A2UITextField.displayName = "A2UITextField";
78
+
79
+ export { A2UITextField, A2UITextField as default };
80
+ //# sourceMappingURL=A2UITextField.js.map