@copilotkit/a2ui-renderer 1.60.2 → 1.61.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 (295) hide show
  1. package/dist/web-components/_virtual/_rolldown/runtime.cjs +19 -0
  2. package/dist/web-components/_virtual/_rolldown/runtime.mjs +18 -0
  3. package/dist/web-components/a2ui-types.d.cts +23 -0
  4. package/dist/web-components/a2ui-types.d.cts.map +1 -0
  5. package/dist/web-components/a2ui-types.d.mts +23 -0
  6. package/dist/web-components/a2ui-types.d.mts.map +1 -0
  7. package/dist/web-components/adapter.cjs +33 -0
  8. package/dist/web-components/adapter.cjs.map +1 -0
  9. package/dist/web-components/adapter.d.cts +12 -0
  10. package/dist/web-components/adapter.d.cts.map +1 -0
  11. package/dist/web-components/adapter.d.mts +12 -0
  12. package/dist/web-components/adapter.d.mts.map +1 -0
  13. package/dist/web-components/adapter.mjs +32 -0
  14. package/dist/web-components/adapter.mjs.map +1 -0
  15. package/dist/web-components/bound-component.cjs +71 -0
  16. package/dist/web-components/bound-component.cjs.map +1 -0
  17. package/dist/web-components/bound-component.d.cts +44 -0
  18. package/dist/web-components/bound-component.d.cts.map +1 -0
  19. package/dist/web-components/bound-component.d.mts +44 -0
  20. package/dist/web-components/bound-component.d.mts.map +1 -0
  21. package/dist/web-components/bound-component.mjs +71 -0
  22. package/dist/web-components/bound-component.mjs.map +1 -0
  23. package/dist/web-components/catalog/basic/audio-player.cjs +32 -0
  24. package/dist/web-components/catalog/basic/audio-player.cjs.map +1 -0
  25. package/dist/web-components/catalog/basic/audio-player.d.cts +8 -0
  26. package/dist/web-components/catalog/basic/audio-player.d.cts.map +1 -0
  27. package/dist/web-components/catalog/basic/audio-player.d.mts +8 -0
  28. package/dist/web-components/catalog/basic/audio-player.d.mts.map +1 -0
  29. package/dist/web-components/catalog/basic/audio-player.mjs +32 -0
  30. package/dist/web-components/catalog/basic/audio-player.mjs.map +1 -0
  31. package/dist/web-components/catalog/basic/button.cjs +33 -0
  32. package/dist/web-components/catalog/basic/button.cjs.map +1 -0
  33. package/dist/web-components/catalog/basic/button.d.cts +8 -0
  34. package/dist/web-components/catalog/basic/button.d.cts.map +1 -0
  35. package/dist/web-components/catalog/basic/button.d.mts +8 -0
  36. package/dist/web-components/catalog/basic/button.d.mts.map +1 -0
  37. package/dist/web-components/catalog/basic/button.mjs +33 -0
  38. package/dist/web-components/catalog/basic/button.mjs.map +1 -0
  39. package/dist/web-components/catalog/basic/card.cjs +23 -0
  40. package/dist/web-components/catalog/basic/card.cjs.map +1 -0
  41. package/dist/web-components/catalog/basic/card.d.cts +8 -0
  42. package/dist/web-components/catalog/basic/card.d.cts.map +1 -0
  43. package/dist/web-components/catalog/basic/card.d.mts +8 -0
  44. package/dist/web-components/catalog/basic/card.d.mts.map +1 -0
  45. package/dist/web-components/catalog/basic/card.mjs +23 -0
  46. package/dist/web-components/catalog/basic/card.mjs.map +1 -0
  47. package/dist/web-components/catalog/basic/check-box.cjs +50 -0
  48. package/dist/web-components/catalog/basic/check-box.cjs.map +1 -0
  49. package/dist/web-components/catalog/basic/check-box.d.cts +8 -0
  50. package/dist/web-components/catalog/basic/check-box.d.cts.map +1 -0
  51. package/dist/web-components/catalog/basic/check-box.d.mts +8 -0
  52. package/dist/web-components/catalog/basic/check-box.d.mts.map +1 -0
  53. package/dist/web-components/catalog/basic/check-box.mjs +50 -0
  54. package/dist/web-components/catalog/basic/check-box.mjs.map +1 -0
  55. package/dist/web-components/catalog/basic/choice-picker.cjs +90 -0
  56. package/dist/web-components/catalog/basic/choice-picker.cjs.map +1 -0
  57. package/dist/web-components/catalog/basic/choice-picker.d.cts +8 -0
  58. package/dist/web-components/catalog/basic/choice-picker.d.cts.map +1 -0
  59. package/dist/web-components/catalog/basic/choice-picker.d.mts +8 -0
  60. package/dist/web-components/catalog/basic/choice-picker.d.mts.map +1 -0
  61. package/dist/web-components/catalog/basic/choice-picker.mjs +90 -0
  62. package/dist/web-components/catalog/basic/choice-picker.mjs.map +1 -0
  63. package/dist/web-components/catalog/basic/column.cjs +27 -0
  64. package/dist/web-components/catalog/basic/column.cjs.map +1 -0
  65. package/dist/web-components/catalog/basic/column.d.cts +8 -0
  66. package/dist/web-components/catalog/basic/column.d.cts.map +1 -0
  67. package/dist/web-components/catalog/basic/column.d.mts +8 -0
  68. package/dist/web-components/catalog/basic/column.d.mts.map +1 -0
  69. package/dist/web-components/catalog/basic/column.mjs +27 -0
  70. package/dist/web-components/catalog/basic/column.mjs.map +1 -0
  71. package/dist/web-components/catalog/basic/components.cjs +44 -0
  72. package/dist/web-components/catalog/basic/components.cjs.map +1 -0
  73. package/dist/web-components/catalog/basic/components.d.cts +19 -0
  74. package/dist/web-components/catalog/basic/components.d.mts +19 -0
  75. package/dist/web-components/catalog/basic/components.mjs +44 -0
  76. package/dist/web-components/catalog/basic/components.mjs.map +1 -0
  77. package/dist/web-components/catalog/basic/date-time-input.cjs +50 -0
  78. package/dist/web-components/catalog/basic/date-time-input.cjs.map +1 -0
  79. package/dist/web-components/catalog/basic/date-time-input.d.cts +8 -0
  80. package/dist/web-components/catalog/basic/date-time-input.d.cts.map +1 -0
  81. package/dist/web-components/catalog/basic/date-time-input.d.mts +8 -0
  82. package/dist/web-components/catalog/basic/date-time-input.d.mts.map +1 -0
  83. package/dist/web-components/catalog/basic/date-time-input.mjs +50 -0
  84. package/dist/web-components/catalog/basic/date-time-input.mjs.map +1 -0
  85. package/dist/web-components/catalog/basic/divider.cjs +21 -0
  86. package/dist/web-components/catalog/basic/divider.cjs.map +1 -0
  87. package/dist/web-components/catalog/basic/divider.d.cts +8 -0
  88. package/dist/web-components/catalog/basic/divider.d.cts.map +1 -0
  89. package/dist/web-components/catalog/basic/divider.d.mts +8 -0
  90. package/dist/web-components/catalog/basic/divider.d.mts.map +1 -0
  91. package/dist/web-components/catalog/basic/divider.mjs +21 -0
  92. package/dist/web-components/catalog/basic/divider.mjs.map +1 -0
  93. package/dist/web-components/catalog/basic/icon.cjs +29 -0
  94. package/dist/web-components/catalog/basic/icon.cjs.map +1 -0
  95. package/dist/web-components/catalog/basic/icon.d.cts +8 -0
  96. package/dist/web-components/catalog/basic/icon.d.cts.map +1 -0
  97. package/dist/web-components/catalog/basic/icon.d.mts +8 -0
  98. package/dist/web-components/catalog/basic/icon.d.mts.map +1 -0
  99. package/dist/web-components/catalog/basic/icon.mjs +29 -0
  100. package/dist/web-components/catalog/basic/icon.mjs.map +1 -0
  101. package/dist/web-components/catalog/basic/ids.cjs +11 -0
  102. package/dist/web-components/catalog/basic/ids.cjs.map +1 -0
  103. package/dist/web-components/catalog/basic/ids.mjs +10 -0
  104. package/dist/web-components/catalog/basic/ids.mjs.map +1 -0
  105. package/dist/web-components/catalog/basic/image.cjs +42 -0
  106. package/dist/web-components/catalog/basic/image.cjs.map +1 -0
  107. package/dist/web-components/catalog/basic/image.d.cts +8 -0
  108. package/dist/web-components/catalog/basic/image.d.cts.map +1 -0
  109. package/dist/web-components/catalog/basic/image.d.mts +8 -0
  110. package/dist/web-components/catalog/basic/image.d.mts.map +1 -0
  111. package/dist/web-components/catalog/basic/image.mjs +42 -0
  112. package/dist/web-components/catalog/basic/image.mjs.map +1 -0
  113. package/dist/web-components/catalog/basic/index.cjs +31 -0
  114. package/dist/web-components/catalog/basic/index.cjs.map +1 -0
  115. package/dist/web-components/catalog/basic/index.d.cts +29 -0
  116. package/dist/web-components/catalog/basic/index.d.cts.map +1 -0
  117. package/dist/web-components/catalog/basic/index.d.mts +29 -0
  118. package/dist/web-components/catalog/basic/index.d.mts.map +1 -0
  119. package/dist/web-components/catalog/basic/index.mjs +30 -0
  120. package/dist/web-components/catalog/basic/index.mjs.map +1 -0
  121. package/dist/web-components/catalog/basic/list.cjs +31 -0
  122. package/dist/web-components/catalog/basic/list.cjs.map +1 -0
  123. package/dist/web-components/catalog/basic/list.d.cts +8 -0
  124. package/dist/web-components/catalog/basic/list.d.cts.map +1 -0
  125. package/dist/web-components/catalog/basic/list.d.mts +8 -0
  126. package/dist/web-components/catalog/basic/list.d.mts.map +1 -0
  127. package/dist/web-components/catalog/basic/list.mjs +31 -0
  128. package/dist/web-components/catalog/basic/list.mjs.map +1 -0
  129. package/dist/web-components/catalog/basic/modal.cjs +80 -0
  130. package/dist/web-components/catalog/basic/modal.cjs.map +1 -0
  131. package/dist/web-components/catalog/basic/modal.d.cts +8 -0
  132. package/dist/web-components/catalog/basic/modal.d.cts.map +1 -0
  133. package/dist/web-components/catalog/basic/modal.d.mts +8 -0
  134. package/dist/web-components/catalog/basic/modal.d.mts.map +1 -0
  135. package/dist/web-components/catalog/basic/modal.mjs +80 -0
  136. package/dist/web-components/catalog/basic/modal.mjs.map +1 -0
  137. package/dist/web-components/catalog/basic/row.cjs +27 -0
  138. package/dist/web-components/catalog/basic/row.cjs.map +1 -0
  139. package/dist/web-components/catalog/basic/row.d.cts +8 -0
  140. package/dist/web-components/catalog/basic/row.d.cts.map +1 -0
  141. package/dist/web-components/catalog/basic/row.d.mts +8 -0
  142. package/dist/web-components/catalog/basic/row.d.mts.map +1 -0
  143. package/dist/web-components/catalog/basic/row.mjs +27 -0
  144. package/dist/web-components/catalog/basic/row.mjs.map +1 -0
  145. package/dist/web-components/catalog/basic/slider.cjs +44 -0
  146. package/dist/web-components/catalog/basic/slider.cjs.map +1 -0
  147. package/dist/web-components/catalog/basic/slider.d.cts +8 -0
  148. package/dist/web-components/catalog/basic/slider.d.cts.map +1 -0
  149. package/dist/web-components/catalog/basic/slider.d.mts +8 -0
  150. package/dist/web-components/catalog/basic/slider.d.mts.map +1 -0
  151. package/dist/web-components/catalog/basic/slider.mjs +44 -0
  152. package/dist/web-components/catalog/basic/slider.mjs.map +1 -0
  153. package/dist/web-components/catalog/basic/tabs.cjs +58 -0
  154. package/dist/web-components/catalog/basic/tabs.cjs.map +1 -0
  155. package/dist/web-components/catalog/basic/tabs.d.cts +8 -0
  156. package/dist/web-components/catalog/basic/tabs.d.cts.map +1 -0
  157. package/dist/web-components/catalog/basic/tabs.d.mts +8 -0
  158. package/dist/web-components/catalog/basic/tabs.d.mts.map +1 -0
  159. package/dist/web-components/catalog/basic/tabs.mjs +58 -0
  160. package/dist/web-components/catalog/basic/tabs.mjs.map +1 -0
  161. package/dist/web-components/catalog/basic/text-field.cjs +60 -0
  162. package/dist/web-components/catalog/basic/text-field.cjs.map +1 -0
  163. package/dist/web-components/catalog/basic/text-field.d.cts +8 -0
  164. package/dist/web-components/catalog/basic/text-field.d.cts.map +1 -0
  165. package/dist/web-components/catalog/basic/text-field.d.mts +8 -0
  166. package/dist/web-components/catalog/basic/text-field.d.mts.map +1 -0
  167. package/dist/web-components/catalog/basic/text-field.mjs +60 -0
  168. package/dist/web-components/catalog/basic/text-field.mjs.map +1 -0
  169. package/dist/web-components/catalog/basic/text.cjs +36 -0
  170. package/dist/web-components/catalog/basic/text.cjs.map +1 -0
  171. package/dist/web-components/catalog/basic/text.d.cts +8 -0
  172. package/dist/web-components/catalog/basic/text.d.cts.map +1 -0
  173. package/dist/web-components/catalog/basic/text.d.mts +8 -0
  174. package/dist/web-components/catalog/basic/text.d.mts.map +1 -0
  175. package/dist/web-components/catalog/basic/text.mjs +36 -0
  176. package/dist/web-components/catalog/basic/text.mjs.map +1 -0
  177. package/dist/web-components/catalog/basic/utils.cjs +48 -0
  178. package/dist/web-components/catalog/basic/utils.cjs.map +1 -0
  179. package/dist/web-components/catalog/basic/utils.d.cts +1 -0
  180. package/dist/web-components/catalog/basic/utils.d.mts +1 -0
  181. package/dist/web-components/catalog/basic/utils.mjs +41 -0
  182. package/dist/web-components/catalog/basic/utils.mjs.map +1 -0
  183. package/dist/web-components/catalog/basic/video.cjs +22 -0
  184. package/dist/web-components/catalog/basic/video.cjs.map +1 -0
  185. package/dist/web-components/catalog/basic/video.d.cts +8 -0
  186. package/dist/web-components/catalog/basic/video.d.cts.map +1 -0
  187. package/dist/web-components/catalog/basic/video.d.mts +8 -0
  188. package/dist/web-components/catalog/basic/video.d.mts.map +1 -0
  189. package/dist/web-components/catalog/basic/video.mjs +22 -0
  190. package/dist/web-components/catalog/basic/video.mjs.map +1 -0
  191. package/dist/web-components/catalog/children.cjs +17 -0
  192. package/dist/web-components/catalog/children.cjs.map +1 -0
  193. package/dist/web-components/catalog/children.mjs +16 -0
  194. package/dist/web-components/catalog/children.mjs.map +1 -0
  195. package/dist/web-components/catalog/minimal/button.cjs +38 -0
  196. package/dist/web-components/catalog/minimal/button.cjs.map +1 -0
  197. package/dist/web-components/catalog/minimal/button.d.cts +284 -0
  198. package/dist/web-components/catalog/minimal/button.d.cts.map +1 -0
  199. package/dist/web-components/catalog/minimal/button.d.mts +284 -0
  200. package/dist/web-components/catalog/minimal/button.d.mts.map +1 -0
  201. package/dist/web-components/catalog/minimal/button.mjs +36 -0
  202. package/dist/web-components/catalog/minimal/button.mjs.map +1 -0
  203. package/dist/web-components/catalog/minimal/column.cjs +50 -0
  204. package/dist/web-components/catalog/minimal/column.cjs.map +1 -0
  205. package/dist/web-components/catalog/minimal/column.d.cts +68 -0
  206. package/dist/web-components/catalog/minimal/column.d.cts.map +1 -0
  207. package/dist/web-components/catalog/minimal/column.d.mts +68 -0
  208. package/dist/web-components/catalog/minimal/column.d.mts.map +1 -0
  209. package/dist/web-components/catalog/minimal/column.mjs +48 -0
  210. package/dist/web-components/catalog/minimal/column.mjs.map +1 -0
  211. package/dist/web-components/catalog/minimal/components.cjs +18 -0
  212. package/dist/web-components/catalog/minimal/components.cjs.map +1 -0
  213. package/dist/web-components/catalog/minimal/components.d.cts +12 -0
  214. package/dist/web-components/catalog/minimal/components.d.cts.map +1 -0
  215. package/dist/web-components/catalog/minimal/components.d.mts +12 -0
  216. package/dist/web-components/catalog/minimal/components.d.mts.map +1 -0
  217. package/dist/web-components/catalog/minimal/components.mjs +18 -0
  218. package/dist/web-components/catalog/minimal/components.mjs.map +1 -0
  219. package/dist/web-components/catalog/minimal/index.cjs +49 -0
  220. package/dist/web-components/catalog/minimal/index.cjs.map +1 -0
  221. package/dist/web-components/catalog/minimal/index.d.cts +17 -0
  222. package/dist/web-components/catalog/minimal/index.d.cts.map +1 -0
  223. package/dist/web-components/catalog/minimal/index.d.mts +17 -0
  224. package/dist/web-components/catalog/minimal/index.d.mts.map +1 -0
  225. package/dist/web-components/catalog/minimal/index.mjs +43 -0
  226. package/dist/web-components/catalog/minimal/index.mjs.map +1 -0
  227. package/dist/web-components/catalog/minimal/row.cjs +49 -0
  228. package/dist/web-components/catalog/minimal/row.cjs.map +1 -0
  229. package/dist/web-components/catalog/minimal/row.d.cts +68 -0
  230. package/dist/web-components/catalog/minimal/row.d.cts.map +1 -0
  231. package/dist/web-components/catalog/minimal/row.d.mts +68 -0
  232. package/dist/web-components/catalog/minimal/row.d.mts.map +1 -0
  233. package/dist/web-components/catalog/minimal/row.mjs +47 -0
  234. package/dist/web-components/catalog/minimal/row.mjs.map +1 -0
  235. package/dist/web-components/catalog/minimal/text-field.cjs +74 -0
  236. package/dist/web-components/catalog/minimal/text-field.cjs.map +1 -0
  237. package/dist/web-components/catalog/minimal/text-field.d.cts +164 -0
  238. package/dist/web-components/catalog/minimal/text-field.d.cts.map +1 -0
  239. package/dist/web-components/catalog/minimal/text-field.d.mts +164 -0
  240. package/dist/web-components/catalog/minimal/text-field.d.mts.map +1 -0
  241. package/dist/web-components/catalog/minimal/text-field.mjs +72 -0
  242. package/dist/web-components/catalog/minimal/text-field.mjs.map +1 -0
  243. package/dist/web-components/catalog/minimal/text.cjs +40 -0
  244. package/dist/web-components/catalog/minimal/text.cjs.map +1 -0
  245. package/dist/web-components/catalog/minimal/text.d.cts +92 -0
  246. package/dist/web-components/catalog/minimal/text.d.cts.map +1 -0
  247. package/dist/web-components/catalog/minimal/text.d.mts +92 -0
  248. package/dist/web-components/catalog/minimal/text.d.mts.map +1 -0
  249. package/dist/web-components/catalog/minimal/text.mjs +38 -0
  250. package/dist/web-components/catalog/minimal/text.mjs.map +1 -0
  251. package/dist/web-components/catalog/minimal/utils.cjs +26 -0
  252. package/dist/web-components/catalog/minimal/utils.cjs.map +1 -0
  253. package/dist/web-components/catalog/minimal/utils.mjs +24 -0
  254. package/dist/web-components/catalog/minimal/utils.mjs.map +1 -0
  255. package/dist/web-components/create-catalog.cjs +143 -0
  256. package/dist/web-components/create-catalog.cjs.map +1 -0
  257. package/dist/web-components/create-catalog.d.cts +44 -0
  258. package/dist/web-components/create-catalog.d.cts.map +1 -0
  259. package/dist/web-components/create-catalog.d.mts +44 -0
  260. package/dist/web-components/create-catalog.d.mts.map +1 -0
  261. package/dist/web-components/create-catalog.mjs +137 -0
  262. package/dist/web-components/create-catalog.mjs.map +1 -0
  263. package/dist/web-components/define.cjs +24 -0
  264. package/dist/web-components/define.cjs.map +1 -0
  265. package/dist/web-components/define.d.cts +19 -0
  266. package/dist/web-components/define.d.cts.map +1 -0
  267. package/dist/web-components/define.d.mts +19 -0
  268. package/dist/web-components/define.d.mts.map +1 -0
  269. package/dist/web-components/define.mjs +17 -0
  270. package/dist/web-components/define.mjs.map +1 -0
  271. package/dist/web-components/index.cjs +78 -0
  272. package/dist/web-components/index.d.cts +30 -0
  273. package/dist/web-components/index.d.mts +30 -0
  274. package/dist/web-components/index.mjs +29 -0
  275. package/dist/web-components/node.cjs +94 -0
  276. package/dist/web-components/node.cjs.map +1 -0
  277. package/dist/web-components/node.d.cts +33 -0
  278. package/dist/web-components/node.d.cts.map +1 -0
  279. package/dist/web-components/node.d.mts +33 -0
  280. package/dist/web-components/node.d.mts.map +1 -0
  281. package/dist/web-components/node.mjs +94 -0
  282. package/dist/web-components/node.mjs.map +1 -0
  283. package/dist/web-components/surface.cjs +314 -0
  284. package/dist/web-components/surface.cjs.map +1 -0
  285. package/dist/web-components/surface.d.cts +43 -0
  286. package/dist/web-components/surface.d.cts.map +1 -0
  287. package/dist/web-components/surface.d.mts +43 -0
  288. package/dist/web-components/surface.d.mts.map +1 -0
  289. package/dist/web-components/surface.mjs +314 -0
  290. package/dist/web-components/surface.mjs.map +1 -0
  291. package/dist/web-components/types.d.cts +45 -0
  292. package/dist/web-components/types.d.cts.map +1 -0
  293. package/dist/web-components/types.d.mts +45 -0
  294. package/dist/web-components/types.d.mts.map +1 -0
  295. package/package.json +38 -3
@@ -0,0 +1,314 @@
1
+ import { basicCatalog } from "./catalog/basic/index.mjs";
2
+ import { LitElement, html, nothing } from "lit";
3
+ import { MessageProcessor } from "@a2ui/web_core/v0_9";
4
+
5
+ //#region src/web-components/surface.ts
6
+ const DEFAULT_SURFACE_ID = "default";
7
+ const BASIC_CATALOG_ID = "https://a2ui.org/specification/v0_9/basic_catalog.json";
8
+ function isRecord(value) {
9
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
10
+ }
11
+ function getRecordProperty(record, key) {
12
+ const value = record[key];
13
+ return isRecord(value) ? value : void 0;
14
+ }
15
+ function getStringProperty(record, key) {
16
+ const value = record[key];
17
+ return typeof value === "string" && value.length > 0 ? value : void 0;
18
+ }
19
+ function getBooleanProperty(record, key) {
20
+ const value = record[key];
21
+ return typeof value === "boolean" ? value : void 0;
22
+ }
23
+ function getSurfaceId(payload) {
24
+ return payload ? getStringProperty(payload, "surfaceId") ?? DEFAULT_SURFACE_ID : DEFAULT_SURFACE_ID;
25
+ }
26
+ function getOperationSurfaceId(operation) {
27
+ if ("createSurface" in operation) return operation.createSurface.surfaceId;
28
+ if ("updateComponents" in operation) return operation.updateComponents.surfaceId;
29
+ if ("updateDataModel" in operation) return operation.updateDataModel.surfaceId;
30
+ if ("deleteSurface" in operation) return operation.deleteSurface.surfaceId;
31
+ return DEFAULT_SURFACE_ID;
32
+ }
33
+ function normalizeOperations(operations, catalogId) {
34
+ return operations.flatMap((operation) => {
35
+ if (!isRecord(operation)) return [];
36
+ const createSurface = getRecordProperty(operation, "createSurface");
37
+ if (createSurface) return [{
38
+ version: "v0.9",
39
+ createSurface: {
40
+ surfaceId: getSurfaceId(createSurface),
41
+ catalogId: getStringProperty(createSurface, "catalogId") ?? catalogId,
42
+ theme: createSurface.theme ?? {},
43
+ sendDataModel: getBooleanProperty(createSurface, "sendDataModel")
44
+ }
45
+ }];
46
+ const updateComponents = getRecordProperty(operation, "updateComponents");
47
+ if (updateComponents) {
48
+ const components = updateComponents.components;
49
+ return [{
50
+ version: "v0.9",
51
+ updateComponents: {
52
+ surfaceId: getSurfaceId(updateComponents),
53
+ components: Array.isArray(components) ? components.map(normalizeComponent) : []
54
+ }
55
+ }];
56
+ }
57
+ const updateDataModel = getRecordProperty(operation, "updateDataModel");
58
+ if (updateDataModel) return [{
59
+ version: "v0.9",
60
+ updateDataModel: {
61
+ surfaceId: getSurfaceId(updateDataModel),
62
+ path: getStringProperty(updateDataModel, "path") ?? "/",
63
+ value: updateDataModel.value
64
+ }
65
+ }];
66
+ const deleteSurface = getRecordProperty(operation, "deleteSurface");
67
+ if (deleteSurface) return [{
68
+ version: "v0.9",
69
+ deleteSurface: { surfaceId: getSurfaceId(deleteSurface) }
70
+ }];
71
+ const beginRendering = getRecordProperty(operation, "beginRendering");
72
+ if (beginRendering) return [{
73
+ version: "v0.9",
74
+ createSurface: {
75
+ surfaceId: getSurfaceId(beginRendering),
76
+ catalogId,
77
+ theme: beginRendering.styles ?? {},
78
+ sendDataModel: getBooleanProperty(beginRendering, "sendDataModel")
79
+ }
80
+ }];
81
+ const surfaceUpdate = getRecordProperty(operation, "surfaceUpdate");
82
+ if (surfaceUpdate) {
83
+ const components = surfaceUpdate.components;
84
+ return [{
85
+ version: "v0.9",
86
+ updateComponents: {
87
+ surfaceId: getSurfaceId(surfaceUpdate),
88
+ components: Array.isArray(components) ? components.map(normalizeComponent) : []
89
+ }
90
+ }];
91
+ }
92
+ const dataModelUpdate = getRecordProperty(operation, "dataModelUpdate");
93
+ if (dataModelUpdate) return [{
94
+ version: "v0.9",
95
+ updateDataModel: {
96
+ surfaceId: getSurfaceId(dataModelUpdate),
97
+ path: getStringProperty(dataModelUpdate, "path") ?? "/",
98
+ value: dataModelUpdate.value ?? dataModelUpdate.contents
99
+ }
100
+ }];
101
+ return [];
102
+ });
103
+ }
104
+ function normalizeComponent(component) {
105
+ if (!component || typeof component !== "object") return component;
106
+ const record = component;
107
+ if (!record.component || typeof record.component === "string") return record;
108
+ const entries = Object.entries(record.component);
109
+ if (entries.length !== 1) return record;
110
+ const [componentName, props] = entries[0];
111
+ return {
112
+ id: record.id,
113
+ component: componentName,
114
+ ...props && typeof props === "object" ? props : {}
115
+ };
116
+ }
117
+ function toClientEventMessage(action) {
118
+ const record = isRecord(action) ? action : {};
119
+ return { userAction: {
120
+ name: getStringProperty(record, "name") ?? "unknown",
121
+ surfaceId: getStringProperty(record, "surfaceId") ?? DEFAULT_SURFACE_ID,
122
+ sourceComponentId: getStringProperty(record, "sourceComponentId"),
123
+ context: isRecord(record.context) ? record.context : {},
124
+ timestamp: getStringProperty(record, "timestamp") ?? (/* @__PURE__ */ new Date()).toISOString(),
125
+ dataContextPath: getStringProperty(record, "dataContextPath")
126
+ } };
127
+ }
128
+ function defaultLoading() {
129
+ return html`
130
+ <div
131
+ class="cpk:flex cpk:flex-col cpk:gap-3 cpk:rounded-xl cpk:border cpk:border-gray-100 cpk:bg-gray-50/50 cpk:p-5"
132
+ style="min-height: 120px;"
133
+ data-testid="a2ui-loading"
134
+ >
135
+ <div class="cpk:flex cpk:items-center cpk:gap-2">
136
+ <div
137
+ class="cpk:h-3 cpk:w-3 cpk:rounded-full cpk:bg-gray-200"
138
+ style="animation: cpk-a2ui-pulse 1.5s ease-in-out infinite;"
139
+ data-testid="a2ui-loading-dot"
140
+ ></div>
141
+ <span class="cpk:text-xs cpk:font-medium cpk:text-gray-400">
142
+ Generating UI...
143
+ </span>
144
+ </div>
145
+ <div class="cpk:flex cpk:flex-col cpk:gap-2">
146
+ ${[
147
+ .8,
148
+ .6,
149
+ .4
150
+ ].map((width, i) => html`
151
+ <div
152
+ class="cpk:h-3 cpk:rounded cpk:bg-gray-200/70"
153
+ style=${`width: ${width * 100}%; animation: cpk-a2ui-pulse 1.5s ease-in-out ${i * .15}s infinite;`}
154
+ data-testid="a2ui-loading-bar"
155
+ ></div>
156
+ `)}
157
+ </div>
158
+ <style>
159
+ @keyframes cpk-a2ui-pulse {
160
+ 0%,
161
+ 100% {
162
+ opacity: 0.4;
163
+ }
164
+ 50% {
165
+ opacity: 1;
166
+ }
167
+ }
168
+ </style>
169
+ </div>
170
+ `;
171
+ }
172
+ var CpkA2uiSurface = class extends LitElement {
173
+ constructor(..._args) {
174
+ super(..._args);
175
+ this.operations = [];
176
+ this.processor = null;
177
+ this.lastOpsHash = "";
178
+ this.renderedSurfaceIds = [];
179
+ this.error = null;
180
+ }
181
+ static {
182
+ this.properties = {
183
+ operations: { attribute: false },
184
+ catalog: { attribute: false },
185
+ theme: { attribute: false },
186
+ surfaceId: { attribute: false },
187
+ loadingComponent: { attribute: false }
188
+ };
189
+ }
190
+ createRenderRoot() {
191
+ return this;
192
+ }
193
+ willUpdate(changed) {
194
+ if (changed.has("catalog")) {
195
+ this.processor = null;
196
+ this.processorCatalog = void 0;
197
+ this.lastOpsHash = "";
198
+ this.renderedSurfaceIds = [];
199
+ }
200
+ if (changed.has("operations") || changed.has("catalog") || changed.has("theme") || changed.has("surfaceId")) this.processOperations();
201
+ }
202
+ getCatalog() {
203
+ return this.catalog ?? basicCatalog;
204
+ }
205
+ getProcessor() {
206
+ const catalog = this.getCatalog();
207
+ if (!this.processor || this.processorCatalog !== catalog) {
208
+ this.processorCatalog = catalog;
209
+ this.processor = new MessageProcessor([catalog], (action) => {
210
+ const message = toClientEventMessage(action);
211
+ this.dispatchEvent(new CustomEvent("a2ui-action", {
212
+ detail: message,
213
+ bubbles: true,
214
+ composed: true
215
+ }));
216
+ });
217
+ }
218
+ return this.processor;
219
+ }
220
+ processOperations() {
221
+ if (!Array.isArray(this.operations) || this.operations.length === 0) {
222
+ this.renderedSurfaceIds = [];
223
+ this.error = null;
224
+ return;
225
+ }
226
+ const catalogId = this.getCatalog().id || BASIC_CATALOG_ID;
227
+ const normalized = normalizeOperations(this.operations, catalogId);
228
+ const hash = JSON.stringify({
229
+ operations: normalized,
230
+ surfaceId: this.surfaceId,
231
+ theme: this.theme
232
+ });
233
+ if (hash === this.lastOpsHash) return;
234
+ this.lastOpsHash = hash;
235
+ const grouped = /* @__PURE__ */ new Map();
236
+ for (const operation of normalized) {
237
+ const surfaceId = this.surfaceId ?? getOperationSurfaceId(operation);
238
+ if (!grouped.has(surfaceId)) grouped.set(surfaceId, []);
239
+ grouped.get(surfaceId).push(operation);
240
+ }
241
+ const processor = this.getProcessor();
242
+ try {
243
+ for (const [surfaceId, ops] of grouped) {
244
+ const existing = processor.model.getSurface(surfaceId);
245
+ let filtered = existing ? ops.filter((op) => !("createSurface" in op)) : ops;
246
+ if (!existing && !filtered.some((op) => "createSurface" in op)) filtered = [{
247
+ version: "v0.9",
248
+ createSurface: {
249
+ surfaceId,
250
+ catalogId,
251
+ theme: this.theme ?? {}
252
+ }
253
+ }, ...filtered];
254
+ processor.processMessages(filtered);
255
+ }
256
+ this.renderedSurfaceIds = [...grouped.keys()];
257
+ this.error = null;
258
+ } catch (err) {
259
+ const message = err instanceof Error ? err.message : String(err);
260
+ this.error = message;
261
+ this.dispatchEvent(new CustomEvent("a2ui-error", {
262
+ detail: {
263
+ error: err,
264
+ message
265
+ },
266
+ bubbles: true,
267
+ composed: true
268
+ }));
269
+ }
270
+ }
271
+ render() {
272
+ if (this.error) return html`
273
+ <div
274
+ class="cpk:rounded-lg cpk:border cpk:border-red-200 cpk:bg-red-50 cpk:p-3 cpk:text-sm cpk:text-red-700"
275
+ >
276
+ A2UI render error: ${this.error}
277
+ </div>
278
+ `;
279
+ if (!this.renderedSurfaceIds.length) return this.loadingComponent ? this.loadingComponent() : defaultLoading();
280
+ const processor = this.getProcessor();
281
+ return html`
282
+ <div
283
+ class="cpk:flex cpk:min-h-0 cpk:flex-1 cpk:flex-col cpk:gap-6 cpk:overflow-auto cpk:py-6"
284
+ data-testid="a2ui-activity-renderer"
285
+ >
286
+ ${this.renderedSurfaceIds.map((surfaceId) => {
287
+ const surface = processor.model.getSurface(surfaceId);
288
+ if (!surface) return nothing;
289
+ return html`
290
+ <div
291
+ class="cpk:flex cpk:w-full cpk:flex-none cpk:flex-col cpk:gap-4"
292
+ data-surface-id=${surfaceId}
293
+ >
294
+ <div
295
+ class="a2ui-surface cpk:flex cpk:flex-1"
296
+ data-surface-id=${surfaceId}
297
+ >
298
+ <cpk-a2ui-node
299
+ .surface=${surface}
300
+ .componentId=${"root"}
301
+ .basePath=${"/"}
302
+ ></cpk-a2ui-node>
303
+ </div>
304
+ </div>
305
+ `;
306
+ })}
307
+ </div>
308
+ `;
309
+ }
310
+ };
311
+
312
+ //#endregion
313
+ export { CpkA2uiSurface };
314
+ //# sourceMappingURL=surface.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface.mjs","names":[],"sources":["../../src/web-components/surface.ts"],"sourcesContent":["import { html, LitElement, nothing } from \"lit\";\nimport { MessageProcessor } from \"@a2ui/web_core/v0_9\";\nimport type { A2uiMessage, Catalog } from \"@a2ui/web_core/v0_9\";\nimport { basicCatalog } from \"./catalog/basic\";\nimport type { LitComponentImplementation, LitRenderable } from \"./types\";\n\nconst DEFAULT_SURFACE_ID = \"default\";\nconst BASIC_CATALOG_ID =\n \"https://a2ui.org/specification/v0_9/basic_catalog.json\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nfunction getRecordProperty(\n record: Record<string, unknown>,\n key: string,\n): Record<string, unknown> | undefined {\n const value = record[key];\n return isRecord(value) ? value : undefined;\n}\n\nfunction getStringProperty(\n record: Record<string, unknown>,\n key: string,\n): string | undefined {\n const value = record[key];\n return typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction getBooleanProperty(\n record: Record<string, unknown>,\n key: string,\n): boolean | undefined {\n const value = record[key];\n return typeof value === \"boolean\" ? value : undefined;\n}\n\nfunction getSurfaceId(payload: Record<string, unknown> | undefined): string {\n return payload\n ? (getStringProperty(payload, \"surfaceId\") ?? DEFAULT_SURFACE_ID)\n : DEFAULT_SURFACE_ID;\n}\n\nfunction getOperationSurfaceId(operation: A2uiMessage): string {\n if (\"createSurface\" in operation) return operation.createSurface.surfaceId;\n if (\"updateComponents\" in operation)\n return operation.updateComponents.surfaceId;\n if (\"updateDataModel\" in operation)\n return operation.updateDataModel.surfaceId;\n if (\"deleteSurface\" in operation) return operation.deleteSurface.surfaceId;\n return DEFAULT_SURFACE_ID;\n}\n\nfunction normalizeOperations(\n operations: unknown[],\n catalogId: string,\n): A2uiMessage[] {\n return operations.flatMap((operation): A2uiMessage[] => {\n if (!isRecord(operation)) return [];\n\n const createSurface = getRecordProperty(operation, \"createSurface\");\n if (createSurface) {\n const message = {\n version: \"v0.9\",\n createSurface: {\n surfaceId: getSurfaceId(createSurface),\n catalogId: getStringProperty(createSurface, \"catalogId\") ?? catalogId,\n theme: createSurface.theme ?? {},\n sendDataModel: getBooleanProperty(createSurface, \"sendDataModel\"),\n },\n } satisfies A2uiMessage;\n return [message];\n }\n\n const updateComponents = getRecordProperty(operation, \"updateComponents\");\n if (updateComponents) {\n const components = updateComponents.components;\n const message = {\n version: \"v0.9\",\n updateComponents: {\n surfaceId: getSurfaceId(updateComponents),\n components: Array.isArray(components)\n ? components.map(normalizeComponent)\n : [],\n },\n } satisfies A2uiMessage;\n return [message];\n }\n\n const updateDataModel = getRecordProperty(operation, \"updateDataModel\");\n if (updateDataModel) {\n const message = {\n version: \"v0.9\",\n updateDataModel: {\n surfaceId: getSurfaceId(updateDataModel),\n path: getStringProperty(updateDataModel, \"path\") ?? \"/\",\n value: updateDataModel.value,\n },\n } satisfies A2uiMessage;\n return [message];\n }\n\n const deleteSurface = getRecordProperty(operation, \"deleteSurface\");\n if (deleteSurface) {\n const message = {\n version: \"v0.9\",\n deleteSurface: {\n surfaceId: getSurfaceId(deleteSurface),\n },\n } satisfies A2uiMessage;\n return [message];\n }\n\n const beginRendering = getRecordProperty(operation, \"beginRendering\");\n if (beginRendering) {\n const message = {\n version: \"v0.9\",\n createSurface: {\n surfaceId: getSurfaceId(beginRendering),\n catalogId,\n theme: beginRendering.styles ?? {},\n sendDataModel: getBooleanProperty(beginRendering, \"sendDataModel\"),\n },\n } satisfies A2uiMessage;\n return [message];\n }\n\n const surfaceUpdate = getRecordProperty(operation, \"surfaceUpdate\");\n if (surfaceUpdate) {\n const components = surfaceUpdate.components;\n const message = {\n version: \"v0.9\",\n updateComponents: {\n surfaceId: getSurfaceId(surfaceUpdate),\n components: Array.isArray(components)\n ? components.map(normalizeComponent)\n : [],\n },\n } satisfies A2uiMessage;\n return [message];\n }\n\n const dataModelUpdate = getRecordProperty(operation, \"dataModelUpdate\");\n if (dataModelUpdate) {\n const message = {\n version: \"v0.9\",\n updateDataModel: {\n surfaceId: getSurfaceId(dataModelUpdate),\n path: getStringProperty(dataModelUpdate, \"path\") ?? \"/\",\n value: dataModelUpdate.value ?? dataModelUpdate.contents,\n },\n } satisfies A2uiMessage;\n return [message];\n }\n\n return [];\n });\n}\n\nfunction normalizeComponent(component: unknown): unknown {\n if (!component || typeof component !== \"object\") return component;\n const record = component as {\n id?: string;\n component?: string | Record<string, unknown>;\n [key: string]: unknown;\n };\n if (!record.component || typeof record.component === \"string\") return record;\n\n const entries = Object.entries(record.component);\n if (entries.length !== 1) return record;\n const [componentName, props] = entries[0]!;\n return {\n id: record.id,\n component: componentName,\n ...(props && typeof props === \"object\" ? props : {}),\n };\n}\n\nfunction toClientEventMessage(action: unknown): Record<string, unknown> {\n const record = isRecord(action) ? action : {};\n return {\n userAction: {\n name: getStringProperty(record, \"name\") ?? \"unknown\",\n surfaceId: getStringProperty(record, \"surfaceId\") ?? DEFAULT_SURFACE_ID,\n sourceComponentId: getStringProperty(record, \"sourceComponentId\"),\n context: isRecord(record.context) ? record.context : {},\n timestamp:\n getStringProperty(record, \"timestamp\") ?? new Date().toISOString(),\n dataContextPath: getStringProperty(record, \"dataContextPath\"),\n },\n };\n}\n\nfunction defaultLoading() {\n return html`\n <div\n class=\"cpk:flex cpk:flex-col cpk:gap-3 cpk:rounded-xl cpk:border cpk:border-gray-100 cpk:bg-gray-50/50 cpk:p-5\"\n style=\"min-height: 120px;\"\n data-testid=\"a2ui-loading\"\n >\n <div class=\"cpk:flex cpk:items-center cpk:gap-2\">\n <div\n class=\"cpk:h-3 cpk:w-3 cpk:rounded-full cpk:bg-gray-200\"\n style=\"animation: cpk-a2ui-pulse 1.5s ease-in-out infinite;\"\n data-testid=\"a2ui-loading-dot\"\n ></div>\n <span class=\"cpk:text-xs cpk:font-medium cpk:text-gray-400\">\n Generating UI...\n </span>\n </div>\n <div class=\"cpk:flex cpk:flex-col cpk:gap-2\">\n ${[0.8, 0.6, 0.4].map(\n (width, i) => html`\n <div\n class=\"cpk:h-3 cpk:rounded cpk:bg-gray-200/70\"\n style=${`width: ${width * 100}%; animation: cpk-a2ui-pulse 1.5s ease-in-out ${i * 0.15}s infinite;`}\n data-testid=\"a2ui-loading-bar\"\n ></div>\n `,\n )}\n </div>\n <style>\n @keyframes cpk-a2ui-pulse {\n 0%,\n 100% {\n opacity: 0.4;\n }\n 50% {\n opacity: 1;\n }\n }\n </style>\n </div>\n `;\n}\n\nexport class CpkA2uiSurface extends LitElement {\n static properties = {\n operations: { attribute: false },\n catalog: { attribute: false },\n theme: { attribute: false },\n surfaceId: { attribute: false },\n loadingComponent: { attribute: false },\n };\n\n operations: unknown[] = [];\n catalog?: Catalog<LitComponentImplementation>;\n theme?: Record<string, unknown>;\n surfaceId?: string;\n loadingComponent?: () => LitRenderable;\n\n private processor: MessageProcessor<LitComponentImplementation> | null = null;\n private processorCatalog?: Catalog<LitComponentImplementation>;\n private lastOpsHash = \"\";\n private renderedSurfaceIds: string[] = [];\n private error: string | null = null;\n\n protected createRenderRoot() {\n return this;\n }\n\n protected willUpdate(changed: Map<string, unknown>) {\n if (changed.has(\"catalog\")) {\n this.processor = null;\n this.processorCatalog = undefined;\n this.lastOpsHash = \"\";\n this.renderedSurfaceIds = [];\n }\n\n if (\n changed.has(\"operations\") ||\n changed.has(\"catalog\") ||\n changed.has(\"theme\") ||\n changed.has(\"surfaceId\")\n ) {\n this.processOperations();\n }\n }\n\n private getCatalog(): Catalog<LitComponentImplementation> {\n return this.catalog ?? basicCatalog;\n }\n\n private getProcessor(): MessageProcessor<LitComponentImplementation> {\n const catalog = this.getCatalog();\n if (!this.processor || this.processorCatalog !== catalog) {\n this.processorCatalog = catalog;\n this.processor = new MessageProcessor([catalog], (action) => {\n const message = toClientEventMessage(action);\n this.dispatchEvent(\n new CustomEvent(\"a2ui-action\", {\n detail: message,\n bubbles: true,\n composed: true,\n }),\n );\n });\n }\n return this.processor;\n }\n\n private processOperations(): void {\n if (!Array.isArray(this.operations) || this.operations.length === 0) {\n this.renderedSurfaceIds = [];\n this.error = null;\n return;\n }\n\n const catalogId = this.getCatalog().id || BASIC_CATALOG_ID;\n const normalized = normalizeOperations(this.operations, catalogId);\n const hash = JSON.stringify({\n operations: normalized,\n surfaceId: this.surfaceId,\n theme: this.theme,\n });\n if (hash === this.lastOpsHash) return;\n this.lastOpsHash = hash;\n\n const grouped = new Map<string, A2uiMessage[]>();\n for (const operation of normalized) {\n const surfaceId = this.surfaceId ?? getOperationSurfaceId(operation);\n if (!grouped.has(surfaceId)) grouped.set(surfaceId, []);\n grouped.get(surfaceId)!.push(operation);\n }\n\n const processor = this.getProcessor();\n try {\n for (const [surfaceId, ops] of grouped) {\n const existing = processor.model.getSurface(surfaceId);\n let filtered = existing\n ? ops.filter((op) => !(\"createSurface\" in op))\n : ops;\n\n if (!existing && !filtered.some((op) => \"createSurface\" in op)) {\n filtered = [\n {\n version: \"v0.9\",\n createSurface: {\n surfaceId,\n catalogId,\n theme: this.theme ?? {},\n },\n },\n ...filtered,\n ];\n }\n processor.processMessages(filtered);\n }\n this.renderedSurfaceIds = [...grouped.keys()];\n this.error = null;\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n this.error = message;\n this.dispatchEvent(\n new CustomEvent(\"a2ui-error\", {\n detail: { error: err, message },\n bubbles: true,\n composed: true,\n }),\n );\n }\n }\n\n render() {\n if (this.error) {\n return html`\n <div\n class=\"cpk:rounded-lg cpk:border cpk:border-red-200 cpk:bg-red-50 cpk:p-3 cpk:text-sm cpk:text-red-700\"\n >\n A2UI render error: ${this.error}\n </div>\n `;\n }\n\n if (!this.renderedSurfaceIds.length) {\n return this.loadingComponent ? this.loadingComponent() : defaultLoading();\n }\n\n const processor = this.getProcessor();\n return html`\n <div\n class=\"cpk:flex cpk:min-h-0 cpk:flex-1 cpk:flex-col cpk:gap-6 cpk:overflow-auto cpk:py-6\"\n data-testid=\"a2ui-activity-renderer\"\n >\n ${this.renderedSurfaceIds.map((surfaceId) => {\n const surface = processor.model.getSurface(surfaceId);\n if (!surface) return nothing;\n return html`\n <div\n class=\"cpk:flex cpk:w-full cpk:flex-none cpk:flex-col cpk:gap-4\"\n data-surface-id=${surfaceId}\n >\n <div\n class=\"a2ui-surface cpk:flex cpk:flex-1\"\n data-surface-id=${surfaceId}\n >\n <cpk-a2ui-node\n .surface=${surface}\n .componentId=${\"root\"}\n .basePath=${\"/\"}\n ></cpk-a2ui-node>\n </div>\n </div>\n `;\n })}\n </div>\n `;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { TemplateResult } from "lit";
2
+ import { ComponentApi, ComponentContext, InferredComponentApiSchemaType, ResolveA2uiProps, SurfaceModel } from "@a2ui/web_core/v0_9";
3
+ import { ZodObject, ZodRawShape, z } from "zod";
4
+
5
+ //#region src/web-components/types.d.ts
6
+ type LitRenderable = TemplateResult | Node | string | number | boolean | null | undefined | LitRenderable[];
7
+ interface LitComponentImplementation extends ComponentApi {
8
+ render: (context: ComponentContext, buildChild: (id: string, basePath?: string) => LitRenderable) => LitRenderable;
9
+ }
10
+ interface LitA2UIComponentProps<T, S = void> {
11
+ props: T;
12
+ buildChild: (id: string, basePath?: string) => LitRenderable;
13
+ context: ComponentContext;
14
+ state: S;
15
+ requestUpdate: () => void;
16
+ }
17
+ type LitRendererFn<Api extends ComponentApi, S = void> = (componentProps: LitA2UIComponentProps<ResolveA2uiProps<InferredComponentApiSchemaType<Api>>, S>) => LitRenderable;
18
+ interface RendererProps<T = Record<string, unknown>> {
19
+ props: T;
20
+ children: (id: string, basePath?: string) => LitRenderable;
21
+ dispatch?: (action: unknown) => void;
22
+ }
23
+ type ComponentRenderer<T = Record<string, unknown>> = (props: RendererProps<T>) => LitRenderable;
24
+ interface CatalogComponentDefinition<T extends ZodRawShape = ZodRawShape> {
25
+ props: ZodObject<T>;
26
+ description?: string;
27
+ }
28
+ type CatalogDefinitions = Record<string, CatalogComponentDefinition<any>>;
29
+ type PropsOf<D extends CatalogDefinitions, K extends keyof D> = z.infer<D[K]["props"]>;
30
+ type CatalogRenderers<D extends CatalogDefinitions> = { [K in keyof D]: ComponentRenderer<z.infer<D[K]["props"]>> };
31
+ interface A2UISurfaceElement extends HTMLElement {
32
+ operations: unknown[];
33
+ catalog?: unknown;
34
+ theme?: Record<string, unknown>;
35
+ surfaceId?: string;
36
+ loadingComponent?: unknown;
37
+ }
38
+ interface A2UINodeElement extends HTMLElement {
39
+ surface?: SurfaceModel<LitComponentImplementation>;
40
+ componentId?: string;
41
+ basePath?: string;
42
+ }
43
+ //#endregion
44
+ export { A2UINodeElement, A2UISurfaceElement, CatalogComponentDefinition, CatalogDefinitions, CatalogRenderers, ComponentRenderer, LitA2UIComponentProps, LitComponentImplementation, LitRenderable, LitRendererFn, PropsOf, RendererProps };
45
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../../src/web-components/types.ts"],"mappings":";;;;;KASY,aAAA,GACR,cAAA,GACA,IAAA,kDAMA,aAAA;AAAA,UAEa,0BAAA,SAAmC,YAAA;EAClD,MAAA,GACE,OAAA,EAAS,gBAAA,EACT,UAAA,GAAa,EAAA,UAAY,QAAA,cAAsB,aAAA,KAC5C,aAAA;AAAA;AAAA,UAGU,qBAAA;EACf,KAAA,EAAO,CAAA;EACP,UAAA,GAAa,EAAA,UAAY,QAAA,cAAsB,aAAA;EAC/C,OAAA,EAAS,gBAAA;EACT,KAAA,EAAO,CAAA;EACP,aAAA;AAAA;AAAA,KAGU,aAAA,aAA0B,YAAA,eACpC,cAAA,EAAgB,qBAAA,CACd,gBAAA,CAAiB,8BAAA,CAA+B,GAAA,IAChD,CAAA,MAEC,aAAA;AAAA,UAEY,aAAA,KAAkB,MAAA;EACjC,KAAA,EAAO,CAAA;EACP,QAAA,GAAW,EAAA,UAAY,QAAA,cAAsB,aAAA;EAC7C,QAAA,IAAY,MAAA;AAAA;AAAA,KAGF,iBAAA,KAAsB,MAAA,sBAChC,KAAA,EAAO,aAAA,CAAc,CAAA,MAClB,aAAA;AAAA,UAEY,0BAAA,WACL,WAAA,GAAc,WAAA;EAExB,KAAA,EAAO,SAAA,CAAU,CAAA;EACjB,WAAA;AAAA;AAAA,KAGU,kBAAA,GAAqB,MAAA,SAE/B,0BAAA;AAAA,KAGU,OAAA,WAAkB,kBAAA,kBAAoC,CAAA,IAAK,CAAA,CAAE,KAAA,CACvE,CAAA,CAAE,CAAA;AAAA,KAGQ,gBAAA,WAA2B,kBAAA,kBACzB,CAAA,GAAI,iBAAA,CAAkB,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,CAAA;AAAA,UAG7B,kBAAA,SAA2B,WAAA;EAC1C,UAAA;EACA,OAAA;EACA,KAAA,GAAQ,MAAA;EACR,SAAA;EACA,gBAAA;AAAA;AAAA,UAGe,eAAA,SAAwB,WAAA;EACvC,OAAA,GAAU,YAAA,CAAa,0BAAA;EACvB,WAAA;EACA,QAAA;AAAA"}
@@ -0,0 +1,45 @@
1
+ import { TemplateResult } from "lit";
2
+ import { ComponentApi, ComponentContext, InferredComponentApiSchemaType, ResolveA2uiProps, SurfaceModel } from "@a2ui/web_core/v0_9";
3
+ import { ZodObject, ZodRawShape, z } from "zod";
4
+
5
+ //#region src/web-components/types.d.ts
6
+ type LitRenderable = TemplateResult | Node | string | number | boolean | null | undefined | LitRenderable[];
7
+ interface LitComponentImplementation extends ComponentApi {
8
+ render: (context: ComponentContext, buildChild: (id: string, basePath?: string) => LitRenderable) => LitRenderable;
9
+ }
10
+ interface LitA2UIComponentProps<T, S = void> {
11
+ props: T;
12
+ buildChild: (id: string, basePath?: string) => LitRenderable;
13
+ context: ComponentContext;
14
+ state: S;
15
+ requestUpdate: () => void;
16
+ }
17
+ type LitRendererFn<Api extends ComponentApi, S = void> = (componentProps: LitA2UIComponentProps<ResolveA2uiProps<InferredComponentApiSchemaType<Api>>, S>) => LitRenderable;
18
+ interface RendererProps<T = Record<string, unknown>> {
19
+ props: T;
20
+ children: (id: string, basePath?: string) => LitRenderable;
21
+ dispatch?: (action: unknown) => void;
22
+ }
23
+ type ComponentRenderer<T = Record<string, unknown>> = (props: RendererProps<T>) => LitRenderable;
24
+ interface CatalogComponentDefinition<T extends ZodRawShape = ZodRawShape> {
25
+ props: ZodObject<T>;
26
+ description?: string;
27
+ }
28
+ type CatalogDefinitions = Record<string, CatalogComponentDefinition<any>>;
29
+ type PropsOf<D extends CatalogDefinitions, K extends keyof D> = z.infer<D[K]["props"]>;
30
+ type CatalogRenderers<D extends CatalogDefinitions> = { [K in keyof D]: ComponentRenderer<z.infer<D[K]["props"]>> };
31
+ interface A2UISurfaceElement extends HTMLElement {
32
+ operations: unknown[];
33
+ catalog?: unknown;
34
+ theme?: Record<string, unknown>;
35
+ surfaceId?: string;
36
+ loadingComponent?: unknown;
37
+ }
38
+ interface A2UINodeElement extends HTMLElement {
39
+ surface?: SurfaceModel<LitComponentImplementation>;
40
+ componentId?: string;
41
+ basePath?: string;
42
+ }
43
+ //#endregion
44
+ export { A2UINodeElement, A2UISurfaceElement, CatalogComponentDefinition, CatalogDefinitions, CatalogRenderers, ComponentRenderer, LitA2UIComponentProps, LitComponentImplementation, LitRenderable, LitRendererFn, PropsOf, RendererProps };
45
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../src/web-components/types.ts"],"mappings":";;;;;KASY,aAAA,GACR,cAAA,GACA,IAAA,kDAMA,aAAA;AAAA,UAEa,0BAAA,SAAmC,YAAA;EAClD,MAAA,GACE,OAAA,EAAS,gBAAA,EACT,UAAA,GAAa,EAAA,UAAY,QAAA,cAAsB,aAAA,KAC5C,aAAA;AAAA;AAAA,UAGU,qBAAA;EACf,KAAA,EAAO,CAAA;EACP,UAAA,GAAa,EAAA,UAAY,QAAA,cAAsB,aAAA;EAC/C,OAAA,EAAS,gBAAA;EACT,KAAA,EAAO,CAAA;EACP,aAAA;AAAA;AAAA,KAGU,aAAA,aAA0B,YAAA,eACpC,cAAA,EAAgB,qBAAA,CACd,gBAAA,CAAiB,8BAAA,CAA+B,GAAA,IAChD,CAAA,MAEC,aAAA;AAAA,UAEY,aAAA,KAAkB,MAAA;EACjC,KAAA,EAAO,CAAA;EACP,QAAA,GAAW,EAAA,UAAY,QAAA,cAAsB,aAAA;EAC7C,QAAA,IAAY,MAAA;AAAA;AAAA,KAGF,iBAAA,KAAsB,MAAA,sBAChC,KAAA,EAAO,aAAA,CAAc,CAAA,MAClB,aAAA;AAAA,UAEY,0BAAA,WACL,WAAA,GAAc,WAAA;EAExB,KAAA,EAAO,SAAA,CAAU,CAAA;EACjB,WAAA;AAAA;AAAA,KAGU,kBAAA,GAAqB,MAAA,SAE/B,0BAAA;AAAA,KAGU,OAAA,WAAkB,kBAAA,kBAAoC,CAAA,IAAK,CAAA,CAAE,KAAA,CACvE,CAAA,CAAE,CAAA;AAAA,KAGQ,gBAAA,WAA2B,kBAAA,kBACzB,CAAA,GAAI,iBAAA,CAAkB,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,CAAA;AAAA,UAG7B,kBAAA,SAA2B,WAAA;EAC1C,UAAA;EACA,OAAA;EACA,KAAA,GAAQ,MAAA;EACR,SAAA;EACA,gBAAA;AAAA;AAAA,UAGe,eAAA,SAAwB,WAAA;EACvC,OAAA,GAAU,YAAA,CAAa,0BAAA;EACvB,WAAA;EACA,QAAA;AAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@copilotkit/a2ui-renderer",
3
- "version": "1.60.2",
3
+ "version": "1.61.1",
4
4
  "private": false,
5
5
  "description": "A2UI Renderer for CopilotKit - render A2UI surfaces in React applications",
6
6
  "keywords": [
@@ -31,8 +31,34 @@
31
31
  "jsdelivr": "./dist/index.umd.js",
32
32
  "exports": {
33
33
  ".": {
34
- "import": "./dist/index.mjs",
35
- "require": "./dist/index.cjs"
34
+ "import": {
35
+ "types": "./dist/index.d.mts",
36
+ "default": "./dist/index.mjs"
37
+ },
38
+ "require": {
39
+ "types": "./dist/index.d.cts",
40
+ "default": "./dist/index.cjs"
41
+ }
42
+ },
43
+ "./web-components": {
44
+ "import": {
45
+ "types": "./dist/web-components/index.d.mts",
46
+ "default": "./dist/web-components/index.mjs"
47
+ },
48
+ "require": {
49
+ "types": "./dist/web-components/index.d.cts",
50
+ "default": "./dist/web-components/index.cjs"
51
+ }
52
+ },
53
+ "./web-components/define": {
54
+ "import": {
55
+ "types": "./dist/web-components/define.d.mts",
56
+ "default": "./dist/web-components/define.mjs"
57
+ },
58
+ "require": {
59
+ "types": "./dist/web-components/define.d.cts",
60
+ "default": "./dist/web-components/define.cjs"
61
+ }
36
62
  },
37
63
  "./package.json": "./package.json"
38
64
  },
@@ -42,6 +68,7 @@
42
68
  "dependencies": {
43
69
  "@a2ui/web_core": "0.9.0",
44
70
  "clsx": "^2.1.1",
71
+ "lit": "^3.3.2",
45
72
  "zod": "^3.25.75",
46
73
  "zod-to-json-schema": "^3.24.1"
47
74
  },
@@ -60,6 +87,14 @@
60
87
  "react": "^18 || ^19 || ^19.0.0-rc",
61
88
  "react-dom": "^18 || ^19 || ^19.0.0-rc"
62
89
  },
90
+ "peerDependenciesMeta": {
91
+ "react": {
92
+ "optional": true
93
+ },
94
+ "react-dom": {
95
+ "optional": true
96
+ }
97
+ },
63
98
  "scripts": {
64
99
  "build": "tsdown",
65
100
  "compat-check": "es-check es2022 --module 'dist/**/!(*.umd).{mjs,cjs,js}' && es-check es2018 'dist/**/*.umd.js'",