@easyops-cn/a2ui-react 0.0.1 → 0.0.2

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 (604) hide show
  1. package/dist/0.8/A2UIRenderer.d.ts +49 -0
  2. package/dist/0.8/A2UIRenderer.test.d.ts +6 -0
  3. package/dist/0.8/components/ComponentRenderer.d.ts +39 -0
  4. package/dist/0.8/components/ComponentRenderer.test.d.ts +6 -0
  5. package/dist/0.8/components/UnknownComponent.d.ts +18 -0
  6. package/dist/0.8/components/display/AudioPlayerComponent.d.ts +5 -0
  7. package/dist/0.8/components/display/DividerComponent.d.ts +5 -0
  8. package/dist/0.8/components/display/IconComponent.d.ts +5 -0
  9. package/dist/0.8/components/display/ImageComponent.d.ts +6 -0
  10. package/dist/0.8/components/display/TextComponent.d.ts +6 -0
  11. package/dist/0.8/components/display/VideoComponent.d.ts +5 -0
  12. package/dist/0.8/components/display/display.test.d.ts +7 -0
  13. package/dist/0.8/components/display/index.d.ts +9 -0
  14. package/dist/0.8/components/index.d.ts +7 -0
  15. package/dist/0.8/components/interactive/ButtonComponent.d.ts +5 -0
  16. package/dist/0.8/components/interactive/CheckBoxComponent.d.ts +5 -0
  17. package/dist/0.8/components/interactive/DateTimeInputComponent.d.ts +5 -0
  18. package/dist/0.8/components/interactive/MultipleChoiceComponent.d.ts +7 -0
  19. package/dist/0.8/components/interactive/SliderComponent.d.ts +5 -0
  20. package/dist/0.8/components/interactive/TextFieldComponent.d.ts +5 -0
  21. package/dist/0.8/components/interactive/index.d.ts +9 -0
  22. package/dist/0.8/components/interactive/interactive.test.d.ts +7 -0
  23. package/dist/0.8/components/layout/CardComponent.d.ts +5 -0
  24. package/dist/0.8/components/layout/ColumnComponent.d.ts +5 -0
  25. package/dist/0.8/components/layout/ListComponent.d.ts +5 -0
  26. package/dist/0.8/components/layout/ModalComponent.d.ts +5 -0
  27. package/dist/0.8/components/layout/RowComponent.d.ts +5 -0
  28. package/dist/0.8/components/layout/TabsComponent.d.ts +5 -0
  29. package/dist/0.8/components/layout/index.d.ts +9 -0
  30. package/dist/0.8/components/layout/layout.test.d.ts +7 -0
  31. package/dist/0.8/contexts/A2UIProvider.d.ts +34 -0
  32. package/dist/0.8/contexts/A2UIProvider.test.d.ts +6 -0
  33. package/dist/0.8/contexts/ActionContext.d.ts +33 -0
  34. package/dist/0.8/contexts/ActionContext.test.d.ts +6 -0
  35. package/dist/0.8/contexts/ComponentsMapContext.d.ts +63 -0
  36. package/dist/0.8/contexts/DataModelContext.d.ts +43 -0
  37. package/dist/0.8/contexts/DataModelContext.test.d.ts +6 -0
  38. package/dist/0.8/contexts/SurfaceContext.d.ts +45 -0
  39. package/dist/0.8/contexts/SurfaceContext.test.d.ts +6 -0
  40. package/dist/0.8/hooks/useA2UIMessageHandler.d.ts +41 -0
  41. package/dist/0.8/hooks/useA2UIMessageHandler.test.d.ts +6 -0
  42. package/{src/0.8/hooks/useComponent.ts → dist/0.8/hooks/useComponent.d.ts} +2 -18
  43. package/dist/0.8/hooks/useComponent.test.d.ts +6 -0
  44. package/dist/0.8/hooks/useDataBinding.d.ts +50 -0
  45. package/dist/0.8/hooks/useDataBinding.test.d.ts +6 -0
  46. package/{src/0.8/hooks/useDispatchAction.ts → dist/0.8/hooks/useDispatchAction.d.ts} +2 -15
  47. package/dist/0.8/hooks/useDispatchAction.test.d.ts +6 -0
  48. package/{src/0.8/hooks/useSurface.ts → dist/0.8/hooks/useSurface.d.ts} +2 -15
  49. package/dist/0.8/hooks/useSurface.test.d.ts +6 -0
  50. package/{src/0.8/index.ts → dist/0.8/index.d.ts} +5 -19
  51. package/{src/0.8/types/index.ts → dist/0.8/types/index.d.ts} +128 -213
  52. package/dist/0.8/utils/dataBinding.d.ts +95 -0
  53. package/dist/0.8/utils/dataBinding.test.d.ts +6 -0
  54. package/dist/0.8/utils/pathUtils.d.ts +63 -0
  55. package/dist/0.8/utils/pathUtils.test.d.ts +6 -0
  56. package/dist/a2ui-react.js +4 -0
  57. package/dist/a2ui-react10.js +54 -0
  58. package/dist/a2ui-react100.js +24 -0
  59. package/dist/a2ui-react101.js +255 -0
  60. package/dist/a2ui-react102.js +163 -0
  61. package/dist/a2ui-react103.js +19 -0
  62. package/dist/a2ui-react104.js +251 -0
  63. package/dist/a2ui-react105.js +61 -0
  64. package/dist/a2ui-react106.js +35 -0
  65. package/dist/a2ui-react107.js +436 -0
  66. package/dist/a2ui-react108.js +16 -0
  67. package/dist/a2ui-react109.js +234 -0
  68. package/dist/a2ui-react11.js +9 -0
  69. package/dist/a2ui-react110.js +6 -0
  70. package/dist/a2ui-react111.js +6 -0
  71. package/dist/a2ui-react112.js +6 -0
  72. package/dist/a2ui-react113.js +239 -0
  73. package/dist/a2ui-react114.js +845 -0
  74. package/dist/a2ui-react115.js +6 -0
  75. package/dist/a2ui-react116.js +10 -0
  76. package/dist/a2ui-react117.js +8 -0
  77. package/dist/a2ui-react118.js +8 -0
  78. package/dist/a2ui-react119.js +20 -0
  79. package/dist/a2ui-react12.js +32 -0
  80. package/dist/a2ui-react120.js +8 -0
  81. package/dist/a2ui-react121.js +8 -0
  82. package/dist/a2ui-react122.js +9 -0
  83. package/dist/a2ui-react123.js +16 -0
  84. package/dist/a2ui-react124.js +18 -0
  85. package/dist/a2ui-react125.js +11 -0
  86. package/dist/a2ui-react126.js +9 -0
  87. package/dist/a2ui-react127.js +13 -0
  88. package/dist/a2ui-react128.js +17 -0
  89. package/dist/a2ui-react129.js +8 -0
  90. package/dist/a2ui-react13.js +36 -0
  91. package/dist/a2ui-react130.js +17 -0
  92. package/dist/a2ui-react131.js +8 -0
  93. package/dist/a2ui-react132.js +10 -0
  94. package/dist/a2ui-react133.js +9 -0
  95. package/dist/a2ui-react134.js +7 -0
  96. package/dist/a2ui-react135.js +9 -0
  97. package/dist/a2ui-react136.js +548 -0
  98. package/dist/a2ui-react137.js +49 -0
  99. package/dist/a2ui-react138.js +20 -0
  100. package/dist/a2ui-react139.js +21 -0
  101. package/dist/a2ui-react14.js +114 -0
  102. package/dist/a2ui-react140.js +11 -0
  103. package/dist/a2ui-react141.js +9 -0
  104. package/dist/a2ui-react142.js +10 -0
  105. package/dist/a2ui-react143.js +8 -0
  106. package/dist/a2ui-react144.js +9 -0
  107. package/dist/a2ui-react145.js +12 -0
  108. package/dist/a2ui-react146.js +8 -0
  109. package/dist/a2ui-react147.js +11 -0
  110. package/dist/a2ui-react148.js +15 -0
  111. package/dist/a2ui-react149.js +8 -0
  112. package/dist/a2ui-react15.js +18 -0
  113. package/dist/a2ui-react150.js +12 -0
  114. package/dist/a2ui-react151.js +10 -0
  115. package/dist/a2ui-react152.js +12 -0
  116. package/dist/a2ui-react153.js +16 -0
  117. package/dist/a2ui-react154.js +8 -0
  118. package/dist/a2ui-react155.js +8 -0
  119. package/dist/a2ui-react156.js +8 -0
  120. package/dist/a2ui-react157.js +7 -0
  121. package/dist/a2ui-react158.js +14 -0
  122. package/dist/a2ui-react159.js +13 -0
  123. package/dist/a2ui-react16.js +19 -0
  124. package/dist/a2ui-react160.js +13 -0
  125. package/dist/a2ui-react161.js +14 -0
  126. package/dist/a2ui-react162.js +14 -0
  127. package/dist/a2ui-react163.js +35 -0
  128. package/dist/a2ui-react164.js +67 -0
  129. package/dist/a2ui-react165.js +11 -0
  130. package/dist/a2ui-react166.js +11 -0
  131. package/dist/a2ui-react167.js +10 -0
  132. package/dist/a2ui-react168.js +13 -0
  133. package/dist/a2ui-react169.js +10 -0
  134. package/dist/a2ui-react17.js +18 -0
  135. package/dist/a2ui-react170.js +10 -0
  136. package/dist/a2ui-react171.js +9 -0
  137. package/dist/a2ui-react172.js +17 -0
  138. package/dist/a2ui-react173.js +21 -0
  139. package/dist/a2ui-react174.js +18 -0
  140. package/dist/a2ui-react175.js +35 -0
  141. package/dist/a2ui-react176.js +14 -0
  142. package/dist/a2ui-react177.js +7 -0
  143. package/dist/a2ui-react178.js +58 -0
  144. package/dist/a2ui-react179.js +25 -0
  145. package/dist/a2ui-react18.js +58 -0
  146. package/dist/a2ui-react180.js +43 -0
  147. package/dist/a2ui-react181.js +63 -0
  148. package/dist/a2ui-react182.js +34 -0
  149. package/dist/a2ui-react183.js +15 -0
  150. package/dist/a2ui-react184.js +67 -0
  151. package/dist/a2ui-react185.js +67 -0
  152. package/dist/a2ui-react186.js +69 -0
  153. package/dist/a2ui-react187.js +69 -0
  154. package/dist/a2ui-react188.js +42 -0
  155. package/dist/a2ui-react189.js +43 -0
  156. package/dist/a2ui-react19.js +58 -0
  157. package/dist/a2ui-react190.js +55 -0
  158. package/dist/a2ui-react191.js +45 -0
  159. package/dist/a2ui-react192.js +41 -0
  160. package/dist/a2ui-react193.js +72 -0
  161. package/dist/a2ui-react194.js +72 -0
  162. package/dist/a2ui-react195.js +97 -0
  163. package/dist/a2ui-react196.js +42 -0
  164. package/dist/a2ui-react197.js +42 -0
  165. package/dist/a2ui-react198.js +42 -0
  166. package/dist/a2ui-react199.js +27 -0
  167. package/dist/a2ui-react2.js +11 -0
  168. package/dist/a2ui-react20.js +51 -0
  169. package/dist/a2ui-react200.js +26 -0
  170. package/dist/a2ui-react201.js +26 -0
  171. package/dist/a2ui-react202.js +27 -0
  172. package/dist/a2ui-react203.js +26 -0
  173. package/dist/a2ui-react204.js +26 -0
  174. package/dist/a2ui-react205.js +16 -0
  175. package/dist/a2ui-react206.js +41 -0
  176. package/dist/a2ui-react207.js +41 -0
  177. package/dist/a2ui-react208.js +16 -0
  178. package/dist/a2ui-react209.js +16 -0
  179. package/dist/a2ui-react21.js +14 -0
  180. package/dist/a2ui-react210.js +32 -0
  181. package/dist/a2ui-react211.js +32 -0
  182. package/dist/a2ui-react212.js +6 -0
  183. package/dist/a2ui-react213.js +9 -0
  184. package/dist/a2ui-react214.js +50 -0
  185. package/dist/a2ui-react215.js +29 -0
  186. package/dist/a2ui-react216.js +68 -0
  187. package/dist/a2ui-react217.js +10 -0
  188. package/dist/a2ui-react218.js +127 -0
  189. package/dist/a2ui-react219.js +17 -0
  190. package/dist/a2ui-react22.js +29 -0
  191. package/dist/a2ui-react220.js +136 -0
  192. package/dist/a2ui-react221.js +13 -0
  193. package/dist/a2ui-react222.js +219 -0
  194. package/dist/a2ui-react223.js +15 -0
  195. package/dist/a2ui-react224.js +36 -0
  196. package/dist/a2ui-react225.js +49 -0
  197. package/dist/a2ui-react226.js +10 -0
  198. package/dist/a2ui-react227.js +52 -0
  199. package/dist/a2ui-react228.js +6 -0
  200. package/dist/a2ui-react229.js +8 -0
  201. package/dist/a2ui-react23.js +25 -0
  202. package/dist/a2ui-react230.js +30 -0
  203. package/dist/a2ui-react231.js +52 -0
  204. package/dist/a2ui-react232.js +11 -0
  205. package/dist/a2ui-react233.js +70 -0
  206. package/dist/a2ui-react234.js +49 -0
  207. package/dist/a2ui-react235.js +27 -0
  208. package/dist/a2ui-react236.js +49 -0
  209. package/dist/a2ui-react237.js +183 -0
  210. package/dist/a2ui-react238.js +70 -0
  211. package/dist/a2ui-react239.js +33 -0
  212. package/dist/a2ui-react24.js +29 -0
  213. package/dist/a2ui-react240.js +11 -0
  214. package/dist/a2ui-react241.js +155 -0
  215. package/dist/a2ui-react242.js +110 -0
  216. package/dist/a2ui-react243.js +22 -0
  217. package/dist/a2ui-react244.js +100 -0
  218. package/dist/a2ui-react245.js +49 -0
  219. package/dist/a2ui-react246.js +14 -0
  220. package/dist/a2ui-react247.js +208 -0
  221. package/dist/a2ui-react248.js +24 -0
  222. package/dist/a2ui-react249.js +402 -0
  223. package/dist/a2ui-react25.js +27 -0
  224. package/dist/a2ui-react250.js +49 -0
  225. package/dist/a2ui-react251.js +49 -0
  226. package/dist/a2ui-react252.js +54 -0
  227. package/dist/a2ui-react253.js +7 -0
  228. package/dist/a2ui-react254.js +7 -0
  229. package/dist/a2ui-react255.js +18 -0
  230. package/dist/a2ui-react256.js +8 -0
  231. package/dist/a2ui-react257.js +10 -0
  232. package/dist/a2ui-react258.js +19 -0
  233. package/dist/a2ui-react259.js +7 -0
  234. package/dist/a2ui-react26.js +44 -0
  235. package/dist/a2ui-react260.js +7 -0
  236. package/dist/a2ui-react261.js +8 -0
  237. package/dist/a2ui-react262.js +8 -0
  238. package/dist/a2ui-react263.js +7 -0
  239. package/dist/a2ui-react264.js +7 -0
  240. package/dist/a2ui-react265.js +9 -0
  241. package/dist/a2ui-react266.js +27 -0
  242. package/dist/a2ui-react267.js +9 -0
  243. package/dist/a2ui-react268.js +7 -0
  244. package/dist/a2ui-react269.js +9 -0
  245. package/dist/a2ui-react27.js +100 -0
  246. package/dist/a2ui-react270.js +8 -0
  247. package/dist/a2ui-react271.js +7 -0
  248. package/dist/a2ui-react272.js +8 -0
  249. package/dist/a2ui-react273.js +7 -0
  250. package/dist/a2ui-react274.js +11 -0
  251. package/dist/a2ui-react275.js +8 -0
  252. package/dist/a2ui-react276.js +7 -0
  253. package/dist/a2ui-react277.js +7 -0
  254. package/dist/a2ui-react278.js +9 -0
  255. package/dist/a2ui-react279.js +148 -0
  256. package/dist/a2ui-react28.js +82 -0
  257. package/dist/a2ui-react280.js +42 -0
  258. package/dist/a2ui-react281.js +7 -0
  259. package/dist/a2ui-react282.js +10 -0
  260. package/dist/a2ui-react283.js +16 -0
  261. package/dist/a2ui-react284.js +10 -0
  262. package/dist/a2ui-react285.js +34 -0
  263. package/dist/a2ui-react286.js +13 -0
  264. package/dist/a2ui-react287.js +13 -0
  265. package/dist/a2ui-react288.js +11 -0
  266. package/dist/a2ui-react289.js +16 -0
  267. package/dist/a2ui-react29.js +43 -0
  268. package/dist/a2ui-react290.js +104 -0
  269. package/dist/a2ui-react291.js +22 -0
  270. package/dist/a2ui-react292.js +56 -0
  271. package/dist/a2ui-react293.js +75 -0
  272. package/dist/a2ui-react294.js +12 -0
  273. package/dist/a2ui-react295.js +23 -0
  274. package/dist/a2ui-react296.js +19 -0
  275. package/dist/a2ui-react297.js +26 -0
  276. package/dist/a2ui-react298.js +9 -0
  277. package/dist/a2ui-react299.js +8 -0
  278. package/dist/a2ui-react3.js +40 -0
  279. package/dist/a2ui-react30.js +41 -0
  280. package/dist/a2ui-react300.js +26 -0
  281. package/dist/a2ui-react301.js +37 -0
  282. package/dist/a2ui-react302.js +18 -0
  283. package/dist/a2ui-react303.js +9 -0
  284. package/dist/a2ui-react304.js +7 -0
  285. package/dist/a2ui-react305.js +7 -0
  286. package/dist/a2ui-react306.js +7 -0
  287. package/dist/a2ui-react307.js +7 -0
  288. package/dist/a2ui-react308.js +6 -0
  289. package/dist/a2ui-react309.js +9 -0
  290. package/dist/a2ui-react31.js +86 -0
  291. package/dist/a2ui-react310.js +26 -0
  292. package/dist/a2ui-react311.js +10 -0
  293. package/dist/a2ui-react312.js +9 -0
  294. package/dist/a2ui-react313.js +8 -0
  295. package/dist/a2ui-react314.js +6 -0
  296. package/dist/a2ui-react315.js +6 -0
  297. package/dist/a2ui-react316.js +7 -0
  298. package/dist/a2ui-react317.js +6 -0
  299. package/dist/a2ui-react318.js +7 -0
  300. package/dist/a2ui-react319.js +6 -0
  301. package/dist/a2ui-react32.js +46 -0
  302. package/dist/a2ui-react320.js +6 -0
  303. package/dist/a2ui-react321.js +6 -0
  304. package/dist/a2ui-react322.js +9 -0
  305. package/dist/a2ui-react323.js +18 -0
  306. package/dist/a2ui-react324.js +31 -0
  307. package/dist/a2ui-react325.js +15 -0
  308. package/dist/a2ui-react326.js +27 -0
  309. package/dist/a2ui-react327.js +31 -0
  310. package/dist/a2ui-react328.js +7 -0
  311. package/dist/a2ui-react329.js +19 -0
  312. package/dist/a2ui-react33.js +44 -0
  313. package/dist/a2ui-react330.js +8 -0
  314. package/dist/a2ui-react331.js +8 -0
  315. package/dist/a2ui-react332.js +61 -0
  316. package/dist/a2ui-react333.js +69 -0
  317. package/dist/a2ui-react334.js +9 -0
  318. package/dist/a2ui-react335.js +7 -0
  319. package/dist/a2ui-react336.js +26 -0
  320. package/dist/a2ui-react337.js +19 -0
  321. package/dist/a2ui-react338.js +10 -0
  322. package/dist/a2ui-react339.js +13 -0
  323. package/dist/a2ui-react34.js +8 -0
  324. package/dist/a2ui-react340.js +13 -0
  325. package/dist/a2ui-react341.js +24 -0
  326. package/dist/a2ui-react342.js +13 -0
  327. package/dist/a2ui-react343.js +12 -0
  328. package/dist/a2ui-react344.js +12 -0
  329. package/dist/a2ui-react345.js +7 -0
  330. package/dist/a2ui-react346.js +8 -0
  331. package/dist/a2ui-react347.js +19 -0
  332. package/dist/a2ui-react348.js +12 -0
  333. package/dist/a2ui-react349.js +21 -0
  334. package/dist/a2ui-react35.js +16 -0
  335. package/dist/a2ui-react350.js +18 -0
  336. package/dist/a2ui-react351.js +15 -0
  337. package/dist/a2ui-react352.js +32 -0
  338. package/dist/a2ui-react353.js +15 -0
  339. package/dist/a2ui-react354.js +28 -0
  340. package/dist/a2ui-react355.js +8 -0
  341. package/dist/a2ui-react356.js +11 -0
  342. package/dist/a2ui-react357.js +22 -0
  343. package/dist/a2ui-react358.js +7 -0
  344. package/dist/a2ui-react359.js +5 -0
  345. package/dist/a2ui-react36.js +23 -0
  346. package/dist/a2ui-react360.js +26 -0
  347. package/dist/a2ui-react361.js +115 -0
  348. package/dist/a2ui-react362.js +18 -0
  349. package/dist/a2ui-react363.js +527 -0
  350. package/dist/a2ui-react364.js +130 -0
  351. package/dist/a2ui-react365.js +136 -0
  352. package/dist/a2ui-react366.js +7 -0
  353. package/dist/a2ui-react367.js +15 -0
  354. package/dist/a2ui-react368.js +67 -0
  355. package/dist/a2ui-react369.js +71 -0
  356. package/dist/a2ui-react37.js +15 -0
  357. package/dist/a2ui-react370.js +11 -0
  358. package/dist/a2ui-react371.js +16 -0
  359. package/dist/a2ui-react372.js +68 -0
  360. package/dist/a2ui-react373.js +6 -0
  361. package/dist/a2ui-react374.js +25 -0
  362. package/dist/a2ui-react375.js +15 -0
  363. package/dist/a2ui-react376.js +30 -0
  364. package/dist/a2ui-react377.js +7 -0
  365. package/dist/a2ui-react378.js +25 -0
  366. package/dist/a2ui-react38.js +10 -0
  367. package/dist/a2ui-react39.js +10 -0
  368. package/dist/a2ui-react4.js +76 -0
  369. package/dist/a2ui-react40.js +14 -0
  370. package/dist/a2ui-react41.js +14 -0
  371. package/dist/a2ui-react42.js +16 -0
  372. package/dist/a2ui-react43.js +12 -0
  373. package/dist/a2ui-react44.js +15 -0
  374. package/dist/a2ui-react45.js +15 -0
  375. package/dist/a2ui-react46.js +9 -0
  376. package/dist/a2ui-react47.js +11 -0
  377. package/dist/a2ui-react48.js +16 -0
  378. package/dist/a2ui-react49.js +10 -0
  379. package/dist/a2ui-react5.js +8 -0
  380. package/dist/a2ui-react50.js +14 -0
  381. package/dist/a2ui-react51.js +9 -0
  382. package/dist/a2ui-react52.js +9 -0
  383. package/dist/a2ui-react53.js +15 -0
  384. package/dist/a2ui-react54.js +17 -0
  385. package/dist/a2ui-react55.js +10 -0
  386. package/dist/a2ui-react56.js +10 -0
  387. package/dist/a2ui-react57.js +10 -0
  388. package/dist/a2ui-react58.js +9 -0
  389. package/dist/a2ui-react59.js +9 -0
  390. package/dist/a2ui-react6.js +28 -0
  391. package/dist/a2ui-react60.js +9 -0
  392. package/dist/a2ui-react61.js +15 -0
  393. package/dist/a2ui-react62.js +10 -0
  394. package/dist/a2ui-react63.js +15 -0
  395. package/dist/a2ui-react64.js +10 -0
  396. package/dist/a2ui-react65.js +14 -0
  397. package/dist/a2ui-react66.js +22 -0
  398. package/dist/a2ui-react67.js +14 -0
  399. package/dist/a2ui-react68.js +10 -0
  400. package/dist/a2ui-react69.js +17 -0
  401. package/dist/a2ui-react7.js +10 -0
  402. package/dist/a2ui-react70.js +15 -0
  403. package/dist/a2ui-react71.js +10 -0
  404. package/dist/a2ui-react72.js +12 -0
  405. package/dist/a2ui-react73.js +9 -0
  406. package/dist/a2ui-react74.js +6 -0
  407. package/dist/a2ui-react75.js +15 -0
  408. package/dist/a2ui-react76.js +11 -0
  409. package/dist/a2ui-react77.js +14 -0
  410. package/dist/a2ui-react78.js +9 -0
  411. package/dist/a2ui-react79.js +9 -0
  412. package/dist/a2ui-react8.js +21 -0
  413. package/dist/a2ui-react80.js +9 -0
  414. package/dist/a2ui-react81.js +10 -0
  415. package/dist/a2ui-react82.js +26 -0
  416. package/dist/a2ui-react83.js +29 -0
  417. package/dist/a2ui-react84.js +67 -0
  418. package/dist/a2ui-react85.js +77 -0
  419. package/dist/a2ui-react86.js +53 -0
  420. package/dist/a2ui-react87.js +31 -0
  421. package/dist/a2ui-react88.js +22 -0
  422. package/dist/a2ui-react89.js +21 -0
  423. package/dist/a2ui-react9.js +88 -0
  424. package/{src/components/ui/textarea.tsx → dist/a2ui-react90.js} +17 -17
  425. package/dist/a2ui-react91.js +176 -0
  426. package/dist/a2ui-react92.js +38 -0
  427. package/dist/a2ui-react93.js +88 -0
  428. package/dist/a2ui-react94.js +9 -0
  429. package/dist/a2ui-react95.js +58 -0
  430. package/dist/a2ui-react96.js +146 -0
  431. package/dist/a2ui-react97.js +63 -0
  432. package/dist/a2ui-react98.js +17 -0
  433. package/dist/a2ui-react99.js +2765 -0
  434. package/dist/components/ui/button.d.ts +10 -0
  435. package/dist/components/ui/calendar.d.ts +8 -0
  436. package/dist/components/ui/card.d.ts +9 -0
  437. package/dist/components/ui/checkbox.d.ts +4 -0
  438. package/dist/components/ui/dialog.d.ts +15 -0
  439. package/dist/components/ui/input.d.ts +3 -0
  440. package/dist/components/ui/label.d.ts +4 -0
  441. package/dist/components/ui/native-select.d.ts +7 -0
  442. package/dist/components/ui/popover.d.ts +7 -0
  443. package/dist/components/ui/select.d.ts +15 -0
  444. package/dist/components/ui/separator.d.ts +4 -0
  445. package/dist/components/ui/slider.d.ts +4 -0
  446. package/dist/components/ui/tabs.d.ts +7 -0
  447. package/dist/components/ui/textarea.d.ts +3 -0
  448. package/dist/index.d.ts +1 -0
  449. package/dist/lib/utils.d.ts +2 -0
  450. package/package.json +4 -1
  451. package/.claude/commands/speckit.analyze.md +0 -184
  452. package/.claude/commands/speckit.checklist.md +0 -294
  453. package/.claude/commands/speckit.clarify.md +0 -181
  454. package/.claude/commands/speckit.constitution.md +0 -82
  455. package/.claude/commands/speckit.implement.md +0 -135
  456. package/.claude/commands/speckit.plan.md +0 -89
  457. package/.claude/commands/speckit.specify.md +0 -256
  458. package/.claude/commands/speckit.tasks.md +0 -137
  459. package/.claude/commands/speckit.taskstoissues.md +0 -30
  460. package/.github/workflows/deploy.yml +0 -69
  461. package/.husky/pre-commit +0 -1
  462. package/.prettierignore +0 -4
  463. package/.prettierrc +0 -7
  464. package/.specify/memory/constitution.md +0 -73
  465. package/.specify/scripts/bash/check-prerequisites.sh +0 -166
  466. package/.specify/scripts/bash/common.sh +0 -156
  467. package/.specify/scripts/bash/create-new-feature.sh +0 -297
  468. package/.specify/scripts/bash/setup-plan.sh +0 -61
  469. package/.specify/scripts/bash/update-agent-context.sh +0 -799
  470. package/.specify/templates/agent-file-template.md +0 -28
  471. package/.specify/templates/checklist-template.md +0 -40
  472. package/.specify/templates/plan-template.md +0 -105
  473. package/.specify/templates/spec-template.md +0 -115
  474. package/.specify/templates/tasks-template.md +0 -250
  475. package/CLAUDE.md +0 -109
  476. package/CONTRIBUTING.md +0 -97
  477. package/components.json +0 -21
  478. package/eslint.config.js +0 -25
  479. package/netlify.toml +0 -50
  480. package/playground/README.md +0 -75
  481. package/playground/index.html +0 -22
  482. package/playground/package.json +0 -32
  483. package/playground/public/favicon.svg +0 -8
  484. package/playground/src/App.css +0 -256
  485. package/playground/src/App.tsx +0 -115
  486. package/playground/src/assets/react.svg +0 -1
  487. package/playground/src/components/ErrorDisplay.tsx +0 -13
  488. package/playground/src/components/ExampleSelector.tsx +0 -64
  489. package/playground/src/components/Header.tsx +0 -48
  490. package/playground/src/components/JsonEditor.tsx +0 -32
  491. package/playground/src/components/Preview.tsx +0 -78
  492. package/playground/src/components/ThemeToggle.tsx +0 -19
  493. package/playground/src/data/examples.ts +0 -1571
  494. package/playground/src/hooks/useTheme.ts +0 -55
  495. package/playground/src/index.css +0 -220
  496. package/playground/src/main.tsx +0 -10
  497. package/playground/tsconfig.app.json +0 -34
  498. package/playground/tsconfig.json +0 -13
  499. package/playground/tsconfig.node.json +0 -26
  500. package/playground/vite.config.ts +0 -31
  501. package/specs/001-a2ui-renderer/checklists/requirements.md +0 -41
  502. package/specs/001-a2ui-renderer/data-model.md +0 -140
  503. package/specs/001-a2ui-renderer/plan.md +0 -123
  504. package/specs/001-a2ui-renderer/quickstart.md +0 -145
  505. package/specs/001-a2ui-renderer/research.md +0 -144
  506. package/specs/001-a2ui-renderer/spec.md +0 -165
  507. package/specs/001-a2ui-renderer/tasks.md +0 -310
  508. package/specs/002-playground/checklists/requirements.md +0 -37
  509. package/specs/002-playground/contracts/components.md +0 -120
  510. package/specs/002-playground/data-model.md +0 -149
  511. package/specs/002-playground/plan.md +0 -73
  512. package/specs/002-playground/quickstart.md +0 -158
  513. package/specs/002-playground/research.md +0 -117
  514. package/specs/002-playground/spec.md +0 -109
  515. package/specs/002-playground/tasks.md +0 -224
  516. package/src/0.8/A2UIRenderer.test.tsx +0 -793
  517. package/src/0.8/A2UIRenderer.tsx +0 -142
  518. package/src/0.8/components/ComponentRenderer.test.tsx +0 -373
  519. package/src/0.8/components/ComponentRenderer.tsx +0 -163
  520. package/src/0.8/components/UnknownComponent.tsx +0 -49
  521. package/src/0.8/components/display/AudioPlayerComponent.tsx +0 -37
  522. package/src/0.8/components/display/DividerComponent.tsx +0 -23
  523. package/src/0.8/components/display/IconComponent.tsx +0 -137
  524. package/src/0.8/components/display/ImageComponent.tsx +0 -57
  525. package/src/0.8/components/display/TextComponent.tsx +0 -56
  526. package/src/0.8/components/display/VideoComponent.tsx +0 -31
  527. package/src/0.8/components/display/display.test.tsx +0 -660
  528. package/src/0.8/components/display/index.ts +0 -10
  529. package/src/0.8/components/index.ts +0 -14
  530. package/src/0.8/components/interactive/ButtonComponent.tsx +0 -44
  531. package/src/0.8/components/interactive/CheckBoxComponent.tsx +0 -45
  532. package/src/0.8/components/interactive/DateTimeInputComponent.tsx +0 -176
  533. package/src/0.8/components/interactive/MultipleChoiceComponent.tsx +0 -157
  534. package/src/0.8/components/interactive/SliderComponent.tsx +0 -53
  535. package/src/0.8/components/interactive/TextFieldComponent.tsx +0 -65
  536. package/src/0.8/components/interactive/index.ts +0 -10
  537. package/src/0.8/components/interactive/interactive.test.tsx +0 -618
  538. package/src/0.8/components/layout/CardComponent.tsx +0 -30
  539. package/src/0.8/components/layout/ColumnComponent.tsx +0 -93
  540. package/src/0.8/components/layout/ListComponent.tsx +0 -81
  541. package/src/0.8/components/layout/ModalComponent.tsx +0 -41
  542. package/src/0.8/components/layout/RowComponent.tsx +0 -94
  543. package/src/0.8/components/layout/TabsComponent.tsx +0 -59
  544. package/src/0.8/components/layout/index.ts +0 -10
  545. package/src/0.8/components/layout/layout.test.tsx +0 -558
  546. package/src/0.8/contexts/A2UIProvider.test.tsx +0 -226
  547. package/src/0.8/contexts/A2UIProvider.tsx +0 -54
  548. package/src/0.8/contexts/ActionContext.test.tsx +0 -242
  549. package/src/0.8/contexts/ActionContext.tsx +0 -105
  550. package/src/0.8/contexts/ComponentsMapContext.tsx +0 -125
  551. package/src/0.8/contexts/DataModelContext.test.tsx +0 -335
  552. package/src/0.8/contexts/DataModelContext.tsx +0 -184
  553. package/src/0.8/contexts/SurfaceContext.test.tsx +0 -339
  554. package/src/0.8/contexts/SurfaceContext.tsx +0 -197
  555. package/src/0.8/hooks/useA2UIMessageHandler.test.tsx +0 -399
  556. package/src/0.8/hooks/useA2UIMessageHandler.ts +0 -123
  557. package/src/0.8/hooks/useComponent.test.tsx +0 -148
  558. package/src/0.8/hooks/useDataBinding.test.tsx +0 -334
  559. package/src/0.8/hooks/useDataBinding.ts +0 -99
  560. package/src/0.8/hooks/useDispatchAction.test.tsx +0 -83
  561. package/src/0.8/hooks/useSurface.test.tsx +0 -114
  562. package/src/0.8/schemas/client_to_server.json +0 -50
  563. package/src/0.8/schemas/server_to_client.json +0 -148
  564. package/src/0.8/schemas/standard_catalog_definition.json +0 -661
  565. package/src/0.8/utils/dataBinding.test.ts +0 -443
  566. package/src/0.8/utils/dataBinding.ts +0 -212
  567. package/src/0.8/utils/pathUtils.test.ts +0 -353
  568. package/src/0.8/utils/pathUtils.ts +0 -200
  569. package/src/components/ui/button.tsx +0 -62
  570. package/src/components/ui/calendar.tsx +0 -220
  571. package/src/components/ui/card.tsx +0 -92
  572. package/src/components/ui/checkbox.tsx +0 -30
  573. package/src/components/ui/dialog.tsx +0 -141
  574. package/src/components/ui/input.tsx +0 -21
  575. package/src/components/ui/label.tsx +0 -22
  576. package/src/components/ui/native-select.tsx +0 -53
  577. package/src/components/ui/popover.tsx +0 -46
  578. package/src/components/ui/select.tsx +0 -188
  579. package/src/components/ui/separator.tsx +0 -26
  580. package/src/components/ui/slider.tsx +0 -61
  581. package/src/components/ui/tabs.tsx +0 -64
  582. package/src/index.ts +0 -1
  583. package/src/lib/utils.ts +0 -6
  584. package/tsconfig.json +0 -28
  585. package/vite.config.ts +0 -29
  586. package/vitest.config.ts +0 -22
  587. package/vitest.setup.ts +0 -8
  588. package/website/README.md +0 -4
  589. package/website/assets/favicon.svg +0 -8
  590. package/website/content/.gitkeep +0 -0
  591. package/website/content/api.md +0 -108
  592. package/website/content/index.md +0 -126
  593. package/website/global.d.ts +0 -9
  594. package/website/package.json +0 -17
  595. package/website/plain.config.js +0 -28
  596. package/website/serve.json +0 -8
  597. package/website/src/client/color-mode-switch.css +0 -47
  598. package/website/src/client/index.js +0 -61
  599. package/website/src/client/moon.svg +0 -1
  600. package/website/src/client/sun.svg +0 -1
  601. package/website/src/components/Footer.jsx +0 -9
  602. package/website/src/components/Header.jsx +0 -50
  603. package/website/src/components/Page.jsx +0 -28
  604. package/website/src/global.css +0 -423
@@ -1,618 +0,0 @@
1
- /**
2
- * Interactive Components Tests
3
- *
4
- * Tests for ButtonComponent, CheckBoxComponent, TextFieldComponent,
5
- * DateTimeInputComponent, MultipleChoiceComponent, and SliderComponent.
6
- */
7
-
8
- import { describe, it, expect, vi } from 'vitest'
9
- import { render, screen, fireEvent, waitFor } from '@testing-library/react'
10
- import userEvent from '@testing-library/user-event'
11
- import { ButtonComponent } from './ButtonComponent'
12
- import { CheckBoxComponent } from './CheckBoxComponent'
13
- import { TextFieldComponent } from './TextFieldComponent'
14
- import { DateTimeInputComponent } from './DateTimeInputComponent'
15
- import { MultipleChoiceComponent } from './MultipleChoiceComponent'
16
- import { SliderComponent } from './SliderComponent'
17
- import { DataModelProvider } from '../../contexts/DataModelContext'
18
- import { ActionProvider } from '../../contexts/ActionContext'
19
- import type { ReactNode } from 'react'
20
- import type { ActionPayload } from '@/0.8/types'
21
-
22
- // Mock ComponentRenderer
23
- vi.mock('../ComponentRenderer', () => ({
24
- ComponentRenderer: vi.fn(({ componentId }) => (
25
- <span data-testid={`component-${componentId}`}>{componentId}</span>
26
- )),
27
- }))
28
-
29
- // Wrapper with providers
30
- const createWrapper = (onAction?: (action: ActionPayload) => void) => {
31
- return ({ children }: { children: ReactNode }) => (
32
- <DataModelProvider>
33
- <ActionProvider onAction={onAction}>{children}</ActionProvider>
34
- </DataModelProvider>
35
- )
36
- }
37
-
38
- const wrapper = createWrapper()
39
-
40
- describe('ButtonComponent', () => {
41
- it('should render button with default text', () => {
42
- render(<ButtonComponent surfaceId="surface-1" componentId="button-1" />, {
43
- wrapper,
44
- })
45
- expect(screen.getByRole('button')).toHaveTextContent('Button')
46
- })
47
-
48
- it('should render child component when provided', async () => {
49
- render(
50
- <ButtonComponent
51
- surfaceId="surface-1"
52
- componentId="button-1"
53
- child="button-text"
54
- />,
55
- { wrapper }
56
- )
57
-
58
- await waitFor(() => {
59
- expect(screen.getByTestId('component-button-text')).toBeInTheDocument()
60
- })
61
- })
62
-
63
- it('should render with outline variant by default', () => {
64
- render(<ButtonComponent surfaceId="surface-1" componentId="button-1" />, {
65
- wrapper,
66
- })
67
- // Outline variant has specific classes
68
- const button = screen.getByRole('button')
69
- expect(button).toBeInTheDocument()
70
- })
71
-
72
- it('should render with default variant when primary is true', () => {
73
- render(
74
- <ButtonComponent
75
- surfaceId="surface-1"
76
- componentId="button-1"
77
- primary={true}
78
- />,
79
- { wrapper }
80
- )
81
- const button = screen.getByRole('button')
82
- expect(button).toBeInTheDocument()
83
- })
84
-
85
- it('should dispatch action on click', async () => {
86
- const onAction = vi.fn()
87
- const actionWrapper = createWrapper(onAction)
88
- const user = userEvent.setup()
89
-
90
- render(
91
- <ButtonComponent
92
- surfaceId="surface-1"
93
- componentId="button-1"
94
- action={{ name: 'submit' }}
95
- />,
96
- { wrapper: actionWrapper }
97
- )
98
-
99
- await user.click(screen.getByRole('button'))
100
-
101
- expect(onAction).toHaveBeenCalledWith({
102
- surfaceId: 'surface-1',
103
- name: 'submit',
104
- context: {},
105
- sourceComponentId: 'button-1',
106
- })
107
- })
108
-
109
- it('should dispatch action with context', async () => {
110
- const onAction = vi.fn()
111
- const actionWrapper = createWrapper(onAction)
112
- const user = userEvent.setup()
113
-
114
- render(
115
- <ButtonComponent
116
- surfaceId="surface-1"
117
- componentId="button-1"
118
- action={{
119
- name: 'submit',
120
- context: [{ key: 'type', value: { literalString: 'form' } }],
121
- }}
122
- />,
123
- { wrapper: actionWrapper }
124
- )
125
-
126
- await user.click(screen.getByRole('button'))
127
-
128
- expect(onAction).toHaveBeenCalledWith({
129
- surfaceId: 'surface-1',
130
- name: 'submit',
131
- context: { type: 'form' },
132
- sourceComponentId: 'button-1',
133
- })
134
- })
135
-
136
- it('should not dispatch when no action is provided', async () => {
137
- const onAction = vi.fn()
138
- const actionWrapper = createWrapper(onAction)
139
- const user = userEvent.setup()
140
-
141
- render(<ButtonComponent surfaceId="surface-1" componentId="button-1" />, {
142
- wrapper: actionWrapper,
143
- })
144
-
145
- await user.click(screen.getByRole('button'))
146
-
147
- expect(onAction).not.toHaveBeenCalled()
148
- })
149
-
150
- it('should have correct displayName', () => {
151
- expect(ButtonComponent.displayName).toBe('A2UI.Button')
152
- })
153
- })
154
-
155
- describe('CheckBoxComponent', () => {
156
- it('should render checkbox', () => {
157
- render(
158
- <CheckBoxComponent surfaceId="surface-1" componentId="checkbox-1" />,
159
- { wrapper }
160
- )
161
- expect(screen.getByRole('checkbox')).toBeInTheDocument()
162
- })
163
-
164
- it('should render label when provided', () => {
165
- render(
166
- <CheckBoxComponent
167
- surfaceId="surface-1"
168
- componentId="checkbox-1"
169
- label={{ literalString: 'Accept terms' }}
170
- />,
171
- { wrapper }
172
- )
173
- expect(screen.getByText('Accept terms')).toBeInTheDocument()
174
- })
175
-
176
- it('should not render label when empty', () => {
177
- const { container } = render(
178
- <CheckBoxComponent
179
- surfaceId="surface-1"
180
- componentId="checkbox-1"
181
- label={{ literalString: '' }}
182
- />,
183
- { wrapper }
184
- )
185
- expect(container.querySelector('label')).toBeNull()
186
- })
187
-
188
- it('should be unchecked by default', () => {
189
- render(
190
- <CheckBoxComponent surfaceId="surface-1" componentId="checkbox-1" />,
191
- { wrapper }
192
- )
193
- const checkbox = screen.getByRole('checkbox')
194
- expect(checkbox).not.toBeChecked()
195
- })
196
-
197
- it('should toggle checked state on click', async () => {
198
- const user = userEvent.setup()
199
-
200
- render(
201
- <CheckBoxComponent
202
- surfaceId="surface-1"
203
- componentId="checkbox-1"
204
- value={{ path: '/form/accepted' }}
205
- />,
206
- { wrapper }
207
- )
208
-
209
- const checkbox = screen.getByRole('checkbox')
210
- expect(checkbox).not.toBeChecked()
211
-
212
- await user.click(checkbox)
213
- expect(checkbox).toBeChecked()
214
-
215
- await user.click(checkbox)
216
- expect(checkbox).not.toBeChecked()
217
- })
218
-
219
- it('should have correct displayName', () => {
220
- expect(CheckBoxComponent.displayName).toBe('A2UI.CheckBox')
221
- })
222
- })
223
-
224
- describe('TextFieldComponent', () => {
225
- it('should render input field', () => {
226
- render(<TextFieldComponent surfaceId="surface-1" componentId="field-1" />, {
227
- wrapper,
228
- })
229
- expect(screen.getByRole('textbox')).toBeInTheDocument()
230
- })
231
-
232
- it('should render label when provided', () => {
233
- render(
234
- <TextFieldComponent
235
- surfaceId="surface-1"
236
- componentId="field-1"
237
- label={{ literalString: 'Name' }}
238
- />,
239
- { wrapper }
240
- )
241
- expect(screen.getByText('Name')).toBeInTheDocument()
242
- })
243
-
244
- it('should not render label when empty', () => {
245
- const { container } = render(
246
- <TextFieldComponent
247
- surfaceId="surface-1"
248
- componentId="field-1"
249
- label={{ literalString: '' }}
250
- />,
251
- { wrapper }
252
- )
253
- expect(container.querySelector('label')).toBeNull()
254
- })
255
-
256
- it('should render text input for shortText type', () => {
257
- render(
258
- <TextFieldComponent
259
- surfaceId="surface-1"
260
- componentId="field-1"
261
- textFieldType="shortText"
262
- />,
263
- { wrapper }
264
- )
265
- const input = screen.getByRole('textbox')
266
- expect(input.tagName).toBe('INPUT')
267
- expect(input).toHaveAttribute('type', 'text')
268
- })
269
-
270
- it('should render textarea for longText type', () => {
271
- render(
272
- <TextFieldComponent
273
- surfaceId="surface-1"
274
- componentId="field-1"
275
- textFieldType="longText"
276
- />,
277
- { wrapper }
278
- )
279
- const textarea = screen.getByRole('textbox')
280
- expect(textarea.tagName).toBe('TEXTAREA')
281
- })
282
-
283
- it('should render number input for number type', () => {
284
- render(
285
- <TextFieldComponent
286
- surfaceId="surface-1"
287
- componentId="field-1"
288
- textFieldType="number"
289
- />,
290
- { wrapper }
291
- )
292
- const input = screen.getByRole('spinbutton')
293
- expect(input).toHaveAttribute('type', 'number')
294
- })
295
-
296
- it('should render password input for obscured type', () => {
297
- const { container } = render(
298
- <TextFieldComponent
299
- surfaceId="surface-1"
300
- componentId="field-1"
301
- textFieldType="obscured"
302
- />,
303
- { wrapper }
304
- )
305
- const input = container.querySelector('input[type="password"]')
306
- expect(input).toBeInTheDocument()
307
- })
308
-
309
- it('should render date input for date type', () => {
310
- const { container } = render(
311
- <TextFieldComponent
312
- surfaceId="surface-1"
313
- componentId="field-1"
314
- textFieldType="date"
315
- />,
316
- { wrapper }
317
- )
318
- const input = container.querySelector('input[type="date"]')
319
- expect(input).toBeInTheDocument()
320
- })
321
-
322
- it('should update value on input', async () => {
323
- const user = userEvent.setup()
324
-
325
- render(
326
- <TextFieldComponent
327
- surfaceId="surface-1"
328
- componentId="field-1"
329
- text={{ path: '/form/name' }}
330
- />,
331
- { wrapper }
332
- )
333
-
334
- const input = screen.getByRole('textbox')
335
- await user.type(input, 'John')
336
-
337
- expect(input).toHaveValue('John')
338
- })
339
-
340
- it('should have correct displayName', () => {
341
- expect(TextFieldComponent.displayName).toBe('A2UI.TextField')
342
- })
343
- })
344
-
345
- describe('DateTimeInputComponent', () => {
346
- it('should render date picker button by default', () => {
347
- render(
348
- <DateTimeInputComponent surfaceId="surface-1" componentId="datetime-1" />,
349
- { wrapper }
350
- )
351
- // Component uses Calendar/Popover UI, renders a button trigger
352
- expect(
353
- screen.getByRole('button', { name: /选择日期/i })
354
- ).toBeInTheDocument()
355
- })
356
-
357
- it('should render date picker button when enableDate is true', () => {
358
- render(
359
- <DateTimeInputComponent
360
- surfaceId="surface-1"
361
- componentId="datetime-1"
362
- enableDate={true}
363
- enableTime={false}
364
- />,
365
- { wrapper }
366
- )
367
- expect(
368
- screen.getByRole('button', { name: /选择日期/i })
369
- ).toBeInTheDocument()
370
- })
371
-
372
- it('should render time input when only enableTime is true', () => {
373
- const { container } = render(
374
- <DateTimeInputComponent
375
- surfaceId="surface-1"
376
- componentId="datetime-1"
377
- enableDate={false}
378
- enableTime={true}
379
- />,
380
- { wrapper }
381
- )
382
- const input = container.querySelector('input[type="time"]')
383
- expect(input).toBeInTheDocument()
384
- })
385
-
386
- it('should render datetime picker button when both are enabled', () => {
387
- render(
388
- <DateTimeInputComponent
389
- surfaceId="surface-1"
390
- componentId="datetime-1"
391
- enableDate={true}
392
- enableTime={true}
393
- />,
394
- { wrapper }
395
- )
396
- // Component uses Calendar/Popover UI with time input inside
397
- expect(
398
- screen.getByRole('button', { name: /选择日期和时间/i })
399
- ).toBeInTheDocument()
400
- })
401
-
402
- it('should update time value on change', async () => {
403
- const { container } = render(
404
- <DateTimeInputComponent
405
- surfaceId="surface-1"
406
- componentId="datetime-1"
407
- enableDate={false}
408
- enableTime={true}
409
- value={{ path: '/form/time' }}
410
- />,
411
- { wrapper }
412
- )
413
-
414
- const input = container.querySelector(
415
- 'input[type="time"]'
416
- ) as HTMLInputElement
417
- fireEvent.change(input, { target: { value: '14:30' } })
418
-
419
- expect(input).toHaveValue('14:30')
420
- })
421
-
422
- it('should have correct displayName', () => {
423
- expect(DateTimeInputComponent.displayName).toBe('A2UI.DateTimeInput')
424
- })
425
- })
426
-
427
- describe('MultipleChoiceComponent', () => {
428
- it('should return null when no options', () => {
429
- const { container } = render(
430
- <MultipleChoiceComponent surfaceId="surface-1" componentId="choice-1" />,
431
- { wrapper }
432
- )
433
- expect(container.firstChild).toBeNull()
434
- })
435
-
436
- it('should return null when options is empty', () => {
437
- const { container } = render(
438
- <MultipleChoiceComponent
439
- surfaceId="surface-1"
440
- componentId="choice-1"
441
- options={[]}
442
- />,
443
- { wrapper }
444
- )
445
- expect(container.firstChild).toBeNull()
446
- })
447
-
448
- it('should render select with options when maxAllowedSelections is 1', async () => {
449
- render(
450
- <MultipleChoiceComponent
451
- surfaceId="surface-1"
452
- componentId="choice-1"
453
- maxAllowedSelections={1}
454
- options={[
455
- { label: { literalString: 'Option A' }, value: 'a' },
456
- { label: { literalString: 'Option B' }, value: 'b' },
457
- ]}
458
- />,
459
- { wrapper }
460
- )
461
-
462
- // Select trigger is a combobox role
463
- expect(screen.getByRole('combobox')).toBeInTheDocument()
464
- })
465
-
466
- it('should show placeholder when no selection and maxAllowedSelections is 1', () => {
467
- render(
468
- <MultipleChoiceComponent
469
- surfaceId="surface-1"
470
- componentId="choice-1"
471
- maxAllowedSelections={1}
472
- options={[{ label: { literalString: 'Option A' }, value: 'a' }]}
473
- />,
474
- { wrapper }
475
- )
476
-
477
- expect(screen.getByText('Select an option')).toBeInTheDocument()
478
- })
479
-
480
- it('should render checkboxes for multi-select by default', () => {
481
- render(
482
- <MultipleChoiceComponent
483
- surfaceId="surface-1"
484
- componentId="choice-1"
485
- options={[
486
- { label: { literalString: 'Option A' }, value: 'a' },
487
- { label: { literalString: 'Option B' }, value: 'b' },
488
- ]}
489
- />,
490
- { wrapper }
491
- )
492
-
493
- // Should render checkboxes instead of combobox
494
- const checkboxes = screen.getAllByRole('checkbox')
495
- expect(checkboxes).toHaveLength(2)
496
- expect(screen.getByText('Option A')).toBeInTheDocument()
497
- expect(screen.getByText('Option B')).toBeInTheDocument()
498
- })
499
-
500
- it('should allow multiple selections', async () => {
501
- const user = userEvent.setup()
502
-
503
- render(
504
- <MultipleChoiceComponent
505
- surfaceId="surface-1"
506
- componentId="choice-1"
507
- selections={{ path: '/form/selections' }}
508
- options={[
509
- { label: { literalString: 'Option A' }, value: 'a' },
510
- { label: { literalString: 'Option B' }, value: 'b' },
511
- ]}
512
- />,
513
- { wrapper }
514
- )
515
-
516
- const checkboxes = screen.getAllByRole('checkbox')
517
- await user.click(checkboxes[0])
518
- await user.click(checkboxes[1])
519
-
520
- // Re-query after clicks since component re-renders
521
- const updatedCheckboxes = screen.getAllByRole('checkbox')
522
- expect(updatedCheckboxes[0]).toHaveAttribute('data-state', 'checked')
523
- expect(updatedCheckboxes[1]).toHaveAttribute('data-state', 'checked')
524
- })
525
-
526
- it('should respect maxAllowedSelections limit', async () => {
527
- const user = userEvent.setup()
528
-
529
- render(
530
- <MultipleChoiceComponent
531
- surfaceId="surface-1"
532
- componentId="choice-1"
533
- selections={{ path: '/form/selections' }}
534
- maxAllowedSelections={2}
535
- options={[
536
- { label: { literalString: 'Option A' }, value: 'a' },
537
- { label: { literalString: 'Option B' }, value: 'b' },
538
- { label: { literalString: 'Option C' }, value: 'c' },
539
- ]}
540
- />,
541
- { wrapper }
542
- )
543
-
544
- const checkboxes = screen.getAllByRole('checkbox')
545
- await user.click(checkboxes[0])
546
- await user.click(checkboxes[1])
547
-
548
- // Re-query after clicks since component re-renders
549
- const updatedCheckboxes = screen.getAllByRole('checkbox')
550
- // Third checkbox should be disabled after reaching max
551
- expect(updatedCheckboxes[2]).toBeDisabled()
552
- })
553
-
554
- it('should have correct displayName', () => {
555
- expect(MultipleChoiceComponent.displayName).toBe('A2UI.MultipleChoice')
556
- })
557
- })
558
-
559
- describe('SliderComponent', () => {
560
- it('should render slider', () => {
561
- render(<SliderComponent surfaceId="surface-1" componentId="slider-1" />, {
562
- wrapper,
563
- })
564
- expect(screen.getByRole('slider')).toBeInTheDocument()
565
- })
566
-
567
- it('should display min and max values', () => {
568
- render(
569
- <SliderComponent
570
- surfaceId="surface-1"
571
- componentId="slider-1"
572
- minValue={0}
573
- maxValue={100}
574
- />,
575
- { wrapper }
576
- )
577
-
578
- // Min and max values are displayed, but min value may appear twice (as min label and current value)
579
- expect(screen.getAllByText('0').length).toBeGreaterThanOrEqual(1)
580
- expect(screen.getByText('100')).toBeInTheDocument()
581
- })
582
-
583
- it('should display custom min and max values', () => {
584
- render(
585
- <SliderComponent
586
- surfaceId="surface-1"
587
- componentId="slider-1"
588
- minValue={10}
589
- maxValue={50}
590
- />,
591
- { wrapper }
592
- )
593
-
594
- // Multiple elements may have the same text (min value and current value)
595
- expect(screen.getAllByText('10').length).toBeGreaterThanOrEqual(1)
596
- expect(screen.getByText('50')).toBeInTheDocument()
597
- })
598
-
599
- it('should display current value', () => {
600
- render(
601
- <SliderComponent
602
- surfaceId="surface-1"
603
- componentId="slider-1"
604
- minValue={0}
605
- maxValue={100}
606
- />,
607
- { wrapper }
608
- )
609
-
610
- // Default value should be minValue (0)
611
- const valueDisplay = screen.getAllByText('0')
612
- expect(valueDisplay.length).toBeGreaterThanOrEqual(1)
613
- })
614
-
615
- it('should have correct displayName', () => {
616
- expect(SliderComponent.displayName).toBe('A2UI.Slider')
617
- })
618
- })
@@ -1,30 +0,0 @@
1
- /**
2
- * CardComponent - Card container.
3
- */
4
-
5
- import { memo } from 'react'
6
- import type { CardComponentProps } from '@/0.8/types'
7
- import { Card, CardContent } from '@/components/ui/card'
8
- import { ComponentRenderer } from '../ComponentRenderer'
9
-
10
- /**
11
- * Card component - container with card styling.
12
- */
13
- export const CardComponent = memo(function CardComponent({
14
- surfaceId,
15
- child,
16
- }: CardComponentProps) {
17
- if (!child) {
18
- return <Card />
19
- }
20
-
21
- return (
22
- <Card>
23
- <CardContent className="p-4">
24
- <ComponentRenderer surfaceId={surfaceId} componentId={child} />
25
- </CardContent>
26
- </Card>
27
- )
28
- })
29
-
30
- CardComponent.displayName = 'A2UI.Card'