@elabs-ai/components-ui 4.2.0 → 5.1.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 (1435) 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-2DFB4YTK.js +55 -0
  9. package/dist/chunk-2DFB4YTK.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-2ZMPAD6C.js +357 -0
  13. package/dist/chunk-2ZMPAD6C.js.map +1 -0
  14. package/dist/chunk-36SY7TID.js +36 -0
  15. package/dist/chunk-36SY7TID.js.map +1 -0
  16. package/dist/chunk-36VULFFV.js +2 -0
  17. package/dist/chunk-36VULFFV.js.map +1 -0
  18. package/dist/chunk-3BZBNDRP.js +123 -0
  19. package/dist/chunk-3BZBNDRP.js.map +1 -0
  20. package/dist/chunk-3DJ4KY3U.js +82 -0
  21. package/dist/chunk-3DJ4KY3U.js.map +1 -0
  22. package/dist/chunk-3EDNWHWD.js +125 -0
  23. package/dist/chunk-3EDNWHWD.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-3OSGTUN2.js +2 -0
  27. package/dist/chunk-3OSGTUN2.js.map +1 -0
  28. package/dist/chunk-3P7SRCDB.js +23 -0
  29. package/dist/chunk-3P7SRCDB.js.map +1 -0
  30. package/dist/chunk-3ZR5PMKB.js +41 -0
  31. package/dist/chunk-3ZR5PMKB.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-47YSHR3H.js +77 -0
  35. package/dist/chunk-47YSHR3H.js.map +1 -0
  36. package/dist/chunk-4ACT7RLU.js +2 -0
  37. package/dist/chunk-4ACT7RLU.js.map +1 -0
  38. package/dist/chunk-4B2E4OCZ.js +44 -0
  39. package/dist/chunk-4B2E4OCZ.js.map +1 -0
  40. package/dist/chunk-4C4D6T5M.js +229 -0
  41. package/dist/chunk-4C4D6T5M.js.map +1 -0
  42. package/dist/chunk-4DWIMWR5.js +726 -0
  43. package/dist/chunk-4DWIMWR5.js.map +1 -0
  44. package/dist/chunk-4DZGAY6R.js +140 -0
  45. package/dist/chunk-4DZGAY6R.js.map +1 -0
  46. package/dist/chunk-4HTVJZVG.js +2 -0
  47. package/dist/chunk-4HTVJZVG.js.map +1 -0
  48. package/dist/chunk-4KDA5MDC.js +2 -0
  49. package/dist/chunk-4KDA5MDC.js.map +1 -0
  50. package/dist/chunk-4NSCLIES.js +126 -0
  51. package/dist/chunk-4NSCLIES.js.map +1 -0
  52. package/dist/chunk-4PXDZR2W.js +2 -0
  53. package/dist/chunk-4PXDZR2W.js.map +1 -0
  54. package/dist/chunk-4UWOADYM.js +2 -0
  55. package/dist/chunk-4UWOADYM.js.map +1 -0
  56. package/dist/chunk-4VCU3GFI.js +23 -0
  57. package/dist/chunk-4VCU3GFI.js.map +1 -0
  58. package/dist/chunk-4W3MVVKN.js +66 -0
  59. package/dist/chunk-4W3MVVKN.js.map +1 -0
  60. package/dist/chunk-4YOFSGHD.js +2 -0
  61. package/dist/chunk-4YOFSGHD.js.map +1 -0
  62. package/dist/chunk-545HI223.js +2 -0
  63. package/dist/chunk-545HI223.js.map +1 -0
  64. package/dist/chunk-55BM2IU2.js +186 -0
  65. package/dist/chunk-55BM2IU2.js.map +1 -0
  66. package/dist/chunk-5C5W52O2.js +27 -0
  67. package/dist/chunk-5C5W52O2.js.map +1 -0
  68. package/dist/chunk-5G2DDMHR.js +2 -0
  69. package/dist/chunk-5G2DDMHR.js.map +1 -0
  70. package/dist/chunk-5LCN5Q2L.js +23 -0
  71. package/dist/chunk-5LCN5Q2L.js.map +1 -0
  72. package/dist/chunk-5MXQ5CP7.js +93 -0
  73. package/dist/chunk-5MXQ5CP7.js.map +1 -0
  74. package/dist/chunk-5P4BSHIG.js +2 -0
  75. package/dist/chunk-5P4BSHIG.js.map +1 -0
  76. package/dist/chunk-5SHHIQVA.js +22 -0
  77. package/dist/chunk-5SHHIQVA.js.map +1 -0
  78. package/dist/chunk-5YZLOAKR.js +2 -0
  79. package/dist/chunk-5YZLOAKR.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-6HTZBBTC.js +35 -0
  85. package/dist/chunk-6HTZBBTC.js.map +1 -0
  86. package/dist/chunk-6ROQKB4U.js +2 -0
  87. package/dist/chunk-6ROQKB4U.js.map +1 -0
  88. package/dist/chunk-6S43VAN7.js +2 -0
  89. package/dist/chunk-6S43VAN7.js.map +1 -0
  90. package/dist/chunk-6TJVJPNU.js +1321 -0
  91. package/dist/chunk-6TJVJPNU.js.map +1 -0
  92. package/dist/chunk-6VLJL7Q4.js +2 -0
  93. package/dist/chunk-6VLJL7Q4.js.map +1 -0
  94. package/dist/chunk-72H7HUTH.js +161 -0
  95. package/dist/chunk-72H7HUTH.js.map +1 -0
  96. package/dist/chunk-7KV7H2TW.js +323 -0
  97. package/dist/chunk-7KV7H2TW.js.map +1 -0
  98. package/dist/chunk-7WIHVGYL.js +2 -0
  99. package/dist/chunk-7WIHVGYL.js.map +1 -0
  100. package/dist/chunk-7Z2RAGOA.js +90 -0
  101. package/dist/chunk-7Z2RAGOA.js.map +1 -0
  102. package/dist/chunk-AA3SPDJU.js +2 -0
  103. package/dist/chunk-AA3SPDJU.js.map +1 -0
  104. package/dist/chunk-AC7X3D2M.js +2 -0
  105. package/dist/chunk-AC7X3D2M.js.map +1 -0
  106. package/dist/chunk-AE6LFFME.js +201 -0
  107. package/dist/chunk-AE6LFFME.js.map +1 -0
  108. package/dist/chunk-AE6UDP36.js +2 -0
  109. package/dist/chunk-AE6UDP36.js.map +1 -0
  110. package/dist/chunk-AFEFAGPW.js +2 -0
  111. package/dist/chunk-AFEFAGPW.js.map +1 -0
  112. package/dist/chunk-AFJCS2WV.js +95 -0
  113. package/dist/chunk-AFJCS2WV.js.map +1 -0
  114. package/dist/chunk-ALNJV4XB.js +218 -0
  115. package/dist/chunk-ALNJV4XB.js.map +1 -0
  116. package/dist/chunk-AQNLEP5F.js +2 -0
  117. package/dist/chunk-AQNLEP5F.js.map +1 -0
  118. package/dist/chunk-AUQVJ7KO.js +2 -0
  119. package/dist/chunk-AUQVJ7KO.js.map +1 -0
  120. package/dist/chunk-AXHMQOIZ.js +116 -0
  121. package/dist/chunk-AXHMQOIZ.js.map +1 -0
  122. package/dist/chunk-AZEABCK4.js +30 -0
  123. package/dist/chunk-AZEABCK4.js.map +1 -0
  124. package/dist/chunk-B23VW24W.js +2 -0
  125. package/dist/chunk-B23VW24W.js.map +1 -0
  126. package/dist/chunk-B2RSOLLO.js +2 -0
  127. package/dist/chunk-B2RSOLLO.js.map +1 -0
  128. package/dist/chunk-B3DANITU.js +85 -0
  129. package/dist/chunk-B3DANITU.js.map +1 -0
  130. package/dist/chunk-B7FAQKHH.js +87 -0
  131. package/dist/chunk-B7FAQKHH.js.map +1 -0
  132. package/dist/chunk-BDOG4YSM.js +989 -0
  133. package/dist/chunk-BDOG4YSM.js.map +1 -0
  134. package/dist/chunk-BRL2HMZJ.js +110 -0
  135. package/dist/chunk-BRL2HMZJ.js.map +1 -0
  136. package/dist/chunk-BTBYNKT4.js +2 -0
  137. package/dist/chunk-BTBYNKT4.js.map +1 -0
  138. package/dist/chunk-BWL7HWEF.js +325 -0
  139. package/dist/chunk-BWL7HWEF.js.map +1 -0
  140. package/dist/chunk-BYFRDLDL.js +246 -0
  141. package/dist/chunk-BYFRDLDL.js.map +1 -0
  142. package/dist/chunk-BZQF5QCN.js +18 -0
  143. package/dist/chunk-BZQF5QCN.js.map +1 -0
  144. package/dist/chunk-C2AQEEFB.js +2 -0
  145. package/dist/chunk-C2AQEEFB.js.map +1 -0
  146. package/dist/chunk-C2ICCCP5.js +400 -0
  147. package/dist/chunk-C2ICCCP5.js.map +1 -0
  148. package/dist/chunk-C5QBV5RE.js +77 -0
  149. package/dist/chunk-C5QBV5RE.js.map +1 -0
  150. package/dist/chunk-C753P3VJ.js +2 -0
  151. package/dist/chunk-C753P3VJ.js.map +1 -0
  152. package/dist/chunk-CDE74W6O.js +2 -0
  153. package/dist/chunk-CDE74W6O.js.map +1 -0
  154. package/dist/chunk-CDMJSXCB.js +62 -0
  155. package/dist/chunk-CDMJSXCB.js.map +1 -0
  156. package/dist/chunk-CEDK5GM2.js +68 -0
  157. package/dist/chunk-CEDK5GM2.js.map +1 -0
  158. package/dist/chunk-CEHCVDYR.js +476 -0
  159. package/dist/chunk-CEHCVDYR.js.map +1 -0
  160. package/dist/chunk-CEQ3YKHR.js +35 -0
  161. package/dist/chunk-CEQ3YKHR.js.map +1 -0
  162. package/dist/chunk-CEQER4CV.js +2 -0
  163. package/dist/chunk-CEQER4CV.js.map +1 -0
  164. package/dist/chunk-CMP4F537.js +190 -0
  165. package/dist/chunk-CMP4F537.js.map +1 -0
  166. package/dist/chunk-CRGGGHAM.js +2 -0
  167. package/dist/chunk-CRGGGHAM.js.map +1 -0
  168. package/dist/chunk-CRVB4SLG.js +2 -0
  169. package/dist/chunk-CRVB4SLG.js.map +1 -0
  170. package/dist/chunk-CT6XJIPY.js +2 -0
  171. package/dist/chunk-CT6XJIPY.js.map +1 -0
  172. package/dist/chunk-CY5ISPFB.js +235 -0
  173. package/dist/chunk-CY5ISPFB.js.map +1 -0
  174. package/dist/chunk-CY624JOL.js +2 -0
  175. package/dist/chunk-CY624JOL.js.map +1 -0
  176. package/dist/chunk-D53EN4Q6.js +2 -0
  177. package/dist/chunk-D53EN4Q6.js.map +1 -0
  178. package/dist/chunk-D5INX2EF.js +50 -0
  179. package/dist/chunk-D5INX2EF.js.map +1 -0
  180. package/dist/chunk-DCHYNTHI.js +11 -0
  181. package/dist/chunk-DCHYNTHI.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-DU6ITAJL.js +2 -0
  187. package/dist/chunk-DU6ITAJL.js.map +1 -0
  188. package/dist/chunk-DXC3DTCV.js +256 -0
  189. package/dist/chunk-DXC3DTCV.js.map +1 -0
  190. package/dist/chunk-DXDLTYTT.js +2 -0
  191. package/dist/chunk-DXDLTYTT.js.map +1 -0
  192. package/dist/chunk-E3GNYOLS.js +26 -0
  193. package/dist/chunk-E3GNYOLS.js.map +1 -0
  194. package/dist/chunk-EAFPUZ46.js +2 -0
  195. package/dist/chunk-EAFPUZ46.js.map +1 -0
  196. package/dist/chunk-EBDOKU5K.js +2 -0
  197. package/dist/chunk-EBDOKU5K.js.map +1 -0
  198. package/dist/chunk-EBNPVPR7.js +266 -0
  199. package/dist/chunk-EBNPVPR7.js.map +1 -0
  200. package/dist/chunk-EDE73Q6Z.js +2 -0
  201. package/dist/chunk-EDE73Q6Z.js.map +1 -0
  202. package/dist/chunk-EJ3XWNY3.js +52 -0
  203. package/dist/chunk-EJ3XWNY3.js.map +1 -0
  204. package/dist/chunk-EJQYE4MY.js +100 -0
  205. package/dist/chunk-EJQYE4MY.js.map +1 -0
  206. package/dist/chunk-ENL3CCZB.js +385 -0
  207. package/dist/chunk-ENL3CCZB.js.map +1 -0
  208. package/dist/chunk-EP3U7OQ3.js +18 -0
  209. package/dist/chunk-EP3U7OQ3.js.map +1 -0
  210. package/dist/chunk-ERTYAID6.js +101 -0
  211. package/dist/chunk-ERTYAID6.js.map +1 -0
  212. package/dist/chunk-FAOX6A5D.js +2 -0
  213. package/dist/chunk-FAOX6A5D.js.map +1 -0
  214. package/dist/chunk-FBJ2JSRA.js +47 -0
  215. package/dist/chunk-FBJ2JSRA.js.map +1 -0
  216. package/dist/chunk-FDJ77DTR.js +2 -0
  217. package/dist/chunk-FDJ77DTR.js.map +1 -0
  218. package/dist/chunk-FG3PDWE3.js +31 -0
  219. package/dist/chunk-FG3PDWE3.js.map +1 -0
  220. package/dist/chunk-FHDJKH2A.js +2 -0
  221. package/dist/chunk-FHDJKH2A.js.map +1 -0
  222. package/dist/chunk-FLCQKC64.js +97 -0
  223. package/dist/chunk-FLCQKC64.js.map +1 -0
  224. package/dist/chunk-FPLZ24MK.js +2 -0
  225. package/dist/chunk-FPLZ24MK.js.map +1 -0
  226. package/dist/chunk-FRFSDZIN.js +2 -0
  227. package/dist/chunk-FRFSDZIN.js.map +1 -0
  228. package/dist/chunk-FXC64HLD.js +137 -0
  229. package/dist/chunk-FXC64HLD.js.map +1 -0
  230. package/dist/chunk-FXWWDMMP.js +55 -0
  231. package/dist/chunk-FXWWDMMP.js.map +1 -0
  232. package/dist/chunk-FZEG2R3E.js +30 -0
  233. package/dist/chunk-FZEG2R3E.js.map +1 -0
  234. package/dist/chunk-G3OTDYCD.js +53 -0
  235. package/dist/chunk-G3OTDYCD.js.map +1 -0
  236. package/dist/chunk-G72UOVKS.js +2 -0
  237. package/dist/chunk-G72UOVKS.js.map +1 -0
  238. package/dist/chunk-GAI4NEPU.js +151 -0
  239. package/dist/chunk-GAI4NEPU.js.map +1 -0
  240. package/dist/chunk-GMXSCEYN.js +24 -0
  241. package/dist/chunk-GMXSCEYN.js.map +1 -0
  242. package/dist/chunk-GTBVTLZJ.js +54 -0
  243. package/dist/chunk-GTBVTLZJ.js.map +1 -0
  244. package/dist/chunk-GTDCC4YX.js +197 -0
  245. package/dist/chunk-GTDCC4YX.js.map +1 -0
  246. package/dist/chunk-GV6GQXKX.js +176 -0
  247. package/dist/chunk-GV6GQXKX.js.map +1 -0
  248. package/dist/chunk-GWHO5ACE.js +637 -0
  249. package/dist/chunk-GWHO5ACE.js.map +1 -0
  250. package/dist/chunk-H5XSI63P.js +2 -0
  251. package/dist/chunk-H5XSI63P.js.map +1 -0
  252. package/dist/chunk-HANBQNW3.js +1498 -0
  253. package/dist/chunk-HANBQNW3.js.map +1 -0
  254. package/dist/chunk-HCU2JHPH.js +169 -0
  255. package/dist/chunk-HCU2JHPH.js.map +1 -0
  256. package/dist/chunk-HDDXP2J7.js +2 -0
  257. package/dist/chunk-HDDXP2J7.js.map +1 -0
  258. package/dist/chunk-HDS64Z5L.js +54 -0
  259. package/dist/chunk-HDS64Z5L.js.map +1 -0
  260. package/dist/chunk-HF6BGFUV.js +78 -0
  261. package/dist/chunk-HF6BGFUV.js.map +1 -0
  262. package/dist/chunk-HHVULJGX.js +2 -0
  263. package/dist/chunk-HHVULJGX.js.map +1 -0
  264. package/dist/chunk-HHZJALGA.js +163 -0
  265. package/dist/chunk-HHZJALGA.js.map +1 -0
  266. package/dist/chunk-HLMFRCFE.js +2 -0
  267. package/dist/chunk-HLMFRCFE.js.map +1 -0
  268. package/dist/chunk-HND6FAMX.js +75 -0
  269. package/dist/chunk-HND6FAMX.js.map +1 -0
  270. package/dist/chunk-HNLYRHAU.js +74 -0
  271. package/dist/chunk-HNLYRHAU.js.map +1 -0
  272. package/dist/chunk-HPUPDT4Q.js +2 -0
  273. package/dist/chunk-HPUPDT4Q.js.map +1 -0
  274. package/dist/chunk-HUIYDDDL.js +189 -0
  275. package/dist/chunk-HUIYDDDL.js.map +1 -0
  276. package/dist/chunk-HWVU636Q.js +787 -0
  277. package/dist/chunk-HWVU636Q.js.map +1 -0
  278. package/dist/chunk-HXQ4MDCH.js +296 -0
  279. package/dist/chunk-HXQ4MDCH.js.map +1 -0
  280. package/dist/chunk-HZPNST7D.js +2 -0
  281. package/dist/chunk-HZPNST7D.js.map +1 -0
  282. package/dist/chunk-I3U52BDH.js +36 -0
  283. package/dist/chunk-I3U52BDH.js.map +1 -0
  284. package/dist/chunk-I6O6ACCH.js +2 -0
  285. package/dist/chunk-I6O6ACCH.js.map +1 -0
  286. package/dist/chunk-IE5GWE72.js +177 -0
  287. package/dist/chunk-IE5GWE72.js.map +1 -0
  288. package/dist/chunk-IIY5JRNW.js +93 -0
  289. package/dist/chunk-IIY5JRNW.js.map +1 -0
  290. package/dist/chunk-IM5VJP6T.js +2 -0
  291. package/dist/chunk-IM5VJP6T.js.map +1 -0
  292. package/dist/chunk-IRUZDWJ3.js +218 -0
  293. package/dist/chunk-IRUZDWJ3.js.map +1 -0
  294. package/dist/chunk-ISWUCXEZ.js +2 -0
  295. package/dist/chunk-ISWUCXEZ.js.map +1 -0
  296. package/dist/chunk-IUQ474IC.js +2 -0
  297. package/dist/chunk-IUQ474IC.js.map +1 -0
  298. package/dist/chunk-IVEDMK5U.js +61 -0
  299. package/dist/chunk-IVEDMK5U.js.map +1 -0
  300. package/dist/chunk-IY23F2Y5.js +2 -0
  301. package/dist/chunk-IY23F2Y5.js.map +1 -0
  302. package/dist/chunk-JCRBDA66.js +2 -0
  303. package/dist/chunk-JCRBDA66.js.map +1 -0
  304. package/dist/chunk-JTY3REOB.js +76 -0
  305. package/dist/chunk-JTY3REOB.js.map +1 -0
  306. package/dist/chunk-JVCIAEFT.js +68 -0
  307. package/dist/chunk-JVCIAEFT.js.map +1 -0
  308. package/dist/chunk-JWWJ2Z5C.js +2 -0
  309. package/dist/chunk-JWWJ2Z5C.js.map +1 -0
  310. package/dist/chunk-K2GLXCTG.js +2 -0
  311. package/dist/chunk-K2GLXCTG.js.map +1 -0
  312. package/dist/chunk-K4V2ELUZ.js +36 -0
  313. package/dist/chunk-K4V2ELUZ.js.map +1 -0
  314. package/dist/chunk-KAAJL2HA.js +327 -0
  315. package/dist/chunk-KAAJL2HA.js.map +1 -0
  316. package/dist/chunk-KBWHHAI3.js +246 -0
  317. package/dist/chunk-KBWHHAI3.js.map +1 -0
  318. package/dist/chunk-KK2TIWTF.js +54 -0
  319. package/dist/chunk-KK2TIWTF.js.map +1 -0
  320. package/dist/chunk-KPZFLTZ2.js +61 -0
  321. package/dist/chunk-KPZFLTZ2.js.map +1 -0
  322. package/dist/chunk-KRVSD4OK.js +2 -0
  323. package/dist/chunk-KRVSD4OK.js.map +1 -0
  324. package/dist/chunk-KXYL3CUS.js +74 -0
  325. package/dist/chunk-KXYL3CUS.js.map +1 -0
  326. package/dist/chunk-L37QZALU.js +17 -0
  327. package/dist/chunk-L37QZALU.js.map +1 -0
  328. package/dist/chunk-L3SHPHLK.js +35 -0
  329. package/dist/chunk-L3SHPHLK.js.map +1 -0
  330. package/dist/chunk-L5O2O67Y.js +164 -0
  331. package/dist/chunk-L5O2O67Y.js.map +1 -0
  332. package/dist/chunk-L66VJIRD.js +2 -0
  333. package/dist/chunk-L66VJIRD.js.map +1 -0
  334. package/dist/chunk-L6A3RXCU.js +140 -0
  335. package/dist/chunk-L6A3RXCU.js.map +1 -0
  336. package/dist/chunk-LDOCY4SU.js +68 -0
  337. package/dist/chunk-LDOCY4SU.js.map +1 -0
  338. package/dist/chunk-LG33MONJ.js +74 -0
  339. package/dist/chunk-LG33MONJ.js.map +1 -0
  340. package/dist/chunk-LJGWA2XL.js +2 -0
  341. package/dist/chunk-LJGWA2XL.js.map +1 -0
  342. package/dist/chunk-LLQWLZ75.js +2 -0
  343. package/dist/chunk-LLQWLZ75.js.map +1 -0
  344. package/dist/chunk-LLYLDZXC.js +54 -0
  345. package/dist/chunk-LLYLDZXC.js.map +1 -0
  346. package/dist/chunk-LMV225AS.js +39 -0
  347. package/dist/chunk-LMV225AS.js.map +1 -0
  348. package/dist/chunk-LSYVAOSH.js +2 -0
  349. package/dist/chunk-LSYVAOSH.js.map +1 -0
  350. package/dist/chunk-LYVBDMDQ.js +2 -0
  351. package/dist/chunk-LYVBDMDQ.js.map +1 -0
  352. package/dist/chunk-M2KNQZUL.js +73 -0
  353. package/dist/chunk-M2KNQZUL.js.map +1 -0
  354. package/dist/chunk-M3WSUFD4.js +2 -0
  355. package/dist/chunk-M3WSUFD4.js.map +1 -0
  356. package/dist/chunk-M5WPZXBA.js +118 -0
  357. package/dist/chunk-M5WPZXBA.js.map +1 -0
  358. package/dist/chunk-MDQYRES4.js +796 -0
  359. package/dist/chunk-MDQYRES4.js.map +1 -0
  360. package/dist/chunk-MIXCXZWT.js +2 -0
  361. package/dist/chunk-MIXCXZWT.js.map +1 -0
  362. package/dist/chunk-MJAIURHO.js +56 -0
  363. package/dist/chunk-MJAIURHO.js.map +1 -0
  364. package/dist/chunk-MLGBLKUH.js +2 -0
  365. package/dist/chunk-MLGBLKUH.js.map +1 -0
  366. package/dist/chunk-MNS2VWHD.js +2 -0
  367. package/dist/chunk-MNS2VWHD.js.map +1 -0
  368. package/dist/chunk-MPMMU3QI.js +2 -0
  369. package/dist/chunk-MPMMU3QI.js.map +1 -0
  370. package/dist/chunk-MRBDJASL.js +97 -0
  371. package/dist/chunk-MRBDJASL.js.map +1 -0
  372. package/dist/chunk-MRWOHWEH.js +2 -0
  373. package/dist/chunk-MRWOHWEH.js.map +1 -0
  374. package/dist/chunk-MY5H6D5Y.js +245 -0
  375. package/dist/chunk-MY5H6D5Y.js.map +1 -0
  376. package/dist/chunk-MZDL7N52.js +2 -0
  377. package/dist/chunk-MZDL7N52.js.map +1 -0
  378. package/dist/chunk-N7PJTMRL.js +2 -0
  379. package/dist/chunk-N7PJTMRL.js.map +1 -0
  380. package/dist/chunk-NMGNXW3J.js +98 -0
  381. package/dist/chunk-NMGNXW3J.js.map +1 -0
  382. package/dist/chunk-NRNIUM75.js +2 -0
  383. package/dist/chunk-NRNIUM75.js.map +1 -0
  384. package/dist/chunk-NRPZ3BH4.js +85 -0
  385. package/dist/chunk-NRPZ3BH4.js.map +1 -0
  386. package/dist/chunk-NXCOVGDU.js +100 -0
  387. package/dist/chunk-NXCOVGDU.js.map +1 -0
  388. package/dist/chunk-NZUKZRT7.js +201 -0
  389. package/dist/chunk-NZUKZRT7.js.map +1 -0
  390. package/dist/chunk-O3JWMB6O.js +20 -0
  391. package/dist/chunk-O3JWMB6O.js.map +1 -0
  392. package/dist/chunk-O6V65J5J.js +81 -0
  393. package/dist/chunk-O6V65J5J.js.map +1 -0
  394. package/dist/chunk-OEPN373X.js +2 -0
  395. package/dist/chunk-OEPN373X.js.map +1 -0
  396. package/dist/chunk-OGTILHKP.js +355 -0
  397. package/dist/chunk-OGTILHKP.js.map +1 -0
  398. package/dist/chunk-OITCRC5D.js +2 -0
  399. package/dist/chunk-OITCRC5D.js.map +1 -0
  400. package/dist/chunk-OKV3N7QK.js +2 -0
  401. package/dist/chunk-OKV3N7QK.js.map +1 -0
  402. package/dist/chunk-OKY7ACZK.js +31 -0
  403. package/dist/chunk-OKY7ACZK.js.map +1 -0
  404. package/dist/chunk-ON2E7XHD.js +51 -0
  405. package/dist/chunk-ON2E7XHD.js.map +1 -0
  406. package/dist/chunk-OPBSVEMX.js +192 -0
  407. package/dist/chunk-OPBSVEMX.js.map +1 -0
  408. package/dist/chunk-OR4NVFPH.js +2 -0
  409. package/dist/chunk-OR4NVFPH.js.map +1 -0
  410. package/dist/chunk-OYKS7YHE.js +2 -0
  411. package/dist/chunk-OYKS7YHE.js.map +1 -0
  412. package/dist/chunk-PGKQZBLZ.js +55 -0
  413. package/dist/chunk-PGKQZBLZ.js.map +1 -0
  414. package/dist/chunk-PHAENHGL.js +19 -0
  415. package/dist/chunk-PHAENHGL.js.map +1 -0
  416. package/dist/chunk-PLCQZBZS.js +63 -0
  417. package/dist/chunk-PLCQZBZS.js.map +1 -0
  418. package/dist/chunk-PQZD5W3E.js +170 -0
  419. package/dist/chunk-PQZD5W3E.js.map +1 -0
  420. package/dist/chunk-PSBNQZB4.js +2 -0
  421. package/dist/chunk-PSBNQZB4.js.map +1 -0
  422. package/dist/chunk-PSXUEWUS.js +87 -0
  423. package/dist/chunk-PSXUEWUS.js.map +1 -0
  424. package/dist/chunk-PT5P4AAU.js +128 -0
  425. package/dist/chunk-PT5P4AAU.js.map +1 -0
  426. package/dist/chunk-PUACHQRH.js +31 -0
  427. package/dist/chunk-PUACHQRH.js.map +1 -0
  428. package/dist/chunk-QDJHUNBQ.js +2 -0
  429. package/dist/chunk-QDJHUNBQ.js.map +1 -0
  430. package/dist/chunk-QF6UWWDY.js +125 -0
  431. package/dist/chunk-QF6UWWDY.js.map +1 -0
  432. package/dist/chunk-QKZX5HDY.js +209 -0
  433. package/dist/chunk-QKZX5HDY.js.map +1 -0
  434. package/dist/chunk-QLM3KTAQ.js +100 -0
  435. package/dist/chunk-QLM3KTAQ.js.map +1 -0
  436. package/dist/chunk-QODOFLHL.js +2 -0
  437. package/dist/chunk-QODOFLHL.js.map +1 -0
  438. package/dist/chunk-QRGYKV4J.js +2 -0
  439. package/dist/chunk-QRGYKV4J.js.map +1 -0
  440. package/dist/chunk-R27VUCWR.js +140 -0
  441. package/dist/chunk-R27VUCWR.js.map +1 -0
  442. package/dist/chunk-R5JYMCEA.js +2 -0
  443. package/dist/chunk-R5JYMCEA.js.map +1 -0
  444. package/dist/chunk-RB5AWLDJ.js +26 -0
  445. package/dist/chunk-RB5AWLDJ.js.map +1 -0
  446. package/dist/chunk-RF7JSNXJ.js +2 -0
  447. package/dist/chunk-RF7JSNXJ.js.map +1 -0
  448. package/dist/chunk-RFTC5UVB.js +126 -0
  449. package/dist/chunk-RFTC5UVB.js.map +1 -0
  450. package/dist/chunk-RHVYRQN4.js +201 -0
  451. package/dist/chunk-RHVYRQN4.js.map +1 -0
  452. package/dist/chunk-RHXVQZOW.js +2 -0
  453. package/dist/chunk-RHXVQZOW.js.map +1 -0
  454. package/dist/chunk-RIYDAMSQ.js +25 -0
  455. package/dist/chunk-RIYDAMSQ.js.map +1 -0
  456. package/dist/chunk-RMSMTLXH.js +2 -0
  457. package/dist/chunk-RMSMTLXH.js.map +1 -0
  458. package/dist/chunk-RRYWMYGI.js +14 -0
  459. package/dist/chunk-RRYWMYGI.js.map +1 -0
  460. package/dist/chunk-RTHCX2TG.js +59 -0
  461. package/dist/chunk-RTHCX2TG.js.map +1 -0
  462. package/dist/chunk-RYPK72YP.js +395 -0
  463. package/dist/chunk-RYPK72YP.js.map +1 -0
  464. package/dist/chunk-SCCBEFVK.js +187 -0
  465. package/dist/chunk-SCCBEFVK.js.map +1 -0
  466. package/dist/chunk-SEGTBIR4.js +110 -0
  467. package/dist/chunk-SEGTBIR4.js.map +1 -0
  468. package/dist/chunk-SGBCLZQF.js +38 -0
  469. package/dist/chunk-SGBCLZQF.js.map +1 -0
  470. package/dist/chunk-SLDJYJEG.js +133 -0
  471. package/dist/chunk-SLDJYJEG.js.map +1 -0
  472. package/dist/chunk-SMTAPQEQ.js +2 -0
  473. package/dist/chunk-SMTAPQEQ.js.map +1 -0
  474. package/dist/chunk-SS6EOZKZ.js +2 -0
  475. package/dist/chunk-SS6EOZKZ.js.map +1 -0
  476. package/dist/chunk-SSQG36MH.js +226 -0
  477. package/dist/chunk-SSQG36MH.js.map +1 -0
  478. package/dist/chunk-SWQCCR6Q.js +140 -0
  479. package/dist/chunk-SWQCCR6Q.js.map +1 -0
  480. package/dist/chunk-T2XEMEN2.js +2 -0
  481. package/dist/chunk-T2XEMEN2.js.map +1 -0
  482. package/dist/chunk-T7JOWG2A.js +10 -0
  483. package/dist/chunk-T7JOWG2A.js.map +1 -0
  484. package/dist/chunk-TAQI4JTE.js +12 -0
  485. package/dist/chunk-TAQI4JTE.js.map +1 -0
  486. package/dist/chunk-TNOANK34.js +4483 -0
  487. package/dist/chunk-TNOANK34.js.map +1 -0
  488. package/dist/chunk-U5BZXNHW.js +80 -0
  489. package/dist/chunk-U5BZXNHW.js.map +1 -0
  490. package/dist/chunk-U756JCDK.js +27 -0
  491. package/dist/chunk-U756JCDK.js.map +1 -0
  492. package/dist/chunk-U7QYCYHC.js +2 -0
  493. package/dist/chunk-U7QYCYHC.js.map +1 -0
  494. package/dist/chunk-UANAVLMS.js +2 -0
  495. package/dist/chunk-UANAVLMS.js.map +1 -0
  496. package/dist/chunk-UCEVPLR5.js +2 -0
  497. package/dist/chunk-UCEVPLR5.js.map +1 -0
  498. package/dist/chunk-UCQDLRHR.js +31 -0
  499. package/dist/chunk-UCQDLRHR.js.map +1 -0
  500. package/dist/chunk-UFF7LLGU.js +2 -0
  501. package/dist/chunk-UFF7LLGU.js.map +1 -0
  502. package/dist/chunk-UG2T7LMX.js +198 -0
  503. package/dist/chunk-UG2T7LMX.js.map +1 -0
  504. package/dist/chunk-UG5TKXTK.js +2 -0
  505. package/dist/chunk-UG5TKXTK.js.map +1 -0
  506. package/dist/chunk-UPGIQXUY.js +24 -0
  507. package/dist/chunk-UPGIQXUY.js.map +1 -0
  508. package/dist/chunk-UQPW7INX.js +91 -0
  509. package/dist/chunk-UQPW7INX.js.map +1 -0
  510. package/dist/chunk-UQRYTMR7.js +2 -0
  511. package/dist/chunk-UQRYTMR7.js.map +1 -0
  512. package/dist/chunk-USI4LB3N.js +2 -0
  513. package/dist/chunk-USI4LB3N.js.map +1 -0
  514. package/dist/chunk-UUSOIPM2.js +69 -0
  515. package/dist/chunk-UUSOIPM2.js.map +1 -0
  516. package/dist/chunk-V2S5DINS.js +2 -0
  517. package/dist/chunk-V2S5DINS.js.map +1 -0
  518. package/dist/chunk-V3EQ6ACC.js +2 -0
  519. package/dist/chunk-V3EQ6ACC.js.map +1 -0
  520. package/dist/chunk-V5QCJHDA.js +173 -0
  521. package/dist/chunk-V5QCJHDA.js.map +1 -0
  522. package/dist/chunk-V6U75PIG.js +147 -0
  523. package/dist/chunk-V6U75PIG.js.map +1 -0
  524. package/dist/chunk-VC4GKLZL.js +111 -0
  525. package/dist/chunk-VC4GKLZL.js.map +1 -0
  526. package/dist/chunk-VFS52GGI.js +2 -0
  527. package/dist/chunk-VFS52GGI.js.map +1 -0
  528. package/dist/chunk-VH7GG77B.js +2 -0
  529. package/dist/chunk-VH7GG77B.js.map +1 -0
  530. package/dist/chunk-VHLPJ4XW.js +2 -0
  531. package/dist/chunk-VHLPJ4XW.js.map +1 -0
  532. package/dist/chunk-VLE5THFD.js +2 -0
  533. package/dist/chunk-VLE5THFD.js.map +1 -0
  534. package/dist/chunk-VORFRWM5.js +2 -0
  535. package/dist/chunk-VORFRWM5.js.map +1 -0
  536. package/dist/chunk-VQ2T3OEC.js +27 -0
  537. package/dist/chunk-VQ2T3OEC.js.map +1 -0
  538. package/dist/chunk-W26KFY35.js +32 -0
  539. package/dist/chunk-W26KFY35.js.map +1 -0
  540. package/dist/chunk-W35X6J5P.js +232 -0
  541. package/dist/chunk-W35X6J5P.js.map +1 -0
  542. package/dist/chunk-W7I2X6VI.js +2 -0
  543. package/dist/chunk-W7I2X6VI.js.map +1 -0
  544. package/dist/chunk-W7OIVERI.js +31 -0
  545. package/dist/chunk-W7OIVERI.js.map +1 -0
  546. package/dist/chunk-WEEVXQIM.js +45 -0
  547. package/dist/chunk-WEEVXQIM.js.map +1 -0
  548. package/dist/chunk-WEM6XJ7Z.js +75 -0
  549. package/dist/chunk-WEM6XJ7Z.js.map +1 -0
  550. package/dist/chunk-WKNOKJA3.js +42 -0
  551. package/dist/chunk-WKNOKJA3.js.map +1 -0
  552. package/dist/chunk-WNIVCHDP.js +2 -0
  553. package/dist/chunk-WNIVCHDP.js.map +1 -0
  554. package/dist/chunk-WOMO5CZ7.js +2 -0
  555. package/dist/chunk-WOMO5CZ7.js.map +1 -0
  556. package/dist/chunk-WYENWW3Y.js +2 -0
  557. package/dist/chunk-WYENWW3Y.js.map +1 -0
  558. package/dist/chunk-X4FE7UKP.js +2 -0
  559. package/dist/chunk-X4FE7UKP.js.map +1 -0
  560. package/dist/chunk-XGX3UFLD.js +2 -0
  561. package/dist/chunk-XGX3UFLD.js.map +1 -0
  562. package/dist/chunk-XGXCMA5M.js +2 -0
  563. package/dist/chunk-XGXCMA5M.js.map +1 -0
  564. package/dist/chunk-XJQADN6S.js +41 -0
  565. package/dist/chunk-XJQADN6S.js.map +1 -0
  566. package/dist/chunk-XYFEQHEM.js +2 -0
  567. package/dist/chunk-XYFEQHEM.js.map +1 -0
  568. package/dist/chunk-Y33ZFTMR.js +163 -0
  569. package/dist/chunk-Y33ZFTMR.js.map +1 -0
  570. package/dist/chunk-YA2QGLUL.js +32 -0
  571. package/dist/chunk-YA2QGLUL.js.map +1 -0
  572. package/dist/chunk-YCFOFNQF.js +28 -0
  573. package/dist/chunk-YCFOFNQF.js.map +1 -0
  574. package/dist/chunk-YFGFNFVW.js +59 -0
  575. package/dist/chunk-YFGFNFVW.js.map +1 -0
  576. package/dist/chunk-YFKKMDJL.js +35 -0
  577. package/dist/chunk-YFKKMDJL.js.map +1 -0
  578. package/dist/chunk-YHVXYOL6.js +80 -0
  579. package/dist/chunk-YHVXYOL6.js.map +1 -0
  580. package/dist/chunk-YIFB24WW.js +37 -0
  581. package/dist/chunk-YIFB24WW.js.map +1 -0
  582. package/dist/chunk-YK4H7VWM.js +2 -0
  583. package/dist/chunk-YK4H7VWM.js.map +1 -0
  584. package/dist/chunk-YMFEBGTU.js +2 -0
  585. package/dist/chunk-YMFEBGTU.js.map +1 -0
  586. package/dist/chunk-YUFDC6RW.js +55 -0
  587. package/dist/chunk-YUFDC6RW.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-ZALGMUSW.js +236 -0
  595. package/dist/chunk-ZALGMUSW.js.map +1 -0
  596. package/dist/chunk-ZE2H4J3P.js +2 -0
  597. package/dist/chunk-ZE2H4J3P.js.map +1 -0
  598. package/dist/chunk-ZEMTALKO.js +2 -0
  599. package/dist/chunk-ZEMTALKO.js.map +1 -0
  600. package/dist/chunk-ZFMM2NLA.js +169 -0
  601. package/dist/chunk-ZFMM2NLA.js.map +1 -0
  602. package/dist/chunk-ZI2OXD6L.js +244 -0
  603. package/dist/chunk-ZI2OXD6L.js.map +1 -0
  604. package/dist/chunk-ZRMF4YAS.js +158 -0
  605. package/dist/chunk-ZRMF4YAS.js.map +1 -0
  606. package/dist/chunk-ZSYT5H6U.js +178 -0
  607. package/dist/chunk-ZSYT5H6U.js.map +1 -0
  608. package/dist/chunk-ZXVPEQM5.js +2 -0
  609. package/dist/chunk-ZXVPEQM5.js.map +1 -0
  610. package/dist/components/accordion/accordion.js +16 -0
  611. package/dist/components/accordion/accordion.js.map +1 -0
  612. package/dist/components/accordion/index.js +17 -0
  613. package/dist/components/accordion/index.js.map +1 -0
  614. package/dist/components/advanced-group/advanced-group.js +18 -0
  615. package/dist/components/advanced-group/advanced-group.js.map +1 -0
  616. package/dist/components/advanced-group/index.js +18 -0
  617. package/dist/components/advanced-group/index.js.map +1 -0
  618. package/dist/components/alert/alert.js +16 -0
  619. package/dist/components/alert/alert.js.map +1 -0
  620. package/dist/components/alert/index.js +17 -0
  621. package/dist/components/alert/index.js.map +1 -0
  622. package/dist/components/alert-dialog/alert-dialog.js +30 -0
  623. package/dist/components/alert-dialog/alert-dialog.js.map +1 -0
  624. package/dist/components/alert-dialog/index.js +31 -0
  625. package/dist/components/alert-dialog/index.js.map +1 -0
  626. package/dist/components/ambient-field/ambient-field.css +59 -0
  627. package/dist/components/ambient-field/ambient-field.css.map +1 -0
  628. package/dist/components/ambient-field/ambient-field.js +15 -0
  629. package/dist/components/ambient-field/ambient-field.js.map +1 -0
  630. package/dist/components/ambient-field/index.css +59 -0
  631. package/dist/components/ambient-field/index.css.map +1 -0
  632. package/dist/components/ambient-field/index.js +16 -0
  633. package/dist/components/ambient-field/index.js.map +1 -0
  634. package/dist/components/app-shell/app-shell.js +14 -0
  635. package/dist/components/app-shell/app-shell.js.map +1 -0
  636. package/dist/components/app-shell/index.js +15 -0
  637. package/dist/components/app-shell/index.js.map +1 -0
  638. package/dist/components/app-sidebar/app-sidebar.js +31 -0
  639. package/dist/components/app-sidebar/app-sidebar.js.map +1 -0
  640. package/dist/components/app-sidebar/index.js +31 -0
  641. package/dist/components/app-sidebar/index.js.map +1 -0
  642. package/dist/components/aspect-ratio/aspect-ratio.js +9 -0
  643. package/dist/components/aspect-ratio/aspect-ratio.js.map +1 -0
  644. package/dist/components/aspect-ratio/index.js +10 -0
  645. package/dist/components/aspect-ratio/index.js.map +1 -0
  646. package/dist/components/attribution-panel/attribution-panel.js +24 -0
  647. package/dist/components/attribution-panel/attribution-panel.js.map +1 -0
  648. package/dist/components/attribution-panel/attribution-types.js +2 -0
  649. package/dist/components/attribution-panel/attribution-types.js.map +1 -0
  650. package/dist/components/attribution-panel/attributions.generated.js +9 -0
  651. package/dist/components/attribution-panel/attributions.generated.js.map +1 -0
  652. package/dist/components/attribution-panel/index.js +24 -0
  653. package/dist/components/attribution-panel/index.js.map +1 -0
  654. package/dist/components/avatar/avatar.js +14 -0
  655. package/dist/components/avatar/avatar.js.map +1 -0
  656. package/dist/components/avatar/index.js +15 -0
  657. package/dist/components/avatar/index.js.map +1 -0
  658. package/dist/components/badge/badge.js +16 -0
  659. package/dist/components/badge/badge.js.map +1 -0
  660. package/dist/components/badge/index.js +13 -0
  661. package/dist/components/badge/index.js.map +1 -0
  662. package/dist/components/bento-grid/bento-grid.js +16 -0
  663. package/dist/components/bento-grid/bento-grid.js.map +1 -0
  664. package/dist/components/bento-grid/index.js +16 -0
  665. package/dist/components/bento-grid/index.js.map +1 -0
  666. package/dist/components/bounded-number/bounded-number.js +24 -0
  667. package/dist/components/bounded-number/bounded-number.js.map +1 -0
  668. package/dist/components/bounded-number/index.js +24 -0
  669. package/dist/components/bounded-number/index.js.map +1 -0
  670. package/dist/components/breadcrumb/breadcrumb.js +28 -0
  671. package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
  672. package/dist/components/breadcrumb/index.js +26 -0
  673. package/dist/components/breadcrumb/index.js.map +1 -0
  674. package/dist/components/button/button.js +12 -0
  675. package/dist/components/button/button.js.map +1 -0
  676. package/dist/components/button/index.js +13 -0
  677. package/dist/components/button/index.js.map +1 -0
  678. package/dist/components/button-group/button-group.js +18 -0
  679. package/dist/components/button-group/button-group.js.map +1 -0
  680. package/dist/components/button-group/index.js +19 -0
  681. package/dist/components/button-group/index.js.map +1 -0
  682. package/dist/components/calendar/calendar.js +12 -0
  683. package/dist/components/calendar/calendar.js.map +1 -0
  684. package/dist/components/calendar/index.js +13 -0
  685. package/dist/components/calendar/index.js.map +1 -0
  686. package/dist/components/card/card.js +27 -0
  687. package/dist/components/card/card.js.map +1 -0
  688. package/dist/components/card/index.js +27 -0
  689. package/dist/components/card/index.js.map +1 -0
  690. package/dist/components/carousel/carousel.js +24 -0
  691. package/dist/components/carousel/carousel.js.map +1 -0
  692. package/dist/components/carousel/index.js +24 -0
  693. package/dist/components/carousel/index.js.map +1 -0
  694. package/dist/components/change-review/change-review.js +34 -0
  695. package/dist/components/change-review/change-review.js.map +1 -0
  696. package/dist/components/change-review/index.js +34 -0
  697. package/dist/components/change-review/index.js.map +1 -0
  698. package/dist/components/checkbox/checkbox.js +10 -0
  699. package/dist/components/checkbox/checkbox.js.map +1 -0
  700. package/dist/components/checkbox/index.js +11 -0
  701. package/dist/components/checkbox/index.js.map +1 -0
  702. package/dist/components/collapsible/collapsible.js +14 -0
  703. package/dist/components/collapsible/collapsible.js.map +1 -0
  704. package/dist/components/collapsible/index.js +15 -0
  705. package/dist/components/collapsible/index.js.map +1 -0
  706. package/dist/components/collapsible-panel/index.js +11 -0
  707. package/dist/components/collapsible-panel/index.js.map +1 -0
  708. package/dist/components/collapsible-panel/use-collapsible-panel.js +11 -0
  709. package/dist/components/collapsible-panel/use-collapsible-panel.js.map +1 -0
  710. package/dist/components/color-picker/color-picker.js +18 -0
  711. package/dist/components/color-picker/color-picker.js.map +1 -0
  712. package/dist/components/color-picker/index.js +18 -0
  713. package/dist/components/color-picker/index.js.map +1 -0
  714. package/dist/components/combobox/combobox.js +28 -0
  715. package/dist/components/combobox/combobox.js.map +1 -0
  716. package/dist/components/combobox/index.js +28 -0
  717. package/dist/components/combobox/index.js.map +1 -0
  718. package/dist/components/command/command.js +39 -0
  719. package/dist/components/command/command.js.map +1 -0
  720. package/dist/components/command/index.js +39 -0
  721. package/dist/components/command/index.js.map +1 -0
  722. package/dist/components/command-chip/command-chip.js +17 -0
  723. package/dist/components/command-chip/command-chip.js.map +1 -0
  724. package/dist/components/command-chip/index.js +17 -0
  725. package/dist/components/command-chip/index.js.map +1 -0
  726. package/dist/components/command-trigger/command-trigger.js +12 -0
  727. package/dist/components/command-trigger/command-trigger.js.map +1 -0
  728. package/dist/components/command-trigger/index.js +13 -0
  729. package/dist/components/command-trigger/index.js.map +1 -0
  730. package/dist/components/confirm-dialog/confirm-dialog.js +20 -0
  731. package/dist/components/confirm-dialog/confirm-dialog.js.map +1 -0
  732. package/dist/components/confirm-dialog/index.js +20 -0
  733. package/dist/components/confirm-dialog/index.js.map +1 -0
  734. package/dist/components/context-menu/context-menu.js +36 -0
  735. package/dist/components/context-menu/context-menu.js.map +1 -0
  736. package/dist/components/context-menu/index.js +37 -0
  737. package/dist/components/context-menu/index.js.map +1 -0
  738. package/dist/components/context-rail/context-rail.js +35 -0
  739. package/dist/components/context-rail/context-rail.js.map +1 -0
  740. package/dist/components/context-rail/index.js +35 -0
  741. package/dist/components/context-rail/index.js.map +1 -0
  742. package/dist/components/copyable-value/copyable-value.js +19 -0
  743. package/dist/components/copyable-value/copyable-value.js.map +1 -0
  744. package/dist/components/copyable-value/index.js +17 -0
  745. package/dist/components/copyable-value/index.js.map +1 -0
  746. package/dist/components/date-picker/date-picker.js +21 -0
  747. package/dist/components/date-picker/date-picker.js.map +1 -0
  748. package/dist/components/date-picker/index.js +21 -0
  749. package/dist/components/date-picker/index.js.map +1 -0
  750. package/dist/components/date-range-picker/date-range-picker.js +22 -0
  751. package/dist/components/date-range-picker/date-range-picker.js.map +1 -0
  752. package/dist/components/date-range-picker/index.js +22 -0
  753. package/dist/components/date-range-picker/index.js.map +1 -0
  754. package/dist/components/descriptions/descriptions.js +12 -0
  755. package/dist/components/descriptions/descriptions.js.map +1 -0
  756. package/dist/components/descriptions/index.js +13 -0
  757. package/dist/components/descriptions/index.js.map +1 -0
  758. package/dist/components/dialog/dialog.js +41 -0
  759. package/dist/components/dialog/dialog.js.map +1 -0
  760. package/dist/components/dialog/index.js +45 -0
  761. package/dist/components/dialog/index.js.map +1 -0
  762. package/dist/components/dialog/use-dialog-dismiss-guard.js +10 -0
  763. package/dist/components/dialog/use-dialog-dismiss-guard.js.map +1 -0
  764. package/dist/components/drafting-marks/drafting-marks.js +14 -0
  765. package/dist/components/drafting-marks/drafting-marks.js.map +1 -0
  766. package/dist/components/drafting-marks/index.js +15 -0
  767. package/dist/components/drafting-marks/index.js.map +1 -0
  768. package/dist/components/drawer/drawer.js +26 -0
  769. package/dist/components/drawer/drawer.js.map +1 -0
  770. package/dist/components/drawer/index.js +27 -0
  771. package/dist/components/drawer/index.js.map +1 -0
  772. package/dist/components/dropdown-menu/dropdown-menu.js +38 -0
  773. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -0
  774. package/dist/components/dropdown-menu/index.js +39 -0
  775. package/dist/components/dropdown-menu/index.js.map +1 -0
  776. package/dist/components/empty-state/empty-state.js +15 -0
  777. package/dist/components/empty-state/empty-state.js.map +1 -0
  778. package/dist/components/empty-state/index.js +16 -0
  779. package/dist/components/empty-state/index.js.map +1 -0
  780. package/dist/components/error-state/error-state.js +15 -0
  781. package/dist/components/error-state/error-state.js.map +1 -0
  782. package/dist/components/error-state/index.js +16 -0
  783. package/dist/components/error-state/index.js.map +1 -0
  784. package/dist/components/expand-dialog/expand-dialog.js +28 -0
  785. package/dist/components/expand-dialog/expand-dialog.js.map +1 -0
  786. package/dist/components/expand-dialog/index.js +28 -0
  787. package/dist/components/expand-dialog/index.js.map +1 -0
  788. package/dist/components/field/field-context.js +11 -0
  789. package/dist/components/field/field-context.js.map +1 -0
  790. package/dist/components/field/field.js +23 -0
  791. package/dist/components/field/field.js.map +1 -0
  792. package/dist/components/field/index.js +23 -0
  793. package/dist/components/field/index.js.map +1 -0
  794. package/dist/components/field-row/field-row.js +14 -0
  795. package/dist/components/field-row/field-row.js.map +1 -0
  796. package/dist/components/field-row/index.js +14 -0
  797. package/dist/components/field-row/index.js.map +1 -0
  798. package/dist/components/file-upload/file-upload.js +28 -0
  799. package/dist/components/file-upload/file-upload.js.map +1 -0
  800. package/dist/components/file-upload/index.js +26 -0
  801. package/dist/components/file-upload/index.js.map +1 -0
  802. package/dist/components/form/form.js +27 -0
  803. package/dist/components/form/form.js.map +1 -0
  804. package/dist/components/hover-card/hover-card.js +14 -0
  805. package/dist/components/hover-card/hover-card.js.map +1 -0
  806. package/dist/components/hover-card/index.js +15 -0
  807. package/dist/components/hover-card/index.js.map +1 -0
  808. package/dist/components/icon-button/icon-button.js +14 -0
  809. package/dist/components/icon-button/icon-button.js.map +1 -0
  810. package/dist/components/icon-button/index.js +15 -0
  811. package/dist/components/icon-button/index.js.map +1 -0
  812. package/dist/components/input/index.js +11 -0
  813. package/dist/components/input/index.js.map +1 -0
  814. package/dist/components/input/input.js +10 -0
  815. package/dist/components/input/input.js.map +1 -0
  816. package/dist/components/input-group/index.js +31 -0
  817. package/dist/components/input-group/index.js.map +1 -0
  818. package/dist/components/input-group/input-group.js +30 -0
  819. package/dist/components/input-group/input-group.js.map +1 -0
  820. package/dist/components/input-otp/index.js +17 -0
  821. package/dist/components/input-otp/index.js.map +1 -0
  822. package/dist/components/input-otp/input-otp.js +17 -0
  823. package/dist/components/input-otp/input-otp.js.map +1 -0
  824. package/dist/components/install-tabs/index.js +28 -0
  825. package/dist/components/install-tabs/index.js.map +1 -0
  826. package/dist/components/install-tabs/install-tabs.js +28 -0
  827. package/dist/components/install-tabs/install-tabs.js.map +1 -0
  828. package/dist/components/integration-matrix/index.js +26 -0
  829. package/dist/components/integration-matrix/index.js.map +1 -0
  830. package/dist/components/integration-matrix/integration-matrix.js +26 -0
  831. package/dist/components/integration-matrix/integration-matrix.js.map +1 -0
  832. package/dist/components/kbd/index.js +11 -0
  833. package/dist/components/kbd/index.js.map +1 -0
  834. package/dist/components/kbd/kbd.js +10 -0
  835. package/dist/components/kbd/kbd.js.map +1 -0
  836. package/dist/components/key-value-editor/index.js +18 -0
  837. package/dist/components/key-value-editor/index.js.map +1 -0
  838. package/dist/components/key-value-editor/key-value-editor.js +18 -0
  839. package/dist/components/key-value-editor/key-value-editor.js.map +1 -0
  840. package/dist/components/keyboard-shortcuts/index.js +25 -0
  841. package/dist/components/keyboard-shortcuts/index.js.map +1 -0
  842. package/dist/components/keyboard-shortcuts/keyboard-shortcuts.js +25 -0
  843. package/dist/components/keyboard-shortcuts/keyboard-shortcuts.js.map +1 -0
  844. package/dist/components/label/index.js +11 -0
  845. package/dist/components/label/index.js.map +1 -0
  846. package/dist/components/label/label.js +10 -0
  847. package/dist/components/label/label.js.map +1 -0
  848. package/dist/components/link-preview/index.js +14 -0
  849. package/dist/components/link-preview/index.js.map +1 -0
  850. package/dist/components/link-preview/link-preview.js +14 -0
  851. package/dist/components/link-preview/link-preview.js.map +1 -0
  852. package/dist/components/list-editor/index.js +18 -0
  853. package/dist/components/list-editor/index.js.map +1 -0
  854. package/dist/components/list-editor/list-editor.js +18 -0
  855. package/dist/components/list-editor/list-editor.js.map +1 -0
  856. package/dist/components/loading-state/index.js +16 -0
  857. package/dist/components/loading-state/index.js.map +1 -0
  858. package/dist/components/loading-state/loading-state.js +15 -0
  859. package/dist/components/loading-state/loading-state.js.map +1 -0
  860. package/dist/components/locale-provider/index.js +16 -0
  861. package/dist/components/locale-provider/index.js.map +1 -0
  862. package/dist/components/locale-provider/locale-provider.js +13 -0
  863. package/dist/components/locale-provider/locale-provider.js.map +1 -0
  864. package/dist/components/locale-provider/messages.js +10 -0
  865. package/dist/components/locale-provider/messages.js.map +1 -0
  866. package/dist/components/match-highlight/index.js +15 -0
  867. package/dist/components/match-highlight/index.js.map +1 -0
  868. package/dist/components/match-highlight/match-highlight.js +14 -0
  869. package/dist/components/match-highlight/match-highlight.js.map +1 -0
  870. package/dist/components/mention-input/index.js +46 -0
  871. package/dist/components/mention-input/index.js.map +1 -0
  872. package/dist/components/mention-input/mention-input.js +33 -0
  873. package/dist/components/mention-input/mention-input.js.map +1 -0
  874. package/dist/components/mention-input/mention-value.js +20 -0
  875. package/dist/components/mention-input/mention-value.js.map +1 -0
  876. package/dist/components/menubar/index.js +39 -0
  877. package/dist/components/menubar/index.js.map +1 -0
  878. package/dist/components/menubar/menubar.js +38 -0
  879. package/dist/components/menubar/menubar.js.map +1 -0
  880. package/dist/components/meter/index.js +15 -0
  881. package/dist/components/meter/index.js.map +1 -0
  882. package/dist/components/meter/meter.js +15 -0
  883. package/dist/components/meter/meter.js.map +1 -0
  884. package/dist/components/metric-card/index.js +24 -0
  885. package/dist/components/metric-card/index.js.map +1 -0
  886. package/dist/components/metric-card/metric-card.js +24 -0
  887. package/dist/components/metric-card/metric-card.js.map +1 -0
  888. package/dist/components/model-picker/index.js +37 -0
  889. package/dist/components/model-picker/index.js.map +1 -0
  890. package/dist/components/model-picker/model-picker-state.js +13 -0
  891. package/dist/components/model-picker/model-picker-state.js.map +1 -0
  892. package/dist/components/model-picker/model-picker.js +37 -0
  893. package/dist/components/model-picker/model-picker.js.map +1 -0
  894. package/dist/components/nav-main/index.js +33 -0
  895. package/dist/components/nav-main/index.js.map +1 -0
  896. package/dist/components/nav-main/nav-main.js +33 -0
  897. package/dist/components/nav-main/nav-main.js.map +1 -0
  898. package/dist/components/nav-notifications/index.js +20 -0
  899. package/dist/components/nav-notifications/index.js.map +1 -0
  900. package/dist/components/nav-notifications/nav-notifications.js +20 -0
  901. package/dist/components/nav-notifications/nav-notifications.js.map +1 -0
  902. package/dist/components/nav-user/index.js +35 -0
  903. package/dist/components/nav-user/index.js.map +1 -0
  904. package/dist/components/nav-user/nav-user.js +35 -0
  905. package/dist/components/nav-user/nav-user.js.map +1 -0
  906. package/dist/components/navigation-menu/index.js +25 -0
  907. package/dist/components/navigation-menu/index.js.map +1 -0
  908. package/dist/components/navigation-menu/navigation-menu.js +25 -0
  909. package/dist/components/navigation-menu/navigation-menu.js.map +1 -0
  910. package/dist/components/number-input/index.js +22 -0
  911. package/dist/components/number-input/index.js.map +1 -0
  912. package/dist/components/number-input/number-input.js +22 -0
  913. package/dist/components/number-input/number-input.js.map +1 -0
  914. package/dist/components/page-shell/index.js +11 -0
  915. package/dist/components/page-shell/index.js.map +1 -0
  916. package/dist/components/page-shell/page-shell.js +10 -0
  917. package/dist/components/page-shell/page-shell.js.map +1 -0
  918. package/dist/components/pagination/index.js +28 -0
  919. package/dist/components/pagination/index.js.map +1 -0
  920. package/dist/components/pagination/pagination.js +28 -0
  921. package/dist/components/pagination/pagination.js.map +1 -0
  922. package/dist/components/parallax-plane/index.css +17 -0
  923. package/dist/components/parallax-plane/index.css.map +1 -0
  924. package/dist/components/parallax-plane/index.js +18 -0
  925. package/dist/components/parallax-plane/index.js.map +1 -0
  926. package/dist/components/parallax-plane/parallax-plane.css +17 -0
  927. package/dist/components/parallax-plane/parallax-plane.css.map +1 -0
  928. package/dist/components/parallax-plane/parallax-plane.js +18 -0
  929. package/dist/components/parallax-plane/parallax-plane.js.map +1 -0
  930. package/dist/components/popover/index.js +17 -0
  931. package/dist/components/popover/index.js.map +1 -0
  932. package/dist/components/popover/popover.js +16 -0
  933. package/dist/components/popover/popover.js.map +1 -0
  934. package/dist/components/progress/index.js +13 -0
  935. package/dist/components/progress/index.js.map +1 -0
  936. package/dist/components/progress/progress.js +12 -0
  937. package/dist/components/progress/progress.js.map +1 -0
  938. package/dist/components/radio-group/index.js +13 -0
  939. package/dist/components/radio-group/index.js.map +1 -0
  940. package/dist/components/radio-group/radio-group.js +12 -0
  941. package/dist/components/radio-group/radio-group.js.map +1 -0
  942. package/dist/components/rating/index.js +11 -0
  943. package/dist/components/rating/index.js.map +1 -0
  944. package/dist/components/rating/rating.js +11 -0
  945. package/dist/components/rating/rating.js.map +1 -0
  946. package/dist/components/resizable/index.js +15 -0
  947. package/dist/components/resizable/index.js.map +1 -0
  948. package/dist/components/resizable/resizable.js +14 -0
  949. package/dist/components/resizable/resizable.js.map +1 -0
  950. package/dist/components/reveal/index.js +15 -0
  951. package/dist/components/reveal/index.js.map +1 -0
  952. package/dist/components/reveal/reveal.js +14 -0
  953. package/dist/components/reveal/reveal.js.map +1 -0
  954. package/dist/components/reveal-on-enter/index.css +21 -0
  955. package/dist/components/reveal-on-enter/index.css.map +1 -0
  956. package/dist/components/reveal-on-enter/index.js +12 -0
  957. package/dist/components/reveal-on-enter/index.js.map +1 -0
  958. package/dist/components/reveal-on-enter/reveal-on-enter.css +21 -0
  959. package/dist/components/reveal-on-enter/reveal-on-enter.css.map +1 -0
  960. package/dist/components/reveal-on-enter/reveal-on-enter.js +12 -0
  961. package/dist/components/reveal-on-enter/reveal-on-enter.js.map +1 -0
  962. package/dist/components/revision-timeline/index.js +18 -0
  963. package/dist/components/revision-timeline/index.js.map +1 -0
  964. package/dist/components/revision-timeline/revision-timeline.js +18 -0
  965. package/dist/components/revision-timeline/revision-timeline.js.map +1 -0
  966. package/dist/components/schema-form/from-json-schema.js +13 -0
  967. package/dist/components/schema-form/from-json-schema.js.map +1 -0
  968. package/dist/components/schema-form/index.js +140 -0
  969. package/dist/components/schema-form/index.js.map +1 -0
  970. package/dist/components/schema-form/schema-form-spec.js +63 -0
  971. package/dist/components/schema-form/schema-form-spec.js.map +1 -0
  972. package/dist/components/schema-form/schema-form-store.js +21 -0
  973. package/dist/components/schema-form/schema-form-store.js.map +1 -0
  974. package/dist/components/schema-form/schema-form.js +77 -0
  975. package/dist/components/schema-form/schema-form.js.map +1 -0
  976. package/dist/components/scroll-area/index.js +13 -0
  977. package/dist/components/scroll-area/index.js.map +1 -0
  978. package/dist/components/scroll-area/scroll-area.js +12 -0
  979. package/dist/components/scroll-area/scroll-area.js.map +1 -0
  980. package/dist/components/section-header/index.js +11 -0
  981. package/dist/components/section-header/index.js.map +1 -0
  982. package/dist/components/section-header/section-header.js +10 -0
  983. package/dist/components/section-header/section-header.js.map +1 -0
  984. package/dist/components/segmented-field/index.js +17 -0
  985. package/dist/components/segmented-field/index.js.map +1 -0
  986. package/dist/components/segmented-field/segmented-field.js +17 -0
  987. package/dist/components/segmented-field/segmented-field.js.map +1 -0
  988. package/dist/components/select/index.js +26 -0
  989. package/dist/components/select/index.js.map +1 -0
  990. package/dist/components/select/select.js +26 -0
  991. package/dist/components/select/select.js.map +1 -0
  992. package/dist/components/separator/index.js +11 -0
  993. package/dist/components/separator/index.js.map +1 -0
  994. package/dist/components/separator/separator.js +10 -0
  995. package/dist/components/separator/separator.js.map +1 -0
  996. package/dist/components/sheet/index.js +30 -0
  997. package/dist/components/sheet/index.js.map +1 -0
  998. package/dist/components/sheet/sheet.js +30 -0
  999. package/dist/components/sheet/sheet.js.map +1 -0
  1000. package/dist/components/side-dock/index.js +20 -0
  1001. package/dist/components/side-dock/index.js.map +1 -0
  1002. package/dist/components/side-dock/side-dock.js +20 -0
  1003. package/dist/components/side-dock/side-dock.js.map +1 -0
  1004. package/dist/components/sidebar/index.js +77 -0
  1005. package/dist/components/sidebar/index.js.map +1 -0
  1006. package/dist/components/sidebar/sidebar.js +77 -0
  1007. package/dist/components/sidebar/sidebar.js.map +1 -0
  1008. package/dist/components/skeleton/index.js +11 -0
  1009. package/dist/components/skeleton/index.js.map +1 -0
  1010. package/dist/components/skeleton/skeleton.js +10 -0
  1011. package/dist/components/skeleton/skeleton.js.map +1 -0
  1012. package/dist/components/skip-link/index.js +11 -0
  1013. package/dist/components/skip-link/index.js.map +1 -0
  1014. package/dist/components/skip-link/skip-link.js +10 -0
  1015. package/dist/components/skip-link/skip-link.js.map +1 -0
  1016. package/dist/components/slider/index.js +11 -0
  1017. package/dist/components/slider/index.js.map +1 -0
  1018. package/dist/components/slider/slider.js +10 -0
  1019. package/dist/components/slider/slider.js.map +1 -0
  1020. package/dist/components/slider-number/index.js +26 -0
  1021. package/dist/components/slider-number/index.js.map +1 -0
  1022. package/dist/components/slider-number/slider-number.js +26 -0
  1023. package/dist/components/slider-number/slider-number.js.map +1 -0
  1024. package/dist/components/sonner/index.js +13 -0
  1025. package/dist/components/sonner/index.js.map +1 -0
  1026. package/dist/components/sonner/sonner.js +13 -0
  1027. package/dist/components/sonner/sonner.js.map +1 -0
  1028. package/dist/components/spec-playground/index.js +23 -0
  1029. package/dist/components/spec-playground/index.js.map +1 -0
  1030. package/dist/components/spec-playground/locate-json-path.js +17 -0
  1031. package/dist/components/spec-playground/locate-json-path.js.map +1 -0
  1032. package/dist/components/spec-playground/spec-playground.js +23 -0
  1033. package/dist/components/spec-playground/spec-playground.js.map +1 -0
  1034. package/dist/components/spinner/index.js +14 -0
  1035. package/dist/components/spinner/index.js.map +1 -0
  1036. package/dist/components/spinner/spinner.js +14 -0
  1037. package/dist/components/spinner/spinner.js.map +1 -0
  1038. package/dist/components/split-panel/index.js +13 -0
  1039. package/dist/components/split-panel/index.js.map +1 -0
  1040. package/dist/components/split-panel/split-panel.js +12 -0
  1041. package/dist/components/split-panel/split-panel.js.map +1 -0
  1042. package/dist/components/state-panel/index.js +17 -0
  1043. package/dist/components/state-panel/index.js.map +1 -0
  1044. package/dist/components/state-panel/state-panel.js +17 -0
  1045. package/dist/components/state-panel/state-panel.js.map +1 -0
  1046. package/dist/components/status-badge/index.js +30 -0
  1047. package/dist/components/status-badge/index.js.map +1 -0
  1048. package/dist/components/status-badge/status-badge.js +29 -0
  1049. package/dist/components/status-badge/status-badge.js.map +1 -0
  1050. package/dist/components/surface-tour/index.css +21 -0
  1051. package/dist/components/surface-tour/index.css.map +1 -0
  1052. package/dist/components/surface-tour/index.js +36 -0
  1053. package/dist/components/surface-tour/index.js.map +1 -0
  1054. package/dist/components/surface-tour/surface-tour.css +21 -0
  1055. package/dist/components/surface-tour/surface-tour.css.map +1 -0
  1056. package/dist/components/surface-tour/surface-tour.js +36 -0
  1057. package/dist/components/surface-tour/surface-tour.js.map +1 -0
  1058. package/dist/components/switch/index.js +11 -0
  1059. package/dist/components/switch/index.js.map +1 -0
  1060. package/dist/components/switch/switch.js +10 -0
  1061. package/dist/components/switch/switch.js.map +1 -0
  1062. package/dist/components/table/index.js +28 -0
  1063. package/dist/components/table/index.js.map +1 -0
  1064. package/dist/components/table/table.js +28 -0
  1065. package/dist/components/table/table.js.map +1 -0
  1066. package/dist/components/tabs/index.js +22 -0
  1067. package/dist/components/tabs/index.js.map +1 -0
  1068. package/dist/components/tabs/tabs.js +22 -0
  1069. package/dist/components/tabs/tabs.js.map +1 -0
  1070. package/dist/components/tag-input/index.js +21 -0
  1071. package/dist/components/tag-input/index.js.map +1 -0
  1072. package/dist/components/tag-input/tag-input.js +21 -0
  1073. package/dist/components/tag-input/tag-input.js.map +1 -0
  1074. package/dist/components/team-switcher/index.js +33 -0
  1075. package/dist/components/team-switcher/index.js.map +1 -0
  1076. package/dist/components/team-switcher/team-switcher.js +33 -0
  1077. package/dist/components/team-switcher/team-switcher.js.map +1 -0
  1078. package/dist/components/textarea/index.js +11 -0
  1079. package/dist/components/textarea/index.js.map +1 -0
  1080. package/dist/components/textarea/textarea.js +10 -0
  1081. package/dist/components/textarea/textarea.js.map +1 -0
  1082. package/dist/components/theme-family-switch/index.js +19 -0
  1083. package/dist/components/theme-family-switch/index.js.map +1 -0
  1084. package/dist/components/theme-family-switch/theme-family-switch.js +19 -0
  1085. package/dist/components/theme-family-switch/theme-family-switch.js.map +1 -0
  1086. package/dist/components/theme-switcher/index.js +24 -0
  1087. package/dist/components/theme-switcher/index.js.map +1 -0
  1088. package/dist/components/theme-switcher/theme-switcher.js +21 -0
  1089. package/dist/components/theme-switcher/theme-switcher.js.map +1 -0
  1090. package/dist/components/theme-switcher/use-theme-transition.js +10 -0
  1091. package/dist/components/theme-switcher/use-theme-transition.js.map +1 -0
  1092. package/dist/components/timeline/index.js +18 -0
  1093. package/dist/components/timeline/index.js.map +1 -0
  1094. package/dist/components/timeline/timeline.js +19 -0
  1095. package/dist/components/timeline/timeline.js.map +1 -0
  1096. package/dist/components/toggle/index.js +13 -0
  1097. package/dist/components/toggle/index.js.map +1 -0
  1098. package/dist/components/toggle/toggle.js +12 -0
  1099. package/dist/components/toggle/toggle.js.map +1 -0
  1100. package/dist/components/toggle-group/index.js +15 -0
  1101. package/dist/components/toggle-group/index.js.map +1 -0
  1102. package/dist/components/toggle-group/toggle-group.js +15 -0
  1103. package/dist/components/toggle-group/toggle-group.js.map +1 -0
  1104. package/dist/components/token-spotlight/index.css +25 -0
  1105. package/dist/components/token-spotlight/index.css.map +1 -0
  1106. package/dist/components/token-spotlight/index.js +23 -0
  1107. package/dist/components/token-spotlight/index.js.map +1 -0
  1108. package/dist/components/token-spotlight/token-spotlight.css +25 -0
  1109. package/dist/components/token-spotlight/token-spotlight.css.map +1 -0
  1110. package/dist/components/token-spotlight/token-spotlight.js +23 -0
  1111. package/dist/components/token-spotlight/token-spotlight.js.map +1 -0
  1112. package/dist/components/token-spotlight/token-value-format.js +11 -0
  1113. package/dist/components/token-spotlight/token-value-format.js.map +1 -0
  1114. package/dist/components/toolbar/index.js +27 -0
  1115. package/dist/components/toolbar/index.js.map +1 -0
  1116. package/dist/components/toolbar/toolbar.js +27 -0
  1117. package/dist/components/toolbar/toolbar.js.map +1 -0
  1118. package/dist/components/tooltip/index.js +17 -0
  1119. package/dist/components/tooltip/index.js.map +1 -0
  1120. package/dist/components/tooltip/tooltip.js +16 -0
  1121. package/dist/components/tooltip/tooltip.js.map +1 -0
  1122. package/dist/components/top-nav/index.js +11 -0
  1123. package/dist/components/top-nav/index.js.map +1 -0
  1124. package/dist/components/top-nav/top-nav.js +10 -0
  1125. package/dist/components/top-nav/top-nav.js.map +1 -0
  1126. package/dist/components/transfer/index.js +26 -0
  1127. package/dist/components/transfer/index.js.map +1 -0
  1128. package/dist/components/transfer/transfer.js +26 -0
  1129. package/dist/components/transfer/transfer.js.map +1 -0
  1130. package/dist/components/tree/index.js +21 -0
  1131. package/dist/components/tree/index.js.map +1 -0
  1132. package/dist/components/tree/tree.js +18 -0
  1133. package/dist/components/tree/tree.js.map +1 -0
  1134. package/dist/components/tree/use-tree-keyboard.js +14 -0
  1135. package/dist/components/tree/use-tree-keyboard.js.map +1 -0
  1136. package/dist/components/tree-select/index.js +26 -0
  1137. package/dist/components/tree-select/index.js.map +1 -0
  1138. package/dist/components/tree-select/tree-select.js +26 -0
  1139. package/dist/components/tree-select/tree-select.js.map +1 -0
  1140. package/dist/components/typography/index.js +41 -0
  1141. package/dist/components/typography/index.js.map +1 -0
  1142. package/dist/components/typography/prose.js +29 -0
  1143. package/dist/components/typography/prose.js.map +1 -0
  1144. package/dist/components/typography/typography.js +18 -0
  1145. package/dist/components/typography/typography.js.map +1 -0
  1146. package/dist/components/view-toolbar/index.js +27 -0
  1147. package/dist/components/view-toolbar/index.js.map +1 -0
  1148. package/dist/components/view-toolbar/view-toolbar.js +27 -0
  1149. package/dist/components/view-toolbar/view-toolbar.js.map +1 -0
  1150. package/dist/components/virtual-select/index.js +26 -0
  1151. package/dist/components/virtual-select/index.js.map +1 -0
  1152. package/dist/components/virtual-select/use-virtual-listbox.js +10 -0
  1153. package/dist/components/virtual-select/use-virtual-listbox.js.map +1 -0
  1154. package/dist/components/virtual-select/virtual-select.js +23 -0
  1155. package/dist/components/virtual-select/virtual-select.js.map +1 -0
  1156. package/dist/components/wizard/index.js +19 -0
  1157. package/dist/components/wizard/index.js.map +1 -0
  1158. package/dist/components/wizard/wizard.js +19 -0
  1159. package/dist/components/wizard/wizard.js.map +1 -0
  1160. package/dist/components/workspace-picker/index.js +38 -0
  1161. package/dist/components/workspace-picker/index.js.map +1 -0
  1162. package/dist/components/workspace-picker/workspace-picker-state.js +9 -0
  1163. package/dist/components/workspace-picker/workspace-picker-state.js.map +1 -0
  1164. package/dist/components/workspace-picker/workspace-picker.js +35 -0
  1165. package/dist/components/workspace-picker/workspace-picker.js.map +1 -0
  1166. package/dist/form.js +13 -110
  1167. package/dist/form.js.map +1 -1
  1168. package/dist/illustrations/empty-list-illustration.js +11 -0
  1169. package/dist/illustrations/empty-list-illustration.js.map +1 -0
  1170. package/dist/illustrations/error-illustration.js +11 -0
  1171. package/dist/illustrations/error-illustration.js.map +1 -0
  1172. package/dist/illustrations/first-run-illustration.js +11 -0
  1173. package/dist/illustrations/first-run-illustration.js.map +1 -0
  1174. package/dist/illustrations/illustration-base.js +16 -0
  1175. package/dist/illustrations/illustration-base.js.map +1 -0
  1176. package/dist/illustrations/index.js +41 -0
  1177. package/dist/illustrations/index.js.map +1 -0
  1178. package/dist/illustrations/no-access-illustration.js +11 -0
  1179. package/dist/illustrations/no-access-illustration.js.map +1 -0
  1180. package/dist/illustrations/no-results-illustration.js +11 -0
  1181. package/dist/illustrations/no-results-illustration.js.map +1 -0
  1182. package/dist/illustrations/offline-illustration.js +11 -0
  1183. package/dist/illustrations/offline-illustration.js.map +1 -0
  1184. package/dist/illustrations/success-illustration.js +11 -0
  1185. package/dist/illustrations/success-illustration.js.map +1 -0
  1186. package/dist/index.css +122 -0
  1187. package/dist/index.css.map +1 -0
  1188. package/dist/index.d.ts +1312 -119
  1189. package/dist/index.js +1002 -23939
  1190. package/dist/index.js.map +1 -1
  1191. package/dist/lib/agent-event-model.js +9 -0
  1192. package/dist/lib/agent-event-model.js.map +1 -0
  1193. package/dist/lib/approval-option.js +9 -0
  1194. package/dist/lib/approval-option.js.map +1 -0
  1195. package/dist/lib/check-result.js +3 -0
  1196. package/dist/lib/check-result.js.map +1 -0
  1197. package/dist/lib/cn.js +30 -7
  1198. package/dist/lib/cn.js.map +1 -1
  1199. package/dist/lib/color-scale.js +11 -0
  1200. package/dist/lib/color-scale.js.map +1 -0
  1201. package/dist/lib/compact-number.js +21 -0
  1202. package/dist/lib/compact-number.js.map +1 -0
  1203. package/dist/lib/csv.js +11 -0
  1204. package/dist/lib/csv.js.map +1 -0
  1205. package/dist/lib/diff-line.js +11 -0
  1206. package/dist/lib/diff-line.js.map +1 -0
  1207. package/dist/lib/diff-rows.js +12 -0
  1208. package/dist/lib/diff-rows.js.map +1 -0
  1209. package/dist/lib/document-address.js +13 -0
  1210. package/dist/lib/document-address.js.map +1 -0
  1211. package/dist/lib/download.js +11 -0
  1212. package/dist/lib/download.js.map +1 -0
  1213. package/dist/lib/file-icon.js +12 -0
  1214. package/dist/lib/file-icon.js.map +1 -0
  1215. package/dist/lib/file-kind.js +13 -0
  1216. package/dist/lib/file-kind.js.map +1 -0
  1217. package/dist/lib/file-source.js +10 -0
  1218. package/dist/lib/file-source.js.map +1 -0
  1219. package/dist/lib/format-duration.js +9 -0
  1220. package/dist/lib/format-duration.js.map +1 -0
  1221. package/dist/lib/has-renderable-content.js +9 -0
  1222. package/dist/lib/has-renderable-content.js.map +1 -0
  1223. package/dist/lib/merge-refs.js +10 -0
  1224. package/dist/lib/merge-refs.js.map +1 -0
  1225. package/dist/lib/operating-mode.js +9 -0
  1226. package/dist/lib/operating-mode.js.map +1 -0
  1227. package/dist/lib/optional-peer.js +11 -0
  1228. package/dist/lib/optional-peer.js.map +1 -0
  1229. package/dist/lib/session-launch.js +3 -0
  1230. package/dist/lib/session-launch.js.map +1 -0
  1231. package/dist/lib/slash-command.js +11 -0
  1232. package/dist/lib/slash-command.js.map +1 -0
  1233. package/dist/lib/streamdown-translations.js +15 -0
  1234. package/dist/lib/streamdown-translations.js.map +1 -0
  1235. package/dist/lib/trigger-query.js +11 -0
  1236. package/dist/lib/trigger-query.js.map +1 -0
  1237. package/dist/lib/use-controllable-state.js +10 -0
  1238. package/dist/lib/use-controllable-state.js.map +1 -0
  1239. package/dist/lib/use-copy-to-clipboard.js +12 -0
  1240. package/dist/lib/use-copy-to-clipboard.js.map +1 -0
  1241. package/dist/lib/use-mobile.js +10 -0
  1242. package/dist/lib/use-mobile.js.map +1 -0
  1243. package/dist/lib/use-scroll-progress.js +18 -0
  1244. package/dist/lib/use-scroll-progress.js.map +1 -0
  1245. package/package.json +13 -6
  1246. package/src/__contract__/ambient-field.contract.test.tsx +49 -0
  1247. package/src/__contract__/command-chip.contract.test.tsx +49 -0
  1248. package/src/__contract__/install-tabs.contract.test.tsx +49 -0
  1249. package/src/__contract__/integration-matrix.contract.test.tsx +49 -0
  1250. package/src/__contract__/meter.contract.test.tsx +49 -0
  1251. package/src/__contract__/parallax-plane.contract.test.tsx +49 -0
  1252. package/src/__contract__/reveal-on-enter.contract.test.tsx +49 -0
  1253. package/src/__contract__/spec-playground.contract.test.tsx +49 -0
  1254. package/src/__contract__/surface-tour.contract.test.tsx +49 -0
  1255. package/src/__contract__/theme-family-switch.contract.test.tsx +49 -0
  1256. package/src/__contract__/token-spotlight.contract.test.tsx +49 -0
  1257. package/src/blocks-comparison-table.stories.tsx +1 -1
  1258. package/src/components/accordion/accordion.tsx +31 -15
  1259. package/src/components/advanced-group/advanced-group.stories.tsx +2 -0
  1260. package/src/components/alert/alert.tsx +13 -5
  1261. package/src/components/alert-dialog/alert-dialog.tsx +1 -1
  1262. package/src/components/ambient-field/ambient-field.css +98 -0
  1263. package/src/components/ambient-field/ambient-field.stories.tsx +75 -0
  1264. package/src/components/ambient-field/ambient-field.test.tsx +28 -0
  1265. package/src/components/ambient-field/ambient-field.tsx +69 -0
  1266. package/src/components/ambient-field/index.ts +7 -0
  1267. package/src/components/app-shell/app-shell.stories.tsx +344 -1
  1268. package/src/components/app-shell/app-shell.test.tsx +167 -0
  1269. package/src/components/app-shell/app-shell.tsx +119 -5
  1270. package/src/components/app-shell/index.ts +1 -1
  1271. package/src/components/attribution-panel/attributions.generated.ts +77 -4
  1272. package/src/components/badge/badge.stories.tsx +62 -0
  1273. package/src/components/badge/badge.test.tsx +21 -0
  1274. package/src/components/badge/badge.tsx +88 -8
  1275. package/src/components/breadcrumb/breadcrumb.stories.tsx +1 -1
  1276. package/src/components/breadcrumb/breadcrumb.tsx +2 -0
  1277. package/src/components/button/button.stories.tsx +5 -1
  1278. package/src/components/button/button.tsx +19 -8
  1279. package/src/components/calendar/calendar.tsx +6 -1
  1280. package/src/components/card/card.stories.tsx +73 -1
  1281. package/src/components/card/card.test.tsx +29 -2
  1282. package/src/components/card/card.tsx +77 -13
  1283. package/src/components/card/index.ts +2 -0
  1284. package/src/components/change-review/change-review.tsx +1 -1
  1285. package/src/components/collapsible-panel/index.ts +1 -0
  1286. package/src/components/collapsible-panel/use-collapsible-panel.ts +21 -2
  1287. package/src/components/color-picker/color-picker.tsx +3 -3
  1288. package/src/components/command/command.stories.tsx +64 -1
  1289. package/src/components/command/command.test.tsx +73 -0
  1290. package/src/components/command/command.tsx +73 -2
  1291. package/src/components/command-chip/command-chip.stories.tsx +78 -0
  1292. package/src/components/command-chip/command-chip.test.tsx +57 -0
  1293. package/src/components/command-chip/command-chip.tsx +168 -0
  1294. package/src/components/command-chip/index.ts +7 -0
  1295. package/src/components/command-trigger/command-trigger.tsx +1 -1
  1296. package/src/components/confirm-dialog/confirm-dialog.stories.tsx +2 -0
  1297. package/src/components/context-menu/context-menu.stories.tsx +26 -0
  1298. package/src/components/context-menu/context-menu.tsx +6 -6
  1299. package/src/components/context-rail/context-rail.tsx +22 -4
  1300. package/src/components/date-picker/date-picker.tsx +2 -0
  1301. package/src/components/descriptions/descriptions.stories.tsx +6 -0
  1302. package/src/components/descriptions/descriptions.test.tsx +18 -0
  1303. package/src/components/descriptions/descriptions.tsx +33 -5
  1304. package/src/components/descriptions/index.ts +1 -0
  1305. package/src/components/dialog/dialog.stories.tsx +5 -0
  1306. package/src/components/dialog/dialog.tsx +1 -1
  1307. package/src/components/drafting-marks/drafting-marks.stories.tsx +88 -0
  1308. package/src/components/drafting-marks/drafting-marks.test.tsx +55 -0
  1309. package/src/components/drafting-marks/drafting-marks.tsx +120 -0
  1310. package/src/components/drafting-marks/index.ts +7 -0
  1311. package/src/components/dropdown-menu/dropdown-menu.stories.tsx +37 -0
  1312. package/src/components/dropdown-menu/dropdown-menu.tsx +14 -6
  1313. package/src/components/expand-dialog/expand-dialog.test.tsx +47 -0
  1314. package/src/components/expand-dialog/expand-dialog.tsx +20 -5
  1315. package/src/components/hover-card/hover-card.tsx +1 -1
  1316. package/src/components/input/input.stories.tsx +17 -0
  1317. package/src/components/input/input.tsx +1 -1
  1318. package/src/components/input-group/input-group.stories.tsx +43 -6
  1319. package/src/components/input-group/input-group.tsx +5 -2
  1320. package/src/components/input-otp/input-otp.tsx +4 -2
  1321. package/src/components/install-tabs/index.ts +8 -0
  1322. package/src/components/install-tabs/install-tabs.stories.tsx +147 -0
  1323. package/src/components/install-tabs/install-tabs.test.tsx +120 -0
  1324. package/src/components/install-tabs/install-tabs.tsx +238 -0
  1325. package/src/components/integration-matrix/index.ts +10 -0
  1326. package/src/components/integration-matrix/integration-matrix.stories.tsx +171 -0
  1327. package/src/components/integration-matrix/integration-matrix.test.tsx +89 -0
  1328. package/src/components/integration-matrix/integration-matrix.tsx +237 -0
  1329. package/src/components/locale-provider/messages.ts +252 -0
  1330. package/src/components/mention-input/mention-input.tsx +1 -1
  1331. package/src/components/menubar/menubar.stories.tsx +25 -0
  1332. package/src/components/menubar/menubar.tsx +7 -7
  1333. package/src/components/meter/index.ts +1 -0
  1334. package/src/components/meter/meter.stories.tsx +102 -0
  1335. package/src/components/meter/meter.test.tsx +61 -0
  1336. package/src/components/meter/meter.tsx +173 -0
  1337. package/src/components/metric-card/index.ts +6 -1
  1338. package/src/components/metric-card/metric-card.stories.tsx +63 -0
  1339. package/src/components/metric-card/metric-card.test.tsx +83 -0
  1340. package/src/components/metric-card/metric-card.tsx +97 -14
  1341. package/src/components/nav-user/nav-user.test.tsx +23 -1
  1342. package/src/components/nav-user/nav-user.tsx +68 -53
  1343. package/src/components/navigation-menu/navigation-menu.stories.tsx +42 -0
  1344. package/src/components/navigation-menu/navigation-menu.tsx +1 -1
  1345. package/src/components/page-shell/page-shell.stories.tsx +1 -1
  1346. package/src/components/page-shell/page-shell.tsx +3 -2
  1347. package/src/components/pagination/pagination.tsx +2 -0
  1348. package/src/components/parallax-plane/index.ts +8 -0
  1349. package/src/components/parallax-plane/parallax-plane.css +26 -0
  1350. package/src/components/parallax-plane/parallax-plane.stories.tsx +88 -0
  1351. package/src/components/parallax-plane/parallax-plane.test.tsx +57 -0
  1352. package/src/components/parallax-plane/parallax-plane.tsx +80 -0
  1353. package/src/components/popover/popover.tsx +1 -1
  1354. package/src/components/progress/progress.stories.tsx +85 -0
  1355. package/src/components/progress/progress.test.tsx +47 -0
  1356. package/src/components/progress/progress.tsx +57 -3
  1357. package/src/components/reveal-on-enter/index.ts +5 -0
  1358. package/src/components/reveal-on-enter/reveal-on-enter.css +32 -0
  1359. package/src/components/reveal-on-enter/reveal-on-enter.stories.tsx +100 -0
  1360. package/src/components/reveal-on-enter/reveal-on-enter.test.tsx +87 -0
  1361. package/src/components/reveal-on-enter/reveal-on-enter.tsx +75 -0
  1362. package/src/components/revision-timeline/revision-timeline.tsx +1 -3
  1363. package/src/components/schema-form/index.ts +2 -0
  1364. package/src/components/schema-form/schema-form-spec.ts +36 -0
  1365. package/src/components/schema-form/schema-form.stories.tsx +33 -0
  1366. package/src/components/schema-form/schema-form.test.tsx +43 -0
  1367. package/src/components/schema-form/schema-form.tsx +111 -4
  1368. package/src/components/scroll-area/index.ts +1 -1
  1369. package/src/components/scroll-area/scroll-area.tsx +47 -18
  1370. package/src/components/section-header/section-header.stories.tsx +23 -0
  1371. package/src/components/section-header/section-header.tsx +27 -9
  1372. package/src/components/select/select.stories.tsx +17 -0
  1373. package/src/components/select/select.test.tsx +28 -1
  1374. package/src/components/select/select.tsx +3 -3
  1375. package/src/components/sheet/sheet.tsx +1 -1
  1376. package/src/components/side-dock/side-dock.stories.tsx +83 -0
  1377. package/src/components/side-dock/side-dock.tsx +50 -16
  1378. package/src/components/sidebar/sidebar.stories.tsx +3 -3
  1379. package/src/components/sidebar/sidebar.test.tsx +31 -1
  1380. package/src/components/sidebar/sidebar.tsx +40 -8
  1381. package/src/components/skip-link/skip-link.stories.tsx +1 -0
  1382. package/src/components/slider/slider.stories.tsx +13 -77
  1383. package/src/components/spec-playground/index.ts +10 -0
  1384. package/src/components/spec-playground/locate-json-path.ts +144 -0
  1385. package/src/components/spec-playground/spec-playground.stories.tsx +156 -0
  1386. package/src/components/spec-playground/spec-playground.test.tsx +106 -0
  1387. package/src/components/spec-playground/spec-playground.tsx +351 -0
  1388. package/src/components/state-panel/state-panel.stories.tsx +4 -2
  1389. package/src/components/state-panel/state-panel.tsx +1 -1
  1390. package/src/components/status-badge/status-badge.stories.tsx +53 -0
  1391. package/src/components/status-badge/status-badge.test.tsx +37 -0
  1392. package/src/components/status-badge/status-badge.tsx +75 -13
  1393. package/src/components/surface-tour/index.ts +11 -0
  1394. package/src/components/surface-tour/surface-tour.stories.tsx +150 -0
  1395. package/src/components/surface-tour/surface-tour.test.tsx +117 -0
  1396. package/src/components/surface-tour/surface-tour.tsx +456 -0
  1397. package/src/components/table/table.tsx +5 -2
  1398. package/src/components/tabs/tabs.stories.tsx +47 -1
  1399. package/src/components/tabs/tabs.test.tsx +26 -0
  1400. package/src/components/tabs/tabs.tsx +51 -11
  1401. package/src/components/textarea/textarea.tsx +1 -1
  1402. package/src/components/theme-family-switch/index.ts +10 -0
  1403. package/src/components/theme-family-switch/theme-family-switch.stories.tsx +97 -0
  1404. package/src/components/theme-family-switch/theme-family-switch.test.tsx +85 -0
  1405. package/src/components/theme-family-switch/theme-family-switch.tsx +166 -0
  1406. package/src/components/theme-switcher/theme-switcher.tsx +11 -4
  1407. package/src/components/token-spotlight/index.ts +11 -0
  1408. package/src/components/token-spotlight/token-spotlight.css +32 -0
  1409. package/src/components/token-spotlight/token-spotlight.stories.tsx +161 -0
  1410. package/src/components/token-spotlight/token-spotlight.test.tsx +323 -0
  1411. package/src/components/token-spotlight/token-spotlight.tsx +379 -0
  1412. package/src/components/token-spotlight/token-value-format.ts +205 -0
  1413. package/src/components/top-nav/top-nav.test.tsx +59 -0
  1414. package/src/components/top-nav/top-nav.tsx +36 -6
  1415. package/src/components/tree/tree.stories.tsx +1 -1
  1416. package/src/components/tree/tree.test.tsx +4 -4
  1417. package/src/components/tree/tree.tsx +4 -4
  1418. package/src/components/typography/typography.stories.tsx +7 -2
  1419. package/src/components/typography/typography.tsx +8 -0
  1420. package/src/components/view-toolbar/view-toolbar.stories.tsx +2 -1
  1421. package/src/components/view-toolbar/view-toolbar.tsx +2 -2
  1422. package/src/decoration.stories.tsx +243 -2
  1423. package/src/index.ts +47 -0
  1424. package/src/lib/cn.test.ts +49 -0
  1425. package/src/lib/cn.ts +39 -7
  1426. package/src/lib/color-scale.test.ts +386 -0
  1427. package/src/lib/color-scale.ts +628 -0
  1428. package/src/lib/compact-number.ts +118 -28
  1429. package/src/lib/use-scroll-progress.ts +103 -0
  1430. package/src/motion.stories.tsx +1 -0
  1431. package/src/templates-object-detail-hub.stories.tsx +8 -8
  1432. package/src/templates-screen-states.stories.tsx +1 -1
  1433. package/src/templates-settings.stories.tsx +8 -3
  1434. package/dist/chunk-FCH4ZN6G.js +0 -57
  1435. package/dist/chunk-FCH4ZN6G.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/color-picker/color-picker.tsx"],"sourcesContent":["\"use client\";\n\n// a2ui.exposed: yes\nimport {\n forwardRef,\n useCallback,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type KeyboardEvent,\n} from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\nimport { useLocale } from \"../locale-provider\";\n\n// ---------------------------------------------------------------------------\n// Token vocabulary\n// ---------------------------------------------------------------------------\n\n/**\n * The semantic color token names that ColorPicker understands as \"safe\" values.\n * These map 1-to-1 with Tailwind utilities backed by CSS variables so they\n * remain theme-aware at runtime.\n */\nexport type ColorToken =\n | \"primary\"\n | \"secondary\"\n | \"destructive\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | \"chart-1\"\n | \"chart-2\"\n | \"chart-3\"\n | \"chart-4\"\n | \"chart-5\"\n | \"chart-6\"\n | \"chart-7\"\n | \"chart-8\"\n | \"chart-9\"\n | \"chart-10\"\n | \"chart-11\"\n | \"chart-12\";\n\n/** All recognised token names in display order. */\nexport const COLOR_TOKENS: ColorToken[] = [\n \"chart-1\",\n \"chart-2\",\n \"chart-3\",\n \"chart-4\",\n \"chart-5\",\n \"chart-6\",\n \"chart-7\",\n \"chart-8\",\n \"chart-9\",\n \"chart-10\",\n \"chart-11\",\n \"chart-12\",\n \"primary\",\n \"secondary\",\n \"destructive\",\n \"success\",\n \"warning\",\n \"info\",\n];\n\n/**\n * Map a ColorToken → the Tailwind bg-* utility class that renders it.\n * These classes must be present as complete strings so Tailwind's JIT scanner\n * can detect them statically.\n */\nconst TOKEN_BG: Record<ColorToken, string> = {\n \"chart-1\": \"bg-chart-1\",\n \"chart-2\": \"bg-chart-2\",\n \"chart-3\": \"bg-chart-3\",\n \"chart-4\": \"bg-chart-4\",\n \"chart-5\": \"bg-chart-5\",\n \"chart-6\": \"bg-chart-6\",\n \"chart-7\": \"bg-chart-7\",\n \"chart-8\": \"bg-chart-8\",\n \"chart-9\": \"bg-chart-9\",\n \"chart-10\": \"bg-chart-10\",\n \"chart-11\": \"bg-chart-11\",\n \"chart-12\": \"bg-chart-12\",\n primary: \"bg-primary\",\n secondary: \"bg-secondary\",\n destructive: \"bg-destructive\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n info: \"bg-info\",\n};\n\nfunction isColorToken(v: string): v is ColorToken {\n return Object.prototype.hasOwnProperty.call(TOKEN_BG, v);\n}\n\n// ---------------------------------------------------------------------------\n// Sub-component: individual swatch button\n// ---------------------------------------------------------------------------\n\ninterface SwatchProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"onSelect\"> {\n token: ColorToken;\n selected: boolean;\n onSelect: (token: ColorToken) => void;\n}\n\nconst Swatch = forwardRef<HTMLButtonElement, SwatchProps>(function Swatch(\n { token, selected, onSelect, className, ...props },\n ref,\n) {\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n aria-label={token}\n onClick={() => onSelect(token)}\n className={cn(\n \"size-7 rounded-md border-2 transition-[border-color,box-shadow] duration-fast\",\n TOKEN_BG[token],\n selected\n ? \"border-foreground ring-2 ring-ring ring-offset-1 ring-offset-background\"\n : \"border-transparent hover:border-foreground/40\",\n \"focus-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background\",\n className,\n )}\n {...props}\n />\n );\n});\n\n// ---------------------------------------------------------------------------\n// Trigger swatch preview\n// ---------------------------------------------------------------------------\n\ninterface TriggerSwatchProps {\n value: string;\n className?: string;\n}\n\nfunction TriggerSwatch({ value, className }: TriggerSwatchProps) {\n const bgClass = isColorToken(value) ? TOKEN_BG[value] : undefined;\n return (\n <span\n className={cn(\"inline-block size-4 rounded-sm border border-border\", bgClass, className)}\n // When a raw hex value is supplied, use inline style — the only safe\n // place for a non-token color (isolated to this preview span).\n style={!bgClass ? { backgroundColor: value } : undefined}\n />\n );\n}\n\n// ---------------------------------------------------------------------------\n// Main component\n// ---------------------------------------------------------------------------\n\nexport interface ColorPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /**\n * Controlled value — a `ColorToken` name (preferred, theme-aware) or a raw\n * hex string (only when `allowCustom` is true).\n */\n value?: ColorToken | string;\n /** Uncontrolled default value. */\n defaultValue?: ColorToken | string;\n /** Called when the selected color changes. */\n onValueChange?: (value: ColorToken | string) => void;\n /**\n * Swatches to display. Defaults to all chart + status tokens.\n * Accepts any subset of `ColorToken`.\n */\n swatches?: ColorToken[];\n /**\n * When true, a free-form hex input is shown below the swatches.\n * NOTE: custom hex values are NOT theme-aware — they will not adapt when\n * the active theme changes. Prefer token values for all theme-safe UI.\n */\n allowCustom?: boolean;\n /** aria-label for the trigger button. Defaults to \"Pick color\". */\n \"aria-label\"?: string;\n}\n\n/**\n * ColorPicker — a token-safe swatch picker backed by a Popover.\n *\n * The default value type is a `ColorToken` (a semantic CSS variable name),\n * not a hex string. This ensures the chosen color adapts to the active theme.\n * Raw hex is available opt-in via `allowCustom` — see the prop docs.\n *\n * Swatch group uses `role=\"radiogroup\"` with arrow-key navigation.\n */\nexport const ColorPicker = forwardRef<HTMLDivElement, ColorPickerProps>(function ColorPicker(\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n swatches = COLOR_TOKENS,\n allowCustom = false,\n \"aria-label\": ariaLabel,\n className,\n ...props\n },\n ref,\n) {\n const { t } = useLocale();\n const resolvedAriaLabel = ariaLabel ?? t(\"ui.colorPicker.pickColor\");\n const isControlled = valueProp !== undefined;\n const [internalValue, setInternalValue] = useState<ColorToken | string>(\n defaultValue ?? \"chart-1\",\n );\n const [customHex, setCustomHex] = useState(\"\");\n const [open, setOpen] = useState(false);\n\n const current = isControlled ? (valueProp ?? \"\") : internalValue;\n\n const commit = useCallback(\n (next: ColorToken | string) => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n },\n [isControlled, onValueChange],\n );\n\n const handleSwatchSelect = useCallback(\n (token: ColorToken) => {\n commit(token);\n setOpen(false);\n },\n [commit],\n );\n\n const handleCustomSubmit = useCallback(() => {\n const hex = customHex.trim();\n if (/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(hex)) {\n commit(hex);\n setOpen(false);\n }\n }, [customHex, commit]);\n\n // Arrow-key navigation within the radiogroup\n const groupRef = useRef<HTMLDivElement>(null);\n const handleGroupKeyDown = useCallback((e: KeyboardEvent<HTMLDivElement>) => {\n const buttons = groupRef.current\n ? Array.from(groupRef.current.querySelectorAll<HTMLButtonElement>(\"[role=radio]\"))\n : [];\n if (!buttons.length) return;\n const focused = document.activeElement as HTMLButtonElement;\n const idx = buttons.indexOf(focused);\n if (idx === -1) return;\n\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n buttons[(idx + 1) % buttons.length]?.focus();\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n buttons[(idx - 1 + buttons.length) % buttons.length]?.focus();\n }\n }, []);\n\n return (\n <div ref={ref} className={cn(\"inline-flex\", className)} {...props}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n aria-label={resolvedAriaLabel}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n className={cn(\n \"inline-flex items-center gap-2 rounded-md border border-input bg-background px-3 py-1.5 text-body shadow-sm\",\n \"transition-[color,box-shadow] duration-fast\",\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background focus-visible:border-input-focus\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n )}\n >\n <TriggerSwatch value={current} />\n <span className=\"text-muted-foreground\">{current || t(\"ui.colorPicker.none\")}</span>\n </button>\n </PopoverTrigger>\n\n <PopoverContent className=\"w-auto p-3\" align=\"start\">\n <div\n ref={groupRef}\n role=\"radiogroup\"\n aria-label={t(\"ui.colorPicker.swatches\")}\n className=\"flex flex-wrap gap-1.5\"\n onKeyDown={handleGroupKeyDown}\n >\n {swatches.map((token) => (\n <Swatch\n key={token}\n token={token}\n selected={current === token}\n onSelect={handleSwatchSelect}\n />\n ))}\n </div>\n\n {allowCustom && (\n <div className=\"mt-3 border-t border-border pt-3\">\n {/* Custom hex is NOT theme-aware — it will not adapt to theme changes. */}\n <p className=\"mb-1.5 text-meta text-muted-foreground\">\n {/* #124: inline running text — ink rung, not the 3:1 mark rung. */}\n {t(\"ui.colorPicker.customHexLabel\")}{\" \"}\n <span className=\"text-warning-text\">{t(\"ui.colorPicker.notThemeAware\")}</span>\n </p>\n <div className=\"flex gap-2\">\n <input\n type=\"text\"\n value={customHex}\n placeholder=\"#3b82f6\" // i18n-exempt: example hex value, not prose\n maxLength={7}\n spellCheck={false}\n aria-label={t(\"ui.colorPicker.customHex\")}\n onChange={(e) => setCustomHex(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleCustomSubmit();\n }\n }}\n className={cn(\n \"h-8 w-28 rounded-md border border-input bg-background px-2 text-body\",\n \"focus-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background focus-visible:border-input-focus\",\n \"placeholder:text-muted-foreground\",\n )}\n />\n <button\n type=\"button\"\n onClick={handleCustomSubmit}\n className={cn(\n \"h-8 rounded-md border border-input bg-background px-2 text-body\",\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background focus-visible:border-input-focus\",\n )}\n >\n Apply\n </button>\n </div>\n </div>\n )}\n </PopoverContent>\n </Popover>\n </div>\n );\n});\n"],"mappings":"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","names":["Swatch","ColorPicker"]}
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ //# sourceMappingURL=chunk-MZDL7N52.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ //# sourceMappingURL=chunk-N7PJTMRL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,98 @@
1
+ "use client";
2
+ import {
3
+ replaceTriggerRun
4
+ } from "./chunk-AZEABCK4.js";
5
+
6
+ // src/components/mention-input/mention-value.ts
7
+ function mentionEnd(mention, trigger = "@") {
8
+ return mention.start + trigger.length + mention.label.length;
9
+ }
10
+ function mentionAt(value, index, trigger = "@") {
11
+ return value.mentions.find((m) => index >= m.start && index < mentionEnd(m, trigger));
12
+ }
13
+ function commonPrefixLength(a, b) {
14
+ const max = Math.min(a.length, b.length);
15
+ let i = 0;
16
+ while (i < max && a[i] === b[i]) i++;
17
+ return i;
18
+ }
19
+ function remapMentions(prev, nextText, trigger = "@") {
20
+ if (prev.text === nextText) return prev.mentions;
21
+ const prevText = prev.text;
22
+ const p = commonPrefixLength(prevText, nextText);
23
+ const maxSuffix = Math.min(prevText.length, nextText.length) - p;
24
+ let s = 0;
25
+ while (s < maxSuffix && prevText[prevText.length - 1 - s] === nextText[nextText.length - 1 - s]) {
26
+ s++;
27
+ }
28
+ const editEnd = prevText.length - s;
29
+ const delta = nextText.length - prevText.length;
30
+ const remapped = [];
31
+ for (const mention of prev.mentions) {
32
+ const end = mentionEnd(mention, trigger);
33
+ if (end <= p) {
34
+ remapped.push(mention);
35
+ } else if (mention.start >= editEnd) {
36
+ remapped.push({ ...mention, start: mention.start + delta });
37
+ }
38
+ }
39
+ return remapped.filter(
40
+ (m) => nextText.slice(m.start, mentionEnd(m, trigger)) === trigger + m.label
41
+ );
42
+ }
43
+ function insertMention(value, option, trigger, queryStart, caret) {
44
+ const inserted = `${trigger}${option.label} `;
45
+ const { text: nextText, caret: nextCaret } = replaceTriggerRun(
46
+ value.text,
47
+ queryStart,
48
+ caret,
49
+ inserted
50
+ );
51
+ const delta = inserted.length - (caret - queryStart);
52
+ const mentions = [];
53
+ for (const mention of value.mentions) {
54
+ if (mentionEnd(mention, trigger) <= queryStart) {
55
+ mentions.push(mention);
56
+ } else if (mention.start >= caret) {
57
+ mentions.push({ ...mention, start: mention.start + delta });
58
+ }
59
+ }
60
+ mentions.push({ id: option.id, label: option.label, start: queryStart });
61
+ mentions.sort((a, b) => a.start - b.start);
62
+ return {
63
+ value: {
64
+ text: nextText,
65
+ mentions: mentions.filter(
66
+ (m) => nextText.slice(m.start, mentionEnd(m, trigger)) === trigger + m.label
67
+ )
68
+ },
69
+ caret: nextCaret
70
+ };
71
+ }
72
+ function serializeMentions(value) {
73
+ const ordered = [...value.mentions].sort((a, b) => a.start - b.start);
74
+ const mentionedIds = [];
75
+ const seen = /* @__PURE__ */ new Set();
76
+ for (const mention of ordered) {
77
+ if (seen.has(mention.id)) continue;
78
+ seen.add(mention.id);
79
+ mentionedIds.push(mention.id);
80
+ }
81
+ return { text: value.text, mentionedIds };
82
+ }
83
+ function defaultMentionFilter(option, query) {
84
+ const q = query.trim().toLowerCase();
85
+ if (q.length === 0) return true;
86
+ if (option.label.toLowerCase().includes(q)) return true;
87
+ return (option.keywords ?? []).some((k) => k.toLowerCase().includes(q));
88
+ }
89
+
90
+ export {
91
+ mentionEnd,
92
+ mentionAt,
93
+ remapMentions,
94
+ insertMention,
95
+ serializeMentions,
96
+ defaultMentionFilter
97
+ };
98
+ //# sourceMappingURL=chunk-NMGNXW3J.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/mention-input/mention-value.ts"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { replaceTriggerRun } from \"../../lib/trigger-query\";\n\n/**\n * The pure offset algebra behind `MentionInput`.\n *\n * Chip atomicity in a real `<textarea>` is **selection arithmetic over a token\n * map**, not DOM nodes: the field holds ordinary text, and this module keeps a\n * parallel list of `{ id, label, start }` records honest as that text is edited,\n * pasted over and deleted. Nothing here touches React or the DOM, so every\n * acceptance criterion about backspace atomicity, caret skipping and the\n * `{ text, mentionedIds }` payload reduces to a unit test on these functions.\n */\n\n/** One selectable roster entry. */\nexport interface MentionOption {\n /** Stable id — this is what `serializeMentions` emits. */\n id: string;\n /** Inserted verbatim after the trigger character. */\n label: string;\n /** Optional secondary line shown under the label. */\n description?: string;\n /** Optional leading glyph (avatar, icon). */\n icon?: ReactNode;\n /** Extra match terms, so \"ada\" can find \"Ada Lovelace\". */\n keywords?: string[];\n /** Rendered but not selectable. */\n disabled?: boolean;\n}\n\n/** A resolved mention inside `MentionValue.text`. */\nexport interface Mention {\n /** The option id this run refers to. */\n id: string;\n /** The label WITHOUT the trigger character. */\n label: string;\n /** Offset of the trigger character in `text`. */\n start: number;\n}\n\n/** The component's value: plain text plus the mentions it contains. */\nexport interface MentionValue {\n text: string;\n mentions: Mention[];\n}\n\n/** The result of inserting an option: the new value and where the caret goes. */\nexport interface InsertMentionResult {\n value: MentionValue;\n /** Offset immediately after the inserted token's trailing space. */\n caret: number;\n}\n\n/** Exclusive end offset of a mention's `trigger + label` run. */\nexport function mentionEnd(mention: Mention, trigger = \"@\"): number {\n return mention.start + trigger.length + mention.label.length;\n}\n\n/**\n * The mention whose half-open range `[start, end)` contains `index`, if any.\n *\n * Half-open on purpose: the offset one past the token is *outside* it, so a\n * caret sitting immediately after `@Ada Lovelace` is \"next to\" the mention\n * rather than \"in\" it. Backspace therefore asks about `caret - 1` and Delete\n * about `caret`, and both get an unambiguous answer.\n */\nexport function mentionAt(value: MentionValue, index: number, trigger = \"@\"): Mention | undefined {\n return value.mentions.find((m) => index >= m.start && index < mentionEnd(m, trigger));\n}\n\n/** Length of the longest common prefix of two strings. */\nfunction commonPrefixLength(a: string, b: string): number {\n const max = Math.min(a.length, b.length);\n let i = 0;\n while (i < max && a[i] === b[i]) i++;\n return i;\n}\n\n/**\n * Re-derive the mention list after the text changed underneath it.\n *\n * The edit is treated as ONE contiguous replacement — which is what a\n * keystroke, a paste, a cut and a native undo all are. The common prefix and\n * common suffix bracket it; a mention entirely before the edit keeps its\n * offset, one entirely after it shifts by the length delta, and one the edit\n * reaches into is **dropped** (its text no longer spells the person's name, so\n * the id would be a lie).\n *\n * Every survivor is then **re-validated** against the new text: the run at its\n * offset must still read exactly `trigger + label`. That second pass is what\n * makes a multi-mention paste safe — the arithmetic alone can be fooled by a\n * replacement whose prefix/suffix boundaries land ambiguously, but a run that\n * no longer spells the token can never survive the check.\n */\nexport function remapMentions(prev: MentionValue, nextText: string, trigger = \"@\"): Mention[] {\n if (prev.text === nextText) return prev.mentions;\n\n const prevText = prev.text;\n const p = commonPrefixLength(prevText, nextText);\n\n const maxSuffix = Math.min(prevText.length, nextText.length) - p;\n let s = 0;\n while (s < maxSuffix && prevText[prevText.length - 1 - s] === nextText[nextText.length - 1 - s]) {\n s++;\n }\n\n /** End of the replaced span, in PREVIOUS coordinates. */\n const editEnd = prevText.length - s;\n const delta = nextText.length - prevText.length;\n\n const remapped: Mention[] = [];\n for (const mention of prev.mentions) {\n const end = mentionEnd(mention, trigger);\n if (end <= p) {\n remapped.push(mention);\n } else if (mention.start >= editEnd) {\n remapped.push({ ...mention, start: mention.start + delta });\n }\n // else: the edit reached into the token — drop it.\n }\n\n return remapped.filter(\n (m) => nextText.slice(m.start, mentionEnd(m, trigger)) === trigger + m.label,\n );\n}\n\n/**\n * Replace the in-progress `trigger + query` run with `trigger + label + \" \"`.\n *\n * `queryStart` is the offset of the trigger character; `caret` is where the\n * query ends. The trailing space is deliberate: it terminates the query so the\n * popup closes, and it gives the next word somewhere to start.\n */\nexport function insertMention(\n value: MentionValue,\n option: MentionOption,\n trigger: string,\n queryStart: number,\n caret: number,\n): InsertMentionResult {\n const inserted = `${trigger}${option.label} `;\n const { text: nextText, caret: nextCaret } = replaceTriggerRun(\n value.text,\n queryStart,\n caret,\n inserted,\n );\n const delta = inserted.length - (caret - queryStart);\n\n const mentions: Mention[] = [];\n for (const mention of value.mentions) {\n if (mentionEnd(mention, trigger) <= queryStart) {\n mentions.push(mention);\n } else if (mention.start >= caret) {\n mentions.push({ ...mention, start: mention.start + delta });\n }\n // else: it overlapped the query run being replaced — drop it.\n }\n mentions.push({ id: option.id, label: option.label, start: queryStart });\n mentions.sort((a, b) => a.start - b.start);\n\n return {\n value: {\n text: nextText,\n mentions: mentions.filter(\n (m) => nextText.slice(m.start, mentionEnd(m, trigger)) === trigger + m.label,\n ),\n },\n caret: nextCaret,\n };\n}\n\n/**\n * The serialization contract a consumer gets out: the raw text plus the option\n * ids it references, **deduped** and in **document order** (two mentions of the\n * same person yield one id).\n */\nexport function serializeMentions(value: MentionValue): { text: string; mentionedIds: string[] } {\n const ordered = [...value.mentions].sort((a, b) => a.start - b.start);\n const mentionedIds: string[] = [];\n const seen = new Set<string>();\n for (const mention of ordered) {\n if (seen.has(mention.id)) continue;\n seen.add(mention.id);\n mentionedIds.push(mention.id);\n }\n return { text: value.text, mentionedIds };\n}\n\n/**\n * Case-insensitive substring match over `label` and `keywords`. An empty query\n * matches everything, so the full roster shows the moment the trigger is typed.\n */\nexport function defaultMentionFilter(option: MentionOption, query: string): boolean {\n const q = query.trim().toLowerCase();\n if (q.length === 0) return true;\n if (option.label.toLowerCase().includes(q)) return true;\n return (option.keywords ?? []).some((k) => k.toLowerCase().includes(q));\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ //# sourceMappingURL=chunk-NRNIUM75.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,85 @@
1
+ "use client";
2
+ import {
3
+ DropdownMenu,
4
+ DropdownMenuContent,
5
+ DropdownMenuItem,
6
+ DropdownMenuLabel,
7
+ DropdownMenuSeparator,
8
+ DropdownMenuTrigger
9
+ } from "./chunk-ZSYT5H6U.js";
10
+ import {
11
+ Avatar,
12
+ AvatarFallback
13
+ } from "./chunk-PGKQZBLZ.js";
14
+ import {
15
+ useLocale
16
+ } from "./chunk-EJQYE4MY.js";
17
+ import {
18
+ Button
19
+ } from "./chunk-C5QBV5RE.js";
20
+ import {
21
+ cn
22
+ } from "./chunk-FXWWDMMP.js";
23
+
24
+ // src/components/nav-notifications/nav-notifications.tsx
25
+ import { BellIcon } from "lucide-react";
26
+ import { jsx, jsxs } from "react/jsx-runtime";
27
+ function NavNotifications({
28
+ notifications,
29
+ viewAllLabel = "View all notifications",
30
+ side = "right",
31
+ align,
32
+ className
33
+ }) {
34
+ const { t } = useLocale();
35
+ return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
36
+ /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
37
+ Button,
38
+ {
39
+ variant: "ghost",
40
+ size: "icon",
41
+ className: cn("rounded-full", className),
42
+ "aria-label": t("ui.navNotifications.trigger"),
43
+ children: /* @__PURE__ */ jsx(BellIcon, { className: "size-5" })
44
+ }
45
+ ) }),
46
+ /* @__PURE__ */ jsxs(
47
+ DropdownMenuContent,
48
+ {
49
+ side,
50
+ align,
51
+ collisionPadding: 16,
52
+ className: cn(
53
+ // The vertical inset belongs to the SIDE-opening rail placement, where
54
+ // the menu runs alongside its trigger and needs clearance from it. A
55
+ // menu that opens above or below the trigger is already clear of it,
56
+ // and the inset would just hang it 24px off the bar. Derived from
57
+ // `side` rather than exposed as a second className seam.
58
+ (side === "left" || side === "right") && "my-6",
59
+ // `w-80` (320px) is wider than some phone viewports once the 16px
60
+ // collision padding on both sides is subtracted — cap it so the menu
61
+ // shrinks instead of forcing horizontal overflow.
62
+ "w-80 max-w-[calc(100vw-2rem)]"
63
+ ),
64
+ children: [
65
+ /* @__PURE__ */ jsx(DropdownMenuLabel, { children: t("ui.navNotifications.label") }),
66
+ /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
67
+ notifications.map(({ id, fallback, text, time }) => /* @__PURE__ */ jsxs(DropdownMenuItem, { className: "flex items-start gap-3", children: [
68
+ /* @__PURE__ */ jsx(Avatar, { className: "size-8", children: /* @__PURE__ */ jsx(AvatarFallback, { children: fallback }) }),
69
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
70
+ /* @__PURE__ */ jsx("span", { className: "text-body font-medium", children: text }),
71
+ /* @__PURE__ */ jsx("span", { className: "text-meta text-muted-foreground", children: time })
72
+ ] })
73
+ ] }, id)),
74
+ /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
75
+ /* @__PURE__ */ jsx(DropdownMenuItem, { className: "justify-center text-body text-muted-foreground", children: viewAllLabel })
76
+ ]
77
+ }
78
+ )
79
+ ] });
80
+ }
81
+
82
+ export {
83
+ NavNotifications
84
+ };
85
+ //# sourceMappingURL=chunk-NRPZ3BH4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/nav-notifications/nav-notifications.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ComponentProps } from \"react\";\nimport { BellIcon } from \"lucide-react\";\nimport { Avatar, AvatarFallback } from \"../avatar\";\nimport { Button } from \"../button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../dropdown-menu\";\nimport { useLocale } from \"../locale-provider\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface NavNotification {\n id: string;\n /** Two-letter fallback initials for the avatar. */\n fallback: string;\n text: string;\n time: string;\n}\n\nexport interface NavNotificationsProps {\n notifications: NavNotification[];\n /** Label for the \"view all\" footer item. @default \"View all notifications\" */\n viewAllLabel?: string;\n /**\n * Which side of the trigger the menu opens on.\n *\n * The default is `\"right\"`, which is right for the surface this component was\n * extracted from — a bell sitting in a left-hand nav rail. It is WRONG for a\n * trigger at the end of a top bar: Radix collision-handling then flips the\n * menu back across the trigger and it covers the controls beside it. Set\n * `side=\"bottom\"` (usually with `align=\"end\"`) for a top-bar bell.\n *\n * @default \"right\"\n */\n side?: ComponentProps<typeof DropdownMenuContent>[\"side\"];\n /**\n * How the menu aligns along that side. Radix's own default is `\"center\"`;\n * pass `\"end\"` so a top-bar menu hangs from the trigger's outer edge instead\n * of straddling it.\n */\n align?: ComponentProps<typeof DropdownMenuContent>[\"align\"];\n /**\n * Extra classes for the component ROOT — the bell trigger — merged last, so a\n * caller can override the shipped `rounded-full` (`component-api.md`).\n *\n * There is deliberately NO seam for the portalled menu surface: nothing needs\n * one today, and an unused prop is a worse API than a missing one. The one\n * thing a caller used to reach for it (dropping the rail's vertical inset for\n * a top-bar menu) is now derived from `side` instead — see below.\n */\n className?: string;\n}\n\n/**\n * Notifications dropdown button. Shared primitive from sidebar-02 (issue #99).\n * Renders a bell-icon ghost button that opens a dropdown listing recent\n * notifications.\n *\n * Placement is caller-owned via `side`/`align`; the defaults are the original\n * rail placement, so every existing call site renders unchanged. `className`\n * styles the trigger, not the menu.\n */\nexport function NavNotifications({\n notifications,\n viewAllLabel = \"View all notifications\",\n side = \"right\",\n align,\n className,\n}: NavNotificationsProps) {\n const { t } = useLocale();\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"rounded-full\", className)}\n aria-label={t(\"ui.navNotifications.trigger\")}\n >\n <BellIcon className=\"size-5\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n side={side}\n align={align}\n // Keeps the menu clear of the viewport edge instead of sitting flush\n // against it on a narrow phone screen.\n collisionPadding={16}\n className={cn(\n // The vertical inset belongs to the SIDE-opening rail placement, where\n // the menu runs alongside its trigger and needs clearance from it. A\n // menu that opens above or below the trigger is already clear of it,\n // and the inset would just hang it 24px off the bar. Derived from\n // `side` rather than exposed as a second className seam.\n (side === \"left\" || side === \"right\") && \"my-6\",\n // `w-80` (320px) is wider than some phone viewports once the 16px\n // collision padding on both sides is subtracted — cap it so the menu\n // shrinks instead of forcing horizontal overflow.\n \"w-80 max-w-[calc(100vw-2rem)]\",\n )}\n >\n <DropdownMenuLabel>{t(\"ui.navNotifications.label\")}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {notifications.map(({ id, fallback, text, time }) => (\n <DropdownMenuItem key={id} className=\"flex items-start gap-3\">\n <Avatar className=\"size-8\">\n <AvatarFallback>{fallback}</AvatarFallback>\n </Avatar>\n <div className=\"flex flex-col\">\n <span className=\"text-body font-medium\">{text}</span>\n <span className=\"text-meta text-muted-foreground\">{time}</span>\n </div>\n </DropdownMenuItem>\n ))}\n <DropdownMenuSeparator />\n <DropdownMenuItem className=\"justify-center text-body text-muted-foreground\">\n {viewAllLabel}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA,SAAS,gBAAgB;AAkFf,cA6BE,YA7BF;AAjBH,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA,eAAe;AAAA,EACf,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAA0B;AACxB,QAAM,EAAE,EAAE,IAAI,UAAU;AACxB,SACE,qBAAC,gBACC;AAAA,wBAAC,uBAAoB,SAAO,MAC1B;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,WAAW,GAAG,gBAAgB,SAAS;AAAA,QACvC,cAAY,EAAE,6BAA6B;AAAA,QAE3C,8BAAC,YAAS,WAAU,UAAS;AAAA;AAAA,IAC/B,GACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QAGA,kBAAkB;AAAA,QAClB,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAMR,SAAS,UAAU,SAAS,YAAY;AAAA;AAAA;AAAA;AAAA,UAIzC;AAAA,QACF;AAAA,QAEA;AAAA,8BAAC,qBAAmB,YAAE,2BAA2B,GAAE;AAAA,UACnD,oBAAC,yBAAsB;AAAA,UACtB,cAAc,IAAI,CAAC,EAAE,IAAI,UAAU,MAAM,KAAK,MAC7C,qBAAC,oBAA0B,WAAU,0BACnC;AAAA,gCAAC,UAAO,WAAU,UAChB,8BAAC,kBAAgB,oBAAS,GAC5B;AAAA,YACA,qBAAC,SAAI,WAAU,iBACb;AAAA,kCAAC,UAAK,WAAU,yBAAyB,gBAAK;AAAA,cAC9C,oBAAC,UAAK,WAAU,mCAAmC,gBAAK;AAAA,eAC1D;AAAA,eAPqB,EAQvB,CACD;AAAA,UACD,oBAAC,yBAAsB;AAAA,UACvB,oBAAC,oBAAiB,WAAU,kDACzB,wBACH;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1,100 @@
1
+ "use client";
2
+ import {
3
+ Skeleton
4
+ } from "./chunk-UPGIQXUY.js";
5
+ import {
6
+ cn
7
+ } from "./chunk-FXWWDMMP.js";
8
+
9
+ // src/components/link-preview/link-preview.tsx
10
+ import { forwardRef } from "react";
11
+ import { GlobeIcon } from "lucide-react";
12
+ import { jsx, jsxs } from "react/jsx-runtime";
13
+ function Thumbnail({ image }) {
14
+ if (!image) return null;
15
+ return /* @__PURE__ */ jsx("div", { className: "relative h-full w-28 shrink-0 overflow-hidden rounded-e-lg", children: /* @__PURE__ */ jsx(
16
+ "img",
17
+ {
18
+ src: image,
19
+ alt: "",
20
+ "aria-hidden": "true",
21
+ width: 112,
22
+ height: 112,
23
+ loading: "lazy",
24
+ className: "h-full w-full object-cover"
25
+ }
26
+ ) });
27
+ }
28
+ function SkeletonLayout() {
29
+ return /* @__PURE__ */ jsxs("div", { className: "flex min-h-[5rem] gap-3 p-3", children: [
30
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-2 py-0.5", children: [
31
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-3 w-24" }),
32
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-full" }),
33
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-3/4" }),
34
+ /* @__PURE__ */ jsx(Skeleton, { className: "mt-1 h-3 w-full" }),
35
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-3 w-5/6" })
36
+ ] }),
37
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-20 w-28 shrink-0 rounded-md" })
38
+ ] });
39
+ }
40
+ var LinkPreviewCard = forwardRef(
41
+ function LinkPreviewCard2({ className, title, description, image, domain, href, loading = false, children, ...props }, ref) {
42
+ return /* @__PURE__ */ jsx(
43
+ "div",
44
+ {
45
+ ref,
46
+ "aria-busy": loading || void 0,
47
+ className: cn(
48
+ // Base card chrome — rounded border, card surface, subtle shadow
49
+ "relative overflow-hidden rounded-lg border bg-card text-card-foreground shadow-sm",
50
+ // Stretched-link focus ring: when `href` is present the inner <a>
51
+ // covers the whole card; the ring is painted on the card container via
52
+ // focus-within so the outer border gets the visible ring, not the
53
+ // hidden absolutely-positioned link.
54
+ // When `href` is present: stretched-link focus ring (via focus-within on
55
+ // the container, not the <a>) + hover lift + motion-tokened transition.
56
+ href && "cursor-pointer transition-[translate,box-shadow,border-color] duration-fast ease-standard focus-ring-within hover:-translate-y-0.5 hover:border-ring/40 hover:shadow-md motion-reduce:hover:translate-y-0",
57
+ className
58
+ ),
59
+ ...props,
60
+ children: loading ? /* @__PURE__ */ jsx(SkeletonLayout, {}) : /* @__PURE__ */ jsxs("div", { className: "flex min-h-[5rem] gap-0", children: [
61
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col justify-center gap-1.5 p-3", children: [
62
+ domain && /* @__PURE__ */ jsxs("p", { className: "flex items-center gap-1.5 text-meta text-muted-foreground", children: [
63
+ /* @__PURE__ */ jsx(GlobeIcon, { "aria-hidden": "true", className: "size-3 shrink-0" }),
64
+ /* @__PURE__ */ jsx("span", { className: "truncate", translate: "no", children: domain })
65
+ ] }),
66
+ title && /* @__PURE__ */ jsx("p", { className: "line-clamp-2 min-w-0 text-body font-medium leading-snug", children: href ? (
67
+ /*
68
+ * Stretched-link pattern: `<a>` is absolutely positioned to
69
+ * cover the entire card (after:absolute after:inset-0). The
70
+ * visible focus ring lives on the card container via
71
+ * focus-within (above). `focus-visible:outline-none` removes
72
+ * the browser's own ring on the link so it doesn't double up.
73
+ */
74
+ /* @__PURE__ */ jsx(
75
+ "a",
76
+ {
77
+ href,
78
+ target: "_blank",
79
+ rel: "noopener noreferrer",
80
+ className: "after:absolute after:inset-0 focus-visible:outline-none",
81
+ children: title
82
+ }
83
+ )
84
+ ) : title }),
85
+ description && /* @__PURE__ */ jsx("p", { className: "line-clamp-2 min-w-0 text-caption text-muted-foreground", children: description }),
86
+ children
87
+ ] }),
88
+ /* @__PURE__ */ jsx(Thumbnail, { image })
89
+ ] })
90
+ }
91
+ );
92
+ }
93
+ );
94
+ var LinkPreview = LinkPreviewCard;
95
+
96
+ export {
97
+ LinkPreviewCard,
98
+ LinkPreview
99
+ };
100
+ //# sourceMappingURL=chunk-NXCOVGDU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/link-preview/link-preview.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, type HTMLAttributes } from \"react\";\nimport { GlobeIcon } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { Skeleton } from \"../skeleton/skeleton\";\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\nexport interface LinkPreviewCardProps extends HTMLAttributes<HTMLDivElement> {\n /** Page title — the primary text, 1–2 lines. */\n title?: string;\n /** Short description / Open-Graph description. Omit for title+domain only. */\n description?: string;\n /**\n * Absolute URL of the thumbnail image (consumer-provided; the library never\n * fetches). Decorative — `alt` is always `\"\"`. Omit to hide the thumbnail\n * area cleanly (no broken-image placeholder).\n */\n image?: string;\n /**\n * Domain label shown with the globe icon, e.g. `\"github.com\"`. Wrapped in\n * `translate=\"no\"` so browsers never auto-translate identifiers.\n */\n domain?: string;\n /**\n * When set, the entire card becomes a keyboard-focusable link (stretched-link\n * pattern). The visible focus ring is placed on the card via `focus-within`.\n * Prefer a full absolute URL so the `<a>` is meaningful.\n */\n href?: string;\n /**\n * Render skeleton placeholders in lieu of real content. Sets `aria-busy=\"true\"`\n * on the card root so assistive technology knows the content is pending.\n */\n loading?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\n/** Thumbnail — hidden when `image` is absent (no broken-icon placeholder). */\nfunction Thumbnail({ image }: { image?: string }) {\n if (!image) return null;\n return (\n <div className=\"relative h-full w-28 shrink-0 overflow-hidden rounded-e-lg\">\n {/* explicit width/height prevent CLS; object-cover fills the container */}\n <img\n src={image}\n alt=\"\" // decorative; title carries meaning\n aria-hidden=\"true\"\n width={112}\n height={112}\n loading=\"lazy\"\n className=\"h-full w-full object-cover\"\n />\n </div>\n );\n}\n\n/** Skeleton layout matching the card shape. */\nfunction SkeletonLayout() {\n return (\n <div className=\"flex min-h-[5rem] gap-3 p-3\">\n <div className=\"flex min-w-0 flex-1 flex-col gap-2 py-0.5\">\n {/* domain row */}\n <Skeleton className=\"h-3 w-24\" />\n {/* title — two lines */}\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-3/4\" />\n {/* description */}\n <Skeleton className=\"mt-1 h-3 w-full\" />\n <Skeleton className=\"h-3 w-5/6\" />\n </div>\n {/* thumbnail placeholder */}\n <Skeleton className=\"h-20 w-28 shrink-0 rounded-md\" />\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// LinkPreviewCard\n// ---------------------------------------------------------------------------\n\n/**\n * A rich, presentational link-preview card (unfurled URL / bookmark block).\n * Renders favicon/domain, title, description, and an optional thumbnail from\n * **consumer-provided** metadata — the library never fetches.\n *\n * States: `loading` (skeleton), loaded (full), no-image, no-description\n * (title + domain only), and empty/error (degrades to a plain placeholder).\n *\n * Pass `href` to make the whole card a keyboard-focusable stretched link.\n * Use `loading` for the skeleton state; set `aria-busy` is applied automatically.\n */\nexport const LinkPreviewCard = forwardRef<HTMLDivElement, LinkPreviewCardProps>(\n function LinkPreviewCard(\n { className, title, description, image, domain, href, loading = false, children, ...props },\n ref,\n ) {\n return (\n <div\n ref={ref}\n aria-busy={loading || undefined}\n className={cn(\n // Base card chrome — rounded border, card surface, subtle shadow\n \"relative overflow-hidden rounded-lg border bg-card text-card-foreground shadow-sm\",\n // Stretched-link focus ring: when `href` is present the inner <a>\n // covers the whole card; the ring is painted on the card container via\n // focus-within so the outer border gets the visible ring, not the\n // hidden absolutely-positioned link.\n // When `href` is present: stretched-link focus ring (via focus-within on\n // the container, not the <a>) + hover lift + motion-tokened transition.\n href &&\n \"cursor-pointer transition-[translate,box-shadow,border-color] duration-fast ease-standard focus-ring-within hover:-translate-y-0.5 hover:border-ring/40 hover:shadow-md motion-reduce:hover:translate-y-0\",\n className,\n )}\n {...props}\n >\n {loading ? (\n <SkeletonLayout />\n ) : (\n <div className=\"flex min-h-[5rem] gap-0\">\n {/* Main content */}\n <div className=\"flex min-w-0 flex-1 flex-col justify-center gap-1.5 p-3\">\n {/* Domain row */}\n {domain && (\n <p className=\"flex items-center gap-1.5 text-meta text-muted-foreground\">\n <GlobeIcon aria-hidden=\"true\" className=\"size-3 shrink-0\" />\n {/* translate=\"no\" so browsers never auto-translate domain identifiers */}\n <span className=\"truncate\" translate=\"no\">\n {domain}\n </span>\n </p>\n )}\n\n {/* Title */}\n {title && (\n <p className=\"line-clamp-2 min-w-0 text-body font-medium leading-snug\">\n {href ? (\n /*\n * Stretched-link pattern: `<a>` is absolutely positioned to\n * cover the entire card (after:absolute after:inset-0). The\n * visible focus ring lives on the card container via\n * focus-within (above). `focus-visible:outline-none` removes\n * the browser's own ring on the link so it doesn't double up.\n */\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"after:absolute after:inset-0 focus-visible:outline-none\"\n >\n {title}\n </a>\n ) : (\n title\n )}\n </p>\n )}\n\n {/* Description */}\n {description && (\n <p className=\"line-clamp-2 min-w-0 text-caption text-muted-foreground\">\n {description}\n </p>\n )}\n\n {children}\n </div>\n\n {/* Thumbnail — conditionally rendered */}\n <Thumbnail image={image} />\n </div>\n )}\n </div>\n );\n },\n);\n\n// ---------------------------------------------------------------------------\n// LinkPreview alias\n// ---------------------------------------------------------------------------\n\n/**\n * Convenience alias for `LinkPreviewCard`. Identical component — use whichever\n * name reads more naturally at the call site.\n *\n * `LinkPreviewCard` is the canonical export; `LinkPreview` is the alias.\n */\nexport const LinkPreview = LinkPreviewCard;\n"],"mappings":";;;;;;;;;AAEA,SAAS,kBAAuC;AAChD,SAAS,iBAAiB;AA+CpB,cAiBA,YAjBA;AALN,SAAS,UAAU,EAAE,MAAM,GAAuB;AAChD,MAAI,CAAC,MAAO,QAAO;AACnB,SACE,oBAAC,SAAI,WAAU,8DAEb;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,KAAI;AAAA,MACJ,eAAY;AAAA,MACZ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAQ;AAAA,MACR,WAAU;AAAA;AAAA,EACZ,GACF;AAEJ;AAGA,SAAS,iBAAiB;AACxB,SACE,qBAAC,SAAI,WAAU,+BACb;AAAA,yBAAC,SAAI,WAAU,6CAEb;AAAA,0BAAC,YAAS,WAAU,YAAW;AAAA,MAE/B,oBAAC,YAAS,WAAU,cAAa;AAAA,MACjC,oBAAC,YAAS,WAAU,aAAY;AAAA,MAEhC,oBAAC,YAAS,WAAU,mBAAkB;AAAA,MACtC,oBAAC,YAAS,WAAU,aAAY;AAAA,OAClC;AAAA,IAEA,oBAAC,YAAS,WAAU,iCAAgC;AAAA,KACtD;AAEJ;AAiBO,IAAM,kBAAkB;AAAA,EAC7B,SAASA,iBACP,EAAE,WAAW,OAAO,aAAa,OAAO,QAAQ,MAAM,UAAU,OAAO,UAAU,GAAG,MAAM,GAC1F,KACA;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,aAAW,WAAW;AAAA,QACtB,WAAW;AAAA;AAAA,UAET;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,QACE;AAAA,UACF;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEH,oBACC,oBAAC,kBAAe,IAEhB,qBAAC,SAAI,WAAU,2BAEb;AAAA,+BAAC,SAAI,WAAU,2DAEZ;AAAA,sBACC,qBAAC,OAAE,WAAU,6DACX;AAAA,kCAAC,aAAU,eAAY,QAAO,WAAU,mBAAkB;AAAA,cAE1D,oBAAC,UAAK,WAAU,YAAW,WAAU,MAClC,kBACH;AAAA,eACF;AAAA,YAID,SACC,oBAAC,OAAE,WAAU,2DACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQC;AAAA,gBAAC;AAAA;AAAA,kBACC;AAAA,kBACA,QAAO;AAAA,kBACP,KAAI;AAAA,kBACJ,WAAU;AAAA,kBAET;AAAA;AAAA,cACH;AAAA,gBAEA,OAEJ;AAAA,YAID,eACC,oBAAC,OAAE,WAAU,2DACV,uBACH;AAAA,YAGD;AAAA,aACH;AAAA,UAGA,oBAAC,aAAU,OAAc;AAAA,WAC3B;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AAYO,IAAM,cAAc;","names":["LinkPreviewCard"]}
@@ -0,0 +1,201 @@
1
+ "use client";
2
+ import {
3
+ Input
4
+ } from "./chunk-I3U52BDH.js";
5
+ import {
6
+ useLocale
7
+ } from "./chunk-EJQYE4MY.js";
8
+ import {
9
+ Button
10
+ } from "./chunk-C5QBV5RE.js";
11
+ import {
12
+ cn
13
+ } from "./chunk-FXWWDMMP.js";
14
+
15
+ // src/components/key-value-editor/key-value-editor.tsx
16
+ import {
17
+ forwardRef,
18
+ useCallback,
19
+ useMemo,
20
+ useState
21
+ } from "react";
22
+ import { Eye, EyeOff, Plus, X } from "lucide-react";
23
+ import { jsx, jsxs } from "react/jsx-runtime";
24
+ var KeyValueEditor = forwardRef(
25
+ function KeyValueEditor2({
26
+ value: valueProp,
27
+ defaultValue,
28
+ onValueChange,
29
+ keyPlaceholder,
30
+ valuePlaceholder,
31
+ addLabel,
32
+ disabled,
33
+ className,
34
+ ...props
35
+ }, ref) {
36
+ const { t } = useLocale();
37
+ const isControlled = valueProp !== void 0;
38
+ const [internalRows, setInternalRows] = useState(defaultValue ?? []);
39
+ const rows = useMemo(
40
+ () => isControlled ? valueProp ?? [] : internalRows,
41
+ [isControlled, valueProp, internalRows]
42
+ );
43
+ const [revealed, setRevealed] = useState(() => /* @__PURE__ */ new Map());
44
+ const isRevealed = useCallback(
45
+ (index, row) => revealed.get(index) === row.value,
46
+ [revealed]
47
+ );
48
+ const commit = useCallback(
49
+ (next) => {
50
+ if (!isControlled) setInternalRows(next);
51
+ onValueChange?.(next);
52
+ },
53
+ [isControlled, onValueChange]
54
+ );
55
+ const addRow = useCallback(() => {
56
+ commit([...rows, { key: "", value: "", secret: false }]);
57
+ }, [rows, commit]);
58
+ const updateRow = useCallback(
59
+ (index, patch) => {
60
+ commit(rows.map((row, i) => i === index ? { ...row, ...patch } : row));
61
+ if (patch.value !== void 0) {
62
+ const nextValue = patch.value;
63
+ setRevealed((prev) => {
64
+ if (prev.get(index) !== rows[index]?.value) return prev;
65
+ const next = new Map(prev);
66
+ next.set(index, nextValue);
67
+ return next;
68
+ });
69
+ }
70
+ },
71
+ [rows, commit]
72
+ );
73
+ const removeRow = useCallback(
74
+ (index) => {
75
+ commit(rows.filter((_, i) => i !== index));
76
+ setRevealed((prev) => {
77
+ const next = /* @__PURE__ */ new Map();
78
+ for (const [i, stamp] of prev) {
79
+ if (i === index) continue;
80
+ next.set(i > index ? i - 1 : i, stamp);
81
+ }
82
+ return next;
83
+ });
84
+ },
85
+ [rows, commit]
86
+ );
87
+ const toggleReveal = useCallback((index, row) => {
88
+ setRevealed((prev) => {
89
+ const next = new Map(prev);
90
+ if (next.get(index) === row.value) next.delete(index);
91
+ else next.set(index, row.value);
92
+ return next;
93
+ });
94
+ }, []);
95
+ return /* @__PURE__ */ jsxs(
96
+ "div",
97
+ {
98
+ ref,
99
+ "data-slot": "key-value-editor",
100
+ className: cn("flex flex-col gap-2", className),
101
+ ...props,
102
+ children: [
103
+ rows.length === 0 ? /* @__PURE__ */ jsx("p", { "data-slot": "key-value-editor-empty", className: "text-body text-muted-foreground", children: t("ui.keyValueEditor.empty") }) : /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2", children: rows.map((row, index) => {
104
+ const isSecret = row.secret === true;
105
+ const rowRevealed = isRevealed(index, row);
106
+ const masked = isSecret && !rowRevealed;
107
+ return /* @__PURE__ */ jsxs(
108
+ "div",
109
+ {
110
+ "data-slot": "key-value-editor-row",
111
+ className: "flex items-center gap-1",
112
+ children: [
113
+ /* @__PURE__ */ jsx(
114
+ Input,
115
+ {
116
+ "data-slot": "key-value-editor-key",
117
+ value: row.key,
118
+ placeholder: keyPlaceholder,
119
+ disabled,
120
+ "aria-label": t("ui.keyValueEditor.keyLabel", { n: index + 1 }),
121
+ onChange: (event) => updateRow(index, { key: event.target.value }),
122
+ autoComplete: "off",
123
+ spellCheck: false,
124
+ className: "flex-1"
125
+ }
126
+ ),
127
+ /* @__PURE__ */ jsx(
128
+ Input,
129
+ {
130
+ "data-slot": "key-value-editor-value",
131
+ type: masked ? "password" : "text",
132
+ value: row.value,
133
+ placeholder: valuePlaceholder,
134
+ disabled,
135
+ "aria-label": t("ui.keyValueEditor.valueLabel", { n: index + 1 }),
136
+ onChange: (event) => updateRow(index, { value: event.target.value }),
137
+ autoComplete: "off",
138
+ spellCheck: false,
139
+ className: "flex-1"
140
+ }
141
+ ),
142
+ isSecret && /* @__PURE__ */ jsx(
143
+ Button,
144
+ {
145
+ "data-slot": "key-value-editor-reveal",
146
+ type: "button",
147
+ variant: "ghost",
148
+ size: "icon-sm",
149
+ disabled,
150
+ "aria-label": t(
151
+ rowRevealed ? "ui.keyValueEditor.hide" : "ui.keyValueEditor.reveal",
152
+ { n: index + 1 }
153
+ ),
154
+ onClick: () => toggleReveal(index, row),
155
+ children: rowRevealed ? /* @__PURE__ */ jsx(EyeOff, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx(Eye, { "aria-hidden": "true" })
156
+ }
157
+ ),
158
+ /* @__PURE__ */ jsx(
159
+ Button,
160
+ {
161
+ "data-slot": "key-value-editor-remove",
162
+ type: "button",
163
+ variant: "ghost",
164
+ size: "icon-sm",
165
+ disabled,
166
+ "aria-label": t("ui.keyValueEditor.removeRow", { n: index + 1 }),
167
+ onClick: () => removeRow(index),
168
+ children: /* @__PURE__ */ jsx(X, { "aria-hidden": "true" })
169
+ }
170
+ )
171
+ ]
172
+ },
173
+ index
174
+ );
175
+ }) }),
176
+ /* @__PURE__ */ jsxs(
177
+ Button,
178
+ {
179
+ "data-slot": "key-value-editor-add",
180
+ type: "button",
181
+ variant: "outline-subtle",
182
+ size: "sm",
183
+ disabled,
184
+ onClick: addRow,
185
+ className: "self-start",
186
+ children: [
187
+ /* @__PURE__ */ jsx(Plus, { "aria-hidden": "true" }),
188
+ addLabel ?? t("ui.keyValueEditor.addRow")
189
+ ]
190
+ }
191
+ )
192
+ ]
193
+ }
194
+ );
195
+ }
196
+ );
197
+
198
+ export {
199
+ KeyValueEditor
200
+ };
201
+ //# sourceMappingURL=chunk-NZUKZRT7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/key-value-editor/key-value-editor.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n forwardRef,\n useCallback,\n useMemo,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { Eye, EyeOff, Plus, X } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { Button } from \"../button\";\nimport { Input } from \"../input\";\nimport { useLocale } from \"../locale-provider\";\n\nexport interface KeyValueRow {\n key: string;\n value: string;\n /**\n * Marks this row's value as sensitive: it renders masked (`type=\"password\"`)\n * with a reveal toggle, and is never surfaced in plain text via any\n * `title`/`aria-label`/`aria-valuetext`. Defaults to false (a plain,\n * unmasked key/value pair) — the consumer opts a row in explicitly.\n */\n secret?: boolean;\n}\n\nexport interface KeyValueEditorProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n> {\n /**\n * Controlled, ORDERED rows. An ordered `{ key, value, secret? }[]` is used\n * instead of `Record<string,string>` because a plain record can't\n * represent an in-progress duplicate key or preserve row order while the\n * user is mid-edit — both happen constantly while typing an env-var map.\n */\n value?: KeyValueRow[];\n /** Uncontrolled initial rows. */\n defaultValue?: KeyValueRow[];\n /** Called when the rows change (add, remove, or edit). */\n onValueChange?: (rows: KeyValueRow[]) => void;\n /** Placeholder for each row's key field. */\n keyPlaceholder?: string;\n /** Placeholder for each row's value field. */\n valuePlaceholder?: string;\n /** Label for the \"add row\" control. */\n addLabel?: ReactNode;\n /** Disables the whole editor. */\n disabled?: boolean;\n}\n\n/**\n * KeyValueEditor — key/value rows with per-row secret masking.\n *\n * Composes the existing `Input` + `Button` (icon vocabulary matches\n * `packages/ai/src/environment-variables.tsx`'s `Eye`/`EyeOff` reveal icons\n * for conceptual consistency, though this component lives in\n * `@elabs-ai/components-ui` — an EDITABLE settings-form primitive\n * is app UI, not the read-only agent tool-output display that\n * `EnvironmentVariables` is).\n *\n * A masked row uses the native `type=\"password\"` input (the correct\n * primitive for an EDITABLE masked field — unlike a read-only display, the\n * value must stay typable, and native masking is what keeps it that way\n * without hand-rolling bullet substitution). The reveal toggle's\n * `aria-label` never contains the secret text itself, and no `title`\n * attribute is ever set from row content.\n *\n * Controlled via `value`/`onValueChange`; uncontrolled via `defaultValue`.\n */\nexport const KeyValueEditor = forwardRef<HTMLDivElement, KeyValueEditorProps>(\n function KeyValueEditor(\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n keyPlaceholder,\n valuePlaceholder,\n addLabel,\n disabled,\n className,\n ...props\n },\n ref,\n ) {\n const { t } = useLocale();\n const isControlled = valueProp !== undefined;\n const [internalRows, setInternalRows] = useState<KeyValueRow[]>(defaultValue ?? []);\n const rows = useMemo(\n () => (isControlled ? (valueProp ?? []) : internalRows),\n [isControlled, valueProp, internalRows],\n );\n // Reveal state is keyed by row index AND stamped with the exact value the\n // user chose to reveal. The index alone is NOT safe: the row list can be\n // re-ordered, prepended to, filtered, or left unchanged (a controlled\n // parent that rejects a removal) entirely OUTSIDE this component, and a\n // bare index would then point at a DIFFERENT row — unmasking a secret the\n // user never asked to see. Comparing the stamp against the row's current\n // value makes the check FAIL CLOSED: any row whose value is not exactly\n // the one that was revealed renders masked again.\n const [revealed, setRevealed] = useState<Map<number, string>>(() => new Map());\n\n const isRevealed = useCallback(\n (index: number, row: KeyValueRow) => revealed.get(index) === row.value,\n [revealed],\n );\n\n const commit = useCallback(\n (next: KeyValueRow[]) => {\n if (!isControlled) setInternalRows(next);\n onValueChange?.(next);\n },\n [isControlled, onValueChange],\n );\n\n const addRow = useCallback(() => {\n commit([...rows, { key: \"\", value: \"\", secret: false }]);\n }, [rows, commit]);\n\n const updateRow = useCallback(\n (index: number, patch: Partial<KeyValueRow>) => {\n commit(rows.map((row, i) => (i === index ? { ...row, ...patch } : row)));\n // Typing into a row the user deliberately revealed must not re-mask it\n // mid-keystroke — re-stamp the snapshot with the new value, but ONLY\n // when the old stamp still matched (i.e. it really was revealed).\n if (patch.value !== undefined) {\n const nextValue = patch.value;\n setRevealed((prev) => {\n if (prev.get(index) !== rows[index]?.value) return prev;\n const next = new Map(prev);\n next.set(index, nextValue);\n return next;\n });\n }\n },\n [rows, commit],\n );\n\n const removeRow = useCallback(\n (index: number) => {\n commit(rows.filter((_, i) => i !== index));\n // Re-index revealed state so a shifted row never inherits a stale\n // reveal — dropping the removed index and shifting later ones down.\n // The value stamp above is the second line of defence: if the parent\n // rejects or rewrites the removal, the shifted stamps stop matching\n // and every row falls back to masked.\n setRevealed((prev) => {\n const next = new Map<number, string>();\n for (const [i, stamp] of prev) {\n if (i === index) continue;\n next.set(i > index ? i - 1 : i, stamp);\n }\n return next;\n });\n },\n [rows, commit],\n );\n\n const toggleReveal = useCallback((index: number, row: KeyValueRow) => {\n setRevealed((prev) => {\n const next = new Map(prev);\n if (next.get(index) === row.value) next.delete(index);\n else next.set(index, row.value);\n return next;\n });\n }, []);\n\n return (\n <div\n ref={ref}\n data-slot=\"key-value-editor\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n >\n {rows.length === 0 ? (\n <p data-slot=\"key-value-editor-empty\" className=\"text-body text-muted-foreground\">\n {t(\"ui.keyValueEditor.empty\")}\n </p>\n ) : (\n <div className=\"flex flex-col gap-2\">\n {rows.map((row, index) => {\n const isSecret = row.secret === true;\n const rowRevealed = isRevealed(index, row);\n const masked = isSecret && !rowRevealed;\n return (\n <div\n key={index}\n data-slot=\"key-value-editor-row\"\n className=\"flex items-center gap-1\"\n >\n <Input\n data-slot=\"key-value-editor-key\"\n value={row.key}\n placeholder={keyPlaceholder}\n disabled={disabled}\n aria-label={t(\"ui.keyValueEditor.keyLabel\", { n: index + 1 })}\n onChange={(event) => updateRow(index, { key: event.target.value })}\n autoComplete=\"off\"\n spellCheck={false}\n className=\"flex-1\"\n />\n <Input\n data-slot=\"key-value-editor-value\"\n type={masked ? \"password\" : \"text\"}\n value={row.value}\n placeholder={valuePlaceholder}\n disabled={disabled}\n aria-label={t(\"ui.keyValueEditor.valueLabel\", { n: index + 1 })}\n onChange={(event) => updateRow(index, { value: event.target.value })}\n autoComplete=\"off\"\n spellCheck={false}\n className=\"flex-1\"\n />\n {isSecret && (\n <Button\n data-slot=\"key-value-editor-reveal\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n disabled={disabled}\n aria-label={t(\n rowRevealed ? \"ui.keyValueEditor.hide\" : \"ui.keyValueEditor.reveal\",\n { n: index + 1 },\n )}\n onClick={() => toggleReveal(index, row)}\n >\n {rowRevealed ? <EyeOff aria-hidden=\"true\" /> : <Eye aria-hidden=\"true\" />}\n </Button>\n )}\n <Button\n data-slot=\"key-value-editor-remove\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n disabled={disabled}\n aria-label={t(\"ui.keyValueEditor.removeRow\", { n: index + 1 })}\n onClick={() => removeRow(index)}\n >\n <X aria-hidden=\"true\" />\n </Button>\n </div>\n );\n })}\n </div>\n )}\n <Button\n data-slot=\"key-value-editor-add\"\n type=\"button\"\n variant=\"outline-subtle\"\n size=\"sm\"\n disabled={disabled}\n onClick={addRow}\n className=\"self-start\"\n >\n <Plus aria-hidden=\"true\" />\n {addLabel ?? t(\"ui.keyValueEditor.addRow\")}\n </Button>\n </div>\n );\n },\n);\n"],"mappings":";;;;;;;;;;;;;;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,KAAK,QAAQ,MAAM,SAAS;AAuK3B,cAUM,YAVN;AAzGH,IAAM,iBAAiB;AAAA,EAC5B,SAASA,gBACP;AAAA,IACE,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,KACA;AACA,UAAM,EAAE,EAAE,IAAI,UAAU;AACxB,UAAM,eAAe,cAAc;AACnC,UAAM,CAAC,cAAc,eAAe,IAAI,SAAwB,gBAAgB,CAAC,CAAC;AAClF,UAAM,OAAO;AAAA,MACX,MAAO,eAAgB,aAAa,CAAC,IAAK;AAAA,MAC1C,CAAC,cAAc,WAAW,YAAY;AAAA,IACxC;AASA,UAAM,CAAC,UAAU,WAAW,IAAI,SAA8B,MAAM,oBAAI,IAAI,CAAC;AAE7E,UAAM,aAAa;AAAA,MACjB,CAAC,OAAe,QAAqB,SAAS,IAAI,KAAK,MAAM,IAAI;AAAA,MACjE,CAAC,QAAQ;AAAA,IACX;AAEA,UAAM,SAAS;AAAA,MACb,CAAC,SAAwB;AACvB,YAAI,CAAC,aAAc,iBAAgB,IAAI;AACvC,wBAAgB,IAAI;AAAA,MACtB;AAAA,MACA,CAAC,cAAc,aAAa;AAAA,IAC9B;AAEA,UAAM,SAAS,YAAY,MAAM;AAC/B,aAAO,CAAC,GAAG,MAAM,EAAE,KAAK,IAAI,OAAO,IAAI,QAAQ,MAAM,CAAC,CAAC;AAAA,IACzD,GAAG,CAAC,MAAM,MAAM,CAAC;AAEjB,UAAM,YAAY;AAAA,MAChB,CAAC,OAAe,UAAgC;AAC9C,eAAO,KAAK,IAAI,CAAC,KAAK,MAAO,MAAM,QAAQ,EAAE,GAAG,KAAK,GAAG,MAAM,IAAI,GAAI,CAAC;AAIvE,YAAI,MAAM,UAAU,QAAW;AAC7B,gBAAM,YAAY,MAAM;AACxB,sBAAY,CAAC,SAAS;AACpB,gBAAI,KAAK,IAAI,KAAK,MAAM,KAAK,KAAK,GAAG,MAAO,QAAO;AACnD,kBAAM,OAAO,IAAI,IAAI,IAAI;AACzB,iBAAK,IAAI,OAAO,SAAS;AACzB,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA,CAAC,MAAM,MAAM;AAAA,IACf;AAEA,UAAM,YAAY;AAAA,MAChB,CAAC,UAAkB;AACjB,eAAO,KAAK,OAAO,CAAC,GAAG,MAAM,MAAM,KAAK,CAAC;AAMzC,oBAAY,CAAC,SAAS;AACpB,gBAAM,OAAO,oBAAI,IAAoB;AACrC,qBAAW,CAAC,GAAG,KAAK,KAAK,MAAM;AAC7B,gBAAI,MAAM,MAAO;AACjB,iBAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,GAAG,KAAK;AAAA,UACvC;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,MACA,CAAC,MAAM,MAAM;AAAA,IACf;AAEA,UAAM,eAAe,YAAY,CAAC,OAAe,QAAqB;AACpE,kBAAY,CAAC,SAAS;AACpB,cAAM,OAAO,IAAI,IAAI,IAAI;AACzB,YAAI,KAAK,IAAI,KAAK,MAAM,IAAI,MAAO,MAAK,OAAO,KAAK;AAAA,YAC/C,MAAK,IAAI,OAAO,IAAI,KAAK;AAC9B,eAAO;AAAA,MACT,CAAC;AAAA,IACH,GAAG,CAAC,CAAC;AAEL,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,aAAU;AAAA,QACV,WAAW,GAAG,uBAAuB,SAAS;AAAA,QAC7C,GAAG;AAAA,QAEH;AAAA,eAAK,WAAW,IACf,oBAAC,OAAE,aAAU,0BAAyB,WAAU,mCAC7C,YAAE,yBAAyB,GAC9B,IAEA,oBAAC,SAAI,WAAU,uBACZ,eAAK,IAAI,CAAC,KAAK,UAAU;AACxB,kBAAM,WAAW,IAAI,WAAW;AAChC,kBAAM,cAAc,WAAW,OAAO,GAAG;AACzC,kBAAM,SAAS,YAAY,CAAC;AAC5B,mBACE;AAAA,cAAC;AAAA;AAAA,gBAEC,aAAU;AAAA,gBACV,WAAU;AAAA,gBAEV;AAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,aAAU;AAAA,sBACV,OAAO,IAAI;AAAA,sBACX,aAAa;AAAA,sBACb;AAAA,sBACA,cAAY,EAAE,8BAA8B,EAAE,GAAG,QAAQ,EAAE,CAAC;AAAA,sBAC5D,UAAU,CAAC,UAAU,UAAU,OAAO,EAAE,KAAK,MAAM,OAAO,MAAM,CAAC;AAAA,sBACjE,cAAa;AAAA,sBACb,YAAY;AAAA,sBACZ,WAAU;AAAA;AAAA,kBACZ;AAAA,kBACA;AAAA,oBAAC;AAAA;AAAA,sBACC,aAAU;AAAA,sBACV,MAAM,SAAS,aAAa;AAAA,sBAC5B,OAAO,IAAI;AAAA,sBACX,aAAa;AAAA,sBACb;AAAA,sBACA,cAAY,EAAE,gCAAgC,EAAE,GAAG,QAAQ,EAAE,CAAC;AAAA,sBAC9D,UAAU,CAAC,UAAU,UAAU,OAAO,EAAE,OAAO,MAAM,OAAO,MAAM,CAAC;AAAA,sBACnE,cAAa;AAAA,sBACb,YAAY;AAAA,sBACZ,WAAU;AAAA;AAAA,kBACZ;AAAA,kBACC,YACC;AAAA,oBAAC;AAAA;AAAA,sBACC,aAAU;AAAA,sBACV,MAAK;AAAA,sBACL,SAAQ;AAAA,sBACR,MAAK;AAAA,sBACL;AAAA,sBACA,cAAY;AAAA,wBACV,cAAc,2BAA2B;AAAA,wBACzC,EAAE,GAAG,QAAQ,EAAE;AAAA,sBACjB;AAAA,sBACA,SAAS,MAAM,aAAa,OAAO,GAAG;AAAA,sBAErC,wBAAc,oBAAC,UAAO,eAAY,QAAO,IAAK,oBAAC,OAAI,eAAY,QAAO;AAAA;AAAA,kBACzE;AAAA,kBAEF;AAAA,oBAAC;AAAA;AAAA,sBACC,aAAU;AAAA,sBACV,MAAK;AAAA,sBACL,SAAQ;AAAA,sBACR,MAAK;AAAA,sBACL;AAAA,sBACA,cAAY,EAAE,+BAA+B,EAAE,GAAG,QAAQ,EAAE,CAAC;AAAA,sBAC7D,SAAS,MAAM,UAAU,KAAK;AAAA,sBAE9B,8BAAC,KAAE,eAAY,QAAO;AAAA;AAAA,kBACxB;AAAA;AAAA;AAAA,cArDK;AAAA,YAsDP;AAAA,UAEJ,CAAC,GACH;AAAA,UAEF;AAAA,YAAC;AAAA;AAAA,cACC,aAAU;AAAA,cACV,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,MAAK;AAAA,cACL;AAAA,cACA,SAAS;AAAA,cACT,WAAU;AAAA,cAEV;AAAA,oCAAC,QAAK,eAAY,QAAO;AAAA,gBACxB,YAAY,EAAE,0BAA0B;AAAA;AAAA;AAAA,UAC3C;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;","names":["KeyValueEditor"]}