@elabs-ai/components-ui 4.1.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1547) hide show
  1. package/README.md +2 -1
  2. package/dist/chunk-22Z735L6.js +18 -0
  3. package/dist/chunk-22Z735L6.js.map +1 -0
  4. package/dist/chunk-23E62DNM.js +2 -0
  5. package/dist/chunk-23E62DNM.js.map +1 -0
  6. package/dist/chunk-2AABRSIN.js +2 -0
  7. package/dist/chunk-2AABRSIN.js.map +1 -0
  8. package/dist/chunk-2HXVFC4B.js +44 -0
  9. package/dist/chunk-2HXVFC4B.js.map +1 -0
  10. package/dist/chunk-2SBYBN45.js +2 -0
  11. package/dist/chunk-2SBYBN45.js.map +1 -0
  12. package/dist/chunk-333EWYWL.js +385 -0
  13. package/dist/chunk-333EWYWL.js.map +1 -0
  14. package/dist/chunk-35DUHYPC.js +59 -0
  15. package/dist/chunk-35DUHYPC.js.map +1 -0
  16. package/dist/chunk-35ZTVB35.js +76 -0
  17. package/dist/chunk-35ZTVB35.js.map +1 -0
  18. package/dist/chunk-36VULFFV.js +2 -0
  19. package/dist/chunk-36VULFFV.js.map +1 -0
  20. package/dist/chunk-3B7W334A.js +229 -0
  21. package/dist/chunk-3B7W334A.js.map +1 -0
  22. package/dist/chunk-3EKVSKGJ.js +256 -0
  23. package/dist/chunk-3EKVSKGJ.js.map +1 -0
  24. package/dist/chunk-3JAEQNCB.js +60 -0
  25. package/dist/chunk-3JAEQNCB.js.map +1 -0
  26. package/dist/chunk-3LWAAK3J.js +140 -0
  27. package/dist/chunk-3LWAAK3J.js.map +1 -0
  28. package/dist/chunk-3OSGTUN2.js +2 -0
  29. package/dist/chunk-3OSGTUN2.js.map +1 -0
  30. package/dist/chunk-3P7SRCDB.js +23 -0
  31. package/dist/chunk-3P7SRCDB.js.map +1 -0
  32. package/dist/chunk-45ICJ3EV.js +2 -0
  33. package/dist/chunk-45ICJ3EV.js.map +1 -0
  34. package/dist/chunk-4ACT7RLU.js +2 -0
  35. package/dist/chunk-4ACT7RLU.js.map +1 -0
  36. package/dist/chunk-4E73UAFA.js +296 -0
  37. package/dist/chunk-4E73UAFA.js.map +1 -0
  38. package/dist/chunk-4GQFIJAE.js +197 -0
  39. package/dist/chunk-4GQFIJAE.js.map +1 -0
  40. package/dist/chunk-4HTVJZVG.js +2 -0
  41. package/dist/chunk-4HTVJZVG.js.map +1 -0
  42. package/dist/chunk-4KDA5MDC.js +2 -0
  43. package/dist/chunk-4KDA5MDC.js.map +1 -0
  44. package/dist/chunk-4PITSMJ3.js +52 -0
  45. package/dist/chunk-4PITSMJ3.js.map +1 -0
  46. package/dist/chunk-4PXDZR2W.js +2 -0
  47. package/dist/chunk-4PXDZR2W.js.map +1 -0
  48. package/dist/chunk-4UWOADYM.js +2 -0
  49. package/dist/chunk-4UWOADYM.js.map +1 -0
  50. package/dist/chunk-4W3MVVKN.js +66 -0
  51. package/dist/chunk-4W3MVVKN.js.map +1 -0
  52. package/dist/chunk-4YOFSGHD.js +2 -0
  53. package/dist/chunk-4YOFSGHD.js.map +1 -0
  54. package/dist/chunk-533R5EKD.js +87 -0
  55. package/dist/chunk-533R5EKD.js.map +1 -0
  56. package/dist/chunk-545HI223.js +2 -0
  57. package/dist/chunk-545HI223.js.map +1 -0
  58. package/dist/chunk-57C25JYV.js +170 -0
  59. package/dist/chunk-57C25JYV.js.map +1 -0
  60. package/dist/chunk-5AWXGBSH.js +82 -0
  61. package/dist/chunk-5AWXGBSH.js.map +1 -0
  62. package/dist/chunk-5G2DDMHR.js +2 -0
  63. package/dist/chunk-5G2DDMHR.js.map +1 -0
  64. package/dist/chunk-5HBMI2DO.js +42 -0
  65. package/dist/chunk-5HBMI2DO.js.map +1 -0
  66. package/dist/chunk-5LCN5Q2L.js +23 -0
  67. package/dist/chunk-5LCN5Q2L.js.map +1 -0
  68. package/dist/chunk-5P4BSHIG.js +2 -0
  69. package/dist/chunk-5P4BSHIG.js.map +1 -0
  70. package/dist/chunk-5RC32MZH.js +161 -0
  71. package/dist/chunk-5RC32MZH.js.map +1 -0
  72. package/dist/chunk-5SHHIQVA.js +22 -0
  73. package/dist/chunk-5SHHIQVA.js.map +1 -0
  74. package/dist/chunk-5V5J7APL.js +27 -0
  75. package/dist/chunk-5V5J7APL.js.map +1 -0
  76. package/dist/chunk-5YZLOAKR.js +2 -0
  77. package/dist/chunk-5YZLOAKR.js.map +1 -0
  78. package/dist/chunk-5Z55AFOW.js +128 -0
  79. package/dist/chunk-5Z55AFOW.js.map +1 -0
  80. package/dist/chunk-653ZIWX6.js +2 -0
  81. package/dist/chunk-653ZIWX6.js.map +1 -0
  82. package/dist/chunk-6DHG7JVP.js +2 -0
  83. package/dist/chunk-6DHG7JVP.js.map +1 -0
  84. package/dist/chunk-6HGS5Z2Z.js +110 -0
  85. package/dist/chunk-6HGS5Z2Z.js.map +1 -0
  86. package/dist/chunk-6NKILKS6.js +35 -0
  87. package/dist/chunk-6NKILKS6.js.map +1 -0
  88. package/dist/chunk-6OFWWIEG.js +50 -0
  89. package/dist/chunk-6OFWWIEG.js.map +1 -0
  90. package/dist/chunk-6OPDRLMU.js +158 -0
  91. package/dist/chunk-6OPDRLMU.js.map +1 -0
  92. package/dist/chunk-6QU7OVFA.js +357 -0
  93. package/dist/chunk-6QU7OVFA.js.map +1 -0
  94. package/dist/chunk-6ROQKB4U.js +2 -0
  95. package/dist/chunk-6ROQKB4U.js.map +1 -0
  96. package/dist/chunk-6S43VAN7.js +2 -0
  97. package/dist/chunk-6S43VAN7.js.map +1 -0
  98. package/dist/chunk-6TJVJPNU.js +1321 -0
  99. package/dist/chunk-6TJVJPNU.js.map +1 -0
  100. package/dist/chunk-6VLJL7Q4.js +2 -0
  101. package/dist/chunk-6VLJL7Q4.js.map +1 -0
  102. package/dist/chunk-7G63B2B7.js +189 -0
  103. package/dist/chunk-7G63B2B7.js.map +1 -0
  104. package/dist/chunk-7P24I5OL.js +23 -0
  105. package/dist/chunk-7P24I5OL.js.map +1 -0
  106. package/dist/chunk-7PS5MKVH.js +97 -0
  107. package/dist/chunk-7PS5MKVH.js.map +1 -0
  108. package/dist/chunk-7WIHVGYL.js +2 -0
  109. package/dist/chunk-7WIHVGYL.js.map +1 -0
  110. package/dist/chunk-7WXDSTNR.js +62 -0
  111. package/dist/chunk-7WXDSTNR.js.map +1 -0
  112. package/dist/chunk-A43B4IT7.js +395 -0
  113. package/dist/chunk-A43B4IT7.js.map +1 -0
  114. package/dist/chunk-A47AZPCL.js +35 -0
  115. package/dist/chunk-A47AZPCL.js.map +1 -0
  116. package/dist/chunk-AA3SPDJU.js +2 -0
  117. package/dist/chunk-AA3SPDJU.js.map +1 -0
  118. package/dist/chunk-AC7X3D2M.js +2 -0
  119. package/dist/chunk-AC7X3D2M.js.map +1 -0
  120. package/dist/chunk-AE6UDP36.js +2 -0
  121. package/dist/chunk-AE6UDP36.js.map +1 -0
  122. package/dist/chunk-AFEFAGPW.js +2 -0
  123. package/dist/chunk-AFEFAGPW.js.map +1 -0
  124. package/dist/chunk-AFJCS2WV.js +95 -0
  125. package/dist/chunk-AFJCS2WV.js.map +1 -0
  126. package/dist/chunk-AQNLEP5F.js +2 -0
  127. package/dist/chunk-AQNLEP5F.js.map +1 -0
  128. package/dist/chunk-AUQVJ7KO.js +2 -0
  129. package/dist/chunk-AUQVJ7KO.js.map +1 -0
  130. package/dist/chunk-AXKZBRZK.js +32 -0
  131. package/dist/chunk-AXKZBRZK.js.map +1 -0
  132. package/dist/chunk-AZEABCK4.js +30 -0
  133. package/dist/chunk-AZEABCK4.js.map +1 -0
  134. package/dist/chunk-B23VW24W.js +2 -0
  135. package/dist/chunk-B23VW24W.js.map +1 -0
  136. package/dist/chunk-B2RSOLLO.js +2 -0
  137. package/dist/chunk-B2RSOLLO.js.map +1 -0
  138. package/dist/chunk-B5QQLMEE.js +31 -0
  139. package/dist/chunk-B5QQLMEE.js.map +1 -0
  140. package/dist/chunk-BLNXHETI.js +163 -0
  141. package/dist/chunk-BLNXHETI.js.map +1 -0
  142. package/dist/chunk-BM6NGS3A.js +201 -0
  143. package/dist/chunk-BM6NGS3A.js.map +1 -0
  144. package/dist/chunk-BN4CKDFU.js +989 -0
  145. package/dist/chunk-BN4CKDFU.js.map +1 -0
  146. package/dist/chunk-BPXLHGWI.js +54 -0
  147. package/dist/chunk-BPXLHGWI.js.map +1 -0
  148. package/dist/chunk-BTBYNKT4.js +2 -0
  149. package/dist/chunk-BTBYNKT4.js.map +1 -0
  150. package/dist/chunk-BWL7HWEF.js +325 -0
  151. package/dist/chunk-BWL7HWEF.js.map +1 -0
  152. package/dist/chunk-BZQF5QCN.js +18 -0
  153. package/dist/chunk-BZQF5QCN.js.map +1 -0
  154. package/dist/chunk-C2AQEEFB.js +2 -0
  155. package/dist/chunk-C2AQEEFB.js.map +1 -0
  156. package/dist/chunk-C753P3VJ.js +2 -0
  157. package/dist/chunk-C753P3VJ.js.map +1 -0
  158. package/dist/chunk-CDE74W6O.js +2 -0
  159. package/dist/chunk-CDE74W6O.js.map +1 -0
  160. package/dist/chunk-CEQER4CV.js +2 -0
  161. package/dist/chunk-CEQER4CV.js.map +1 -0
  162. package/dist/chunk-CQ5CH3SB.js +55 -0
  163. package/dist/chunk-CQ5CH3SB.js.map +1 -0
  164. package/dist/chunk-CRGGGHAM.js +2 -0
  165. package/dist/chunk-CRGGGHAM.js.map +1 -0
  166. package/dist/chunk-CRVB4SLG.js +2 -0
  167. package/dist/chunk-CRVB4SLG.js.map +1 -0
  168. package/dist/chunk-CT6XJIPY.js +2 -0
  169. package/dist/chunk-CT6XJIPY.js.map +1 -0
  170. package/dist/chunk-CY624JOL.js +2 -0
  171. package/dist/chunk-CY624JOL.js.map +1 -0
  172. package/dist/chunk-D3C3VVCX.js +38 -0
  173. package/dist/chunk-D3C3VVCX.js.map +1 -0
  174. package/dist/chunk-D53EN4Q6.js +2 -0
  175. package/dist/chunk-D53EN4Q6.js.map +1 -0
  176. package/dist/chunk-DCHYNTHI.js +11 -0
  177. package/dist/chunk-DCHYNTHI.js.map +1 -0
  178. package/dist/chunk-DCI6IOJX.js +236 -0
  179. package/dist/chunk-DCI6IOJX.js.map +1 -0
  180. package/dist/chunk-DFYPQ52O.js +476 -0
  181. package/dist/chunk-DFYPQ52O.js.map +1 -0
  182. package/dist/chunk-DIQJODQR.js +2 -0
  183. package/dist/chunk-DIQJODQR.js.map +1 -0
  184. package/dist/chunk-DSGTH6JW.js +2 -0
  185. package/dist/chunk-DSGTH6JW.js.map +1 -0
  186. package/dist/chunk-DT6RNLCP.js +32 -0
  187. package/dist/chunk-DT6RNLCP.js.map +1 -0
  188. package/dist/chunk-DU6ITAJL.js +2 -0
  189. package/dist/chunk-DU6ITAJL.js.map +1 -0
  190. package/dist/chunk-DUF2VZON.js +36 -0
  191. package/dist/chunk-DUF2VZON.js.map +1 -0
  192. package/dist/chunk-DXDLTYTT.js +2 -0
  193. package/dist/chunk-DXDLTYTT.js.map +1 -0
  194. package/dist/chunk-E3ES2KR6.js +55 -0
  195. package/dist/chunk-E3ES2KR6.js.map +1 -0
  196. package/dist/chunk-EAFPUZ46.js +2 -0
  197. package/dist/chunk-EAFPUZ46.js.map +1 -0
  198. package/dist/chunk-EBDOKU5K.js +2 -0
  199. package/dist/chunk-EBDOKU5K.js.map +1 -0
  200. package/dist/chunk-ECCNRCC4.js +74 -0
  201. package/dist/chunk-ECCNRCC4.js.map +1 -0
  202. package/dist/chunk-EDE73Q6Z.js +2 -0
  203. package/dist/chunk-EDE73Q6Z.js.map +1 -0
  204. package/dist/chunk-EHGIW7GA.js +190 -0
  205. package/dist/chunk-EHGIW7GA.js.map +1 -0
  206. package/dist/chunk-EJQYE4MY.js +100 -0
  207. package/dist/chunk-EJQYE4MY.js.map +1 -0
  208. package/dist/chunk-EKY3A5LO.js +133 -0
  209. package/dist/chunk-EKY3A5LO.js.map +1 -0
  210. package/dist/chunk-EL3OXVOW.js +31 -0
  211. package/dist/chunk-EL3OXVOW.js.map +1 -0
  212. package/dist/chunk-EP3U7OQ3.js +18 -0
  213. package/dist/chunk-EP3U7OQ3.js.map +1 -0
  214. package/dist/chunk-EY2PGOG3.js +246 -0
  215. package/dist/chunk-EY2PGOG3.js.map +1 -0
  216. package/dist/chunk-FAOX6A5D.js +2 -0
  217. package/dist/chunk-FAOX6A5D.js.map +1 -0
  218. package/dist/chunk-FBJ2JSRA.js +47 -0
  219. package/dist/chunk-FBJ2JSRA.js.map +1 -0
  220. package/dist/chunk-FDJ77DTR.js +2 -0
  221. package/dist/chunk-FDJ77DTR.js.map +1 -0
  222. package/dist/chunk-FDPONOOT.js +93 -0
  223. package/dist/chunk-FDPONOOT.js.map +1 -0
  224. package/dist/chunk-FHDJKH2A.js +2 -0
  225. package/dist/chunk-FHDJKH2A.js.map +1 -0
  226. package/dist/chunk-FINAKMC6.js +796 -0
  227. package/dist/chunk-FINAKMC6.js.map +1 -0
  228. package/dist/chunk-FKUP7QRJ.js +54 -0
  229. package/dist/chunk-FKUP7QRJ.js.map +1 -0
  230. package/dist/chunk-FPLZ24MK.js +2 -0
  231. package/dist/chunk-FPLZ24MK.js.map +1 -0
  232. package/dist/chunk-FRFSDZIN.js +2 -0
  233. package/dist/chunk-FRFSDZIN.js.map +1 -0
  234. package/dist/chunk-FYCCNQXQ.js +173 -0
  235. package/dist/chunk-FYCCNQXQ.js.map +1 -0
  236. package/dist/chunk-G3OTDYCD.js +53 -0
  237. package/dist/chunk-G3OTDYCD.js.map +1 -0
  238. package/dist/chunk-G72UOVKS.js +2 -0
  239. package/dist/chunk-G72UOVKS.js.map +1 -0
  240. package/dist/chunk-GAI4NEPU.js +151 -0
  241. package/dist/chunk-GAI4NEPU.js.map +1 -0
  242. package/dist/chunk-GRWGNWIJ.js +187 -0
  243. package/dist/chunk-GRWGNWIJ.js.map +1 -0
  244. package/dist/chunk-GV6GQXKX.js +176 -0
  245. package/dist/chunk-GV6GQXKX.js.map +1 -0
  246. package/dist/chunk-H5UA5JW4.js +140 -0
  247. package/dist/chunk-H5UA5JW4.js.map +1 -0
  248. package/dist/chunk-H5XSI63P.js +2 -0
  249. package/dist/chunk-H5XSI63P.js.map +1 -0
  250. package/dist/chunk-HANBQNW3.js +1498 -0
  251. package/dist/chunk-HANBQNW3.js.map +1 -0
  252. package/dist/chunk-HCU2JHPH.js +169 -0
  253. package/dist/chunk-HCU2JHPH.js.map +1 -0
  254. package/dist/chunk-HDDXP2J7.js +2 -0
  255. package/dist/chunk-HDDXP2J7.js.map +1 -0
  256. package/dist/chunk-HDS64Z5L.js +54 -0
  257. package/dist/chunk-HDS64Z5L.js.map +1 -0
  258. package/dist/chunk-HHVULJGX.js +2 -0
  259. package/dist/chunk-HHVULJGX.js.map +1 -0
  260. package/dist/chunk-HLMFRCFE.js +2 -0
  261. package/dist/chunk-HLMFRCFE.js.map +1 -0
  262. package/dist/chunk-HPUPDT4Q.js +2 -0
  263. package/dist/chunk-HPUPDT4Q.js.map +1 -0
  264. package/dist/chunk-HRYH7XQP.js +209 -0
  265. package/dist/chunk-HRYH7XQP.js.map +1 -0
  266. package/dist/chunk-HVFYAQLK.js +101 -0
  267. package/dist/chunk-HVFYAQLK.js.map +1 -0
  268. package/dist/chunk-HZPNST7D.js +2 -0
  269. package/dist/chunk-HZPNST7D.js.map +1 -0
  270. package/dist/chunk-I6O6ACCH.js +2 -0
  271. package/dist/chunk-I6O6ACCH.js.map +1 -0
  272. package/dist/chunk-IGP5E4FC.js +201 -0
  273. package/dist/chunk-IGP5E4FC.js.map +1 -0
  274. package/dist/chunk-IHMFEPIT.js +123 -0
  275. package/dist/chunk-IHMFEPIT.js.map +1 -0
  276. package/dist/chunk-IM5VJP6T.js +2 -0
  277. package/dist/chunk-IM5VJP6T.js.map +1 -0
  278. package/dist/chunk-IRUZDWJ3.js +218 -0
  279. package/dist/chunk-IRUZDWJ3.js.map +1 -0
  280. package/dist/chunk-ISWUCXEZ.js +2 -0
  281. package/dist/chunk-ISWUCXEZ.js.map +1 -0
  282. package/dist/chunk-ITFDGFOT.js +31 -0
  283. package/dist/chunk-ITFDGFOT.js.map +1 -0
  284. package/dist/chunk-IUQ474IC.js +2 -0
  285. package/dist/chunk-IUQ474IC.js.map +1 -0
  286. package/dist/chunk-IY23F2Y5.js +2 -0
  287. package/dist/chunk-IY23F2Y5.js.map +1 -0
  288. package/dist/chunk-IZJOZJDL.js +75 -0
  289. package/dist/chunk-IZJOZJDL.js.map +1 -0
  290. package/dist/chunk-J2P4YZLC.js +85 -0
  291. package/dist/chunk-J2P4YZLC.js.map +1 -0
  292. package/dist/chunk-JCRBDA66.js +2 -0
  293. package/dist/chunk-JCRBDA66.js.map +1 -0
  294. package/dist/chunk-JGS2IHER.js +140 -0
  295. package/dist/chunk-JGS2IHER.js.map +1 -0
  296. package/dist/chunk-JNWXHPZG.js +24 -0
  297. package/dist/chunk-JNWXHPZG.js.map +1 -0
  298. package/dist/chunk-JWWJ2Z5C.js +2 -0
  299. package/dist/chunk-JWWJ2Z5C.js.map +1 -0
  300. package/dist/chunk-K2GLXCTG.js +2 -0
  301. package/dist/chunk-K2GLXCTG.js.map +1 -0
  302. package/dist/chunk-K6YRTASS.js +55 -0
  303. package/dist/chunk-K6YRTASS.js.map +1 -0
  304. package/dist/chunk-KAAJL2HA.js +327 -0
  305. package/dist/chunk-KAAJL2HA.js.map +1 -0
  306. package/dist/chunk-KBNWM27Q.js +48 -0
  307. package/dist/chunk-KBNWM27Q.js.map +1 -0
  308. package/dist/chunk-KOVHUAHG.js +164 -0
  309. package/dist/chunk-KOVHUAHG.js.map +1 -0
  310. package/dist/chunk-KRVSD4OK.js +2 -0
  311. package/dist/chunk-KRVSD4OK.js.map +1 -0
  312. package/dist/chunk-KTH3GWAL.js +116 -0
  313. package/dist/chunk-KTH3GWAL.js.map +1 -0
  314. package/dist/chunk-KUAVM54Y.js +30 -0
  315. package/dist/chunk-KUAVM54Y.js.map +1 -0
  316. package/dist/chunk-KWQ6HV5Z.js +97 -0
  317. package/dist/chunk-KWQ6HV5Z.js.map +1 -0
  318. package/dist/chunk-KZWC6JCI.js +177 -0
  319. package/dist/chunk-KZWC6JCI.js.map +1 -0
  320. package/dist/chunk-L37QZALU.js +17 -0
  321. package/dist/chunk-L37QZALU.js.map +1 -0
  322. package/dist/chunk-L3SHPHLK.js +35 -0
  323. package/dist/chunk-L3SHPHLK.js.map +1 -0
  324. package/dist/chunk-L66VJIRD.js +2 -0
  325. package/dist/chunk-L66VJIRD.js.map +1 -0
  326. package/dist/chunk-LDOCY4SU.js +68 -0
  327. package/dist/chunk-LDOCY4SU.js.map +1 -0
  328. package/dist/chunk-LJGWA2XL.js +2 -0
  329. package/dist/chunk-LJGWA2XL.js.map +1 -0
  330. package/dist/chunk-LLQWLZ75.js +2 -0
  331. package/dist/chunk-LLQWLZ75.js.map +1 -0
  332. package/dist/chunk-LMO3QK7Q.js +137 -0
  333. package/dist/chunk-LMO3QK7Q.js.map +1 -0
  334. package/dist/chunk-LOSXINSS.js +100 -0
  335. package/dist/chunk-LOSXINSS.js.map +1 -0
  336. package/dist/chunk-LR2CU7HK.js +41 -0
  337. package/dist/chunk-LR2CU7HK.js.map +1 -0
  338. package/dist/chunk-LSYVAOSH.js +2 -0
  339. package/dist/chunk-LSYVAOSH.js.map +1 -0
  340. package/dist/chunk-LVRULYU4.js +400 -0
  341. package/dist/chunk-LVRULYU4.js.map +1 -0
  342. package/dist/chunk-LXW3GNF7.js +201 -0
  343. package/dist/chunk-LXW3GNF7.js.map +1 -0
  344. package/dist/chunk-LYVBDMDQ.js +2 -0
  345. package/dist/chunk-LYVBDMDQ.js.map +1 -0
  346. package/dist/chunk-M3WSUFD4.js +2 -0
  347. package/dist/chunk-M3WSUFD4.js.map +1 -0
  348. package/dist/chunk-MGAXCPT7.js +87 -0
  349. package/dist/chunk-MGAXCPT7.js.map +1 -0
  350. package/dist/chunk-MIXCXZWT.js +2 -0
  351. package/dist/chunk-MIXCXZWT.js.map +1 -0
  352. package/dist/chunk-MLGBLKUH.js +2 -0
  353. package/dist/chunk-MLGBLKUH.js.map +1 -0
  354. package/dist/chunk-MNS2VWHD.js +2 -0
  355. package/dist/chunk-MNS2VWHD.js.map +1 -0
  356. package/dist/chunk-MPMMU3QI.js +2 -0
  357. package/dist/chunk-MPMMU3QI.js.map +1 -0
  358. package/dist/chunk-MRWOHWEH.js +2 -0
  359. package/dist/chunk-MRWOHWEH.js.map +1 -0
  360. package/dist/chunk-MZDL7N52.js +2 -0
  361. package/dist/chunk-MZDL7N52.js.map +1 -0
  362. package/dist/chunk-N44PNGDS.js +169 -0
  363. package/dist/chunk-N44PNGDS.js.map +1 -0
  364. package/dist/chunk-N7PJTMRL.js +2 -0
  365. package/dist/chunk-N7PJTMRL.js.map +1 -0
  366. package/dist/chunk-NBMF7SIS.js +35 -0
  367. package/dist/chunk-NBMF7SIS.js.map +1 -0
  368. package/dist/chunk-NJAGSGPF.js +245 -0
  369. package/dist/chunk-NJAGSGPF.js.map +1 -0
  370. package/dist/chunk-NMGNXW3J.js +98 -0
  371. package/dist/chunk-NMGNXW3J.js.map +1 -0
  372. package/dist/chunk-NQY3QNLR.js +80 -0
  373. package/dist/chunk-NQY3QNLR.js.map +1 -0
  374. package/dist/chunk-NRNIUM75.js +2 -0
  375. package/dist/chunk-NRNIUM75.js.map +1 -0
  376. package/dist/chunk-NRSSSVWB.js +61 -0
  377. package/dist/chunk-NRSSSVWB.js.map +1 -0
  378. package/dist/chunk-NTTSHOOK.js +78 -0
  379. package/dist/chunk-NTTSHOOK.js.map +1 -0
  380. package/dist/chunk-O3JWMB6O.js +20 -0
  381. package/dist/chunk-O3JWMB6O.js.map +1 -0
  382. package/dist/chunk-OBEJUAN6.js +246 -0
  383. package/dist/chunk-OBEJUAN6.js.map +1 -0
  384. package/dist/chunk-OEPN373X.js +2 -0
  385. package/dist/chunk-OEPN373X.js.map +1 -0
  386. package/dist/chunk-OITCRC5D.js +2 -0
  387. package/dist/chunk-OITCRC5D.js.map +1 -0
  388. package/dist/chunk-OKV3N7QK.js +2 -0
  389. package/dist/chunk-OKV3N7QK.js.map +1 -0
  390. package/dist/chunk-ON2E7XHD.js +51 -0
  391. package/dist/chunk-ON2E7XHD.js.map +1 -0
  392. package/dist/chunk-OPMMD25Z.js +218 -0
  393. package/dist/chunk-OPMMD25Z.js.map +1 -0
  394. package/dist/chunk-OR4NVFPH.js +2 -0
  395. package/dist/chunk-OR4NVFPH.js.map +1 -0
  396. package/dist/chunk-OV4GQOLC.js +73 -0
  397. package/dist/chunk-OV4GQOLC.js.map +1 -0
  398. package/dist/chunk-OYKS7YHE.js +2 -0
  399. package/dist/chunk-OYKS7YHE.js.map +1 -0
  400. package/dist/chunk-OYM3NHSD.js +74 -0
  401. package/dist/chunk-OYM3NHSD.js.map +1 -0
  402. package/dist/chunk-OZTM6PYF.js +30 -0
  403. package/dist/chunk-OZTM6PYF.js.map +1 -0
  404. package/dist/chunk-PHAENHGL.js +19 -0
  405. package/dist/chunk-PHAENHGL.js.map +1 -0
  406. package/dist/chunk-PLCQZBZS.js +63 -0
  407. package/dist/chunk-PLCQZBZS.js.map +1 -0
  408. package/dist/chunk-PP7POY7C.js +110 -0
  409. package/dist/chunk-PP7POY7C.js.map +1 -0
  410. package/dist/chunk-PSBNQZB4.js +2 -0
  411. package/dist/chunk-PSBNQZB4.js.map +1 -0
  412. package/dist/chunk-PYPNGKRD.js +355 -0
  413. package/dist/chunk-PYPNGKRD.js.map +1 -0
  414. package/dist/chunk-QDJHUNBQ.js +2 -0
  415. package/dist/chunk-QDJHUNBQ.js.map +1 -0
  416. package/dist/chunk-QDTGDYMM.js +77 -0
  417. package/dist/chunk-QDTGDYMM.js.map +1 -0
  418. package/dist/chunk-QF6UWWDY.js +125 -0
  419. package/dist/chunk-QF6UWWDY.js.map +1 -0
  420. package/dist/chunk-QGX37P5L.js +24 -0
  421. package/dist/chunk-QGX37P5L.js.map +1 -0
  422. package/dist/chunk-QNEOO22E.js +75 -0
  423. package/dist/chunk-QNEOO22E.js.map +1 -0
  424. package/dist/chunk-QODOFLHL.js +2 -0
  425. package/dist/chunk-QODOFLHL.js.map +1 -0
  426. package/dist/chunk-QRGYKV4J.js +2 -0
  427. package/dist/chunk-QRGYKV4J.js.map +1 -0
  428. package/dist/chunk-QTIKGWU4.js +91 -0
  429. package/dist/chunk-QTIKGWU4.js.map +1 -0
  430. package/dist/chunk-R3SYH7RG.js +782 -0
  431. package/dist/chunk-R3SYH7RG.js.map +1 -0
  432. package/dist/chunk-R5JYMCEA.js +2 -0
  433. package/dist/chunk-R5JYMCEA.js.map +1 -0
  434. package/dist/chunk-R7DDZIE3.js +232 -0
  435. package/dist/chunk-R7DDZIE3.js.map +1 -0
  436. package/dist/chunk-RB5AWLDJ.js +26 -0
  437. package/dist/chunk-RB5AWLDJ.js.map +1 -0
  438. package/dist/chunk-RF7JSNXJ.js +2 -0
  439. package/dist/chunk-RF7JSNXJ.js.map +1 -0
  440. package/dist/chunk-RHXVQZOW.js +2 -0
  441. package/dist/chunk-RHXVQZOW.js.map +1 -0
  442. package/dist/chunk-RM5JIUVW.js +74 -0
  443. package/dist/chunk-RM5JIUVW.js.map +1 -0
  444. package/dist/chunk-RMSMTLXH.js +2 -0
  445. package/dist/chunk-RMSMTLXH.js.map +1 -0
  446. package/dist/chunk-RNC4M6SG.js +85 -0
  447. package/dist/chunk-RNC4M6SG.js.map +1 -0
  448. package/dist/chunk-RRYWMYGI.js +14 -0
  449. package/dist/chunk-RRYWMYGI.js.map +1 -0
  450. package/dist/chunk-RRZUMIYG.js +93 -0
  451. package/dist/chunk-RRZUMIYG.js.map +1 -0
  452. package/dist/chunk-RTHCX2TG.js +59 -0
  453. package/dist/chunk-RTHCX2TG.js.map +1 -0
  454. package/dist/chunk-RWUKMJYA.js +39 -0
  455. package/dist/chunk-RWUKMJYA.js.map +1 -0
  456. package/dist/chunk-SMTAPQEQ.js +2 -0
  457. package/dist/chunk-SMTAPQEQ.js.map +1 -0
  458. package/dist/chunk-SS6EOZKZ.js +2 -0
  459. package/dist/chunk-SS6EOZKZ.js.map +1 -0
  460. package/dist/chunk-T2XEMEN2.js +2 -0
  461. package/dist/chunk-T2XEMEN2.js.map +1 -0
  462. package/dist/chunk-T4JNXV75.js +125 -0
  463. package/dist/chunk-T4JNXV75.js.map +1 -0
  464. package/dist/chunk-T7JOWG2A.js +10 -0
  465. package/dist/chunk-T7JOWG2A.js.map +1 -0
  466. package/dist/chunk-TAQI4JTE.js +12 -0
  467. package/dist/chunk-TAQI4JTE.js.map +1 -0
  468. package/dist/chunk-TEKBTTP2.js +27 -0
  469. package/dist/chunk-TEKBTTP2.js.map +1 -0
  470. package/dist/chunk-TNOANK34.js +4483 -0
  471. package/dist/chunk-TNOANK34.js.map +1 -0
  472. package/dist/chunk-TU24Y4HN.js +178 -0
  473. package/dist/chunk-TU24Y4HN.js.map +1 -0
  474. package/dist/chunk-U26XDHMX.js +726 -0
  475. package/dist/chunk-U26XDHMX.js.map +1 -0
  476. package/dist/chunk-U4LHV5DS.js +36 -0
  477. package/dist/chunk-U4LHV5DS.js.map +1 -0
  478. package/dist/chunk-U7QYCYHC.js +2 -0
  479. package/dist/chunk-U7QYCYHC.js.map +1 -0
  480. package/dist/chunk-UANAVLMS.js +2 -0
  481. package/dist/chunk-UANAVLMS.js.map +1 -0
  482. package/dist/chunk-UCEVPLR5.js +2 -0
  483. package/dist/chunk-UCEVPLR5.js.map +1 -0
  484. package/dist/chunk-UCQDLRHR.js +31 -0
  485. package/dist/chunk-UCQDLRHR.js.map +1 -0
  486. package/dist/chunk-UFF7LLGU.js +2 -0
  487. package/dist/chunk-UFF7LLGU.js.map +1 -0
  488. package/dist/chunk-UG5TKXTK.js +2 -0
  489. package/dist/chunk-UG5TKXTK.js.map +1 -0
  490. package/dist/chunk-ULIDYFM7.js +192 -0
  491. package/dist/chunk-ULIDYFM7.js.map +1 -0
  492. package/dist/chunk-UPEMEBWH.js +186 -0
  493. package/dist/chunk-UPEMEBWH.js.map +1 -0
  494. package/dist/chunk-UQHWOPUY.js +61 -0
  495. package/dist/chunk-UQHWOPUY.js.map +1 -0
  496. package/dist/chunk-UQRYTMR7.js +2 -0
  497. package/dist/chunk-UQRYTMR7.js.map +1 -0
  498. package/dist/chunk-URVAZW44.js +323 -0
  499. package/dist/chunk-URVAZW44.js.map +1 -0
  500. package/dist/chunk-USI4LB3N.js +2 -0
  501. package/dist/chunk-USI4LB3N.js.map +1 -0
  502. package/dist/chunk-UXSV6RVS.js +31 -0
  503. package/dist/chunk-UXSV6RVS.js.map +1 -0
  504. package/dist/chunk-V2S5DINS.js +2 -0
  505. package/dist/chunk-V2S5DINS.js.map +1 -0
  506. package/dist/chunk-V3EQ6ACC.js +2 -0
  507. package/dist/chunk-V3EQ6ACC.js.map +1 -0
  508. package/dist/chunk-V4DDHF7S.js +147 -0
  509. package/dist/chunk-V4DDHF7S.js.map +1 -0
  510. package/dist/chunk-VA2OONPE.js +77 -0
  511. package/dist/chunk-VA2OONPE.js.map +1 -0
  512. package/dist/chunk-VFF3AN4Y.js +90 -0
  513. package/dist/chunk-VFF3AN4Y.js.map +1 -0
  514. package/dist/chunk-VH7GG77B.js +2 -0
  515. package/dist/chunk-VH7GG77B.js.map +1 -0
  516. package/dist/chunk-VHLPJ4XW.js +2 -0
  517. package/dist/chunk-VHLPJ4XW.js.map +1 -0
  518. package/dist/chunk-VLE5THFD.js +2 -0
  519. package/dist/chunk-VLE5THFD.js.map +1 -0
  520. package/dist/chunk-VORFRWM5.js +2 -0
  521. package/dist/chunk-VORFRWM5.js.map +1 -0
  522. package/dist/chunk-VQ2T3OEC.js +27 -0
  523. package/dist/chunk-VQ2T3OEC.js.map +1 -0
  524. package/dist/chunk-VRIAWF3A.js +25 -0
  525. package/dist/chunk-VRIAWF3A.js.map +1 -0
  526. package/dist/chunk-W6HCXQBH.js +198 -0
  527. package/dist/chunk-W6HCXQBH.js.map +1 -0
  528. package/dist/chunk-W7I2X6VI.js +2 -0
  529. package/dist/chunk-W7I2X6VI.js.map +1 -0
  530. package/dist/chunk-WCCCW4KD.js +140 -0
  531. package/dist/chunk-WCCCW4KD.js.map +1 -0
  532. package/dist/chunk-WNIVCHDP.js +2 -0
  533. package/dist/chunk-WNIVCHDP.js.map +1 -0
  534. package/dist/chunk-WOMO5CZ7.js +2 -0
  535. package/dist/chunk-WOMO5CZ7.js.map +1 -0
  536. package/dist/chunk-WTB4DDZP.js +163 -0
  537. package/dist/chunk-WTB4DDZP.js.map +1 -0
  538. package/dist/chunk-WW3CD7AU.js +118 -0
  539. package/dist/chunk-WW3CD7AU.js.map +1 -0
  540. package/dist/chunk-WX3LWMVU.js +81 -0
  541. package/dist/chunk-WX3LWMVU.js.map +1 -0
  542. package/dist/chunk-WYENWW3Y.js +2 -0
  543. package/dist/chunk-WYENWW3Y.js.map +1 -0
  544. package/dist/chunk-WZTFU6FJ.js +69 -0
  545. package/dist/chunk-WZTFU6FJ.js.map +1 -0
  546. package/dist/chunk-X4FE7UKP.js +2 -0
  547. package/dist/chunk-X4FE7UKP.js.map +1 -0
  548. package/dist/chunk-X6J4KKZZ.js +126 -0
  549. package/dist/chunk-X6J4KKZZ.js.map +1 -0
  550. package/dist/chunk-XAFRTZQF.js +56 -0
  551. package/dist/chunk-XAFRTZQF.js.map +1 -0
  552. package/dist/chunk-XGX3UFLD.js +2 -0
  553. package/dist/chunk-XGX3UFLD.js.map +1 -0
  554. package/dist/chunk-XGXCMA5M.js +2 -0
  555. package/dist/chunk-XGXCMA5M.js.map +1 -0
  556. package/dist/chunk-XJQADN6S.js +41 -0
  557. package/dist/chunk-XJQADN6S.js.map +1 -0
  558. package/dist/chunk-XMZ5LXL4.js +68 -0
  559. package/dist/chunk-XMZ5LXL4.js.map +1 -0
  560. package/dist/chunk-XONGYCW3.js +637 -0
  561. package/dist/chunk-XONGYCW3.js.map +1 -0
  562. package/dist/chunk-XYACSO57.js +36 -0
  563. package/dist/chunk-XYACSO57.js.map +1 -0
  564. package/dist/chunk-XYFEQHEM.js +2 -0
  565. package/dist/chunk-XYFEQHEM.js.map +1 -0
  566. package/dist/chunk-XZ23AFOP.js +26 -0
  567. package/dist/chunk-XZ23AFOP.js.map +1 -0
  568. package/dist/chunk-YACASX6X.js +54 -0
  569. package/dist/chunk-YACASX6X.js.map +1 -0
  570. package/dist/chunk-YCFOFNQF.js +28 -0
  571. package/dist/chunk-YCFOFNQF.js.map +1 -0
  572. package/dist/chunk-YIFB24WW.js +37 -0
  573. package/dist/chunk-YIFB24WW.js.map +1 -0
  574. package/dist/chunk-YIVL6HWS.js +68 -0
  575. package/dist/chunk-YIVL6HWS.js.map +1 -0
  576. package/dist/chunk-YK4H7VWM.js +2 -0
  577. package/dist/chunk-YK4H7VWM.js.map +1 -0
  578. package/dist/chunk-YL7VBHPZ.js +100 -0
  579. package/dist/chunk-YL7VBHPZ.js.map +1 -0
  580. package/dist/chunk-YMFEBGTU.js +2 -0
  581. package/dist/chunk-YMFEBGTU.js.map +1 -0
  582. package/dist/chunk-YPLKH5H4.js +226 -0
  583. package/dist/chunk-YPLKH5H4.js.map +1 -0
  584. package/dist/chunk-YWB7HLL7.js +126 -0
  585. package/dist/chunk-YWB7HLL7.js.map +1 -0
  586. package/dist/chunk-YXHHUJOZ.js +235 -0
  587. package/dist/chunk-YXHHUJOZ.js.map +1 -0
  588. package/dist/chunk-YZVXIPBC.js +2 -0
  589. package/dist/chunk-YZVXIPBC.js.map +1 -0
  590. package/dist/chunk-Z44RRTMX.js +2 -0
  591. package/dist/chunk-Z44RRTMX.js.map +1 -0
  592. package/dist/chunk-Z4CYBG3H.js +2 -0
  593. package/dist/chunk-Z4CYBG3H.js.map +1 -0
  594. package/dist/chunk-ZE2H4J3P.js +2 -0
  595. package/dist/chunk-ZE2H4J3P.js.map +1 -0
  596. package/dist/chunk-ZEMTALKO.js +2 -0
  597. package/dist/chunk-ZEMTALKO.js.map +1 -0
  598. package/dist/chunk-ZI2OXD6L.js +244 -0
  599. package/dist/chunk-ZI2OXD6L.js.map +1 -0
  600. package/dist/chunk-ZNFHDBUW.js +266 -0
  601. package/dist/chunk-ZNFHDBUW.js.map +1 -0
  602. package/dist/chunk-ZXBUOHCR.js +111 -0
  603. package/dist/chunk-ZXBUOHCR.js.map +1 -0
  604. package/dist/chunk-ZXVPEQM5.js +2 -0
  605. package/dist/chunk-ZXVPEQM5.js.map +1 -0
  606. package/dist/components/accordion/accordion.js +16 -0
  607. package/dist/components/accordion/accordion.js.map +1 -0
  608. package/dist/components/accordion/index.js +17 -0
  609. package/dist/components/accordion/index.js.map +1 -0
  610. package/dist/components/advanced-group/advanced-group.js +18 -0
  611. package/dist/components/advanced-group/advanced-group.js.map +1 -0
  612. package/dist/components/advanced-group/index.js +18 -0
  613. package/dist/components/advanced-group/index.js.map +1 -0
  614. package/dist/components/alert/alert.js +16 -0
  615. package/dist/components/alert/alert.js.map +1 -0
  616. package/dist/components/alert/index.js +17 -0
  617. package/dist/components/alert/index.js.map +1 -0
  618. package/dist/components/alert-dialog/alert-dialog.js +30 -0
  619. package/dist/components/alert-dialog/alert-dialog.js.map +1 -0
  620. package/dist/components/alert-dialog/index.js +31 -0
  621. package/dist/components/alert-dialog/index.js.map +1 -0
  622. package/dist/components/ambient-field/ambient-field.css +59 -0
  623. package/dist/components/ambient-field/ambient-field.css.map +1 -0
  624. package/dist/components/ambient-field/ambient-field.js +15 -0
  625. package/dist/components/ambient-field/ambient-field.js.map +1 -0
  626. package/dist/components/ambient-field/index.css +59 -0
  627. package/dist/components/ambient-field/index.css.map +1 -0
  628. package/dist/components/ambient-field/index.js +16 -0
  629. package/dist/components/ambient-field/index.js.map +1 -0
  630. package/dist/components/app-shell/app-shell.js +14 -0
  631. package/dist/components/app-shell/app-shell.js.map +1 -0
  632. package/dist/components/app-shell/index.js +15 -0
  633. package/dist/components/app-shell/index.js.map +1 -0
  634. package/dist/components/app-sidebar/app-sidebar.js +31 -0
  635. package/dist/components/app-sidebar/app-sidebar.js.map +1 -0
  636. package/dist/components/app-sidebar/index.js +31 -0
  637. package/dist/components/app-sidebar/index.js.map +1 -0
  638. package/dist/components/aspect-ratio/aspect-ratio.js +9 -0
  639. package/dist/components/aspect-ratio/aspect-ratio.js.map +1 -0
  640. package/dist/components/aspect-ratio/index.js +10 -0
  641. package/dist/components/aspect-ratio/index.js.map +1 -0
  642. package/dist/components/attribution-panel/attribution-panel.js +24 -0
  643. package/dist/components/attribution-panel/attribution-panel.js.map +1 -0
  644. package/dist/components/attribution-panel/attribution-types.js +2 -0
  645. package/dist/components/attribution-panel/attribution-types.js.map +1 -0
  646. package/dist/components/attribution-panel/attributions.generated.js +9 -0
  647. package/dist/components/attribution-panel/attributions.generated.js.map +1 -0
  648. package/dist/components/attribution-panel/index.js +24 -0
  649. package/dist/components/attribution-panel/index.js.map +1 -0
  650. package/dist/components/avatar/avatar.js +14 -0
  651. package/dist/components/avatar/avatar.js.map +1 -0
  652. package/dist/components/avatar/index.js +15 -0
  653. package/dist/components/avatar/index.js.map +1 -0
  654. package/dist/components/badge/badge.js +16 -0
  655. package/dist/components/badge/badge.js.map +1 -0
  656. package/dist/components/badge/index.js +13 -0
  657. package/dist/components/badge/index.js.map +1 -0
  658. package/dist/components/bento-grid/bento-grid.js +16 -0
  659. package/dist/components/bento-grid/bento-grid.js.map +1 -0
  660. package/dist/components/bento-grid/index.js +16 -0
  661. package/dist/components/bento-grid/index.js.map +1 -0
  662. package/dist/components/bounded-number/bounded-number.js +24 -0
  663. package/dist/components/bounded-number/bounded-number.js.map +1 -0
  664. package/dist/components/bounded-number/index.js +24 -0
  665. package/dist/components/bounded-number/index.js.map +1 -0
  666. package/dist/components/breadcrumb/breadcrumb.js +28 -0
  667. package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
  668. package/dist/components/breadcrumb/index.js +26 -0
  669. package/dist/components/breadcrumb/index.js.map +1 -0
  670. package/dist/components/button/button.js +12 -0
  671. package/dist/components/button/button.js.map +1 -0
  672. package/dist/components/button/index.js +13 -0
  673. package/dist/components/button/index.js.map +1 -0
  674. package/dist/components/button-group/button-group.js +18 -0
  675. package/dist/components/button-group/button-group.js.map +1 -0
  676. package/dist/components/button-group/index.js +19 -0
  677. package/dist/components/button-group/index.js.map +1 -0
  678. package/dist/components/calendar/calendar.js +12 -0
  679. package/dist/components/calendar/calendar.js.map +1 -0
  680. package/dist/components/calendar/index.js +13 -0
  681. package/dist/components/calendar/index.js.map +1 -0
  682. package/dist/components/card/card.js +27 -0
  683. package/dist/components/card/card.js.map +1 -0
  684. package/dist/components/card/index.js +27 -0
  685. package/dist/components/card/index.js.map +1 -0
  686. package/dist/components/carousel/carousel.js +24 -0
  687. package/dist/components/carousel/carousel.js.map +1 -0
  688. package/dist/components/carousel/index.js +24 -0
  689. package/dist/components/carousel/index.js.map +1 -0
  690. package/dist/components/change-review/change-review.js +34 -0
  691. package/dist/components/change-review/change-review.js.map +1 -0
  692. package/dist/components/change-review/index.js +34 -0
  693. package/dist/components/change-review/index.js.map +1 -0
  694. package/dist/components/checkbox/checkbox.js +10 -0
  695. package/dist/components/checkbox/checkbox.js.map +1 -0
  696. package/dist/components/checkbox/index.js +11 -0
  697. package/dist/components/checkbox/index.js.map +1 -0
  698. package/dist/components/collapsible/collapsible.js +14 -0
  699. package/dist/components/collapsible/collapsible.js.map +1 -0
  700. package/dist/components/collapsible/index.js +15 -0
  701. package/dist/components/collapsible/index.js.map +1 -0
  702. package/dist/components/collapsible-panel/index.js +11 -0
  703. package/dist/components/collapsible-panel/index.js.map +1 -0
  704. package/dist/components/collapsible-panel/use-collapsible-panel.js +11 -0
  705. package/dist/components/collapsible-panel/use-collapsible-panel.js.map +1 -0
  706. package/dist/components/color-picker/color-picker.js +18 -0
  707. package/dist/components/color-picker/color-picker.js.map +1 -0
  708. package/dist/components/color-picker/index.js +18 -0
  709. package/dist/components/color-picker/index.js.map +1 -0
  710. package/dist/components/combobox/combobox.js +28 -0
  711. package/dist/components/combobox/combobox.js.map +1 -0
  712. package/dist/components/combobox/index.js +28 -0
  713. package/dist/components/combobox/index.js.map +1 -0
  714. package/dist/components/command/command.js +39 -0
  715. package/dist/components/command/command.js.map +1 -0
  716. package/dist/components/command/index.js +39 -0
  717. package/dist/components/command/index.js.map +1 -0
  718. package/dist/components/command-chip/command-chip.js +17 -0
  719. package/dist/components/command-chip/command-chip.js.map +1 -0
  720. package/dist/components/command-chip/index.js +17 -0
  721. package/dist/components/command-chip/index.js.map +1 -0
  722. package/dist/components/command-trigger/command-trigger.js +12 -0
  723. package/dist/components/command-trigger/command-trigger.js.map +1 -0
  724. package/dist/components/command-trigger/index.js +13 -0
  725. package/dist/components/command-trigger/index.js.map +1 -0
  726. package/dist/components/confirm-dialog/confirm-dialog.js +20 -0
  727. package/dist/components/confirm-dialog/confirm-dialog.js.map +1 -0
  728. package/dist/components/confirm-dialog/index.js +20 -0
  729. package/dist/components/confirm-dialog/index.js.map +1 -0
  730. package/dist/components/context-menu/context-menu.js +36 -0
  731. package/dist/components/context-menu/context-menu.js.map +1 -0
  732. package/dist/components/context-menu/index.js +37 -0
  733. package/dist/components/context-menu/index.js.map +1 -0
  734. package/dist/components/context-rail/context-rail.js +35 -0
  735. package/dist/components/context-rail/context-rail.js.map +1 -0
  736. package/dist/components/context-rail/index.js +35 -0
  737. package/dist/components/context-rail/index.js.map +1 -0
  738. package/dist/components/copyable-value/copyable-value.js +19 -0
  739. package/dist/components/copyable-value/copyable-value.js.map +1 -0
  740. package/dist/components/copyable-value/index.js +17 -0
  741. package/dist/components/copyable-value/index.js.map +1 -0
  742. package/dist/components/date-picker/date-picker.js +21 -0
  743. package/dist/components/date-picker/date-picker.js.map +1 -0
  744. package/dist/components/date-picker/index.js +21 -0
  745. package/dist/components/date-picker/index.js.map +1 -0
  746. package/dist/components/date-range-picker/date-range-picker.js +22 -0
  747. package/dist/components/date-range-picker/date-range-picker.js.map +1 -0
  748. package/dist/components/date-range-picker/index.js +22 -0
  749. package/dist/components/date-range-picker/index.js.map +1 -0
  750. package/dist/components/descriptions/descriptions.js +12 -0
  751. package/dist/components/descriptions/descriptions.js.map +1 -0
  752. package/dist/components/descriptions/index.js +13 -0
  753. package/dist/components/descriptions/index.js.map +1 -0
  754. package/dist/components/dialog/dialog.js +41 -0
  755. package/dist/components/dialog/dialog.js.map +1 -0
  756. package/dist/components/dialog/index.js +45 -0
  757. package/dist/components/dialog/index.js.map +1 -0
  758. package/dist/components/dialog/use-dialog-dismiss-guard.js +10 -0
  759. package/dist/components/dialog/use-dialog-dismiss-guard.js.map +1 -0
  760. package/dist/components/drawer/drawer.js +26 -0
  761. package/dist/components/drawer/drawer.js.map +1 -0
  762. package/dist/components/drawer/index.js +27 -0
  763. package/dist/components/drawer/index.js.map +1 -0
  764. package/dist/components/dropdown-menu/dropdown-menu.js +38 -0
  765. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -0
  766. package/dist/components/dropdown-menu/index.js +39 -0
  767. package/dist/components/dropdown-menu/index.js.map +1 -0
  768. package/dist/components/empty-state/empty-state.js +15 -0
  769. package/dist/components/empty-state/empty-state.js.map +1 -0
  770. package/dist/components/empty-state/index.js +16 -0
  771. package/dist/components/empty-state/index.js.map +1 -0
  772. package/dist/components/error-state/error-state.js +15 -0
  773. package/dist/components/error-state/error-state.js.map +1 -0
  774. package/dist/components/error-state/index.js +16 -0
  775. package/dist/components/error-state/index.js.map +1 -0
  776. package/dist/components/expand-dialog/expand-dialog.js +28 -0
  777. package/dist/components/expand-dialog/expand-dialog.js.map +1 -0
  778. package/dist/components/expand-dialog/index.js +28 -0
  779. package/dist/components/expand-dialog/index.js.map +1 -0
  780. package/dist/components/field/field-context.js +11 -0
  781. package/dist/components/field/field-context.js.map +1 -0
  782. package/dist/components/field/field.js +23 -0
  783. package/dist/components/field/field.js.map +1 -0
  784. package/dist/components/field/index.js +23 -0
  785. package/dist/components/field/index.js.map +1 -0
  786. package/dist/components/field-row/field-row.js +14 -0
  787. package/dist/components/field-row/field-row.js.map +1 -0
  788. package/dist/components/field-row/index.js +14 -0
  789. package/dist/components/field-row/index.js.map +1 -0
  790. package/dist/components/file-upload/file-upload.js +28 -0
  791. package/dist/components/file-upload/file-upload.js.map +1 -0
  792. package/dist/components/file-upload/index.js +26 -0
  793. package/dist/components/file-upload/index.js.map +1 -0
  794. package/dist/components/form/form.js +27 -0
  795. package/dist/components/form/form.js.map +1 -0
  796. package/dist/components/hover-card/hover-card.js +14 -0
  797. package/dist/components/hover-card/hover-card.js.map +1 -0
  798. package/dist/components/hover-card/index.js +15 -0
  799. package/dist/components/hover-card/index.js.map +1 -0
  800. package/dist/components/icon-button/icon-button.js +14 -0
  801. package/dist/components/icon-button/icon-button.js.map +1 -0
  802. package/dist/components/icon-button/index.js +15 -0
  803. package/dist/components/icon-button/index.js.map +1 -0
  804. package/dist/components/input/index.js +11 -0
  805. package/dist/components/input/index.js.map +1 -0
  806. package/dist/components/input/input.js +10 -0
  807. package/dist/components/input/input.js.map +1 -0
  808. package/dist/components/input-group/index.js +31 -0
  809. package/dist/components/input-group/index.js.map +1 -0
  810. package/dist/components/input-group/input-group.js +30 -0
  811. package/dist/components/input-group/input-group.js.map +1 -0
  812. package/dist/components/input-otp/index.js +17 -0
  813. package/dist/components/input-otp/index.js.map +1 -0
  814. package/dist/components/input-otp/input-otp.js +17 -0
  815. package/dist/components/input-otp/input-otp.js.map +1 -0
  816. package/dist/components/install-tabs/index.js +28 -0
  817. package/dist/components/install-tabs/index.js.map +1 -0
  818. package/dist/components/install-tabs/install-tabs.js +28 -0
  819. package/dist/components/install-tabs/install-tabs.js.map +1 -0
  820. package/dist/components/integration-matrix/index.js +26 -0
  821. package/dist/components/integration-matrix/index.js.map +1 -0
  822. package/dist/components/integration-matrix/integration-matrix.js +26 -0
  823. package/dist/components/integration-matrix/integration-matrix.js.map +1 -0
  824. package/dist/components/kbd/index.js +11 -0
  825. package/dist/components/kbd/index.js.map +1 -0
  826. package/dist/components/kbd/kbd.js +10 -0
  827. package/dist/components/kbd/kbd.js.map +1 -0
  828. package/dist/components/key-value-editor/index.js +18 -0
  829. package/dist/components/key-value-editor/index.js.map +1 -0
  830. package/dist/components/key-value-editor/key-value-editor.js +18 -0
  831. package/dist/components/key-value-editor/key-value-editor.js.map +1 -0
  832. package/dist/components/keyboard-shortcuts/index.js +25 -0
  833. package/dist/components/keyboard-shortcuts/index.js.map +1 -0
  834. package/dist/components/keyboard-shortcuts/keyboard-shortcuts.js +25 -0
  835. package/dist/components/keyboard-shortcuts/keyboard-shortcuts.js.map +1 -0
  836. package/dist/components/label/index.js +11 -0
  837. package/dist/components/label/index.js.map +1 -0
  838. package/dist/components/label/label.js +10 -0
  839. package/dist/components/label/label.js.map +1 -0
  840. package/dist/components/link-preview/index.js +14 -0
  841. package/dist/components/link-preview/index.js.map +1 -0
  842. package/dist/components/link-preview/link-preview.js +14 -0
  843. package/dist/components/link-preview/link-preview.js.map +1 -0
  844. package/dist/components/list-editor/index.js +18 -0
  845. package/dist/components/list-editor/index.js.map +1 -0
  846. package/dist/components/list-editor/list-editor.js +18 -0
  847. package/dist/components/list-editor/list-editor.js.map +1 -0
  848. package/dist/components/loading-state/index.js +16 -0
  849. package/dist/components/loading-state/index.js.map +1 -0
  850. package/dist/components/loading-state/loading-state.js +15 -0
  851. package/dist/components/loading-state/loading-state.js.map +1 -0
  852. package/dist/components/locale-provider/index.js +16 -0
  853. package/dist/components/locale-provider/index.js.map +1 -0
  854. package/dist/components/locale-provider/locale-provider.js +13 -0
  855. package/dist/components/locale-provider/locale-provider.js.map +1 -0
  856. package/dist/components/locale-provider/messages.js +10 -0
  857. package/dist/components/locale-provider/messages.js.map +1 -0
  858. package/dist/components/match-highlight/index.js +15 -0
  859. package/dist/components/match-highlight/index.js.map +1 -0
  860. package/dist/components/match-highlight/match-highlight.js +14 -0
  861. package/dist/components/match-highlight/match-highlight.js.map +1 -0
  862. package/dist/components/mention-input/index.js +46 -0
  863. package/dist/components/mention-input/index.js.map +1 -0
  864. package/dist/components/mention-input/mention-input.js +33 -0
  865. package/dist/components/mention-input/mention-input.js.map +1 -0
  866. package/dist/components/mention-input/mention-value.js +20 -0
  867. package/dist/components/mention-input/mention-value.js.map +1 -0
  868. package/dist/components/menubar/index.js +39 -0
  869. package/dist/components/menubar/index.js.map +1 -0
  870. package/dist/components/menubar/menubar.js +38 -0
  871. package/dist/components/menubar/menubar.js.map +1 -0
  872. package/dist/components/meter/index.js +15 -0
  873. package/dist/components/meter/index.js.map +1 -0
  874. package/dist/components/meter/meter.js +15 -0
  875. package/dist/components/meter/meter.js.map +1 -0
  876. package/dist/components/metric-card/index.js +24 -0
  877. package/dist/components/metric-card/index.js.map +1 -0
  878. package/dist/components/metric-card/metric-card.js +24 -0
  879. package/dist/components/metric-card/metric-card.js.map +1 -0
  880. package/dist/components/model-picker/index.js +37 -0
  881. package/dist/components/model-picker/index.js.map +1 -0
  882. package/dist/components/model-picker/model-picker-state.js +13 -0
  883. package/dist/components/model-picker/model-picker-state.js.map +1 -0
  884. package/dist/components/model-picker/model-picker.js +37 -0
  885. package/dist/components/model-picker/model-picker.js.map +1 -0
  886. package/dist/components/nav-main/index.js +33 -0
  887. package/dist/components/nav-main/index.js.map +1 -0
  888. package/dist/components/nav-main/nav-main.js +33 -0
  889. package/dist/components/nav-main/nav-main.js.map +1 -0
  890. package/dist/components/nav-notifications/index.js +20 -0
  891. package/dist/components/nav-notifications/index.js.map +1 -0
  892. package/dist/components/nav-notifications/nav-notifications.js +20 -0
  893. package/dist/components/nav-notifications/nav-notifications.js.map +1 -0
  894. package/dist/components/nav-user/index.js +35 -0
  895. package/dist/components/nav-user/index.js.map +1 -0
  896. package/dist/components/nav-user/nav-user.js +35 -0
  897. package/dist/components/nav-user/nav-user.js.map +1 -0
  898. package/dist/components/navigation-menu/index.js +25 -0
  899. package/dist/components/navigation-menu/index.js.map +1 -0
  900. package/dist/components/navigation-menu/navigation-menu.js +25 -0
  901. package/dist/components/navigation-menu/navigation-menu.js.map +1 -0
  902. package/dist/components/number-input/index.js +22 -0
  903. package/dist/components/number-input/index.js.map +1 -0
  904. package/dist/components/number-input/number-input.js +22 -0
  905. package/dist/components/number-input/number-input.js.map +1 -0
  906. package/dist/components/page-shell/index.js +11 -0
  907. package/dist/components/page-shell/index.js.map +1 -0
  908. package/dist/components/page-shell/page-shell.js +10 -0
  909. package/dist/components/page-shell/page-shell.js.map +1 -0
  910. package/dist/components/pagination/index.js +28 -0
  911. package/dist/components/pagination/index.js.map +1 -0
  912. package/dist/components/pagination/pagination.js +28 -0
  913. package/dist/components/pagination/pagination.js.map +1 -0
  914. package/dist/components/parallax-plane/index.css +17 -0
  915. package/dist/components/parallax-plane/index.css.map +1 -0
  916. package/dist/components/parallax-plane/index.js +18 -0
  917. package/dist/components/parallax-plane/index.js.map +1 -0
  918. package/dist/components/parallax-plane/parallax-plane.css +17 -0
  919. package/dist/components/parallax-plane/parallax-plane.css.map +1 -0
  920. package/dist/components/parallax-plane/parallax-plane.js +18 -0
  921. package/dist/components/parallax-plane/parallax-plane.js.map +1 -0
  922. package/dist/components/popover/index.js +17 -0
  923. package/dist/components/popover/index.js.map +1 -0
  924. package/dist/components/popover/popover.js +16 -0
  925. package/dist/components/popover/popover.js.map +1 -0
  926. package/dist/components/progress/index.js +13 -0
  927. package/dist/components/progress/index.js.map +1 -0
  928. package/dist/components/progress/progress.js +12 -0
  929. package/dist/components/progress/progress.js.map +1 -0
  930. package/dist/components/radio-group/index.js +13 -0
  931. package/dist/components/radio-group/index.js.map +1 -0
  932. package/dist/components/radio-group/radio-group.js +12 -0
  933. package/dist/components/radio-group/radio-group.js.map +1 -0
  934. package/dist/components/rating/index.js +11 -0
  935. package/dist/components/rating/index.js.map +1 -0
  936. package/dist/components/rating/rating.js +11 -0
  937. package/dist/components/rating/rating.js.map +1 -0
  938. package/dist/components/resizable/index.js +15 -0
  939. package/dist/components/resizable/index.js.map +1 -0
  940. package/dist/components/resizable/resizable.js +14 -0
  941. package/dist/components/resizable/resizable.js.map +1 -0
  942. package/dist/components/reveal/index.js +15 -0
  943. package/dist/components/reveal/index.js.map +1 -0
  944. package/dist/components/reveal/reveal.js +14 -0
  945. package/dist/components/reveal/reveal.js.map +1 -0
  946. package/dist/components/reveal-on-enter/index.css +21 -0
  947. package/dist/components/reveal-on-enter/index.css.map +1 -0
  948. package/dist/components/reveal-on-enter/index.js +12 -0
  949. package/dist/components/reveal-on-enter/index.js.map +1 -0
  950. package/dist/components/reveal-on-enter/reveal-on-enter.css +21 -0
  951. package/dist/components/reveal-on-enter/reveal-on-enter.css.map +1 -0
  952. package/dist/components/reveal-on-enter/reveal-on-enter.js +12 -0
  953. package/dist/components/reveal-on-enter/reveal-on-enter.js.map +1 -0
  954. package/dist/components/revision-timeline/index.js +18 -0
  955. package/dist/components/revision-timeline/index.js.map +1 -0
  956. package/dist/components/revision-timeline/revision-timeline.js +18 -0
  957. package/dist/components/revision-timeline/revision-timeline.js.map +1 -0
  958. package/dist/components/schema-form/from-json-schema.js +13 -0
  959. package/dist/components/schema-form/from-json-schema.js.map +1 -0
  960. package/dist/components/schema-form/index.js +140 -0
  961. package/dist/components/schema-form/index.js.map +1 -0
  962. package/dist/components/schema-form/schema-form-spec.js +63 -0
  963. package/dist/components/schema-form/schema-form-spec.js.map +1 -0
  964. package/dist/components/schema-form/schema-form-store.js +21 -0
  965. package/dist/components/schema-form/schema-form-store.js.map +1 -0
  966. package/dist/components/schema-form/schema-form.js +77 -0
  967. package/dist/components/schema-form/schema-form.js.map +1 -0
  968. package/dist/components/scroll-area/index.js +13 -0
  969. package/dist/components/scroll-area/index.js.map +1 -0
  970. package/dist/components/scroll-area/scroll-area.js +12 -0
  971. package/dist/components/scroll-area/scroll-area.js.map +1 -0
  972. package/dist/components/section-header/index.js +11 -0
  973. package/dist/components/section-header/index.js.map +1 -0
  974. package/dist/components/section-header/section-header.js +10 -0
  975. package/dist/components/section-header/section-header.js.map +1 -0
  976. package/dist/components/segmented-field/index.js +17 -0
  977. package/dist/components/segmented-field/index.js.map +1 -0
  978. package/dist/components/segmented-field/segmented-field.js +17 -0
  979. package/dist/components/segmented-field/segmented-field.js.map +1 -0
  980. package/dist/components/select/index.js +26 -0
  981. package/dist/components/select/index.js.map +1 -0
  982. package/dist/components/select/select.js +26 -0
  983. package/dist/components/select/select.js.map +1 -0
  984. package/dist/components/separator/index.js +11 -0
  985. package/dist/components/separator/index.js.map +1 -0
  986. package/dist/components/separator/separator.js +10 -0
  987. package/dist/components/separator/separator.js.map +1 -0
  988. package/dist/components/sheet/index.js +30 -0
  989. package/dist/components/sheet/index.js.map +1 -0
  990. package/dist/components/sheet/sheet.js +30 -0
  991. package/dist/components/sheet/sheet.js.map +1 -0
  992. package/dist/components/side-dock/index.js +20 -0
  993. package/dist/components/side-dock/index.js.map +1 -0
  994. package/dist/components/side-dock/side-dock.js +20 -0
  995. package/dist/components/side-dock/side-dock.js.map +1 -0
  996. package/dist/components/sidebar/index.js +77 -0
  997. package/dist/components/sidebar/index.js.map +1 -0
  998. package/dist/components/sidebar/sidebar.js +77 -0
  999. package/dist/components/sidebar/sidebar.js.map +1 -0
  1000. package/dist/components/skeleton/index.js +11 -0
  1001. package/dist/components/skeleton/index.js.map +1 -0
  1002. package/dist/components/skeleton/skeleton.js +10 -0
  1003. package/dist/components/skeleton/skeleton.js.map +1 -0
  1004. package/dist/components/skip-link/index.js +11 -0
  1005. package/dist/components/skip-link/index.js.map +1 -0
  1006. package/dist/components/skip-link/skip-link.js +10 -0
  1007. package/dist/components/skip-link/skip-link.js.map +1 -0
  1008. package/dist/components/slider/index.js +11 -0
  1009. package/dist/components/slider/index.js.map +1 -0
  1010. package/dist/components/slider/slider.js +10 -0
  1011. package/dist/components/slider/slider.js.map +1 -0
  1012. package/dist/components/slider-number/index.js +26 -0
  1013. package/dist/components/slider-number/index.js.map +1 -0
  1014. package/dist/components/slider-number/slider-number.js +26 -0
  1015. package/dist/components/slider-number/slider-number.js.map +1 -0
  1016. package/dist/components/sonner/index.js +13 -0
  1017. package/dist/components/sonner/index.js.map +1 -0
  1018. package/dist/components/sonner/sonner.js +13 -0
  1019. package/dist/components/sonner/sonner.js.map +1 -0
  1020. package/dist/components/spec-playground/index.js +23 -0
  1021. package/dist/components/spec-playground/index.js.map +1 -0
  1022. package/dist/components/spec-playground/locate-json-path.js +17 -0
  1023. package/dist/components/spec-playground/locate-json-path.js.map +1 -0
  1024. package/dist/components/spec-playground/spec-playground.js +23 -0
  1025. package/dist/components/spec-playground/spec-playground.js.map +1 -0
  1026. package/dist/components/spinner/index.js +14 -0
  1027. package/dist/components/spinner/index.js.map +1 -0
  1028. package/dist/components/spinner/spinner.js +14 -0
  1029. package/dist/components/spinner/spinner.js.map +1 -0
  1030. package/dist/components/split-panel/index.js +13 -0
  1031. package/dist/components/split-panel/index.js.map +1 -0
  1032. package/dist/components/split-panel/split-panel.js +12 -0
  1033. package/dist/components/split-panel/split-panel.js.map +1 -0
  1034. package/dist/components/state-panel/index.js +17 -0
  1035. package/dist/components/state-panel/index.js.map +1 -0
  1036. package/dist/components/state-panel/state-panel.js +17 -0
  1037. package/dist/components/state-panel/state-panel.js.map +1 -0
  1038. package/dist/components/status-badge/index.js +30 -0
  1039. package/dist/components/status-badge/index.js.map +1 -0
  1040. package/dist/components/status-badge/status-badge.js +29 -0
  1041. package/dist/components/status-badge/status-badge.js.map +1 -0
  1042. package/dist/components/surface-tour/index.css +21 -0
  1043. package/dist/components/surface-tour/index.css.map +1 -0
  1044. package/dist/components/surface-tour/index.js +36 -0
  1045. package/dist/components/surface-tour/index.js.map +1 -0
  1046. package/dist/components/surface-tour/surface-tour.css +21 -0
  1047. package/dist/components/surface-tour/surface-tour.css.map +1 -0
  1048. package/dist/components/surface-tour/surface-tour.js +36 -0
  1049. package/dist/components/surface-tour/surface-tour.js.map +1 -0
  1050. package/dist/components/switch/index.js +11 -0
  1051. package/dist/components/switch/index.js.map +1 -0
  1052. package/dist/components/switch/switch.js +10 -0
  1053. package/dist/components/switch/switch.js.map +1 -0
  1054. package/dist/components/table/index.js +28 -0
  1055. package/dist/components/table/index.js.map +1 -0
  1056. package/dist/components/table/table.js +28 -0
  1057. package/dist/components/table/table.js.map +1 -0
  1058. package/dist/components/tabs/index.js +22 -0
  1059. package/dist/components/tabs/index.js.map +1 -0
  1060. package/dist/components/tabs/tabs.js +22 -0
  1061. package/dist/components/tabs/tabs.js.map +1 -0
  1062. package/dist/components/tag-input/index.js +21 -0
  1063. package/dist/components/tag-input/index.js.map +1 -0
  1064. package/dist/components/tag-input/tag-input.js +21 -0
  1065. package/dist/components/tag-input/tag-input.js.map +1 -0
  1066. package/dist/components/team-switcher/index.js +33 -0
  1067. package/dist/components/team-switcher/index.js.map +1 -0
  1068. package/dist/components/team-switcher/team-switcher.js +33 -0
  1069. package/dist/components/team-switcher/team-switcher.js.map +1 -0
  1070. package/dist/components/textarea/index.js +11 -0
  1071. package/dist/components/textarea/index.js.map +1 -0
  1072. package/dist/components/textarea/textarea.js +10 -0
  1073. package/dist/components/textarea/textarea.js.map +1 -0
  1074. package/dist/components/theme-family-switch/index.js +19 -0
  1075. package/dist/components/theme-family-switch/index.js.map +1 -0
  1076. package/dist/components/theme-family-switch/theme-family-switch.js +19 -0
  1077. package/dist/components/theme-family-switch/theme-family-switch.js.map +1 -0
  1078. package/dist/components/theme-switcher/index.js +24 -0
  1079. package/dist/components/theme-switcher/index.js.map +1 -0
  1080. package/dist/components/theme-switcher/theme-switcher.js +21 -0
  1081. package/dist/components/theme-switcher/theme-switcher.js.map +1 -0
  1082. package/dist/components/theme-switcher/use-theme-transition.js +10 -0
  1083. package/dist/components/theme-switcher/use-theme-transition.js.map +1 -0
  1084. package/dist/components/timeline/index.js +18 -0
  1085. package/dist/components/timeline/index.js.map +1 -0
  1086. package/dist/components/timeline/timeline.js +19 -0
  1087. package/dist/components/timeline/timeline.js.map +1 -0
  1088. package/dist/components/toggle/index.js +13 -0
  1089. package/dist/components/toggle/index.js.map +1 -0
  1090. package/dist/components/toggle/toggle.js +12 -0
  1091. package/dist/components/toggle/toggle.js.map +1 -0
  1092. package/dist/components/toggle-group/index.js +15 -0
  1093. package/dist/components/toggle-group/index.js.map +1 -0
  1094. package/dist/components/toggle-group/toggle-group.js +15 -0
  1095. package/dist/components/toggle-group/toggle-group.js.map +1 -0
  1096. package/dist/components/token-spotlight/index.css +25 -0
  1097. package/dist/components/token-spotlight/index.css.map +1 -0
  1098. package/dist/components/token-spotlight/index.js +23 -0
  1099. package/dist/components/token-spotlight/index.js.map +1 -0
  1100. package/dist/components/token-spotlight/token-spotlight.css +25 -0
  1101. package/dist/components/token-spotlight/token-spotlight.css.map +1 -0
  1102. package/dist/components/token-spotlight/token-spotlight.js +23 -0
  1103. package/dist/components/token-spotlight/token-spotlight.js.map +1 -0
  1104. package/dist/components/token-spotlight/token-value-format.js +11 -0
  1105. package/dist/components/token-spotlight/token-value-format.js.map +1 -0
  1106. package/dist/components/toolbar/index.js +27 -0
  1107. package/dist/components/toolbar/index.js.map +1 -0
  1108. package/dist/components/toolbar/toolbar.js +27 -0
  1109. package/dist/components/toolbar/toolbar.js.map +1 -0
  1110. package/dist/components/tooltip/index.js +17 -0
  1111. package/dist/components/tooltip/index.js.map +1 -0
  1112. package/dist/components/tooltip/tooltip.js +16 -0
  1113. package/dist/components/tooltip/tooltip.js.map +1 -0
  1114. package/dist/components/top-nav/index.js +11 -0
  1115. package/dist/components/top-nav/index.js.map +1 -0
  1116. package/dist/components/top-nav/top-nav.js +10 -0
  1117. package/dist/components/top-nav/top-nav.js.map +1 -0
  1118. package/dist/components/transfer/index.js +26 -0
  1119. package/dist/components/transfer/index.js.map +1 -0
  1120. package/dist/components/transfer/transfer.js +26 -0
  1121. package/dist/components/transfer/transfer.js.map +1 -0
  1122. package/dist/components/tree/index.js +21 -0
  1123. package/dist/components/tree/index.js.map +1 -0
  1124. package/dist/components/tree/tree.js +18 -0
  1125. package/dist/components/tree/tree.js.map +1 -0
  1126. package/dist/components/tree/use-tree-keyboard.js +14 -0
  1127. package/dist/components/tree/use-tree-keyboard.js.map +1 -0
  1128. package/dist/components/tree-select/index.js +26 -0
  1129. package/dist/components/tree-select/index.js.map +1 -0
  1130. package/dist/components/tree-select/tree-select.js +26 -0
  1131. package/dist/components/tree-select/tree-select.js.map +1 -0
  1132. package/dist/components/typography/index.js +41 -0
  1133. package/dist/components/typography/index.js.map +1 -0
  1134. package/dist/components/typography/prose.js +29 -0
  1135. package/dist/components/typography/prose.js.map +1 -0
  1136. package/dist/components/typography/typography.js +18 -0
  1137. package/dist/components/typography/typography.js.map +1 -0
  1138. package/dist/components/view-toolbar/index.js +27 -0
  1139. package/dist/components/view-toolbar/index.js.map +1 -0
  1140. package/dist/components/view-toolbar/view-toolbar.js +27 -0
  1141. package/dist/components/view-toolbar/view-toolbar.js.map +1 -0
  1142. package/dist/components/virtual-select/index.js +26 -0
  1143. package/dist/components/virtual-select/index.js.map +1 -0
  1144. package/dist/components/virtual-select/use-virtual-listbox.js +10 -0
  1145. package/dist/components/virtual-select/use-virtual-listbox.js.map +1 -0
  1146. package/dist/components/virtual-select/virtual-select.js +23 -0
  1147. package/dist/components/virtual-select/virtual-select.js.map +1 -0
  1148. package/dist/components/wizard/index.js +19 -0
  1149. package/dist/components/wizard/index.js.map +1 -0
  1150. package/dist/components/wizard/wizard.js +19 -0
  1151. package/dist/components/wizard/wizard.js.map +1 -0
  1152. package/dist/components/workspace-picker/index.js +38 -0
  1153. package/dist/components/workspace-picker/index.js.map +1 -0
  1154. package/dist/components/workspace-picker/workspace-picker-state.js +9 -0
  1155. package/dist/components/workspace-picker/workspace-picker-state.js.map +1 -0
  1156. package/dist/components/workspace-picker/workspace-picker.js +35 -0
  1157. package/dist/components/workspace-picker/workspace-picker.js.map +1 -0
  1158. package/dist/form.js +13 -110
  1159. package/dist/form.js.map +1 -1
  1160. package/dist/illustrations/empty-list-illustration.js +11 -0
  1161. package/dist/illustrations/empty-list-illustration.js.map +1 -0
  1162. package/dist/illustrations/error-illustration.js +11 -0
  1163. package/dist/illustrations/error-illustration.js.map +1 -0
  1164. package/dist/illustrations/first-run-illustration.js +11 -0
  1165. package/dist/illustrations/first-run-illustration.js.map +1 -0
  1166. package/dist/illustrations/illustration-base.js +16 -0
  1167. package/dist/illustrations/illustration-base.js.map +1 -0
  1168. package/dist/illustrations/index.js +41 -0
  1169. package/dist/illustrations/index.js.map +1 -0
  1170. package/dist/illustrations/no-access-illustration.js +11 -0
  1171. package/dist/illustrations/no-access-illustration.js.map +1 -0
  1172. package/dist/illustrations/no-results-illustration.js +11 -0
  1173. package/dist/illustrations/no-results-illustration.js.map +1 -0
  1174. package/dist/illustrations/offline-illustration.js +11 -0
  1175. package/dist/illustrations/offline-illustration.js.map +1 -0
  1176. package/dist/illustrations/success-illustration.js +11 -0
  1177. package/dist/illustrations/success-illustration.js.map +1 -0
  1178. package/dist/index.css +122 -0
  1179. package/dist/index.css.map +1 -0
  1180. package/dist/index.d.ts +1390 -146
  1181. package/dist/index.js +997 -22676
  1182. package/dist/index.js.map +1 -1
  1183. package/dist/lib/agent-event-model.js +9 -0
  1184. package/dist/lib/agent-event-model.js.map +1 -0
  1185. package/dist/lib/approval-option.js +9 -0
  1186. package/dist/lib/approval-option.js.map +1 -0
  1187. package/dist/lib/check-result.js +3 -0
  1188. package/dist/lib/check-result.js.map +1 -0
  1189. package/dist/lib/cn.js +28 -3
  1190. package/dist/lib/cn.js.map +1 -1
  1191. package/dist/lib/color-scale.js +11 -0
  1192. package/dist/lib/color-scale.js.map +1 -0
  1193. package/dist/lib/compact-number.js +21 -0
  1194. package/dist/lib/compact-number.js.map +1 -0
  1195. package/dist/lib/csv.js +11 -0
  1196. package/dist/lib/csv.js.map +1 -0
  1197. package/dist/lib/diff-line.js +11 -0
  1198. package/dist/lib/diff-line.js.map +1 -0
  1199. package/dist/lib/diff-rows.js +12 -0
  1200. package/dist/lib/diff-rows.js.map +1 -0
  1201. package/dist/lib/document-address.js +13 -0
  1202. package/dist/lib/document-address.js.map +1 -0
  1203. package/dist/lib/download.js +11 -0
  1204. package/dist/lib/download.js.map +1 -0
  1205. package/dist/lib/file-icon.js +12 -0
  1206. package/dist/lib/file-icon.js.map +1 -0
  1207. package/dist/lib/file-kind.js +13 -0
  1208. package/dist/lib/file-kind.js.map +1 -0
  1209. package/dist/lib/file-source.js +10 -0
  1210. package/dist/lib/file-source.js.map +1 -0
  1211. package/dist/lib/format-duration.js +9 -0
  1212. package/dist/lib/format-duration.js.map +1 -0
  1213. package/dist/lib/has-renderable-content.js +9 -0
  1214. package/dist/lib/has-renderable-content.js.map +1 -0
  1215. package/dist/lib/merge-refs.js +10 -0
  1216. package/dist/lib/merge-refs.js.map +1 -0
  1217. package/dist/lib/operating-mode.js +9 -0
  1218. package/dist/lib/operating-mode.js.map +1 -0
  1219. package/dist/lib/optional-peer.js +11 -0
  1220. package/dist/lib/optional-peer.js.map +1 -0
  1221. package/dist/lib/session-launch.js +3 -0
  1222. package/dist/lib/session-launch.js.map +1 -0
  1223. package/dist/lib/slash-command.js +11 -0
  1224. package/dist/lib/slash-command.js.map +1 -0
  1225. package/dist/lib/streamdown-translations.js +15 -0
  1226. package/dist/lib/streamdown-translations.js.map +1 -0
  1227. package/dist/lib/trigger-query.js +11 -0
  1228. package/dist/lib/trigger-query.js.map +1 -0
  1229. package/dist/lib/use-controllable-state.js +10 -0
  1230. package/dist/lib/use-controllable-state.js.map +1 -0
  1231. package/dist/lib/use-copy-to-clipboard.js +12 -0
  1232. package/dist/lib/use-copy-to-clipboard.js.map +1 -0
  1233. package/dist/lib/use-mobile.js +10 -0
  1234. package/dist/lib/use-mobile.js.map +1 -0
  1235. package/dist/lib/use-scroll-progress.js +18 -0
  1236. package/dist/lib/use-scroll-progress.js.map +1 -0
  1237. package/package.json +12 -5
  1238. package/src/__contract__/ambient-field.contract.test.tsx +49 -0
  1239. package/src/__contract__/attribution-panel.contract.test.tsx +49 -0
  1240. package/src/__contract__/badge.contract.test.tsx +49 -0
  1241. package/src/__contract__/bounded-number.contract.test.tsx +49 -0
  1242. package/src/__contract__/button.contract.test.tsx +49 -0
  1243. package/src/__contract__/color-picker.contract.test.tsx +49 -0
  1244. package/src/__contract__/combobox.contract.test.tsx +49 -0
  1245. package/src/__contract__/command-chip.contract.test.tsx +49 -0
  1246. package/src/__contract__/command-trigger.contract.test.tsx +49 -0
  1247. package/src/__contract__/copyable-value.contract.test.tsx +49 -0
  1248. package/src/__contract__/date-picker.contract.test.tsx +49 -0
  1249. package/src/__contract__/date-range-picker.contract.test.tsx +49 -0
  1250. package/src/__contract__/empty-state.contract.test.tsx +49 -0
  1251. package/src/__contract__/error-state.contract.test.tsx +49 -0
  1252. package/src/__contract__/icon-button.contract.test.tsx +49 -0
  1253. package/src/__contract__/input.contract.test.tsx +49 -0
  1254. package/src/__contract__/install-tabs.contract.test.tsx +49 -0
  1255. package/src/__contract__/integration-matrix.contract.test.tsx +49 -0
  1256. package/src/__contract__/key-value-editor.contract.test.tsx +49 -0
  1257. package/src/__contract__/list-editor.contract.test.tsx +49 -0
  1258. package/src/__contract__/loading-state.contract.test.tsx +49 -0
  1259. package/src/__contract__/meter.contract.test.tsx +49 -0
  1260. package/src/__contract__/metric-card.contract.test.tsx +49 -0
  1261. package/src/__contract__/model-picker.contract.test.tsx +49 -0
  1262. package/src/__contract__/nav-notifications.contract.test.tsx +49 -0
  1263. package/src/__contract__/number-input.contract.test.tsx +49 -0
  1264. package/src/__contract__/parallax-plane.contract.test.tsx +49 -0
  1265. package/src/__contract__/rating.contract.test.tsx +49 -0
  1266. package/src/__contract__/reveal-on-enter.contract.test.tsx +49 -0
  1267. package/src/__contract__/schema-form.contract.test.tsx +49 -0
  1268. package/src/__contract__/section-header.contract.test.tsx +49 -0
  1269. package/src/__contract__/segmented-field.contract.test.tsx +49 -0
  1270. package/src/__contract__/slider-number.contract.test.tsx +49 -0
  1271. package/src/__contract__/spec-playground.contract.test.tsx +49 -0
  1272. package/src/__contract__/status-badge.contract.test.tsx +49 -0
  1273. package/src/__contract__/surface-tour.contract.test.tsx +49 -0
  1274. package/src/__contract__/tag-input.contract.test.tsx +49 -0
  1275. package/src/__contract__/text.contract.test.tsx +49 -0
  1276. package/src/__contract__/textarea.contract.test.tsx +49 -0
  1277. package/src/__contract__/theme-family-switch.contract.test.tsx +49 -0
  1278. package/src/__contract__/timeline.contract.test.tsx +49 -0
  1279. package/src/__contract__/toggle.contract.test.tsx +49 -0
  1280. package/src/__contract__/token-spotlight.contract.test.tsx +49 -0
  1281. package/src/__contract__/transfer.contract.test.tsx +49 -0
  1282. package/src/__contract__/tree-select.contract.test.tsx +49 -0
  1283. package/src/__contract__/tree.contract.test.tsx +49 -0
  1284. package/src/__contract__/virtual-select.contract.test.tsx +49 -0
  1285. package/src/__contract__/workspace-picker.contract.test.tsx +49 -0
  1286. package/src/blocks-comparison-table.stories.tsx +1 -1
  1287. package/src/components/accordion/accordion.tsx +41 -16
  1288. package/src/components/advanced-group/advanced-group.stories.tsx +2 -0
  1289. package/src/components/alert/alert.tsx +24 -8
  1290. package/src/components/alert-dialog/alert-dialog.test.tsx +32 -0
  1291. package/src/components/alert-dialog/alert-dialog.tsx +28 -6
  1292. package/src/components/ambient-field/ambient-field.css +98 -0
  1293. package/src/components/ambient-field/ambient-field.stories.tsx +75 -0
  1294. package/src/components/ambient-field/ambient-field.test.tsx +28 -0
  1295. package/src/components/ambient-field/ambient-field.tsx +69 -0
  1296. package/src/components/ambient-field/index.ts +7 -0
  1297. package/src/components/app-shell/app-shell.stories.tsx +344 -1
  1298. package/src/components/app-shell/app-shell.test.tsx +266 -0
  1299. package/src/components/app-shell/app-shell.tsx +147 -14
  1300. package/src/components/app-shell/index.ts +1 -1
  1301. package/src/components/attribution-panel/attribution-panel.tsx +2 -0
  1302. package/src/components/attribution-panel/attributions.generated.ts +79 -6
  1303. package/src/components/avatar/avatar.tsx +4 -1
  1304. package/src/components/badge/badge.stories.tsx +62 -0
  1305. package/src/components/badge/badge.test.tsx +29 -0
  1306. package/src/components/badge/badge.tsx +101 -11
  1307. package/src/components/bento-grid/bento-grid.test.tsx +23 -2
  1308. package/src/components/bento-grid/bento-grid.tsx +10 -0
  1309. package/src/components/bounded-number/bounded-number.test.tsx +1 -1
  1310. package/src/components/bounded-number/bounded-number.tsx +78 -75
  1311. package/src/components/breadcrumb/breadcrumb.stories.tsx +1 -1
  1312. package/src/components/breadcrumb/breadcrumb.tsx +5 -2
  1313. package/src/components/button/button.stories.tsx +5 -1
  1314. package/src/components/button/button.tsx +37 -20
  1315. package/src/components/button-group/button-group.tsx +1 -1
  1316. package/src/components/calendar/calendar.tsx +9 -3
  1317. package/src/components/card/card.stories.tsx +73 -1
  1318. package/src/components/card/card.test.tsx +53 -4
  1319. package/src/components/card/card.tsx +122 -17
  1320. package/src/components/card/index.ts +2 -0
  1321. package/src/components/carousel/carousel.test.tsx +169 -0
  1322. package/src/components/carousel/carousel.tsx +93 -32
  1323. package/src/components/change-review/change-review.tsx +39 -30
  1324. package/src/components/checkbox/checkbox.tsx +1 -0
  1325. package/src/components/collapsible-panel/index.ts +1 -0
  1326. package/src/components/collapsible-panel/use-collapsible-panel.ts +21 -5
  1327. package/src/components/color-picker/color-picker.tsx +20 -14
  1328. package/src/components/combobox/combobox.stories.tsx +10 -0
  1329. package/src/components/combobox/combobox.test.tsx +54 -0
  1330. package/src/components/combobox/combobox.tsx +25 -11
  1331. package/src/components/command/command.stories.tsx +64 -1
  1332. package/src/components/command/command.test.tsx +88 -0
  1333. package/src/components/command/command.tsx +81 -8
  1334. package/src/components/command-chip/command-chip.stories.tsx +78 -0
  1335. package/src/components/command-chip/command-chip.test.tsx +57 -0
  1336. package/src/components/command-chip/command-chip.tsx +168 -0
  1337. package/src/components/command-chip/index.ts +7 -0
  1338. package/src/components/command-trigger/command-trigger.tsx +1 -1
  1339. package/src/components/confirm-dialog/confirm-dialog.stories.tsx +2 -0
  1340. package/src/components/context-menu/context-menu.stories.tsx +26 -0
  1341. package/src/components/context-menu/context-menu.tsx +17 -8
  1342. package/src/components/context-rail/context-rail.tsx +26 -8
  1343. package/src/components/copyable-value/copyable-value.stories.tsx +10 -0
  1344. package/src/components/copyable-value/copyable-value.test.tsx +28 -1
  1345. package/src/components/copyable-value/copyable-value.tsx +12 -1
  1346. package/src/components/date-picker/date-picker.stories.tsx +9 -0
  1347. package/src/components/date-picker/date-picker.test.tsx +52 -0
  1348. package/src/components/date-picker/date-picker.tsx +15 -15
  1349. package/src/components/date-range-picker/date-range-picker.stories.tsx +9 -0
  1350. package/src/components/date-range-picker/date-range-picker.test.tsx +76 -1
  1351. package/src/components/date-range-picker/date-range-picker.tsx +39 -28
  1352. package/src/components/descriptions/descriptions.stories.tsx +6 -0
  1353. package/src/components/descriptions/descriptions.test.tsx +18 -0
  1354. package/src/components/descriptions/descriptions.tsx +34 -6
  1355. package/src/components/descriptions/index.ts +1 -0
  1356. package/src/components/dialog/dialog.stories.tsx +5 -0
  1357. package/src/components/dialog/dialog.test.tsx +8 -3
  1358. package/src/components/dialog/dialog.tsx +13 -5
  1359. package/src/components/drawer/drawer.tsx +23 -6
  1360. package/src/components/dropdown-menu/dropdown-menu.stories.tsx +37 -0
  1361. package/src/components/dropdown-menu/dropdown-menu.tsx +17 -9
  1362. package/src/components/expand-dialog/expand-dialog.test.tsx +47 -0
  1363. package/src/components/expand-dialog/expand-dialog.tsx +20 -5
  1364. package/src/components/field/field.tsx +2 -0
  1365. package/src/components/field-row/field-row.tsx +2 -0
  1366. package/src/components/file-upload/file-upload.test.tsx +83 -10
  1367. package/src/components/file-upload/file-upload.tsx +150 -28
  1368. package/src/components/form/form.tsx +4 -2
  1369. package/src/components/hover-card/hover-card.tsx +2 -1
  1370. package/src/components/icon-button/icon-button.tsx +1 -1
  1371. package/src/components/input/input.stories.tsx +17 -0
  1372. package/src/components/input/input.tsx +8 -4
  1373. package/src/components/input-group/input-group.stories.tsx +43 -6
  1374. package/src/components/input-group/input-group.tsx +10 -7
  1375. package/src/components/input-otp/input-otp.tsx +7 -3
  1376. package/src/components/install-tabs/index.ts +8 -0
  1377. package/src/components/install-tabs/install-tabs.stories.tsx +147 -0
  1378. package/src/components/install-tabs/install-tabs.test.tsx +120 -0
  1379. package/src/components/install-tabs/install-tabs.tsx +238 -0
  1380. package/src/components/integration-matrix/index.ts +10 -0
  1381. package/src/components/integration-matrix/integration-matrix.stories.tsx +171 -0
  1382. package/src/components/integration-matrix/integration-matrix.test.tsx +89 -0
  1383. package/src/components/integration-matrix/integration-matrix.tsx +237 -0
  1384. package/src/components/keyboard-shortcuts/keyboard-shortcuts.tsx +2 -2
  1385. package/src/components/label/label.tsx +1 -1
  1386. package/src/components/list-editor/list-editor.test.tsx +24 -0
  1387. package/src/components/list-editor/list-editor.tsx +126 -52
  1388. package/src/components/locale-provider/locale-keys.test.ts +134 -0
  1389. package/src/components/locale-provider/messages.ts +573 -0
  1390. package/src/components/mention-input/mention-input.stories.tsx +3 -3
  1391. package/src/components/mention-input/mention-input.test.tsx +51 -1
  1392. package/src/components/mention-input/mention-input.tsx +59 -9
  1393. package/src/components/menubar/menubar.stories.tsx +25 -0
  1394. package/src/components/menubar/menubar.tsx +18 -8
  1395. package/src/components/meter/index.ts +1 -0
  1396. package/src/components/meter/meter.stories.tsx +102 -0
  1397. package/src/components/meter/meter.test.tsx +61 -0
  1398. package/src/components/meter/meter.tsx +173 -0
  1399. package/src/components/metric-card/index.ts +6 -1
  1400. package/src/components/metric-card/metric-card.stories.tsx +63 -0
  1401. package/src/components/metric-card/metric-card.test.tsx +83 -0
  1402. package/src/components/metric-card/metric-card.tsx +97 -14
  1403. package/src/components/nav-main/nav-main.tsx +7 -3
  1404. package/src/components/nav-notifications/nav-notifications.test.tsx +11 -0
  1405. package/src/components/nav-notifications/nav-notifications.tsx +11 -5
  1406. package/src/components/nav-user/nav-user.test.tsx +23 -1
  1407. package/src/components/nav-user/nav-user.tsx +68 -53
  1408. package/src/components/navigation-menu/navigation-menu.stories.tsx +42 -0
  1409. package/src/components/navigation-menu/navigation-menu.tsx +16 -4
  1410. package/src/components/number-input/number-input.stories.tsx +7 -3
  1411. package/src/components/number-input/number-input.test.tsx +47 -0
  1412. package/src/components/number-input/number-input.tsx +65 -24
  1413. package/src/components/page-shell/page-shell.stories.tsx +1 -1
  1414. package/src/components/page-shell/page-shell.tsx +3 -2
  1415. package/src/components/pagination/pagination.test.tsx +20 -1
  1416. package/src/components/pagination/pagination.tsx +20 -14
  1417. package/src/components/parallax-plane/index.ts +8 -0
  1418. package/src/components/parallax-plane/parallax-plane.css +26 -0
  1419. package/src/components/parallax-plane/parallax-plane.stories.tsx +88 -0
  1420. package/src/components/parallax-plane/parallax-plane.test.tsx +57 -0
  1421. package/src/components/parallax-plane/parallax-plane.tsx +80 -0
  1422. package/src/components/popover/popover.tsx +2 -1
  1423. package/src/components/progress/progress.stories.tsx +85 -0
  1424. package/src/components/progress/progress.test.tsx +47 -0
  1425. package/src/components/progress/progress.tsx +59 -3
  1426. package/src/components/rating/rating.tsx +2 -0
  1427. package/src/components/resizable/resizable.test.tsx +76 -0
  1428. package/src/components/resizable/resizable.tsx +31 -5
  1429. package/src/components/reveal-on-enter/index.ts +5 -0
  1430. package/src/components/reveal-on-enter/reveal-on-enter.css +32 -0
  1431. package/src/components/reveal-on-enter/reveal-on-enter.stories.tsx +100 -0
  1432. package/src/components/reveal-on-enter/reveal-on-enter.test.tsx +87 -0
  1433. package/src/components/reveal-on-enter/reveal-on-enter.tsx +75 -0
  1434. package/src/components/revision-timeline/revision-timeline.tsx +8 -5
  1435. package/src/components/schema-form/index.ts +2 -0
  1436. package/src/components/schema-form/schema-form-spec.ts +36 -0
  1437. package/src/components/schema-form/schema-form-store.ts +506 -0
  1438. package/src/components/schema-form/schema-form.stories.tsx +33 -0
  1439. package/src/components/schema-form/schema-form.test.tsx +165 -1
  1440. package/src/components/schema-form/schema-form.tsx +271 -328
  1441. package/src/components/scroll-area/index.ts +1 -1
  1442. package/src/components/scroll-area/scroll-area.tsx +47 -18
  1443. package/src/components/section-header/section-header.tsx +2 -4
  1444. package/src/components/select/select.stories.tsx +17 -0
  1445. package/src/components/select/select.test.tsx +28 -1
  1446. package/src/components/select/select.tsx +9 -7
  1447. package/src/components/separator/separator.tsx +1 -0
  1448. package/src/components/sheet/sheet.test.tsx +39 -0
  1449. package/src/components/sheet/sheet.tsx +40 -9
  1450. package/src/components/side-dock/side-dock.stories.tsx +83 -0
  1451. package/src/components/side-dock/side-dock.test.tsx +26 -0
  1452. package/src/components/side-dock/side-dock.tsx +65 -18
  1453. package/src/components/sidebar/sidebar.stories.tsx +3 -3
  1454. package/src/components/sidebar/sidebar.test.tsx +66 -2
  1455. package/src/components/sidebar/sidebar.tsx +54 -13
  1456. package/src/components/skeleton/skeleton.tsx +1 -0
  1457. package/src/components/skip-link/skip-link.stories.tsx +1 -0
  1458. package/src/components/slider/slider.stories.tsx +13 -77
  1459. package/src/components/slider-number/slider-number.stories.tsx +4 -1
  1460. package/src/components/slider-number/slider-number.test.tsx +1 -1
  1461. package/src/components/sonner/sonner.tsx +2 -0
  1462. package/src/components/spec-playground/index.ts +10 -0
  1463. package/src/components/spec-playground/locate-json-path.ts +144 -0
  1464. package/src/components/spec-playground/spec-playground.stories.tsx +156 -0
  1465. package/src/components/spec-playground/spec-playground.test.tsx +106 -0
  1466. package/src/components/spec-playground/spec-playground.tsx +351 -0
  1467. package/src/components/spinner/spinner.test.tsx +18 -0
  1468. package/src/components/spinner/spinner.tsx +14 -4
  1469. package/src/components/state-panel/state-panel.stories.tsx +4 -2
  1470. package/src/components/state-panel/state-panel.test.tsx +3 -3
  1471. package/src/components/state-panel/state-panel.tsx +16 -9
  1472. package/src/components/status-badge/status-badge.stories.tsx +53 -0
  1473. package/src/components/status-badge/status-badge.test.tsx +37 -0
  1474. package/src/components/status-badge/status-badge.tsx +75 -13
  1475. package/src/components/surface-tour/index.ts +11 -0
  1476. package/src/components/surface-tour/surface-tour.stories.tsx +150 -0
  1477. package/src/components/surface-tour/surface-tour.test.tsx +117 -0
  1478. package/src/components/surface-tour/surface-tour.tsx +456 -0
  1479. package/src/components/switch/switch.tsx +2 -0
  1480. package/src/components/table/table.stories.tsx +3 -1
  1481. package/src/components/table/table.test.tsx +9 -2
  1482. package/src/components/table/table.tsx +22 -9
  1483. package/src/components/tabs/index.ts +10 -1
  1484. package/src/components/tabs/tabs.stories.tsx +95 -1
  1485. package/src/components/tabs/tabs.test.tsx +93 -0
  1486. package/src/components/tabs/tabs.tsx +215 -77
  1487. package/src/components/tag-input/tag-input.tsx +4 -2
  1488. package/src/components/team-switcher/team-switcher.tsx +3 -3
  1489. package/src/components/textarea/textarea.tsx +2 -2
  1490. package/src/components/theme-family-switch/index.ts +10 -0
  1491. package/src/components/theme-family-switch/theme-family-switch.stories.tsx +97 -0
  1492. package/src/components/theme-family-switch/theme-family-switch.test.tsx +85 -0
  1493. package/src/components/theme-family-switch/theme-family-switch.tsx +166 -0
  1494. package/src/components/theme-switcher/theme-switcher.stories.tsx +76 -0
  1495. package/src/components/theme-switcher/theme-switcher.test.tsx +182 -0
  1496. package/src/components/theme-switcher/theme-switcher.tsx +144 -13
  1497. package/src/components/timeline/timeline.tsx +0 -3
  1498. package/src/components/toggle/toggle.tsx +7 -2
  1499. package/src/components/toggle-group/toggle-group.tsx +2 -0
  1500. package/src/components/token-spotlight/index.ts +11 -0
  1501. package/src/components/token-spotlight/token-spotlight.css +32 -0
  1502. package/src/components/token-spotlight/token-spotlight.stories.tsx +161 -0
  1503. package/src/components/token-spotlight/token-spotlight.test.tsx +323 -0
  1504. package/src/components/token-spotlight/token-spotlight.tsx +379 -0
  1505. package/src/components/token-spotlight/token-value-format.ts +205 -0
  1506. package/src/components/tooltip/tooltip.tsx +2 -1
  1507. package/src/components/top-nav/top-nav.test.tsx +59 -0
  1508. package/src/components/top-nav/top-nav.tsx +37 -7
  1509. package/src/components/transfer/transfer.tsx +35 -30
  1510. package/src/components/tree/tree.stories.tsx +1 -1
  1511. package/src/components/tree/tree.test.tsx +45 -4
  1512. package/src/components/tree/tree.tsx +81 -26
  1513. package/src/components/tree/use-tree-keyboard.ts +37 -14
  1514. package/src/components/tree-select/tree-select.stories.tsx +9 -0
  1515. package/src/components/tree-select/tree-select.test.tsx +5 -0
  1516. package/src/components/tree-select/tree-select.tsx +11 -14
  1517. package/src/components/typography/prose.test.tsx +3 -2
  1518. package/src/components/typography/prose.tsx +3 -3
  1519. package/src/components/typography/typography.stories.tsx +7 -2
  1520. package/src/components/typography/typography.tsx +8 -0
  1521. package/src/components/view-toolbar/view-toolbar.stories.tsx +2 -1
  1522. package/src/components/view-toolbar/view-toolbar.tsx +2 -2
  1523. package/src/components/virtual-select/virtual-select.stories.tsx +9 -0
  1524. package/src/components/virtual-select/virtual-select.test.tsx +28 -2
  1525. package/src/components/virtual-select/virtual-select.tsx +56 -18
  1526. package/src/components/wizard/wizard.test.tsx +9 -0
  1527. package/src/components/wizard/wizard.tsx +12 -4
  1528. package/src/decoration.stories.tsx +213 -2
  1529. package/src/index.ts +51 -0
  1530. package/src/lib/cn.test.ts +20 -0
  1531. package/src/lib/cn.ts +36 -2
  1532. package/src/lib/color-scale.test.ts +386 -0
  1533. package/src/lib/color-scale.ts +628 -0
  1534. package/src/lib/compact-number.ts +118 -28
  1535. package/src/lib/csv.ts +48 -0
  1536. package/src/lib/diff-rows.ts +2 -0
  1537. package/src/lib/merge-refs.ts +2 -0
  1538. package/src/lib/use-controllable-state.ts +47 -0
  1539. package/src/lib/use-mobile.test.tsx +47 -0
  1540. package/src/lib/use-mobile.ts +26 -10
  1541. package/src/lib/use-scroll-progress.ts +103 -0
  1542. package/src/motion.stories.tsx +1 -0
  1543. package/src/templates-object-detail-hub.stories.tsx +8 -8
  1544. package/src/templates-screen-states.stories.tsx +1 -1
  1545. package/src/templates-settings.stories.tsx +8 -3
  1546. package/dist/chunk-JKPPTL63.js +0 -48
  1547. package/dist/chunk-JKPPTL63.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/schema-form/schema-form.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * SchemaForm — a spec-driven configuration-form renderer (issue #22).\n *\n * A product describes a form (connector settings, environment variables, an\n * auth method picker) as data; SchemaForm renders it; the app receives\n * structured `{ formName, values }` on submit. This is the GENERAL, app-UI\n * sibling of `@elabs-ai/components-ai`'s chat-scoped `MessageForm` — see\n * `schema-form-spec.ts` for why the two stay separate schemas rather than one\n * generalized union.\n *\n * Design bar (mirrors MessageForm/AutoChart/ChangeReview):\n * - Spec-driven, zod-validated. The spec author never chooses look.\n * - Never throws on bad input. A malformed spec → `SchemaFormFallback`.\n * - Compound + lifted state, controlled AND uncontrolled: `SchemaFormProvider`\n * owns the values; the parts read a context.\n * - Tokens only; keyboard-operable; inline errors; focus the first error on\n * submit; a submitted form renders inert with its values visible.\n * - Submit control is NEVER natively `disabled` while transiently blocked\n * (submitting) — `aria-disabled` + a click/submit handler guard, so a\n * keyboard user is never dropped from the focus order right after they\n * used it (interaction-guidelines.md). An explicit, caller-set `disabled`\n * (the whole form is read-only) stays native — that is a deliberate,\n * durable removal from the tab order, not a transient auto-flip.\n *\n * Composes `@elabs-ai/components-ui` inputs (`ListEditor`, `KeyValueEditor`,\n * `FileUpload`, `AdvancedGroup`, `Tabs`) — it does NOT re-invent field\n * primitives.\n *\n * Compound structure (named exports, the Card/CardHeader convention):\n * <SchemaFormProvider> — lifted state (values + errors + actions)\n * <SchemaFormRoot> — the <form> element (never nest inside another form)\n * <SchemaFormFields> — every field, or place <SchemaFormField> yourself\n * <SchemaFormTestAction> — OPT-IN: a form/group-level \"Test connection\"\n * affordance, independent of field validity,\n * never gating submit (not in the default\n * `SchemaForm` composition — place it yourself)\n * <SchemaFormSubmit> — submit button / submitting spinner / submitted note\n *\n * `fromJsonSchema()` (`from-json-schema.ts`) is a separate, narrow adapter\n * that maps a documented JSON Schema subset onto this module's `FieldSpec`\n * vocabulary — see that file's doc comment for exactly what it supports.\n */\n\nimport {\n createContext,\n forwardRef,\n memo,\n use,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type FormEvent,\n type HTMLAttributes,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { useLocale } from \"../locale-provider\";\nimport { Badge } from \"../badge\";\nimport { Button } from \"../button\";\nimport { Checkbox } from \"../checkbox\";\nimport { Input } from \"../input\";\nimport { Label } from \"../label\";\nimport { NumberInput } from \"../number-input\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"../select\";\nimport { Skeleton } from \"../skeleton\";\nimport { Spinner } from \"../spinner\";\nimport { StatusBadge } from \"../status-badge\";\nimport { Textarea } from \"../textarea\";\nimport { ListEditor } from \"../list-editor\";\nimport { KeyValueEditor, type KeyValueRow } from \"../key-value-editor\";\nimport {\n FileUpload,\n FileUploadDropzone,\n FileUploadList,\n FileUploadItem,\n useFileUpload,\n} from \"../file-upload\";\nimport { AdvancedGroup } from \"../advanced-group\";\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from \"../tabs\";\nimport { ChevronRight } from \"lucide-react\";\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from \"../collapsible\";\nimport { Descriptions, DescriptionsItem } from \"../descriptions\";\n\nimport {\n checkFileIssue,\n fieldLabel,\n normalizeFormSpec,\n optionLabel,\n optionValue,\n type FieldSpec,\n type FormSpec,\n type FormSubmitState,\n type FormValue,\n type FormValues,\n type GroupFieldSpec,\n type GroupItemSpec,\n type NormalizedFormSpec,\n} from \"./schema-form-spec\";\nimport {\n SchemaFormStore,\n useBranchHasError,\n useEffectiveValues,\n useFieldSnapshot,\n useSchemaFormMeta,\n useVisibleFieldNames,\n type SchemaFormStoreProps,\n} from \"./schema-form-store\";\n\n// ─── Context (carries only the STABLE store instance — see schema-form-store.ts) ──\n\nconst SchemaFormStoreContext = createContext<SchemaFormStore | null>(null);\n\nfunction useSchemaFormStore(): SchemaFormStore {\n const store = use(SchemaFormStoreContext);\n if (!store) {\n throw new Error(\"SchemaForm sub-components must be rendered inside <SchemaFormProvider>.\");\n }\n return store;\n}\n\n/** Stable DOM id for a field's primary control (used for label + focus). */\nfunction controlId(formId: string, name: string): string {\n return `${formId}-field-${name}`;\n}\nfunction descId(formId: string, name: string): string {\n return `${formId}-desc-${name}`;\n}\nfunction errorId(formId: string, name: string): string {\n return `${formId}-error-${name}`;\n}\n\n// ─── Provider ───────────────────────────────────────────────────────────────\n\nexport interface SchemaFormProviderProps {\n /** A validated/normalized spec (a plain `FormSpec` also satisfies this). */\n spec: NormalizedFormSpec;\n /**\n * Controlled values. When provided the component is controlled and\n * `onChange` is the only way to update state.\n */\n values?: FormValues;\n /** Called with the next full values object on any field change. */\n onChange?: (values: FormValues) => void;\n /** Called with `{ formName, values }` when a valid form is submitted. */\n onSubmit?: (state: FormSubmitState) => void;\n /** Disable every control (form is read-only). A deliberate, durable state. */\n disabled?: boolean;\n /** Terminal submitted state: controls are inert, values visible, no submit. */\n submitted?: boolean;\n /** In-flight submit: controls transiently blocked, submit shows a spinner. */\n submitting?: boolean;\n /** No fields to render yet (e.g. the spec is still being fetched) → skeleton. */\n loading?: boolean;\n /** A terminal, form-level submission error rendered above the submit control. */\n error?: ReactNode;\n children: ReactNode;\n}\n\n/**\n * Lifts the form values. Controlled (pass `values`) or uncontrolled.\n * Derives `isControlled = values !== undefined` and never flips modes.\n */\nexport function SchemaFormProvider({\n spec,\n values: valuesProp,\n onChange,\n onSubmit,\n disabled = false,\n submitted = false,\n submitting = false,\n loading = false,\n error = null,\n children,\n}: SchemaFormProviderProps) {\n const formId = useId();\n\n const storeProps: SchemaFormStoreProps = {\n spec,\n valuesProp,\n onChange,\n onSubmit,\n disabled,\n submitted,\n submitting,\n loading,\n error,\n };\n // Created once (lazy initializer) and then kept in sync on every render via\n // `syncProps` below — see schema-form-store.ts's module doc comment for why\n // the store, not React context, is what field-level readers subscribe to.\n const [store] = useState(() => new SchemaFormStore(storeProps, formId));\n // `syncProps` runs here, IN render, so a non-memoized descendant\n // re-rendering this same pass reads fresh values; the resulting `changed`\n // flag is only ACTED ON (`store.notify()`) from the layout effect below —\n // see `syncProps`'s doc comment for why calling it synchronously here\n // instead would trip React's \"setState while rendering a different\n // component\" guard against an already-mounted, memoized `SchemaFormField`.\n const changed = store.syncProps(storeProps);\n useLayoutEffect(() => {\n if (changed) store.notify();\n });\n\n // The field to focus after an invalid submit. `store.submit()` calls this\n // listener synchronously (in the same click/Enter handler that also flips\n // `attempted`, which is what makes an error-containing `AdvancedGroup`\n // branch open itself — see `AdvancedGroupBranch`), so React batches both\n // updates into ONE commit; the actual `.focus()` call happens from the\n // `useEffect` below, which runs AFTER that commit (and after Radix has\n // mounted the newly-open group) — a synchronous `document.getElementById`\n // right here would run against the PRE-update DOM and could never find a\n // control that only exists once the just-opened disclosure mounts its\n // content. A fresh object on every call (not just the name) guarantees the\n // effect re-fires even when the SAME field is invalid on consecutive\n // submit attempts, where a primitive dependency wouldn't change.\n const [pendingFocus, setPendingFocus] = useState<{ name: string } | null>(null);\n useEffect(() => store.onPendingFocus((name) => setPendingFocus({ name })), [store]);\n useEffect(() => {\n if (!pendingFocus || typeof document === \"undefined\") return;\n const el = document.getElementById(controlId(store.formId, pendingFocus.name));\n el?.focus();\n }, [pendingFocus, store]);\n\n return <SchemaFormStoreContext value={store}>{children}</SchemaFormStoreContext>;\n}\n\n// ─── Field control renderers ──────────────────────────────────────────────────\n\ninterface FieldControlProps {\n field: FieldSpec;\n value: FormValue;\n invalid: boolean;\n disabled: boolean;\n readOnly: boolean;\n id: string;\n /** Id of the field's visible label (used by grouped controls' aria-labelledby). */\n labelId: string;\n describedBy: string | undefined;\n setValue: (name: string, value: FormValue) => void;\n}\n\nfunction StringControl({\n field,\n value,\n invalid,\n disabled,\n readOnly,\n id,\n describedBy,\n setValue,\n}: FieldControlProps & { field: Extract<FieldSpec, { type: \"string\" }> }) {\n const text = value === undefined ? \"\" : String(value);\n const commonAria = {\n id,\n \"aria-invalid\": invalid || undefined,\n \"aria-describedby\": describedBy,\n \"aria-required\": field.required || undefined,\n required: field.required,\n } as const;\n\n if (field.multiline) {\n return (\n <Textarea\n {...commonAria}\n name={field.name}\n value={text}\n disabled={disabled}\n readOnly={readOnly}\n maxLength={field.maxLength}\n onChange={(e) => setValue(field.name, e.target.value)}\n />\n );\n }\n\n const inputType =\n field.format === \"email\"\n ? \"email\"\n : field.format === \"uri\"\n ? \"url\"\n : field.format === \"date\"\n ? \"date\"\n : field.format === \"date-time\"\n ? \"datetime-local\"\n : \"text\";\n const spellCheck = field.format === \"email\" || field.format === \"uri\" ? false : undefined;\n const inputMode = field.format === \"email\" ? \"email\" : field.format === \"uri\" ? \"url\" : undefined;\n\n return (\n <Input\n {...commonAria}\n type={inputType}\n name={field.name}\n value={text}\n disabled={disabled}\n readOnly={readOnly}\n minLength={field.minLength}\n maxLength={field.maxLength}\n spellCheck={spellCheck}\n inputMode={inputMode}\n onChange={(e) => setValue(field.name, e.target.value)}\n />\n );\n}\n\nfunction NumberControl({\n field,\n value,\n invalid,\n disabled,\n readOnly,\n id,\n describedBy,\n setValue,\n}: FieldControlProps & { field: Extract<FieldSpec, { type: \"number\" | \"integer\" }> }) {\n const num = typeof value === \"number\" ? value : null;\n return (\n <NumberInput\n id={id}\n name={field.name}\n value={num}\n min={field.min}\n max={field.max}\n step={field.type === \"integer\" ? 1 : undefined}\n disabled={disabled}\n readOnly={readOnly}\n aria-invalid={invalid || undefined}\n aria-describedby={describedBy}\n aria-required={field.required || undefined}\n onValueChange={(next) => setValue(field.name, next ?? undefined)}\n />\n );\n}\n\nfunction BooleanControl({\n field,\n value,\n disabled,\n id,\n describedBy,\n setValue,\n}: FieldControlProps & { field: Extract<FieldSpec, { type: \"boolean\" }> }) {\n return (\n <div className=\"flex items-center gap-2\">\n <Checkbox\n id={id}\n name={field.name}\n checked={value === true}\n disabled={disabled}\n aria-describedby={describedBy}\n aria-required={field.required || undefined}\n onCheckedChange={(checked) => setValue(field.name, checked === true)}\n />\n <Label htmlFor={id} className=\"flex items-center gap-1 font-normal\">\n {fieldLabel(field)}\n {field.required && (\n <span aria-hidden=\"true\" className=\"text-destructive-text\">\n *\n </span>\n )}\n </Label>\n </div>\n );\n}\n\nfunction EnumControl({\n field,\n value,\n invalid,\n disabled,\n id,\n describedBy,\n setValue,\n}: FieldControlProps & { field: Extract<FieldSpec, { type: \"enum\" }> }) {\n const { t } = useLocale();\n const current = typeof value === \"string\" && value.length > 0 ? value : undefined;\n return (\n <Select value={current} disabled={disabled} onValueChange={(v) => setValue(field.name, v)}>\n <SelectTrigger\n id={id}\n aria-invalid={invalid || undefined}\n aria-describedby={describedBy}\n aria-required={field.required || undefined}\n >\n <SelectValue placeholder={t(\"ui.schemaForm.selectPlaceholder\")} />\n </SelectTrigger>\n <SelectContent>\n {field.options.map((option) => (\n <SelectItem key={optionValue(option)} value={optionValue(option)}>\n {optionLabel(option)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n}\n\nfunction MultiEnumControl({\n field,\n value,\n disabled,\n id,\n labelId,\n describedBy,\n setValue,\n}: FieldControlProps & { field: Extract<FieldSpec, { type: \"multi-enum\" }> }) {\n const { t } = useLocale();\n const selected = Array.isArray(value) ? (value as string[]) : [];\n const toggle = (optValue: string, checked: boolean) => {\n const next = checked ? [...selected, optValue] : selected.filter((v) => v !== optValue);\n setValue(field.name, next);\n };\n return (\n <div\n role=\"group\"\n id={id}\n tabIndex={-1}\n aria-labelledby={labelId}\n aria-describedby={describedBy}\n className=\"flex flex-col gap-2 focus:outline-none\"\n >\n {field.options.map((option) => {\n const optValue = optionValue(option);\n const optionId = `${id}-${optValue}`;\n return (\n <div key={optValue} className=\"flex items-center gap-2\">\n <Checkbox\n id={optionId}\n checked={selected.includes(optValue)}\n disabled={disabled}\n onCheckedChange={(checked) => toggle(optValue, checked === true)}\n />\n <Label htmlFor={optionId} className=\"font-normal\">\n {optionLabel(option)}\n </Label>\n </div>\n );\n })}\n {field.options.length === 0 && (\n <p className=\"text-body text-muted-foreground\">{t(\"noResults\")}</p>\n )}\n </div>\n );\n}\n\nfunction ListControl({\n field,\n value,\n disabled,\n id,\n labelId,\n describedBy,\n setValue,\n}: FieldControlProps & { field: Extract<FieldSpec, { type: \"list\" }> }) {\n const items = Array.isArray(value) ? (value as string[]) : [];\n return (\n <ListEditor\n id={id}\n aria-labelledby={labelId}\n aria-describedby={describedBy}\n value={items}\n max={field.maxItems}\n placeholder={field.itemPlaceholder}\n disabled={disabled}\n onValueChange={(next) => setValue(field.name, next)}\n />\n );\n}\n\nfunction KeyValueControl({\n field,\n value,\n disabled,\n id,\n labelId,\n describedBy,\n setValue,\n}: FieldControlProps & { field: Extract<FieldSpec, { type: \"key-value\" }> }) {\n const rows = Array.isArray(value) ? (value as KeyValueRow[]) : [];\n return (\n <KeyValueEditor\n id={id}\n aria-labelledby={labelId}\n aria-describedby={describedBy}\n value={rows}\n keyPlaceholder={field.keyPlaceholder}\n valuePlaceholder={field.valuePlaceholder}\n disabled={disabled}\n onValueChange={(next) => setValue(field.name, next)}\n />\n );\n}\n\n/** Lists the currently-selected files with per-file wrong-type/too-large state. Reads `FileUpload`'s own context. */\nfunction FileControlList({ field }: { field: Extract<FieldSpec, { type: \"file\" }> }) {\n const { files } = useFileUpload();\n if (files.length === 0) return null;\n return (\n <FileUploadList>\n {files.map((uploadFile) => {\n const issue = checkFileIssue(uploadFile.file, field);\n return (\n <FileUploadItem\n key={uploadFile.id}\n uploadFile={uploadFile}\n status={issue ? \"error\" : \"success\"}\n errorMessage={issue?.message}\n />\n );\n })}\n </FileUploadList>\n );\n}\n\n/** A stable per-file id, since `FormValue`'s `File[]` carries no id of its own (unlike `FileUpload`'s own `UploadFile`). */\nfunction fileIdentity(file: File): string {\n return `${file.name}-${file.size}-${file.lastModified}`;\n}\n\nfunction FileControl({\n field,\n value,\n disabled,\n id,\n labelId,\n describedBy,\n setValue,\n}: FieldControlProps & { field: Extract<FieldSpec, { type: \"file\" }> }) {\n // Bind `FileUpload` to the field's OWN value rather than letting it manage\n // uncontrolled internal state: an externally-seeded `values` prop (a\n // controlled `SchemaForm`, or a spec swap that reseeds `values`) must show\n // up in the picker, and `setValue` must stay the single source of truth —\n // otherwise the picker's internal file list and the form's submitted\n // `values[field.name]` can silently diverge.\n const controlledFiles = useMemo(() => {\n const selected = Array.isArray(value) ? (value as File[]) : [];\n return selected.map((file) => ({\n id: fileIdentity(file),\n file,\n }));\n }, [value]);\n // `FileUpload.addFiles` also declines a wrong-type file (`accept`) before it\n // reaches `files` — right for a bare FileUpload, but here that would make the\n // \"wrong type\" designed state unreachable for a drop (the file would just\n // vanish, exactly the `maxSize` failure mode noted below). `addFiles` commits\n // the accepted list and THEN reports rejections, synchronously, so remember\n // the last committed list and re-admit the `accept` rejections onto it for\n // `checkFileIssue` to render with a visible error.\n const lastCommittedRef = useRef<File[]>([]);\n const maxFiles = field.multiple ? field.maxFiles : 1;\n return (\n <FileUpload\n id={id}\n aria-labelledby={labelId}\n aria-describedby={describedBy}\n accept={field.accept}\n multiple={field.multiple}\n // NOT `maxSize={field.maxSize}` — `FileUpload.addFiles` enforces `maxSize`\n // by silently DROPPING an oversized file before it ever reaches `files`\n // state, which would make the \"too large\" designed state below\n // unreachable (the file the user picked would just vanish with no\n // feedback). Enforcement instead happens entirely in `checkFileIssue`\n // below, which renders the oversized file WITH an error item.\n maxFiles={maxFiles}\n disabled={disabled}\n files={controlledFiles}\n onFilesChange={(list) => {\n const next = list.map((u) => u.file);\n lastCommittedRef.current = next;\n setValue(field.name, next);\n }}\n onFilesRejected={(rejections) => {\n const wrongType = rejections.filter((r) => r.reason === \"accept\").map((r) => r.file);\n if (wrongType.length === 0) return;\n const merged = [...lastCommittedRef.current, ...wrongType];\n setValue(field.name, maxFiles ? merged.slice(0, maxFiles) : merged);\n }}\n >\n <FileUploadDropzone />\n <FileControlList field={field} />\n </FileUpload>\n );\n}\n\n// ─── Group control (tabs / advanced) ───────────────────────────────────────────\n\nfunction GroupTabsControl({\n field,\n value,\n disabled,\n id,\n labelId,\n describedBy,\n setValue,\n}: FieldControlProps & { field: GroupFieldSpec }) {\n const active =\n (typeof value === \"string\" ? value : undefined) ?? field.default ?? field.groups[0]?.key;\n return (\n <Tabs\n value={active}\n onValueChange={(next) => setValue(field.name, next)}\n id={id}\n aria-labelledby={labelId}\n aria-describedby={describedBy}\n >\n <TabsList>\n {field.groups.map((group) => (\n <TabsTrigger key={group.key} value={group.key} disabled={disabled}>\n {group.label}\n </TabsTrigger>\n ))}\n </TabsList>\n {field.groups.map((group) => (\n <TabsContent key={group.key} value={group.key} className=\"flex flex-col gap-4 pt-3\">\n {group.description && (\n <p className=\"text-caption text-muted-foreground\">{group.description}</p>\n )}\n <GroupTabsBranch group={group} />\n </TabsContent>\n ))}\n </Tabs>\n );\n}\n\n/**\n * One tab branch's visible fields — its own `useVisibleFieldNames`\n * subscription, so a `visibleWhen` inside THIS branch re-evaluates\n * independent of `GroupTabsControl`'s (and its parent `SchemaFormField`'s)\n * own re-render.\n */\nfunction GroupTabsBranch({ group }: { group: GroupItemSpec }) {\n const store = useSchemaFormStore();\n const visibleNames = useVisibleFieldNames(store, group.fields);\n return (\n <>\n {visibleNames.map((name) => (\n <SchemaFormField key={name} name={name} />\n ))}\n </>\n );\n}\n\n/**\n * One `variant: \"advanced\"` branch. Radix's `CollapsibleContent` UNMOUNTS its\n * children while closed, so a required field inside a still-collapsed branch\n * is invisible to both `document.getElementById` (submit's focus step) and\n * the user — reveal the branch automatically the moment it holds a\n * validation error. \"Controlled with override\": the derived open state\n * (`hasError`) drives the disclosure until the user explicitly toggles it\n * themselves, at which point their choice takes over for good (an ordinary\n * disclosure never re-imposes itself over a deliberate user action).\n */\nfunction AdvancedGroupBranch({ group }: { group: GroupItemSpec }) {\n const store = useSchemaFormStore();\n const hasError = useBranchHasError(store, group.fields);\n const visibleNames = useVisibleFieldNames(store, group.fields);\n const [manualOpen, setManualOpen] = useState<boolean | undefined>(undefined);\n const open = manualOpen ?? hasError;\n return (\n <AdvancedGroup\n title={group.label}\n summary={group.description}\n open={open}\n onOpenChange={setManualOpen}\n >\n {visibleNames.map((name) => (\n <SchemaFormField key={name} name={name} />\n ))}\n </AdvancedGroup>\n );\n}\n\nfunction GroupAdvancedControl({ field }: { field: GroupFieldSpec }) {\n return (\n <div className=\"flex flex-col gap-3\">\n {field.groups.map((group) => (\n <AdvancedGroupBranch key={group.key} group={group} />\n ))}\n </div>\n );\n}\n\n// ─── Field ────────────────────────────────────────────────────────────────────\n\nexport interface SchemaFormFieldProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** The field's `name` (its key in the spec + values). Resolved anywhere in the tree, including inside `group` branches. */\n name: string;\n}\n\n/**\n * Renders one field by name: label, control, description, inline error.\n * Boolean fields render their own inline label (checkbox + label); `group`\n * fields render their OWN label/description internally (a Tabs strip or a\n * stack of disclosures isn't a single labelled control), so the standalone\n * `<Label>` above is suppressed for both.\n *\n * Enforces its OWN `visibleWhen` (returns `null` when hidden) rather than\n * trusting the caller to have filtered it out first: the documented custom-\n * layout composition (`SchemaFormProvider` + the parts, see `SchemaForm`'s\n * own doc comment) lets a consumer place `<SchemaFormField name=\"…\" />`\n * directly, bypassing `SchemaFormFields`'/`GroupTabsControl`'s/\n * `AdvancedGroupBranch`'s own `isFieldVisible` filters — without this check\n * the same spec would render a hidden field in a custom layout while\n * validation/submission (which always excludes it) disagree.\n */\nexport const SchemaFormField = memo(\n forwardRef<HTMLDivElement, SchemaFormFieldProps>(function SchemaFormField(\n { name, className, ...props },\n ref,\n ) {\n // Hooks run unconditionally, ahead of the `!field`/`!visible` early\n // returns below (rules-of-hooks) — this is exactly what makes typing in\n // field A skip re-rendering field B: `useFieldSnapshot` bails out (via\n // `useSyncExternalStore`'s `Object.is` check on the cached snapshot) for\n // every OTHER mounted `SchemaFormField`, so only the field whose own\n // snapshot changed re-renders.\n const store = useSchemaFormStore();\n const meta = useSchemaFormMeta(store);\n const snapshot = useFieldSnapshot(store, name);\n const field = store.getField(name);\n if (!field) return null;\n if (!snapshot.visible) return null;\n\n const id = controlId(meta.formId, name);\n const labelId = `${meta.formId}-label-${name}`;\n const invalid = snapshot.invalid;\n const description = field.description;\n const hasDesc = Boolean(description);\n const describedBy =\n [hasDesc ? descId(meta.formId, name) : null, invalid ? errorId(meta.formId, name) : null]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const controlProps: FieldControlProps = {\n field,\n value: snapshot.value,\n invalid,\n disabled: snapshot.disabled,\n readOnly: snapshot.readOnly,\n id,\n labelId,\n describedBy,\n setValue: store.setValue,\n };\n\n if (field.type !== \"group\" && field.readOnly) {\n return (\n <div\n ref={ref}\n data-slot=\"schema-form-field\"\n data-readonly=\"\"\n className={cn(\"flex flex-col gap-1.5\", className)}\n {...props}\n >\n <Descriptions layout=\"vertical\">\n <DescriptionsItem\n label={fieldLabel(field)}\n numeric={field.type === \"number\" || field.type === \"integer\"}\n >\n {readOnlyText(snapshot.value)}\n </DescriptionsItem>\n </Descriptions>\n {hasDesc && (\n <p id={descId(meta.formId, name)} className=\"text-caption text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n );\n }\n\n const isBoolean = field.type === \"boolean\";\n const isGroup = field.type === \"group\";\n // A multi-value control renders a labelled REGION, not one focusable\n // element with a native label association (a checkbox group, a list/\n // key-value editor's several rows, a file dropzone, tabs, or a stack of\n // disclosures) — its label must NOT use htmlFor, only aria-labelledby.\n const isRegionField =\n field.type === \"multi-enum\" ||\n field.type === \"list\" ||\n field.type === \"key-value\" ||\n field.type === \"file\" ||\n isGroup;\n\n return (\n <div\n ref={ref}\n data-slot=\"schema-form-field\"\n className={cn(\"flex flex-col gap-1.5\", className)}\n {...props}\n >\n {!isBoolean && (\n <Label\n id={labelId}\n htmlFor={isRegionField ? undefined : id}\n className=\"flex items-center gap-1\"\n >\n {fieldLabel(field)}\n {field.required && (\n <span aria-hidden=\"true\" className=\"text-destructive-text\">\n *\n </span>\n )}\n </Label>\n )}\n\n {field.type === \"string\" && <StringControl {...controlProps} field={field} />}\n {(field.type === \"number\" || field.type === \"integer\") && (\n <NumberControl {...controlProps} field={field} />\n )}\n {field.type === \"boolean\" && <BooleanControl {...controlProps} field={field} />}\n {field.type === \"enum\" && <EnumControl {...controlProps} field={field} />}\n {field.type === \"multi-enum\" && <MultiEnumControl {...controlProps} field={field} />}\n {field.type === \"list\" && <ListControl {...controlProps} field={field} />}\n {field.type === \"key-value\" && <KeyValueControl {...controlProps} field={field} />}\n {field.type === \"file\" && <FileControl {...controlProps} field={field} />}\n {field.type === \"group\" && field.variant === \"tabs\" && (\n <GroupTabsControl {...controlProps} field={field} />\n )}\n {field.type === \"group\" && field.variant === \"advanced\" && (\n <GroupAdvancedControl field={field} />\n )}\n\n {hasDesc && (\n <p id={descId(meta.formId, name)} className=\"text-caption text-muted-foreground\">\n {description}\n </p>\n )}\n {invalid && (\n <p id={errorId(meta.formId, name)} className=\"text-caption text-destructive-text\">\n {snapshot.errorText}\n </p>\n )}\n </div>\n );\n }),\n);\n\n// ─── Fields (all) ─────────────────────────────────────────────────────────────\n\nexport type SchemaFormFieldsProps = HTMLAttributes<HTMLDivElement>;\n\n/** Renders every top-level field in the spec, in order. A skeleton while `loading` with no fields. */\nexport const SchemaFormFields = forwardRef<HTMLDivElement, SchemaFormFieldsProps>(\n function SchemaFormFields({ className, ...props }, ref) {\n const store = useSchemaFormStore();\n const meta = useSchemaFormMeta(store);\n const visibleNames = useVisibleFieldNames(store, meta.spec.fields);\n const { spec, loading } = meta;\n\n if (spec.fields.length === 0 && loading) {\n return (\n <div\n ref={ref}\n data-slot=\"schema-form-fields\"\n className={cn(\"flex flex-col gap-4\", className)}\n {...props}\n >\n <SchemaFormSkeletonAnnouncement />\n <div aria-hidden=\"true\" className=\"flex flex-col gap-4\">\n {[0, 1, 2].map((i) => (\n <div key={i} className=\"flex flex-col gap-1.5\">\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-9 w-full\" />\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n data-slot=\"schema-form-fields\"\n className={cn(\"flex flex-col gap-4\", className)}\n {...props}\n >\n {spec.sections\n ? (() => {\n const grouped = new Set(spec.sections.flatMap((section) => section.fields));\n const visible = new Set(visibleNames);\n return (\n <>\n {visibleNames\n .filter((name) => !grouped.has(name))\n .map((name) => (\n <SchemaFormField key={name} name={name} />\n ))}\n {spec.sections.map((section) => {\n const names = section.fields.filter((name) => visible.has(name));\n if (names.length === 0) return null;\n return (\n <SchemaFormSection\n key={section.id}\n label={section.label}\n collapsed={section.collapsed}\n >\n {names.map((name) => (\n <SchemaFormField key={name} name={name} />\n ))}\n </SchemaFormSection>\n );\n })}\n </>\n );\n })()\n : visibleNames.map((name) => <SchemaFormField key={name} name={name} />)}\n </div>\n );\n },\n);\n\n/** A read-only field's value as text; an empty value renders an em dash. */\nfunction readOnlyText(value: FormValue): string {\n if (value === undefined || value === \"\") return \"—\";\n if (Array.isArray(value)) {\n if (value.length === 0) return \"—\";\n return value\n .map((item) =>\n typeof item === \"string\"\n ? item\n : item instanceof File\n ? item.name\n : `${item.key}: ${item.value}`,\n )\n .join(\", \");\n }\n return String(value);\n}\n\n/** One `FormSpec.sections` entry: a disclosure over its fields. */\nfunction SchemaFormSection({\n label,\n collapsed,\n children,\n}: {\n label: string;\n collapsed?: boolean;\n children: ReactNode;\n}) {\n return (\n <Collapsible\n defaultOpen={!collapsed}\n data-slot=\"schema-form-section\"\n className=\"group/section flex flex-col gap-3 border-t border-border-strong pt-3\"\n >\n <CollapsibleTrigger\n data-slot=\"schema-form-section-trigger\"\n className=\"focus-ring flex w-full items-center gap-1 rounded-sm text-start text-subtitle text-foreground\"\n >\n <ChevronRight\n aria-hidden=\"true\"\n className=\"size-4 shrink-0 transition-transform group-data-[state=open]/section:rotate-90 motion-reduce:transition-none\"\n />\n {label}\n </CollapsibleTrigger>\n <CollapsibleContent data-slot=\"schema-form-section-content\" className=\"flex flex-col gap-4\">\n {children}\n </CollapsibleContent>\n </Collapsible>\n );\n}\n\nfunction SchemaFormSkeletonAnnouncement() {\n const { t } = useLocale();\n return (\n <span className=\"sr-only\" role=\"status\" aria-live=\"polite\">\n {t(\"loading\")}\n </span>\n );\n}\n\n// ─── Error (form-level, terminal) ───────────────────────────────────────────────\n\nexport type SchemaFormErrorProps = HTMLAttributes<HTMLDivElement>;\n\n/** A terminal, form-level submission error (e.g. \"Couldn't save settings\"). Renders nothing when absent. */\nexport const SchemaFormError = forwardRef<HTMLDivElement, SchemaFormErrorProps>(\n function SchemaFormError({ className, ...props }, ref) {\n const store = useSchemaFormStore();\n const { error } = useSchemaFormMeta(store);\n if (!error) return null;\n return (\n <div\n ref={ref}\n role=\"alert\"\n // #F2: the `bg-destructive/10` wash alone measures 1.18:1 (light) /\n // 1.09:1 (dark) against the form ground — the earlier \"the wash already\n // marks the region\" reasoning (styling-and-tokens.md's own decision\n // test: \"if I deleted this line, could a sighted user still tell the\n // two regions apart?\") had a measured answer of no, so the wash was the\n // SOLE structural cue and dropping the border was wrong. Restore the\n // boundary as an accent RAIL (`border-s-2 border-s-destructive`), not a\n // full border — the gate permits rails, and a rail is the idiom the\n // rest of the repo already uses for a destructive/error box that keeps\n // its wash (`MermaidDiagram`'s error panel, `packages/editor/src/mermaid-diagram/mermaid-diagram.tsx`).\n // `border-s-destructive` is the FILL rung (styling-and-tokens.md \"status\n // rung\"), guaranteed >=3:1 against every surface token — measured here\n // at 4.70:1 (light) / 4.71:1 (dark) against `--background`.\n data-slot=\"schema-form-error\"\n className={cn(\n \"rounded-md border-s-2 border-s-destructive bg-destructive/10 px-3 py-2 text-body text-destructive-text\",\n className,\n )}\n {...props}\n >\n {error}\n </div>\n );\n },\n);\n\n// ─── Submit ───────────────────────────────────────────────────────────────────\n\nexport interface SchemaFormSubmitProps extends Omit<HTMLAttributes<HTMLButtonElement>, \"children\"> {\n /** Submit button label (overrides `spec.submitLabel`). @default \"Submit\" */\n label?: string;\n}\n\n/**\n * The submit affordance. Enabled until the request starts (validation runs on\n * click), then transiently blocked. `submitting` uses `aria-disabled` + a\n * click-handler guard — NEVER the native `disabled` attribute — so a focused\n * button is never dropped from the tab order right after the user activates\n * it (see the module doc comment / interaction-guidelines.md). The explicit,\n * caller-set `disabled` (read-only form) stays native: that is a deliberate,\n * durable state, not a transient auto-flip. A submitted form shows an inert\n * \"Submitted\" note instead of a button.\n */\nexport const SchemaFormSubmit = forwardRef<HTMLButtonElement, SchemaFormSubmitProps>(\n function SchemaFormSubmit({ label, className, onClick, ...props }, ref) {\n const { t } = useLocale();\n const store = useSchemaFormStore();\n const { spec, submitting, submitted, disabled, loading } = useSchemaFormMeta(store);\n\n if (submitted) {\n return (\n <Badge variant=\"success\" aria-live=\"polite\" className=\"w-fit\">\n <Check aria-hidden=\"true\" className=\"size-3\" />\n {t(\"ui.schemaForm.submitted\")}\n </Badge>\n );\n }\n\n const text = label ?? spec.submitLabel ?? t(\"ui.schemaForm.submit\");\n // The spec is still loading (`SchemaFormFields` shows a skeleton, not the\n // real fields yet) — blocked exactly like `submitting`: transient, so\n // `aria-disabled` + a handler guard, never the native attribute (see the\n // module doc comment). Submitting while the fields haven't rendered would\n // validate/submit whatever placeholder `values` happen to exist.\n const blocked = submitting || loading;\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n // aria-disabled does not block activation the way the native attribute\n // does, so the handler (and SchemaFormRoot's onSubmit) has to.\n if (blocked) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n };\n\n return (\n <Button\n ref={ref}\n type=\"submit\"\n data-slot=\"schema-form-submit\"\n disabled={disabled}\n aria-disabled={blocked || undefined}\n aria-busy={submitting || undefined}\n onClick={handleClick}\n className={cn(blocked && \"cursor-not-allowed\", className)}\n {...props}\n >\n {submitting && <Spinner aria-hidden=\"true\" className=\"text-current\" />}\n {submitting ? t(\"ui.schemaForm.submitting\") : text}\n </Button>\n );\n },\n);\n\n// ─── Test action (a form/group-level async action, e.g. \"Test connection\") ────\n\n/**\n * `SchemaFormTestAction`'s lifecycle: `idle` → `pending` while `onTest` is in\n * flight → `success`/`failure` once it settles. Deliberately local component\n * state, NOT part of the `SchemaFormStore` — so it can never affect field\n * validity or gate `submit()` (issue #22 maintainer ruling, 2026-09-01: a\n * form/group-level test-action slot, kept separate from field validity and\n * never gating submit — not per-field `validateAsync` in the validation\n * engine).\n */\nexport type SchemaFormTestActionStatus = \"idle\" | \"pending\" | \"success\" | \"failure\";\n\nexport interface SchemaFormTestActionProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onError\"> {\n /**\n * Runs the test (e.g. calls an API with the fields typed so far). Receives\n * the form's CURRENT effective values — the same object `validateForm`\n * would resolve against — but this call is entirely independent of\n * validation: a field that is currently invalid, or an unrelated required\n * field left empty, never blocks a test run. Resolve to signal success;\n * reject (an `Error`, or throw) to signal failure — a rejected `Error`'s\n * `message` becomes the shown failure reason.\n */\n onTest: (values: FormValues) => void | Promise<void>;\n /** Button label. @default \"Test connection\" */\n label?: string;\n /** Label shown while pending. @default \"Testing…\" */\n pendingLabel?: string;\n /** Label shown on success. @default \"Connected\" */\n successLabel?: string;\n /** Fallback failure label when the rejection carries no message. @default \"Test failed\" */\n failureLabel?: string;\n}\n\n/**\n * A form- or group-level \"Test connection\" affordance: an async action the\n * user can run to verify the values typed so far (e.g. hit a connector's\n * `/ping` endpoint) BEFORE submitting. Place it anywhere inside a\n * `SchemaFormProvider` tree — directly under `SchemaFormRoot` for a\n * form-level test, or beside a `SchemaFormField` inside a `group` branch (a\n * `TabsContent`/`AdvancedGroup`) for a per-credential-set test. Not part of\n * `SchemaForm`'s default composition — an opt-in part a consumer places, the\n * same way a custom layout composes `SchemaFormField` directly.\n *\n * Deliberately NOT wired into `errors`/`validateForm`/`submit()` — its\n * pending/success/failure state is entirely local, so it can never block or\n * silently gate the form's own submit control.\n */\nexport const SchemaFormTestAction = forwardRef<HTMLDivElement, SchemaFormTestActionProps>(\n function SchemaFormTestAction(\n { onTest, label, pendingLabel, successLabel, failureLabel, className, ...props },\n ref,\n ) {\n const { t } = useLocale();\n const store = useSchemaFormStore();\n const { disabled: formDisabled, loading, submitted, submitting } = useSchemaFormMeta(store);\n const effectiveValues = useEffectiveValues(store);\n const [status, setStatus] = useState<SchemaFormTestActionStatus>(\"idle\");\n const [failureMessage, setFailureMessage] = useState<string | null>(null);\n\n // Always mirrors the LATEST `effectiveValues` (updated every render) so\n // an in-flight `onTest` can tell, once it settles, whether the values it\n // was called with are still current — a plain closure over\n // `effectiveValues` would only ever see the snapshot from the render\n // that started the request.\n const latestEffectiveValuesRef = useRef(effectiveValues);\n latestEffectiveValuesRef.current = effectiveValues;\n // The specific values snapshot the CURRENT `status` describes — set at\n // the moment a test starts, read both by the async completion (to\n // detect \"edited while pending\") and by the effect below (to detect\n // \"edited after success/failure\").\n const testedValuesRef = useRef<FormValues | null>(null);\n\n const pending = status === \"pending\";\n // Transient (pending) block uses aria-disabled + a handler guard, never\n // native `disabled` — same reasoning as SchemaFormSubmit's OWN pending\n // state: a keyboard user who just activated THIS button must not be\n // dropped from the tab order right after they used it. `pending` (this\n // button's own in-flight test) and `loading` (the spec itself still\n // loading — pre-existing, matches SchemaFormSubmit's `blocked`) are both\n // \"I am mid-task\" states, so they stay transient.\n //\n // `submitting`/`submitted` are a DIFFERENT kind of state: they describe\n // the FORM's submit action, not this button's own. This button is a\n // bystander to that action the same way a `SchemaFormField` is — never\n // the control the user just activated — so both go native `disabled`\n // below, exactly like `SchemaFormField`'s `controlDisabled = ctx.disabled\n // || ctx.submitted || ctx.submitting`. (Contrast `SchemaFormSubmit`,\n // where `submitting` IS the button's own state and stays transient — the\n // two controls are not interchangeable here.)\n const transientlyBlocked = loading || pending;\n const nativelyBlocked = formDisabled || submitted || submitting;\n\n // PR #119 review thread 0 (chatgpt-codex-connector): once the tested\n // values go stale — the user edited a field after this status settled —\n // discard the now-inaccurate success/failure and return to idle rather\n // than keep describing values that no longer exist.\n useEffect(() => {\n if (\n (status === \"success\" || status === \"failure\") &&\n testedValuesRef.current !== effectiveValues\n ) {\n setStatus(\"idle\");\n setFailureMessage(null);\n }\n }, [effectiveValues, status]);\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n if (nativelyBlocked || transientlyBlocked) {\n e.preventDefault();\n return;\n }\n const testedValues = effectiveValues;\n testedValuesRef.current = testedValues;\n setStatus(\"pending\");\n setFailureMessage(null);\n void (async () => {\n try {\n await onTest(testedValues);\n // The values changed WHILE the request was in flight — discard\n // this now-stale result and go back to idle rather than report\n // success/failure for a snapshot the user has already moved on\n // from (also covers the \"resolved after a NEWER click\" case,\n // since that click's own `testedValuesRef.current` write already\n // moved this promise's `testedValues` out of date).\n if (latestEffectiveValuesRef.current !== testedValues) {\n setStatus(\"idle\");\n return;\n }\n setStatus(\"success\");\n } catch (err) {\n if (latestEffectiveValuesRef.current !== testedValues) {\n setStatus(\"idle\");\n return;\n }\n setStatus(\"failure\");\n setFailureMessage(err instanceof Error ? err.message : null);\n }\n })();\n };\n\n return (\n <div\n ref={ref}\n data-slot=\"schema-form-test-action\"\n className={cn(\"flex flex-wrap items-center gap-2\", className)}\n {...props}\n >\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={nativelyBlocked}\n aria-disabled={transientlyBlocked || undefined}\n aria-busy={pending || undefined}\n onClick={handleClick}\n className={cn(transientlyBlocked && \"cursor-not-allowed\")}\n >\n {pending && <Spinner aria-hidden=\"true\" className=\"text-current\" />}\n {pending\n ? (pendingLabel ?? t(\"ui.schemaForm.testAction.pending\"))\n : (label ?? t(\"ui.schemaForm.testAction.label\"))}\n </Button>\n {status === \"success\" && (\n <StatusBadge status=\"complete\" aria-live=\"polite\">\n {successLabel ?? t(\"ui.schemaForm.testAction.success\")}\n </StatusBadge>\n )}\n {status === \"failure\" && (\n <StatusBadge status=\"failed\" role=\"alert\">\n {failureMessage ?? failureLabel ?? t(\"ui.schemaForm.testAction.failure\")}\n </StatusBadge>\n )}\n </div>\n );\n },\n);\n\n// ─── Root (the <form> element) ────────────────────────────────────────────────\n\nexport type SchemaFormRootProps = Omit<HTMLAttributes<HTMLFormElement>, \"onSubmit\">;\n\n/**\n * The `<form>` element wired to the context's `submit`. Never nest inside\n * another `<form>` — compose it as its own top-level block.\n */\nexport const SchemaFormRoot = forwardRef<HTMLFormElement, SchemaFormRootProps>(\n function SchemaFormRoot({ className, children, ...props }, ref) {\n const { t } = useLocale();\n const store = useSchemaFormStore();\n const { headingId, spec, disabled, submitting, loading } = useSchemaFormMeta(store);\n const handleSubmit = (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n // The submit control's `aria-disabled` is a signal, not a lock — this is\n // the actual guard against a double/blocked submit. `loading` blocks it\n // too (see `SchemaFormSubmit`): the fields are still a skeleton, so\n // there is nothing real to validate/submit yet.\n if (disabled || submitting || loading) return;\n store.submit();\n };\n return (\n <form\n ref={ref}\n data-slot=\"schema-form-root\"\n noValidate\n onSubmit={handleSubmit}\n aria-labelledby={spec.title ? headingId : undefined}\n aria-label={spec.title ? undefined : spec.formName || t(\"ui.schemaForm.label\")}\n className={cn(\"flex w-full flex-col gap-4\", className)}\n {...props}\n >\n {children}\n </form>\n );\n },\n);\n\n// ─── Title + Description ──────────────────────────────────────────────────────\n\nexport type SchemaFormTitleProps = HTMLAttributes<HTMLParagraphElement>;\n\n/** The form heading. Its id is the `<form>`'s `aria-labelledby` target. */\nexport const SchemaFormTitle = forwardRef<HTMLParagraphElement, SchemaFormTitleProps>(\n function SchemaFormTitle({ className, children, ...props }, ref) {\n const store = useSchemaFormStore();\n const { headingId, spec } = useSchemaFormMeta(store);\n const content = children ?? spec.title;\n if (!content) return null;\n return (\n <p\n ref={ref}\n id={headingId}\n className={cn(\"text-subtitle text-foreground text-balance\", className)}\n {...props}\n >\n {content}\n </p>\n );\n },\n);\n\nexport type SchemaFormDescriptionProps = HTMLAttributes<HTMLParagraphElement>;\n\n/** Supplemental description under the title. */\nexport const SchemaFormDescription = forwardRef<HTMLParagraphElement, SchemaFormDescriptionProps>(\n function SchemaFormDescription({ className, children, ...props }, ref) {\n const store = useSchemaFormStore();\n const { spec } = useSchemaFormMeta(store);\n const content = children ?? spec.description;\n if (!content) return null;\n return (\n <p\n ref={ref}\n className={cn(\"text-body text-muted-foreground text-pretty\", className)}\n {...props}\n >\n {content}\n </p>\n );\n },\n);\n\n// ─── Fallback ─────────────────────────────────────────────────────────────────\n\nexport interface SchemaFormFallbackProps extends HTMLAttributes<HTMLDivElement> {\n /** Short human reason the form could not render. */\n message?: string;\n}\n\n/**\n * Shown when the spec is unusable. Mirrors `MessageFormFallback`: a calm,\n * bordered status box with a short reason — never a thrown error.\n */\nexport const SchemaFormFallback = forwardRef<HTMLDivElement, SchemaFormFallbackProps>(\n function SchemaFormFallback(\n { message = \"This form could not be displayed.\", className, ...props },\n ref,\n ) {\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-live=\"polite\"\n data-slot=\"schema-form-fallback\"\n className={cn(\n // Sole structural cue is the border (no fill) — reads in every theme.\n \"flex items-center justify-center rounded-md border border-border-strong px-4 py-6 text-center text-body text-muted-foreground\",\n className,\n )}\n {...props}\n >\n {message}\n </div>\n );\n },\n);\n\n// ─── Root convenience component ────────────────────────────────────────────────\n\nexport interface SchemaFormProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onSubmit\" | \"onChange\" | \"title\"\n> {\n /** The serializable form specification. */\n spec: FormSpec | unknown;\n /** Controlled values (`{ [fieldName]: value }`). Omit for uncontrolled. */\n values?: FormValues;\n /** Called with the next full values object on any change. */\n onChange?: (values: FormValues) => void;\n /** Called with `{ formName, values }` on a valid submit. */\n onSubmit?: (state: FormSubmitState) => void;\n /** Submit button label (overrides `spec.submitLabel`). */\n submitLabel?: string;\n /** Disable every control (the whole form is read-only). */\n disabled?: boolean;\n /** Terminal submitted state: inert, values visible, submit replaced. */\n submitted?: boolean;\n /** In-flight submit: controls transiently blocked, spinner on submit. */\n submitting?: boolean;\n /** No fields to render yet (spec still loading) → skeleton. */\n loading?: boolean;\n /** A terminal, form-level submission error rendered above the submit control. */\n error?: ReactNode;\n}\n\n/**\n * Convenience composition: `Provider → Root(form) → title/description →\n * Fields → Error → Submit`. For a custom layout, compose `SchemaFormProvider`\n * + the parts. A malformed spec renders `SchemaFormFallback` (never throws).\n */\nexport const SchemaForm = forwardRef<HTMLDivElement, SchemaFormProps>(function SchemaForm(\n {\n spec,\n values,\n onChange,\n onSubmit,\n submitLabel,\n disabled,\n submitted,\n submitting,\n loading,\n error,\n className,\n ...props\n },\n ref,\n) {\n // Memoized on `spec`'s reference: a parent re-rendering with the SAME spec\n // object (the common case once a spec is loaded) must not re-walk/re-\n // validate it on every keystroke elsewhere in the app — `SchemaFormStore`\n // itself already relies on `spec` reference-equality to skip its own\n // recompute (see `syncProps`), so this keeps that contract meaningful one\n // level up.\n const result = useMemo(() => normalizeFormSpec(spec), [spec]);\n if (!result.ok) {\n return (\n <SchemaFormFallback ref={ref} message={result.reason} className={className} {...props} />\n );\n }\n\n const normalized = result.spec;\n const empty = normalized.fields.length === 0;\n\n if (empty && !loading) {\n return (\n <SchemaFormFallback\n ref={ref}\n message=\"This form has no fields to fill in.\"\n className={className}\n {...props}\n />\n );\n }\n\n return (\n <SchemaFormProvider\n spec={normalized}\n values={values}\n onChange={onChange}\n onSubmit={onSubmit}\n disabled={disabled}\n submitted={submitted}\n submitting={submitting}\n loading={loading}\n error={error}\n >\n <div ref={ref} data-slot=\"schema-form\" className={cn(\"w-full\", className)} {...props}>\n <SchemaFormRoot>\n {(normalized.title || normalized.description) && (\n <div className=\"flex flex-col gap-1\">\n <SchemaFormTitle />\n <SchemaFormDescription />\n </div>\n )}\n <SchemaFormFields />\n <SchemaFormError />\n <SchemaFormSubmit label={submitLabel} />\n </SchemaFormRoot>\n </div>\n </SchemaFormProvider>\n );\n});\n"],"mappings":"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","names":["SchemaFormField","SchemaFormFields","SchemaFormError","SchemaFormSubmit","SchemaFormTestAction","SchemaFormRoot","SchemaFormTitle","SchemaFormDescription","SchemaFormFallback","SchemaForm"]}
@@ -0,0 +1,54 @@
1
+ "use client";
2
+ import {
3
+ illustrationAccent,
4
+ illustrationSvgProps
5
+ } from "./chunk-A47AZPCL.js";
6
+
7
+ // src/illustrations/no-access-illustration.tsx
8
+ import { forwardRef } from "react";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ var NoAccessIllustration = forwardRef(
11
+ function NoAccessIllustration2({ size, className, ...props }, ref) {
12
+ return /* @__PURE__ */ jsxs(
13
+ "svg",
14
+ {
15
+ ref,
16
+ ...illustrationSvgProps(size, className),
17
+ "data-slot": "no-access-illustration",
18
+ ...props,
19
+ children: [
20
+ /* @__PURE__ */ jsx("path", { d: "M50,72 V52 A30,20 0 0 1 110,52 V72" }),
21
+ /* @__PURE__ */ jsx("rect", { x: "36", y: "72", width: "88", height: "48", rx: "10" }),
22
+ /* @__PURE__ */ jsx(
23
+ "circle",
24
+ {
25
+ cx: "80",
26
+ cy: "92",
27
+ r: "6",
28
+ style: { stroke: illustrationAccent("var(--primary-text)") },
29
+ strokeWidth: 3
30
+ }
31
+ ),
32
+ /* @__PURE__ */ jsx(
33
+ "rect",
34
+ {
35
+ x: "77",
36
+ y: "98",
37
+ width: "6",
38
+ height: "12",
39
+ rx: "2",
40
+ style: { stroke: illustrationAccent("var(--primary-text)") },
41
+ strokeWidth: 3
42
+ }
43
+ )
44
+ ]
45
+ }
46
+ );
47
+ }
48
+ );
49
+ NoAccessIllustration.displayName = "NoAccessIllustration";
50
+
51
+ export {
52
+ NoAccessIllustration
53
+ };
54
+ //# sourceMappingURL=chunk-BPXLHGWI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/illustrations/no-access-illustration.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport {\n illustrationSvgProps,\n illustrationAccent,\n type IllustrationProps,\n} from \"./illustration-base\";\n\n/**\n * Permission / access-denied state. A line-art padlock with a `--primary-text`\n * keyhole — reads as \"restricted\", not \"broken\". The keyhole is meaning-bearing\n * (per the accent-semantics convention in `illustration-base.tsx`, #48\n * finding 1) — it's what distinguishes a padlock from a generic rounded box.\n */\nexport const NoAccessIllustration = forwardRef<SVGSVGElement, IllustrationProps>(\n function NoAccessIllustration({ size, className, ...props }, ref) {\n return (\n <svg\n ref={ref}\n {...illustrationSvgProps(size, className)}\n data-slot=\"no-access-illustration\"\n {...props}\n >\n <path d=\"M50,72 V52 A30,20 0 0 1 110,52 V72\" />\n <rect x=\"36\" y=\"72\" width=\"88\" height=\"48\" rx=\"10\" />\n <circle\n cx=\"80\"\n cy=\"92\"\n r=\"6\"\n style={{ stroke: illustrationAccent(\"var(--primary-text)\") }}\n strokeWidth={3}\n />\n <rect\n x=\"77\"\n y=\"98\"\n width=\"6\"\n height=\"12\"\n rx=\"2\"\n style={{ stroke: illustrationAccent(\"var(--primary-text)\") }}\n strokeWidth={3}\n />\n </svg>\n );\n },\n);\nNoAccessIllustration.displayName = \"NoAccessIllustration\";\n"],"mappings":";;;;;;;AAAA,SAAS,kBAAkB;AAgBrB,SAME,KANF;AAHC,IAAM,uBAAuB;AAAA,EAClC,SAASA,sBAAqB,EAAE,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK;AAChE,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACC,GAAG,qBAAqB,MAAM,SAAS;AAAA,QACxC,aAAU;AAAA,QACT,GAAG;AAAA,QAEJ;AAAA,8BAAC,UAAK,GAAE,sCAAqC;AAAA,UAC7C,oBAAC,UAAK,GAAE,MAAK,GAAE,MAAK,OAAM,MAAK,QAAO,MAAK,IAAG,MAAK;AAAA,UACnD;AAAA,YAAC;AAAA;AAAA,cACC,IAAG;AAAA,cACH,IAAG;AAAA,cACH,GAAE;AAAA,cACF,OAAO,EAAE,QAAQ,mBAAmB,qBAAqB,EAAE;AAAA,cAC3D,aAAa;AAAA;AAAA,UACf;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,GAAE;AAAA,cACF,GAAE;AAAA,cACF,OAAM;AAAA,cACN,QAAO;AAAA,cACP,IAAG;AAAA,cACH,OAAO,EAAE,QAAQ,mBAAmB,qBAAqB,EAAE;AAAA,cAC3D,aAAa;AAAA;AAAA,UACf;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACA,qBAAqB,cAAc;","names":["NoAccessIllustration"]}
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ //# sourceMappingURL=chunk-BTBYNKT4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,325 @@
1
+ "use client";
2
+ import {
3
+ collectValidatableFields,
4
+ initialFormValues,
5
+ isFieldVisible,
6
+ validateForm
7
+ } from "./chunk-TNOANK34.js";
8
+
9
+ // src/components/schema-form/schema-form-store.ts
10
+ import { useCallback, useSyncExternalStore } from "react";
11
+ function effectiveValue(field, values) {
12
+ const v = values[field.name];
13
+ if (v !== void 0) return v;
14
+ if (field.type === "group") return field.default ?? field.groups[0]?.key;
15
+ if ("default" in field && field.default !== void 0) return field.default;
16
+ if (field.type === "boolean") return false;
17
+ if (field.type === "multi-enum" || field.type === "list") return [];
18
+ if (field.type === "key-value") return [];
19
+ if (field.type === "file") return [];
20
+ return void 0;
21
+ }
22
+ function stripFields(fields, values) {
23
+ for (const field of fields) {
24
+ delete values[field.name];
25
+ if (field.type === "group") {
26
+ for (const group of field.groups) stripFields(group.fields, values);
27
+ }
28
+ }
29
+ }
30
+ function activeTabBranch(field, activeKey) {
31
+ const key = typeof activeKey === "string" ? activeKey : void 0;
32
+ return field.groups.find((g) => g.key === key) ?? field.groups.find((g) => g.key === field.default) ?? field.groups[0];
33
+ }
34
+ function computeMergedValues(fields, base) {
35
+ const merged = { ...base };
36
+ const fill = (fs) => {
37
+ for (const field of fs) {
38
+ if (!isFieldVisible(field, merged)) {
39
+ delete merged[field.name];
40
+ if (field.type === "group") {
41
+ for (const group of field.groups) stripFields(group.fields, merged);
42
+ }
43
+ continue;
44
+ }
45
+ merged[field.name] = effectiveValue(field, merged);
46
+ if (field.type !== "group") continue;
47
+ if (field.variant === "tabs") {
48
+ const active = activeTabBranch(field, merged[field.name]);
49
+ for (const group of field.groups) {
50
+ if (group === active) fill(group.fields);
51
+ else stripFields(group.fields, merged);
52
+ }
53
+ } else {
54
+ for (const group of field.groups) fill(group.fields);
55
+ }
56
+ }
57
+ };
58
+ fill(fields);
59
+ return merged;
60
+ }
61
+ function branchHasError(fields, errors) {
62
+ for (const field of fields) {
63
+ if (errors[field.name]) return true;
64
+ if (field.type === "group") {
65
+ for (const group of field.groups) {
66
+ if (branchHasError(group.fields, errors)) return true;
67
+ }
68
+ }
69
+ }
70
+ return false;
71
+ }
72
+ function buildFieldMap(fields) {
73
+ const map = /* @__PURE__ */ new Map();
74
+ const walk = (fs) => {
75
+ for (const field of fs) {
76
+ map.set(field.name, field);
77
+ if (field.type === "group") {
78
+ for (const group of field.groups) walk(group.fields);
79
+ }
80
+ }
81
+ };
82
+ walk(fields);
83
+ return map;
84
+ }
85
+ function sameNames(a, b) {
86
+ if (a.length !== b.length) return false;
87
+ for (let i = 0; i < a.length; i++) {
88
+ if (a[i] !== b[i]) return false;
89
+ }
90
+ return true;
91
+ }
92
+ var EMPTY_ERRORS = {};
93
+ function sameFieldValue(a, b) {
94
+ if (Object.is(a, b)) return true;
95
+ return Array.isArray(a) && Array.isArray(b) && a.length === 0 && b.length === 0;
96
+ }
97
+ function fieldSnapshotEqual(a, b) {
98
+ return sameFieldValue(a.value, b.value) && a.invalid === b.invalid && a.errorText === b.errorText && a.visible === b.visible && a.disabled === b.disabled && a.readOnly === b.readOnly;
99
+ }
100
+ function metaEqual(a, b) {
101
+ return a.spec === b.spec && a.formId === b.formId && a.headingId === b.headingId && a.disabled === b.disabled && a.submitted === b.submitted && a.submitting === b.submitting && a.loading === b.loading && a.error === b.error && a.attempted === b.attempted;
102
+ }
103
+ var SchemaFormStore = class {
104
+ props;
105
+ internalValues;
106
+ attempted = false;
107
+ listeners = /* @__PURE__ */ new Set();
108
+ pendingFocusListeners = /* @__PURE__ */ new Set();
109
+ formId;
110
+ headingId;
111
+ mergedCache = null;
112
+ errorsCache = null;
113
+ metaCache = null;
114
+ fieldMapCache = null;
115
+ fieldSnapshotCache = /* @__PURE__ */ new Map();
116
+ namesCache = /* @__PURE__ */ new WeakMap();
117
+ constructor(props, formId) {
118
+ this.props = props;
119
+ this.formId = formId;
120
+ this.headingId = `${formId}-title`;
121
+ this.internalValues = initialFormValues(props.spec.fields);
122
+ }
123
+ subscribe = (listener) => {
124
+ this.listeners.add(listener);
125
+ return () => {
126
+ this.listeners.delete(listener);
127
+ };
128
+ };
129
+ /** Fires once, with the field's own name, whenever an invalid submit should move focus to it. */
130
+ onPendingFocus(listener) {
131
+ this.pendingFocusListeners.add(listener);
132
+ return () => {
133
+ this.pendingFocusListeners.delete(listener);
134
+ };
135
+ }
136
+ emit() {
137
+ for (const listener of this.listeners) listener();
138
+ }
139
+ /**
140
+ * Sync the latest render's props/closures. Called unconditionally on every
141
+ * `SchemaFormProvider` render, DURING that render (not an effect) — so a
142
+ * non-memoized descendant re-rendering in this SAME pass (`SchemaFormRoot`,
143
+ * `SchemaFormFields`, …) reads the fresh values via `getMeta`/
144
+ * `getFieldSnapshot`, not last render's. It deliberately does NOT call
145
+ * `emit()` itself — that would call an already-mounted, `memo`-wrapped
146
+ * `SchemaFormField`'s `useSyncExternalStore` listener synchronously WHILE
147
+ * `SchemaFormProvider` (a different component) is still rendering, which
148
+ * React explicitly disallows ("Cannot update a component while rendering a
149
+ * different component"). The caller instead reads the returned `changed`
150
+ * flag and calls `notify()` from a `useLayoutEffect` — i.e. after this
151
+ * whole render has committed — to wake any memoized subscriber that this
152
+ * render's own top-down reconciliation skipped over.
153
+ */
154
+ syncProps(next) {
155
+ const prev = this.props;
156
+ const formNameChanged = next.spec.formName !== prev.spec.formName;
157
+ this.props = next;
158
+ if (next.valuesProp === void 0 && formNameChanged) {
159
+ this.internalValues = initialFormValues(next.spec.fields);
160
+ }
161
+ return formNameChanged || prev.spec !== next.spec || prev.valuesProp !== next.valuesProp || prev.disabled !== next.disabled || prev.submitted !== next.submitted || prev.submitting !== next.submitting || prev.loading !== next.loading || prev.error !== next.error;
162
+ }
163
+ /** Wakes every subscriber outside of any component's render phase (see `syncProps`). */
164
+ notify() {
165
+ this.emit();
166
+ }
167
+ get isControlled() {
168
+ return this.props.valuesProp !== void 0;
169
+ }
170
+ getFieldMap() {
171
+ const fields = this.props.spec.fields;
172
+ if (this.fieldMapCache && this.fieldMapCache.fields === fields) return this.fieldMapCache.map;
173
+ const map = buildFieldMap(fields);
174
+ this.fieldMapCache = { fields, map };
175
+ return map;
176
+ }
177
+ getField(name) {
178
+ return this.getFieldMap().get(name);
179
+ }
180
+ getValues() {
181
+ return this.isControlled ? this.props.valuesProp : this.internalValues;
182
+ }
183
+ /** The merged/stripped values every visibility check and submit resolves against. Reference-stable when nothing changed (SchemaFormTestAction relies on this to detect a stale in-flight test). */
184
+ getEffectiveValues() {
185
+ const base = this.getValues();
186
+ const fields = this.props.spec.fields;
187
+ if (this.mergedCache && this.mergedCache.base === base && this.mergedCache.fields === fields) {
188
+ return this.mergedCache.result;
189
+ }
190
+ const result = computeMergedValues(fields, base);
191
+ this.mergedCache = { base, fields, result };
192
+ return result;
193
+ }
194
+ /** Empty until the first submit attempt (`EMPTY_ERRORS`, a stable reference); live-updates after. */
195
+ getErrors() {
196
+ if (!this.attempted) return EMPTY_ERRORS;
197
+ const merged = this.getEffectiveValues();
198
+ const fields = this.props.spec.fields;
199
+ if (this.errorsCache && this.errorsCache.merged === merged && this.errorsCache.fields === fields && this.errorsCache.attempted === this.attempted) {
200
+ return this.errorsCache.result;
201
+ }
202
+ const result = validateForm(fields, merged);
203
+ this.errorsCache = { merged, fields, attempted: this.attempted, result };
204
+ return result;
205
+ }
206
+ /** The slow-changing, form-wide flags — cached so ordinary typing never changes this object's reference. */
207
+ getMeta() {
208
+ const next = {
209
+ spec: this.props.spec,
210
+ formId: this.formId,
211
+ headingId: this.headingId,
212
+ disabled: this.props.disabled,
213
+ submitted: this.props.submitted,
214
+ submitting: this.props.submitting,
215
+ loading: this.props.loading,
216
+ error: this.props.error,
217
+ attempted: this.attempted
218
+ };
219
+ if (this.metaCache && metaEqual(this.metaCache, next)) return this.metaCache;
220
+ this.metaCache = next;
221
+ return next;
222
+ }
223
+ /** One field's reactive data. Cached per name — returns the SAME object when nothing about this field changed, so `useSyncExternalStore` bails out of re-rendering it. */
224
+ getFieldSnapshot(name) {
225
+ const field = this.getField(name);
226
+ const merged = this.getEffectiveValues();
227
+ const values = this.getValues();
228
+ const errors = this.getErrors();
229
+ const errorText = errors[name] ?? null;
230
+ const next = {
231
+ value: field ? effectiveValue(field, values) : void 0,
232
+ invalid: Boolean(errorText),
233
+ errorText,
234
+ visible: field ? isFieldVisible(field, merged) : false,
235
+ disabled: this.props.disabled || this.props.submitted || this.props.submitting,
236
+ readOnly: this.props.submitted
237
+ };
238
+ const prev = this.fieldSnapshotCache.get(name);
239
+ if (prev && fieldSnapshotEqual(prev, next)) return prev;
240
+ this.fieldSnapshotCache.set(name, next);
241
+ return next;
242
+ }
243
+ /**
244
+ * Names of `fields` that are currently visible (top-level filter of
245
+ * exactly that array — a `group`'s own branches call this again with
246
+ * their OWN `fields`, which is what lets a branch react to a nested
247
+ * `visibleWhen` independent of its ancestor `SchemaFormField`'s own
248
+ * re-render). Cached by array reference, so a caller whose visible SET
249
+ * didn't change gets back the SAME array across an unrelated keystroke.
250
+ */
251
+ getVisibleNames(fields) {
252
+ const effective = this.getEffectiveValues();
253
+ const cached = this.namesCache.get(fields);
254
+ if (cached && cached.effective === effective) return cached.names;
255
+ const names = fields.filter((field) => isFieldVisible(field, effective)).map((field) => field.name);
256
+ const stable = cached && sameNames(cached.names, names) ? cached.names : names;
257
+ this.namesCache.set(fields, { effective, names: stable });
258
+ return stable;
259
+ }
260
+ getBranchHasError(fields) {
261
+ return branchHasError(fields, this.getErrors());
262
+ }
263
+ setValue = (name, value) => {
264
+ const base = this.getValues();
265
+ const next = { ...base, [name]: value };
266
+ if (!this.isControlled) this.internalValues = next;
267
+ this.props.onChange?.(next);
268
+ this.emit();
269
+ };
270
+ submit = () => {
271
+ this.attempted = true;
272
+ const merged = this.getEffectiveValues();
273
+ const errs = validateForm(this.props.spec.fields, merged);
274
+ const invalidNames = Object.keys(errs).filter((n) => errs[n]);
275
+ if (invalidNames.length > 0) {
276
+ const firstInvalid = collectValidatableFields(this.props.spec.fields, merged).find(
277
+ (f) => errs[f.name]
278
+ );
279
+ this.emit();
280
+ if (firstInvalid) {
281
+ for (const listener of this.pendingFocusListeners) listener(firstInvalid.name);
282
+ }
283
+ return;
284
+ }
285
+ this.emit();
286
+ this.props.onSubmit?.({ formName: this.props.spec.formName, values: merged });
287
+ };
288
+ reset = () => {
289
+ this.attempted = false;
290
+ const seeded = initialFormValues(this.props.spec.fields);
291
+ if (!this.isControlled) this.internalValues = seeded;
292
+ this.props.onChange?.(seeded);
293
+ this.emit();
294
+ };
295
+ };
296
+ function useSchemaFormMeta(store) {
297
+ const getSnapshot = useCallback(() => store.getMeta(), [store]);
298
+ return useSyncExternalStore(store.subscribe, getSnapshot);
299
+ }
300
+ function useFieldSnapshot(store, name) {
301
+ const getSnapshot = useCallback(() => store.getFieldSnapshot(name), [store, name]);
302
+ return useSyncExternalStore(store.subscribe, getSnapshot);
303
+ }
304
+ function useEffectiveValues(store) {
305
+ const getSnapshot = useCallback(() => store.getEffectiveValues(), [store]);
306
+ return useSyncExternalStore(store.subscribe, getSnapshot);
307
+ }
308
+ function useVisibleFieldNames(store, fields) {
309
+ const getSnapshot = useCallback(() => store.getVisibleNames(fields), [store, fields]);
310
+ return useSyncExternalStore(store.subscribe, getSnapshot);
311
+ }
312
+ function useBranchHasError(store, fields) {
313
+ const getSnapshot = useCallback(() => store.getBranchHasError(fields), [store, fields]);
314
+ return useSyncExternalStore(store.subscribe, getSnapshot);
315
+ }
316
+
317
+ export {
318
+ SchemaFormStore,
319
+ useSchemaFormMeta,
320
+ useFieldSnapshot,
321
+ useEffectiveValues,
322
+ useVisibleFieldNames,
323
+ useBranchHasError
324
+ };
325
+ //# sourceMappingURL=chunk-BWL7HWEF.js.map