@elabs-ai/components-ui 4.1.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1547) hide show
  1. package/README.md +2 -1
  2. package/dist/chunk-22Z735L6.js +18 -0
  3. package/dist/chunk-22Z735L6.js.map +1 -0
  4. package/dist/chunk-23E62DNM.js +2 -0
  5. package/dist/chunk-23E62DNM.js.map +1 -0
  6. package/dist/chunk-2AABRSIN.js +2 -0
  7. package/dist/chunk-2AABRSIN.js.map +1 -0
  8. package/dist/chunk-2HXVFC4B.js +44 -0
  9. package/dist/chunk-2HXVFC4B.js.map +1 -0
  10. package/dist/chunk-2SBYBN45.js +2 -0
  11. package/dist/chunk-2SBYBN45.js.map +1 -0
  12. package/dist/chunk-333EWYWL.js +385 -0
  13. package/dist/chunk-333EWYWL.js.map +1 -0
  14. package/dist/chunk-35DUHYPC.js +59 -0
  15. package/dist/chunk-35DUHYPC.js.map +1 -0
  16. package/dist/chunk-35ZTVB35.js +76 -0
  17. package/dist/chunk-35ZTVB35.js.map +1 -0
  18. package/dist/chunk-36VULFFV.js +2 -0
  19. package/dist/chunk-36VULFFV.js.map +1 -0
  20. package/dist/chunk-3B7W334A.js +229 -0
  21. package/dist/chunk-3B7W334A.js.map +1 -0
  22. package/dist/chunk-3EKVSKGJ.js +256 -0
  23. package/dist/chunk-3EKVSKGJ.js.map +1 -0
  24. package/dist/chunk-3JAEQNCB.js +60 -0
  25. package/dist/chunk-3JAEQNCB.js.map +1 -0
  26. package/dist/chunk-3LWAAK3J.js +140 -0
  27. package/dist/chunk-3LWAAK3J.js.map +1 -0
  28. package/dist/chunk-3OSGTUN2.js +2 -0
  29. package/dist/chunk-3OSGTUN2.js.map +1 -0
  30. package/dist/chunk-3P7SRCDB.js +23 -0
  31. package/dist/chunk-3P7SRCDB.js.map +1 -0
  32. package/dist/chunk-45ICJ3EV.js +2 -0
  33. package/dist/chunk-45ICJ3EV.js.map +1 -0
  34. package/dist/chunk-4ACT7RLU.js +2 -0
  35. package/dist/chunk-4ACT7RLU.js.map +1 -0
  36. package/dist/chunk-4E73UAFA.js +296 -0
  37. package/dist/chunk-4E73UAFA.js.map +1 -0
  38. package/dist/chunk-4GQFIJAE.js +197 -0
  39. package/dist/chunk-4GQFIJAE.js.map +1 -0
  40. package/dist/chunk-4HTVJZVG.js +2 -0
  41. package/dist/chunk-4HTVJZVG.js.map +1 -0
  42. package/dist/chunk-4KDA5MDC.js +2 -0
  43. package/dist/chunk-4KDA5MDC.js.map +1 -0
  44. package/dist/chunk-4PITSMJ3.js +52 -0
  45. package/dist/chunk-4PITSMJ3.js.map +1 -0
  46. package/dist/chunk-4PXDZR2W.js +2 -0
  47. package/dist/chunk-4PXDZR2W.js.map +1 -0
  48. package/dist/chunk-4UWOADYM.js +2 -0
  49. package/dist/chunk-4UWOADYM.js.map +1 -0
  50. package/dist/chunk-4W3MVVKN.js +66 -0
  51. package/dist/chunk-4W3MVVKN.js.map +1 -0
  52. package/dist/chunk-4YOFSGHD.js +2 -0
  53. package/dist/chunk-4YOFSGHD.js.map +1 -0
  54. package/dist/chunk-533R5EKD.js +87 -0
  55. package/dist/chunk-533R5EKD.js.map +1 -0
  56. package/dist/chunk-545HI223.js +2 -0
  57. package/dist/chunk-545HI223.js.map +1 -0
  58. package/dist/chunk-57C25JYV.js +170 -0
  59. package/dist/chunk-57C25JYV.js.map +1 -0
  60. package/dist/chunk-5AWXGBSH.js +82 -0
  61. package/dist/chunk-5AWXGBSH.js.map +1 -0
  62. package/dist/chunk-5G2DDMHR.js +2 -0
  63. package/dist/chunk-5G2DDMHR.js.map +1 -0
  64. package/dist/chunk-5HBMI2DO.js +42 -0
  65. package/dist/chunk-5HBMI2DO.js.map +1 -0
  66. package/dist/chunk-5LCN5Q2L.js +23 -0
  67. package/dist/chunk-5LCN5Q2L.js.map +1 -0
  68. package/dist/chunk-5P4BSHIG.js +2 -0
  69. package/dist/chunk-5P4BSHIG.js.map +1 -0
  70. package/dist/chunk-5RC32MZH.js +161 -0
  71. package/dist/chunk-5RC32MZH.js.map +1 -0
  72. package/dist/chunk-5SHHIQVA.js +22 -0
  73. package/dist/chunk-5SHHIQVA.js.map +1 -0
  74. package/dist/chunk-5V5J7APL.js +27 -0
  75. package/dist/chunk-5V5J7APL.js.map +1 -0
  76. package/dist/chunk-5YZLOAKR.js +2 -0
  77. package/dist/chunk-5YZLOAKR.js.map +1 -0
  78. package/dist/chunk-5Z55AFOW.js +128 -0
  79. package/dist/chunk-5Z55AFOW.js.map +1 -0
  80. package/dist/chunk-653ZIWX6.js +2 -0
  81. package/dist/chunk-653ZIWX6.js.map +1 -0
  82. package/dist/chunk-6DHG7JVP.js +2 -0
  83. package/dist/chunk-6DHG7JVP.js.map +1 -0
  84. package/dist/chunk-6HGS5Z2Z.js +110 -0
  85. package/dist/chunk-6HGS5Z2Z.js.map +1 -0
  86. package/dist/chunk-6NKILKS6.js +35 -0
  87. package/dist/chunk-6NKILKS6.js.map +1 -0
  88. package/dist/chunk-6OFWWIEG.js +50 -0
  89. package/dist/chunk-6OFWWIEG.js.map +1 -0
  90. package/dist/chunk-6OPDRLMU.js +158 -0
  91. package/dist/chunk-6OPDRLMU.js.map +1 -0
  92. package/dist/chunk-6QU7OVFA.js +357 -0
  93. package/dist/chunk-6QU7OVFA.js.map +1 -0
  94. package/dist/chunk-6ROQKB4U.js +2 -0
  95. package/dist/chunk-6ROQKB4U.js.map +1 -0
  96. package/dist/chunk-6S43VAN7.js +2 -0
  97. package/dist/chunk-6S43VAN7.js.map +1 -0
  98. package/dist/chunk-6TJVJPNU.js +1321 -0
  99. package/dist/chunk-6TJVJPNU.js.map +1 -0
  100. package/dist/chunk-6VLJL7Q4.js +2 -0
  101. package/dist/chunk-6VLJL7Q4.js.map +1 -0
  102. package/dist/chunk-7G63B2B7.js +189 -0
  103. package/dist/chunk-7G63B2B7.js.map +1 -0
  104. package/dist/chunk-7P24I5OL.js +23 -0
  105. package/dist/chunk-7P24I5OL.js.map +1 -0
  106. package/dist/chunk-7PS5MKVH.js +97 -0
  107. package/dist/chunk-7PS5MKVH.js.map +1 -0
  108. package/dist/chunk-7WIHVGYL.js +2 -0
  109. package/dist/chunk-7WIHVGYL.js.map +1 -0
  110. package/dist/chunk-7WXDSTNR.js +62 -0
  111. package/dist/chunk-7WXDSTNR.js.map +1 -0
  112. package/dist/chunk-A43B4IT7.js +395 -0
  113. package/dist/chunk-A43B4IT7.js.map +1 -0
  114. package/dist/chunk-A47AZPCL.js +35 -0
  115. package/dist/chunk-A47AZPCL.js.map +1 -0
  116. package/dist/chunk-AA3SPDJU.js +2 -0
  117. package/dist/chunk-AA3SPDJU.js.map +1 -0
  118. package/dist/chunk-AC7X3D2M.js +2 -0
  119. package/dist/chunk-AC7X3D2M.js.map +1 -0
  120. package/dist/chunk-AE6UDP36.js +2 -0
  121. package/dist/chunk-AE6UDP36.js.map +1 -0
  122. package/dist/chunk-AFEFAGPW.js +2 -0
  123. package/dist/chunk-AFEFAGPW.js.map +1 -0
  124. package/dist/chunk-AFJCS2WV.js +95 -0
  125. package/dist/chunk-AFJCS2WV.js.map +1 -0
  126. package/dist/chunk-AQNLEP5F.js +2 -0
  127. package/dist/chunk-AQNLEP5F.js.map +1 -0
  128. package/dist/chunk-AUQVJ7KO.js +2 -0
  129. package/dist/chunk-AUQVJ7KO.js.map +1 -0
  130. package/dist/chunk-AXKZBRZK.js +32 -0
  131. package/dist/chunk-AXKZBRZK.js.map +1 -0
  132. package/dist/chunk-AZEABCK4.js +30 -0
  133. package/dist/chunk-AZEABCK4.js.map +1 -0
  134. package/dist/chunk-B23VW24W.js +2 -0
  135. package/dist/chunk-B23VW24W.js.map +1 -0
  136. package/dist/chunk-B2RSOLLO.js +2 -0
  137. package/dist/chunk-B2RSOLLO.js.map +1 -0
  138. package/dist/chunk-B5QQLMEE.js +31 -0
  139. package/dist/chunk-B5QQLMEE.js.map +1 -0
  140. package/dist/chunk-BLNXHETI.js +163 -0
  141. package/dist/chunk-BLNXHETI.js.map +1 -0
  142. package/dist/chunk-BM6NGS3A.js +201 -0
  143. package/dist/chunk-BM6NGS3A.js.map +1 -0
  144. package/dist/chunk-BN4CKDFU.js +989 -0
  145. package/dist/chunk-BN4CKDFU.js.map +1 -0
  146. package/dist/chunk-BPXLHGWI.js +54 -0
  147. package/dist/chunk-BPXLHGWI.js.map +1 -0
  148. package/dist/chunk-BTBYNKT4.js +2 -0
  149. package/dist/chunk-BTBYNKT4.js.map +1 -0
  150. package/dist/chunk-BWL7HWEF.js +325 -0
  151. package/dist/chunk-BWL7HWEF.js.map +1 -0
  152. package/dist/chunk-BZQF5QCN.js +18 -0
  153. package/dist/chunk-BZQF5QCN.js.map +1 -0
  154. package/dist/chunk-C2AQEEFB.js +2 -0
  155. package/dist/chunk-C2AQEEFB.js.map +1 -0
  156. package/dist/chunk-C753P3VJ.js +2 -0
  157. package/dist/chunk-C753P3VJ.js.map +1 -0
  158. package/dist/chunk-CDE74W6O.js +2 -0
  159. package/dist/chunk-CDE74W6O.js.map +1 -0
  160. package/dist/chunk-CEQER4CV.js +2 -0
  161. package/dist/chunk-CEQER4CV.js.map +1 -0
  162. package/dist/chunk-CQ5CH3SB.js +55 -0
  163. package/dist/chunk-CQ5CH3SB.js.map +1 -0
  164. package/dist/chunk-CRGGGHAM.js +2 -0
  165. package/dist/chunk-CRGGGHAM.js.map +1 -0
  166. package/dist/chunk-CRVB4SLG.js +2 -0
  167. package/dist/chunk-CRVB4SLG.js.map +1 -0
  168. package/dist/chunk-CT6XJIPY.js +2 -0
  169. package/dist/chunk-CT6XJIPY.js.map +1 -0
  170. package/dist/chunk-CY624JOL.js +2 -0
  171. package/dist/chunk-CY624JOL.js.map +1 -0
  172. package/dist/chunk-D3C3VVCX.js +38 -0
  173. package/dist/chunk-D3C3VVCX.js.map +1 -0
  174. package/dist/chunk-D53EN4Q6.js +2 -0
  175. package/dist/chunk-D53EN4Q6.js.map +1 -0
  176. package/dist/chunk-DCHYNTHI.js +11 -0
  177. package/dist/chunk-DCHYNTHI.js.map +1 -0
  178. package/dist/chunk-DCI6IOJX.js +236 -0
  179. package/dist/chunk-DCI6IOJX.js.map +1 -0
  180. package/dist/chunk-DFYPQ52O.js +476 -0
  181. package/dist/chunk-DFYPQ52O.js.map +1 -0
  182. package/dist/chunk-DIQJODQR.js +2 -0
  183. package/dist/chunk-DIQJODQR.js.map +1 -0
  184. package/dist/chunk-DSGTH6JW.js +2 -0
  185. package/dist/chunk-DSGTH6JW.js.map +1 -0
  186. package/dist/chunk-DT6RNLCP.js +32 -0
  187. package/dist/chunk-DT6RNLCP.js.map +1 -0
  188. package/dist/chunk-DU6ITAJL.js +2 -0
  189. package/dist/chunk-DU6ITAJL.js.map +1 -0
  190. package/dist/chunk-DUF2VZON.js +36 -0
  191. package/dist/chunk-DUF2VZON.js.map +1 -0
  192. package/dist/chunk-DXDLTYTT.js +2 -0
  193. package/dist/chunk-DXDLTYTT.js.map +1 -0
  194. package/dist/chunk-E3ES2KR6.js +55 -0
  195. package/dist/chunk-E3ES2KR6.js.map +1 -0
  196. package/dist/chunk-EAFPUZ46.js +2 -0
  197. package/dist/chunk-EAFPUZ46.js.map +1 -0
  198. package/dist/chunk-EBDOKU5K.js +2 -0
  199. package/dist/chunk-EBDOKU5K.js.map +1 -0
  200. package/dist/chunk-ECCNRCC4.js +74 -0
  201. package/dist/chunk-ECCNRCC4.js.map +1 -0
  202. package/dist/chunk-EDE73Q6Z.js +2 -0
  203. package/dist/chunk-EDE73Q6Z.js.map +1 -0
  204. package/dist/chunk-EHGIW7GA.js +190 -0
  205. package/dist/chunk-EHGIW7GA.js.map +1 -0
  206. package/dist/chunk-EJQYE4MY.js +100 -0
  207. package/dist/chunk-EJQYE4MY.js.map +1 -0
  208. package/dist/chunk-EKY3A5LO.js +133 -0
  209. package/dist/chunk-EKY3A5LO.js.map +1 -0
  210. package/dist/chunk-EL3OXVOW.js +31 -0
  211. package/dist/chunk-EL3OXVOW.js.map +1 -0
  212. package/dist/chunk-EP3U7OQ3.js +18 -0
  213. package/dist/chunk-EP3U7OQ3.js.map +1 -0
  214. package/dist/chunk-EY2PGOG3.js +246 -0
  215. package/dist/chunk-EY2PGOG3.js.map +1 -0
  216. package/dist/chunk-FAOX6A5D.js +2 -0
  217. package/dist/chunk-FAOX6A5D.js.map +1 -0
  218. package/dist/chunk-FBJ2JSRA.js +47 -0
  219. package/dist/chunk-FBJ2JSRA.js.map +1 -0
  220. package/dist/chunk-FDJ77DTR.js +2 -0
  221. package/dist/chunk-FDJ77DTR.js.map +1 -0
  222. package/dist/chunk-FDPONOOT.js +93 -0
  223. package/dist/chunk-FDPONOOT.js.map +1 -0
  224. package/dist/chunk-FHDJKH2A.js +2 -0
  225. package/dist/chunk-FHDJKH2A.js.map +1 -0
  226. package/dist/chunk-FINAKMC6.js +796 -0
  227. package/dist/chunk-FINAKMC6.js.map +1 -0
  228. package/dist/chunk-FKUP7QRJ.js +54 -0
  229. package/dist/chunk-FKUP7QRJ.js.map +1 -0
  230. package/dist/chunk-FPLZ24MK.js +2 -0
  231. package/dist/chunk-FPLZ24MK.js.map +1 -0
  232. package/dist/chunk-FRFSDZIN.js +2 -0
  233. package/dist/chunk-FRFSDZIN.js.map +1 -0
  234. package/dist/chunk-FYCCNQXQ.js +173 -0
  235. package/dist/chunk-FYCCNQXQ.js.map +1 -0
  236. package/dist/chunk-G3OTDYCD.js +53 -0
  237. package/dist/chunk-G3OTDYCD.js.map +1 -0
  238. package/dist/chunk-G72UOVKS.js +2 -0
  239. package/dist/chunk-G72UOVKS.js.map +1 -0
  240. package/dist/chunk-GAI4NEPU.js +151 -0
  241. package/dist/chunk-GAI4NEPU.js.map +1 -0
  242. package/dist/chunk-GRWGNWIJ.js +187 -0
  243. package/dist/chunk-GRWGNWIJ.js.map +1 -0
  244. package/dist/chunk-GV6GQXKX.js +176 -0
  245. package/dist/chunk-GV6GQXKX.js.map +1 -0
  246. package/dist/chunk-H5UA5JW4.js +140 -0
  247. package/dist/chunk-H5UA5JW4.js.map +1 -0
  248. package/dist/chunk-H5XSI63P.js +2 -0
  249. package/dist/chunk-H5XSI63P.js.map +1 -0
  250. package/dist/chunk-HANBQNW3.js +1498 -0
  251. package/dist/chunk-HANBQNW3.js.map +1 -0
  252. package/dist/chunk-HCU2JHPH.js +169 -0
  253. package/dist/chunk-HCU2JHPH.js.map +1 -0
  254. package/dist/chunk-HDDXP2J7.js +2 -0
  255. package/dist/chunk-HDDXP2J7.js.map +1 -0
  256. package/dist/chunk-HDS64Z5L.js +54 -0
  257. package/dist/chunk-HDS64Z5L.js.map +1 -0
  258. package/dist/chunk-HHVULJGX.js +2 -0
  259. package/dist/chunk-HHVULJGX.js.map +1 -0
  260. package/dist/chunk-HLMFRCFE.js +2 -0
  261. package/dist/chunk-HLMFRCFE.js.map +1 -0
  262. package/dist/chunk-HPUPDT4Q.js +2 -0
  263. package/dist/chunk-HPUPDT4Q.js.map +1 -0
  264. package/dist/chunk-HRYH7XQP.js +209 -0
  265. package/dist/chunk-HRYH7XQP.js.map +1 -0
  266. package/dist/chunk-HVFYAQLK.js +101 -0
  267. package/dist/chunk-HVFYAQLK.js.map +1 -0
  268. package/dist/chunk-HZPNST7D.js +2 -0
  269. package/dist/chunk-HZPNST7D.js.map +1 -0
  270. package/dist/chunk-I6O6ACCH.js +2 -0
  271. package/dist/chunk-I6O6ACCH.js.map +1 -0
  272. package/dist/chunk-IGP5E4FC.js +201 -0
  273. package/dist/chunk-IGP5E4FC.js.map +1 -0
  274. package/dist/chunk-IHMFEPIT.js +123 -0
  275. package/dist/chunk-IHMFEPIT.js.map +1 -0
  276. package/dist/chunk-IM5VJP6T.js +2 -0
  277. package/dist/chunk-IM5VJP6T.js.map +1 -0
  278. package/dist/chunk-IRUZDWJ3.js +218 -0
  279. package/dist/chunk-IRUZDWJ3.js.map +1 -0
  280. package/dist/chunk-ISWUCXEZ.js +2 -0
  281. package/dist/chunk-ISWUCXEZ.js.map +1 -0
  282. package/dist/chunk-ITFDGFOT.js +31 -0
  283. package/dist/chunk-ITFDGFOT.js.map +1 -0
  284. package/dist/chunk-IUQ474IC.js +2 -0
  285. package/dist/chunk-IUQ474IC.js.map +1 -0
  286. package/dist/chunk-IY23F2Y5.js +2 -0
  287. package/dist/chunk-IY23F2Y5.js.map +1 -0
  288. package/dist/chunk-IZJOZJDL.js +75 -0
  289. package/dist/chunk-IZJOZJDL.js.map +1 -0
  290. package/dist/chunk-J2P4YZLC.js +85 -0
  291. package/dist/chunk-J2P4YZLC.js.map +1 -0
  292. package/dist/chunk-JCRBDA66.js +2 -0
  293. package/dist/chunk-JCRBDA66.js.map +1 -0
  294. package/dist/chunk-JGS2IHER.js +140 -0
  295. package/dist/chunk-JGS2IHER.js.map +1 -0
  296. package/dist/chunk-JNWXHPZG.js +24 -0
  297. package/dist/chunk-JNWXHPZG.js.map +1 -0
  298. package/dist/chunk-JWWJ2Z5C.js +2 -0
  299. package/dist/chunk-JWWJ2Z5C.js.map +1 -0
  300. package/dist/chunk-K2GLXCTG.js +2 -0
  301. package/dist/chunk-K2GLXCTG.js.map +1 -0
  302. package/dist/chunk-K6YRTASS.js +55 -0
  303. package/dist/chunk-K6YRTASS.js.map +1 -0
  304. package/dist/chunk-KAAJL2HA.js +327 -0
  305. package/dist/chunk-KAAJL2HA.js.map +1 -0
  306. package/dist/chunk-KBNWM27Q.js +48 -0
  307. package/dist/chunk-KBNWM27Q.js.map +1 -0
  308. package/dist/chunk-KOVHUAHG.js +164 -0
  309. package/dist/chunk-KOVHUAHG.js.map +1 -0
  310. package/dist/chunk-KRVSD4OK.js +2 -0
  311. package/dist/chunk-KRVSD4OK.js.map +1 -0
  312. package/dist/chunk-KTH3GWAL.js +116 -0
  313. package/dist/chunk-KTH3GWAL.js.map +1 -0
  314. package/dist/chunk-KUAVM54Y.js +30 -0
  315. package/dist/chunk-KUAVM54Y.js.map +1 -0
  316. package/dist/chunk-KWQ6HV5Z.js +97 -0
  317. package/dist/chunk-KWQ6HV5Z.js.map +1 -0
  318. package/dist/chunk-KZWC6JCI.js +177 -0
  319. package/dist/chunk-KZWC6JCI.js.map +1 -0
  320. package/dist/chunk-L37QZALU.js +17 -0
  321. package/dist/chunk-L37QZALU.js.map +1 -0
  322. package/dist/chunk-L3SHPHLK.js +35 -0
  323. package/dist/chunk-L3SHPHLK.js.map +1 -0
  324. package/dist/chunk-L66VJIRD.js +2 -0
  325. package/dist/chunk-L66VJIRD.js.map +1 -0
  326. package/dist/chunk-LDOCY4SU.js +68 -0
  327. package/dist/chunk-LDOCY4SU.js.map +1 -0
  328. package/dist/chunk-LJGWA2XL.js +2 -0
  329. package/dist/chunk-LJGWA2XL.js.map +1 -0
  330. package/dist/chunk-LLQWLZ75.js +2 -0
  331. package/dist/chunk-LLQWLZ75.js.map +1 -0
  332. package/dist/chunk-LMO3QK7Q.js +137 -0
  333. package/dist/chunk-LMO3QK7Q.js.map +1 -0
  334. package/dist/chunk-LOSXINSS.js +100 -0
  335. package/dist/chunk-LOSXINSS.js.map +1 -0
  336. package/dist/chunk-LR2CU7HK.js +41 -0
  337. package/dist/chunk-LR2CU7HK.js.map +1 -0
  338. package/dist/chunk-LSYVAOSH.js +2 -0
  339. package/dist/chunk-LSYVAOSH.js.map +1 -0
  340. package/dist/chunk-LVRULYU4.js +400 -0
  341. package/dist/chunk-LVRULYU4.js.map +1 -0
  342. package/dist/chunk-LXW3GNF7.js +201 -0
  343. package/dist/chunk-LXW3GNF7.js.map +1 -0
  344. package/dist/chunk-LYVBDMDQ.js +2 -0
  345. package/dist/chunk-LYVBDMDQ.js.map +1 -0
  346. package/dist/chunk-M3WSUFD4.js +2 -0
  347. package/dist/chunk-M3WSUFD4.js.map +1 -0
  348. package/dist/chunk-MGAXCPT7.js +87 -0
  349. package/dist/chunk-MGAXCPT7.js.map +1 -0
  350. package/dist/chunk-MIXCXZWT.js +2 -0
  351. package/dist/chunk-MIXCXZWT.js.map +1 -0
  352. package/dist/chunk-MLGBLKUH.js +2 -0
  353. package/dist/chunk-MLGBLKUH.js.map +1 -0
  354. package/dist/chunk-MNS2VWHD.js +2 -0
  355. package/dist/chunk-MNS2VWHD.js.map +1 -0
  356. package/dist/chunk-MPMMU3QI.js +2 -0
  357. package/dist/chunk-MPMMU3QI.js.map +1 -0
  358. package/dist/chunk-MRWOHWEH.js +2 -0
  359. package/dist/chunk-MRWOHWEH.js.map +1 -0
  360. package/dist/chunk-MZDL7N52.js +2 -0
  361. package/dist/chunk-MZDL7N52.js.map +1 -0
  362. package/dist/chunk-N44PNGDS.js +169 -0
  363. package/dist/chunk-N44PNGDS.js.map +1 -0
  364. package/dist/chunk-N7PJTMRL.js +2 -0
  365. package/dist/chunk-N7PJTMRL.js.map +1 -0
  366. package/dist/chunk-NBMF7SIS.js +35 -0
  367. package/dist/chunk-NBMF7SIS.js.map +1 -0
  368. package/dist/chunk-NJAGSGPF.js +245 -0
  369. package/dist/chunk-NJAGSGPF.js.map +1 -0
  370. package/dist/chunk-NMGNXW3J.js +98 -0
  371. package/dist/chunk-NMGNXW3J.js.map +1 -0
  372. package/dist/chunk-NQY3QNLR.js +80 -0
  373. package/dist/chunk-NQY3QNLR.js.map +1 -0
  374. package/dist/chunk-NRNIUM75.js +2 -0
  375. package/dist/chunk-NRNIUM75.js.map +1 -0
  376. package/dist/chunk-NRSSSVWB.js +61 -0
  377. package/dist/chunk-NRSSSVWB.js.map +1 -0
  378. package/dist/chunk-NTTSHOOK.js +78 -0
  379. package/dist/chunk-NTTSHOOK.js.map +1 -0
  380. package/dist/chunk-O3JWMB6O.js +20 -0
  381. package/dist/chunk-O3JWMB6O.js.map +1 -0
  382. package/dist/chunk-OBEJUAN6.js +246 -0
  383. package/dist/chunk-OBEJUAN6.js.map +1 -0
  384. package/dist/chunk-OEPN373X.js +2 -0
  385. package/dist/chunk-OEPN373X.js.map +1 -0
  386. package/dist/chunk-OITCRC5D.js +2 -0
  387. package/dist/chunk-OITCRC5D.js.map +1 -0
  388. package/dist/chunk-OKV3N7QK.js +2 -0
  389. package/dist/chunk-OKV3N7QK.js.map +1 -0
  390. package/dist/chunk-ON2E7XHD.js +51 -0
  391. package/dist/chunk-ON2E7XHD.js.map +1 -0
  392. package/dist/chunk-OPMMD25Z.js +218 -0
  393. package/dist/chunk-OPMMD25Z.js.map +1 -0
  394. package/dist/chunk-OR4NVFPH.js +2 -0
  395. package/dist/chunk-OR4NVFPH.js.map +1 -0
  396. package/dist/chunk-OV4GQOLC.js +73 -0
  397. package/dist/chunk-OV4GQOLC.js.map +1 -0
  398. package/dist/chunk-OYKS7YHE.js +2 -0
  399. package/dist/chunk-OYKS7YHE.js.map +1 -0
  400. package/dist/chunk-OYM3NHSD.js +74 -0
  401. package/dist/chunk-OYM3NHSD.js.map +1 -0
  402. package/dist/chunk-OZTM6PYF.js +30 -0
  403. package/dist/chunk-OZTM6PYF.js.map +1 -0
  404. package/dist/chunk-PHAENHGL.js +19 -0
  405. package/dist/chunk-PHAENHGL.js.map +1 -0
  406. package/dist/chunk-PLCQZBZS.js +63 -0
  407. package/dist/chunk-PLCQZBZS.js.map +1 -0
  408. package/dist/chunk-PP7POY7C.js +110 -0
  409. package/dist/chunk-PP7POY7C.js.map +1 -0
  410. package/dist/chunk-PSBNQZB4.js +2 -0
  411. package/dist/chunk-PSBNQZB4.js.map +1 -0
  412. package/dist/chunk-PYPNGKRD.js +355 -0
  413. package/dist/chunk-PYPNGKRD.js.map +1 -0
  414. package/dist/chunk-QDJHUNBQ.js +2 -0
  415. package/dist/chunk-QDJHUNBQ.js.map +1 -0
  416. package/dist/chunk-QDTGDYMM.js +77 -0
  417. package/dist/chunk-QDTGDYMM.js.map +1 -0
  418. package/dist/chunk-QF6UWWDY.js +125 -0
  419. package/dist/chunk-QF6UWWDY.js.map +1 -0
  420. package/dist/chunk-QGX37P5L.js +24 -0
  421. package/dist/chunk-QGX37P5L.js.map +1 -0
  422. package/dist/chunk-QNEOO22E.js +75 -0
  423. package/dist/chunk-QNEOO22E.js.map +1 -0
  424. package/dist/chunk-QODOFLHL.js +2 -0
  425. package/dist/chunk-QODOFLHL.js.map +1 -0
  426. package/dist/chunk-QRGYKV4J.js +2 -0
  427. package/dist/chunk-QRGYKV4J.js.map +1 -0
  428. package/dist/chunk-QTIKGWU4.js +91 -0
  429. package/dist/chunk-QTIKGWU4.js.map +1 -0
  430. package/dist/chunk-R3SYH7RG.js +782 -0
  431. package/dist/chunk-R3SYH7RG.js.map +1 -0
  432. package/dist/chunk-R5JYMCEA.js +2 -0
  433. package/dist/chunk-R5JYMCEA.js.map +1 -0
  434. package/dist/chunk-R7DDZIE3.js +232 -0
  435. package/dist/chunk-R7DDZIE3.js.map +1 -0
  436. package/dist/chunk-RB5AWLDJ.js +26 -0
  437. package/dist/chunk-RB5AWLDJ.js.map +1 -0
  438. package/dist/chunk-RF7JSNXJ.js +2 -0
  439. package/dist/chunk-RF7JSNXJ.js.map +1 -0
  440. package/dist/chunk-RHXVQZOW.js +2 -0
  441. package/dist/chunk-RHXVQZOW.js.map +1 -0
  442. package/dist/chunk-RM5JIUVW.js +74 -0
  443. package/dist/chunk-RM5JIUVW.js.map +1 -0
  444. package/dist/chunk-RMSMTLXH.js +2 -0
  445. package/dist/chunk-RMSMTLXH.js.map +1 -0
  446. package/dist/chunk-RNC4M6SG.js +85 -0
  447. package/dist/chunk-RNC4M6SG.js.map +1 -0
  448. package/dist/chunk-RRYWMYGI.js +14 -0
  449. package/dist/chunk-RRYWMYGI.js.map +1 -0
  450. package/dist/chunk-RRZUMIYG.js +93 -0
  451. package/dist/chunk-RRZUMIYG.js.map +1 -0
  452. package/dist/chunk-RTHCX2TG.js +59 -0
  453. package/dist/chunk-RTHCX2TG.js.map +1 -0
  454. package/dist/chunk-RWUKMJYA.js +39 -0
  455. package/dist/chunk-RWUKMJYA.js.map +1 -0
  456. package/dist/chunk-SMTAPQEQ.js +2 -0
  457. package/dist/chunk-SMTAPQEQ.js.map +1 -0
  458. package/dist/chunk-SS6EOZKZ.js +2 -0
  459. package/dist/chunk-SS6EOZKZ.js.map +1 -0
  460. package/dist/chunk-T2XEMEN2.js +2 -0
  461. package/dist/chunk-T2XEMEN2.js.map +1 -0
  462. package/dist/chunk-T4JNXV75.js +125 -0
  463. package/dist/chunk-T4JNXV75.js.map +1 -0
  464. package/dist/chunk-T7JOWG2A.js +10 -0
  465. package/dist/chunk-T7JOWG2A.js.map +1 -0
  466. package/dist/chunk-TAQI4JTE.js +12 -0
  467. package/dist/chunk-TAQI4JTE.js.map +1 -0
  468. package/dist/chunk-TEKBTTP2.js +27 -0
  469. package/dist/chunk-TEKBTTP2.js.map +1 -0
  470. package/dist/chunk-TNOANK34.js +4483 -0
  471. package/dist/chunk-TNOANK34.js.map +1 -0
  472. package/dist/chunk-TU24Y4HN.js +178 -0
  473. package/dist/chunk-TU24Y4HN.js.map +1 -0
  474. package/dist/chunk-U26XDHMX.js +726 -0
  475. package/dist/chunk-U26XDHMX.js.map +1 -0
  476. package/dist/chunk-U4LHV5DS.js +36 -0
  477. package/dist/chunk-U4LHV5DS.js.map +1 -0
  478. package/dist/chunk-U7QYCYHC.js +2 -0
  479. package/dist/chunk-U7QYCYHC.js.map +1 -0
  480. package/dist/chunk-UANAVLMS.js +2 -0
  481. package/dist/chunk-UANAVLMS.js.map +1 -0
  482. package/dist/chunk-UCEVPLR5.js +2 -0
  483. package/dist/chunk-UCEVPLR5.js.map +1 -0
  484. package/dist/chunk-UCQDLRHR.js +31 -0
  485. package/dist/chunk-UCQDLRHR.js.map +1 -0
  486. package/dist/chunk-UFF7LLGU.js +2 -0
  487. package/dist/chunk-UFF7LLGU.js.map +1 -0
  488. package/dist/chunk-UG5TKXTK.js +2 -0
  489. package/dist/chunk-UG5TKXTK.js.map +1 -0
  490. package/dist/chunk-ULIDYFM7.js +192 -0
  491. package/dist/chunk-ULIDYFM7.js.map +1 -0
  492. package/dist/chunk-UPEMEBWH.js +186 -0
  493. package/dist/chunk-UPEMEBWH.js.map +1 -0
  494. package/dist/chunk-UQHWOPUY.js +61 -0
  495. package/dist/chunk-UQHWOPUY.js.map +1 -0
  496. package/dist/chunk-UQRYTMR7.js +2 -0
  497. package/dist/chunk-UQRYTMR7.js.map +1 -0
  498. package/dist/chunk-URVAZW44.js +323 -0
  499. package/dist/chunk-URVAZW44.js.map +1 -0
  500. package/dist/chunk-USI4LB3N.js +2 -0
  501. package/dist/chunk-USI4LB3N.js.map +1 -0
  502. package/dist/chunk-UXSV6RVS.js +31 -0
  503. package/dist/chunk-UXSV6RVS.js.map +1 -0
  504. package/dist/chunk-V2S5DINS.js +2 -0
  505. package/dist/chunk-V2S5DINS.js.map +1 -0
  506. package/dist/chunk-V3EQ6ACC.js +2 -0
  507. package/dist/chunk-V3EQ6ACC.js.map +1 -0
  508. package/dist/chunk-V4DDHF7S.js +147 -0
  509. package/dist/chunk-V4DDHF7S.js.map +1 -0
  510. package/dist/chunk-VA2OONPE.js +77 -0
  511. package/dist/chunk-VA2OONPE.js.map +1 -0
  512. package/dist/chunk-VFF3AN4Y.js +90 -0
  513. package/dist/chunk-VFF3AN4Y.js.map +1 -0
  514. package/dist/chunk-VH7GG77B.js +2 -0
  515. package/dist/chunk-VH7GG77B.js.map +1 -0
  516. package/dist/chunk-VHLPJ4XW.js +2 -0
  517. package/dist/chunk-VHLPJ4XW.js.map +1 -0
  518. package/dist/chunk-VLE5THFD.js +2 -0
  519. package/dist/chunk-VLE5THFD.js.map +1 -0
  520. package/dist/chunk-VORFRWM5.js +2 -0
  521. package/dist/chunk-VORFRWM5.js.map +1 -0
  522. package/dist/chunk-VQ2T3OEC.js +27 -0
  523. package/dist/chunk-VQ2T3OEC.js.map +1 -0
  524. package/dist/chunk-VRIAWF3A.js +25 -0
  525. package/dist/chunk-VRIAWF3A.js.map +1 -0
  526. package/dist/chunk-W6HCXQBH.js +198 -0
  527. package/dist/chunk-W6HCXQBH.js.map +1 -0
  528. package/dist/chunk-W7I2X6VI.js +2 -0
  529. package/dist/chunk-W7I2X6VI.js.map +1 -0
  530. package/dist/chunk-WCCCW4KD.js +140 -0
  531. package/dist/chunk-WCCCW4KD.js.map +1 -0
  532. package/dist/chunk-WNIVCHDP.js +2 -0
  533. package/dist/chunk-WNIVCHDP.js.map +1 -0
  534. package/dist/chunk-WOMO5CZ7.js +2 -0
  535. package/dist/chunk-WOMO5CZ7.js.map +1 -0
  536. package/dist/chunk-WTB4DDZP.js +163 -0
  537. package/dist/chunk-WTB4DDZP.js.map +1 -0
  538. package/dist/chunk-WW3CD7AU.js +118 -0
  539. package/dist/chunk-WW3CD7AU.js.map +1 -0
  540. package/dist/chunk-WX3LWMVU.js +81 -0
  541. package/dist/chunk-WX3LWMVU.js.map +1 -0
  542. package/dist/chunk-WYENWW3Y.js +2 -0
  543. package/dist/chunk-WYENWW3Y.js.map +1 -0
  544. package/dist/chunk-WZTFU6FJ.js +69 -0
  545. package/dist/chunk-WZTFU6FJ.js.map +1 -0
  546. package/dist/chunk-X4FE7UKP.js +2 -0
  547. package/dist/chunk-X4FE7UKP.js.map +1 -0
  548. package/dist/chunk-X6J4KKZZ.js +126 -0
  549. package/dist/chunk-X6J4KKZZ.js.map +1 -0
  550. package/dist/chunk-XAFRTZQF.js +56 -0
  551. package/dist/chunk-XAFRTZQF.js.map +1 -0
  552. package/dist/chunk-XGX3UFLD.js +2 -0
  553. package/dist/chunk-XGX3UFLD.js.map +1 -0
  554. package/dist/chunk-XGXCMA5M.js +2 -0
  555. package/dist/chunk-XGXCMA5M.js.map +1 -0
  556. package/dist/chunk-XJQADN6S.js +41 -0
  557. package/dist/chunk-XJQADN6S.js.map +1 -0
  558. package/dist/chunk-XMZ5LXL4.js +68 -0
  559. package/dist/chunk-XMZ5LXL4.js.map +1 -0
  560. package/dist/chunk-XONGYCW3.js +637 -0
  561. package/dist/chunk-XONGYCW3.js.map +1 -0
  562. package/dist/chunk-XYACSO57.js +36 -0
  563. package/dist/chunk-XYACSO57.js.map +1 -0
  564. package/dist/chunk-XYFEQHEM.js +2 -0
  565. package/dist/chunk-XYFEQHEM.js.map +1 -0
  566. package/dist/chunk-XZ23AFOP.js +26 -0
  567. package/dist/chunk-XZ23AFOP.js.map +1 -0
  568. package/dist/chunk-YACASX6X.js +54 -0
  569. package/dist/chunk-YACASX6X.js.map +1 -0
  570. package/dist/chunk-YCFOFNQF.js +28 -0
  571. package/dist/chunk-YCFOFNQF.js.map +1 -0
  572. package/dist/chunk-YIFB24WW.js +37 -0
  573. package/dist/chunk-YIFB24WW.js.map +1 -0
  574. package/dist/chunk-YIVL6HWS.js +68 -0
  575. package/dist/chunk-YIVL6HWS.js.map +1 -0
  576. package/dist/chunk-YK4H7VWM.js +2 -0
  577. package/dist/chunk-YK4H7VWM.js.map +1 -0
  578. package/dist/chunk-YL7VBHPZ.js +100 -0
  579. package/dist/chunk-YL7VBHPZ.js.map +1 -0
  580. package/dist/chunk-YMFEBGTU.js +2 -0
  581. package/dist/chunk-YMFEBGTU.js.map +1 -0
  582. package/dist/chunk-YPLKH5H4.js +226 -0
  583. package/dist/chunk-YPLKH5H4.js.map +1 -0
  584. package/dist/chunk-YWB7HLL7.js +126 -0
  585. package/dist/chunk-YWB7HLL7.js.map +1 -0
  586. package/dist/chunk-YXHHUJOZ.js +235 -0
  587. package/dist/chunk-YXHHUJOZ.js.map +1 -0
  588. package/dist/chunk-YZVXIPBC.js +2 -0
  589. package/dist/chunk-YZVXIPBC.js.map +1 -0
  590. package/dist/chunk-Z44RRTMX.js +2 -0
  591. package/dist/chunk-Z44RRTMX.js.map +1 -0
  592. package/dist/chunk-Z4CYBG3H.js +2 -0
  593. package/dist/chunk-Z4CYBG3H.js.map +1 -0
  594. package/dist/chunk-ZE2H4J3P.js +2 -0
  595. package/dist/chunk-ZE2H4J3P.js.map +1 -0
  596. package/dist/chunk-ZEMTALKO.js +2 -0
  597. package/dist/chunk-ZEMTALKO.js.map +1 -0
  598. package/dist/chunk-ZI2OXD6L.js +244 -0
  599. package/dist/chunk-ZI2OXD6L.js.map +1 -0
  600. package/dist/chunk-ZNFHDBUW.js +266 -0
  601. package/dist/chunk-ZNFHDBUW.js.map +1 -0
  602. package/dist/chunk-ZXBUOHCR.js +111 -0
  603. package/dist/chunk-ZXBUOHCR.js.map +1 -0
  604. package/dist/chunk-ZXVPEQM5.js +2 -0
  605. package/dist/chunk-ZXVPEQM5.js.map +1 -0
  606. package/dist/components/accordion/accordion.js +16 -0
  607. package/dist/components/accordion/accordion.js.map +1 -0
  608. package/dist/components/accordion/index.js +17 -0
  609. package/dist/components/accordion/index.js.map +1 -0
  610. package/dist/components/advanced-group/advanced-group.js +18 -0
  611. package/dist/components/advanced-group/advanced-group.js.map +1 -0
  612. package/dist/components/advanced-group/index.js +18 -0
  613. package/dist/components/advanced-group/index.js.map +1 -0
  614. package/dist/components/alert/alert.js +16 -0
  615. package/dist/components/alert/alert.js.map +1 -0
  616. package/dist/components/alert/index.js +17 -0
  617. package/dist/components/alert/index.js.map +1 -0
  618. package/dist/components/alert-dialog/alert-dialog.js +30 -0
  619. package/dist/components/alert-dialog/alert-dialog.js.map +1 -0
  620. package/dist/components/alert-dialog/index.js +31 -0
  621. package/dist/components/alert-dialog/index.js.map +1 -0
  622. package/dist/components/ambient-field/ambient-field.css +59 -0
  623. package/dist/components/ambient-field/ambient-field.css.map +1 -0
  624. package/dist/components/ambient-field/ambient-field.js +15 -0
  625. package/dist/components/ambient-field/ambient-field.js.map +1 -0
  626. package/dist/components/ambient-field/index.css +59 -0
  627. package/dist/components/ambient-field/index.css.map +1 -0
  628. package/dist/components/ambient-field/index.js +16 -0
  629. package/dist/components/ambient-field/index.js.map +1 -0
  630. package/dist/components/app-shell/app-shell.js +14 -0
  631. package/dist/components/app-shell/app-shell.js.map +1 -0
  632. package/dist/components/app-shell/index.js +15 -0
  633. package/dist/components/app-shell/index.js.map +1 -0
  634. package/dist/components/app-sidebar/app-sidebar.js +31 -0
  635. package/dist/components/app-sidebar/app-sidebar.js.map +1 -0
  636. package/dist/components/app-sidebar/index.js +31 -0
  637. package/dist/components/app-sidebar/index.js.map +1 -0
  638. package/dist/components/aspect-ratio/aspect-ratio.js +9 -0
  639. package/dist/components/aspect-ratio/aspect-ratio.js.map +1 -0
  640. package/dist/components/aspect-ratio/index.js +10 -0
  641. package/dist/components/aspect-ratio/index.js.map +1 -0
  642. package/dist/components/attribution-panel/attribution-panel.js +24 -0
  643. package/dist/components/attribution-panel/attribution-panel.js.map +1 -0
  644. package/dist/components/attribution-panel/attribution-types.js +2 -0
  645. package/dist/components/attribution-panel/attribution-types.js.map +1 -0
  646. package/dist/components/attribution-panel/attributions.generated.js +9 -0
  647. package/dist/components/attribution-panel/attributions.generated.js.map +1 -0
  648. package/dist/components/attribution-panel/index.js +24 -0
  649. package/dist/components/attribution-panel/index.js.map +1 -0
  650. package/dist/components/avatar/avatar.js +14 -0
  651. package/dist/components/avatar/avatar.js.map +1 -0
  652. package/dist/components/avatar/index.js +15 -0
  653. package/dist/components/avatar/index.js.map +1 -0
  654. package/dist/components/badge/badge.js +16 -0
  655. package/dist/components/badge/badge.js.map +1 -0
  656. package/dist/components/badge/index.js +13 -0
  657. package/dist/components/badge/index.js.map +1 -0
  658. package/dist/components/bento-grid/bento-grid.js +16 -0
  659. package/dist/components/bento-grid/bento-grid.js.map +1 -0
  660. package/dist/components/bento-grid/index.js +16 -0
  661. package/dist/components/bento-grid/index.js.map +1 -0
  662. package/dist/components/bounded-number/bounded-number.js +24 -0
  663. package/dist/components/bounded-number/bounded-number.js.map +1 -0
  664. package/dist/components/bounded-number/index.js +24 -0
  665. package/dist/components/bounded-number/index.js.map +1 -0
  666. package/dist/components/breadcrumb/breadcrumb.js +28 -0
  667. package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
  668. package/dist/components/breadcrumb/index.js +26 -0
  669. package/dist/components/breadcrumb/index.js.map +1 -0
  670. package/dist/components/button/button.js +12 -0
  671. package/dist/components/button/button.js.map +1 -0
  672. package/dist/components/button/index.js +13 -0
  673. package/dist/components/button/index.js.map +1 -0
  674. package/dist/components/button-group/button-group.js +18 -0
  675. package/dist/components/button-group/button-group.js.map +1 -0
  676. package/dist/components/button-group/index.js +19 -0
  677. package/dist/components/button-group/index.js.map +1 -0
  678. package/dist/components/calendar/calendar.js +12 -0
  679. package/dist/components/calendar/calendar.js.map +1 -0
  680. package/dist/components/calendar/index.js +13 -0
  681. package/dist/components/calendar/index.js.map +1 -0
  682. package/dist/components/card/card.js +27 -0
  683. package/dist/components/card/card.js.map +1 -0
  684. package/dist/components/card/index.js +27 -0
  685. package/dist/components/card/index.js.map +1 -0
  686. package/dist/components/carousel/carousel.js +24 -0
  687. package/dist/components/carousel/carousel.js.map +1 -0
  688. package/dist/components/carousel/index.js +24 -0
  689. package/dist/components/carousel/index.js.map +1 -0
  690. package/dist/components/change-review/change-review.js +34 -0
  691. package/dist/components/change-review/change-review.js.map +1 -0
  692. package/dist/components/change-review/index.js +34 -0
  693. package/dist/components/change-review/index.js.map +1 -0
  694. package/dist/components/checkbox/checkbox.js +10 -0
  695. package/dist/components/checkbox/checkbox.js.map +1 -0
  696. package/dist/components/checkbox/index.js +11 -0
  697. package/dist/components/checkbox/index.js.map +1 -0
  698. package/dist/components/collapsible/collapsible.js +14 -0
  699. package/dist/components/collapsible/collapsible.js.map +1 -0
  700. package/dist/components/collapsible/index.js +15 -0
  701. package/dist/components/collapsible/index.js.map +1 -0
  702. package/dist/components/collapsible-panel/index.js +11 -0
  703. package/dist/components/collapsible-panel/index.js.map +1 -0
  704. package/dist/components/collapsible-panel/use-collapsible-panel.js +11 -0
  705. package/dist/components/collapsible-panel/use-collapsible-panel.js.map +1 -0
  706. package/dist/components/color-picker/color-picker.js +18 -0
  707. package/dist/components/color-picker/color-picker.js.map +1 -0
  708. package/dist/components/color-picker/index.js +18 -0
  709. package/dist/components/color-picker/index.js.map +1 -0
  710. package/dist/components/combobox/combobox.js +28 -0
  711. package/dist/components/combobox/combobox.js.map +1 -0
  712. package/dist/components/combobox/index.js +28 -0
  713. package/dist/components/combobox/index.js.map +1 -0
  714. package/dist/components/command/command.js +39 -0
  715. package/dist/components/command/command.js.map +1 -0
  716. package/dist/components/command/index.js +39 -0
  717. package/dist/components/command/index.js.map +1 -0
  718. package/dist/components/command-chip/command-chip.js +17 -0
  719. package/dist/components/command-chip/command-chip.js.map +1 -0
  720. package/dist/components/command-chip/index.js +17 -0
  721. package/dist/components/command-chip/index.js.map +1 -0
  722. package/dist/components/command-trigger/command-trigger.js +12 -0
  723. package/dist/components/command-trigger/command-trigger.js.map +1 -0
  724. package/dist/components/command-trigger/index.js +13 -0
  725. package/dist/components/command-trigger/index.js.map +1 -0
  726. package/dist/components/confirm-dialog/confirm-dialog.js +20 -0
  727. package/dist/components/confirm-dialog/confirm-dialog.js.map +1 -0
  728. package/dist/components/confirm-dialog/index.js +20 -0
  729. package/dist/components/confirm-dialog/index.js.map +1 -0
  730. package/dist/components/context-menu/context-menu.js +36 -0
  731. package/dist/components/context-menu/context-menu.js.map +1 -0
  732. package/dist/components/context-menu/index.js +37 -0
  733. package/dist/components/context-menu/index.js.map +1 -0
  734. package/dist/components/context-rail/context-rail.js +35 -0
  735. package/dist/components/context-rail/context-rail.js.map +1 -0
  736. package/dist/components/context-rail/index.js +35 -0
  737. package/dist/components/context-rail/index.js.map +1 -0
  738. package/dist/components/copyable-value/copyable-value.js +19 -0
  739. package/dist/components/copyable-value/copyable-value.js.map +1 -0
  740. package/dist/components/copyable-value/index.js +17 -0
  741. package/dist/components/copyable-value/index.js.map +1 -0
  742. package/dist/components/date-picker/date-picker.js +21 -0
  743. package/dist/components/date-picker/date-picker.js.map +1 -0
  744. package/dist/components/date-picker/index.js +21 -0
  745. package/dist/components/date-picker/index.js.map +1 -0
  746. package/dist/components/date-range-picker/date-range-picker.js +22 -0
  747. package/dist/components/date-range-picker/date-range-picker.js.map +1 -0
  748. package/dist/components/date-range-picker/index.js +22 -0
  749. package/dist/components/date-range-picker/index.js.map +1 -0
  750. package/dist/components/descriptions/descriptions.js +12 -0
  751. package/dist/components/descriptions/descriptions.js.map +1 -0
  752. package/dist/components/descriptions/index.js +13 -0
  753. package/dist/components/descriptions/index.js.map +1 -0
  754. package/dist/components/dialog/dialog.js +41 -0
  755. package/dist/components/dialog/dialog.js.map +1 -0
  756. package/dist/components/dialog/index.js +45 -0
  757. package/dist/components/dialog/index.js.map +1 -0
  758. package/dist/components/dialog/use-dialog-dismiss-guard.js +10 -0
  759. package/dist/components/dialog/use-dialog-dismiss-guard.js.map +1 -0
  760. package/dist/components/drawer/drawer.js +26 -0
  761. package/dist/components/drawer/drawer.js.map +1 -0
  762. package/dist/components/drawer/index.js +27 -0
  763. package/dist/components/drawer/index.js.map +1 -0
  764. package/dist/components/dropdown-menu/dropdown-menu.js +38 -0
  765. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -0
  766. package/dist/components/dropdown-menu/index.js +39 -0
  767. package/dist/components/dropdown-menu/index.js.map +1 -0
  768. package/dist/components/empty-state/empty-state.js +15 -0
  769. package/dist/components/empty-state/empty-state.js.map +1 -0
  770. package/dist/components/empty-state/index.js +16 -0
  771. package/dist/components/empty-state/index.js.map +1 -0
  772. package/dist/components/error-state/error-state.js +15 -0
  773. package/dist/components/error-state/error-state.js.map +1 -0
  774. package/dist/components/error-state/index.js +16 -0
  775. package/dist/components/error-state/index.js.map +1 -0
  776. package/dist/components/expand-dialog/expand-dialog.js +28 -0
  777. package/dist/components/expand-dialog/expand-dialog.js.map +1 -0
  778. package/dist/components/expand-dialog/index.js +28 -0
  779. package/dist/components/expand-dialog/index.js.map +1 -0
  780. package/dist/components/field/field-context.js +11 -0
  781. package/dist/components/field/field-context.js.map +1 -0
  782. package/dist/components/field/field.js +23 -0
  783. package/dist/components/field/field.js.map +1 -0
  784. package/dist/components/field/index.js +23 -0
  785. package/dist/components/field/index.js.map +1 -0
  786. package/dist/components/field-row/field-row.js +14 -0
  787. package/dist/components/field-row/field-row.js.map +1 -0
  788. package/dist/components/field-row/index.js +14 -0
  789. package/dist/components/field-row/index.js.map +1 -0
  790. package/dist/components/file-upload/file-upload.js +28 -0
  791. package/dist/components/file-upload/file-upload.js.map +1 -0
  792. package/dist/components/file-upload/index.js +26 -0
  793. package/dist/components/file-upload/index.js.map +1 -0
  794. package/dist/components/form/form.js +27 -0
  795. package/dist/components/form/form.js.map +1 -0
  796. package/dist/components/hover-card/hover-card.js +14 -0
  797. package/dist/components/hover-card/hover-card.js.map +1 -0
  798. package/dist/components/hover-card/index.js +15 -0
  799. package/dist/components/hover-card/index.js.map +1 -0
  800. package/dist/components/icon-button/icon-button.js +14 -0
  801. package/dist/components/icon-button/icon-button.js.map +1 -0
  802. package/dist/components/icon-button/index.js +15 -0
  803. package/dist/components/icon-button/index.js.map +1 -0
  804. package/dist/components/input/index.js +11 -0
  805. package/dist/components/input/index.js.map +1 -0
  806. package/dist/components/input/input.js +10 -0
  807. package/dist/components/input/input.js.map +1 -0
  808. package/dist/components/input-group/index.js +31 -0
  809. package/dist/components/input-group/index.js.map +1 -0
  810. package/dist/components/input-group/input-group.js +30 -0
  811. package/dist/components/input-group/input-group.js.map +1 -0
  812. package/dist/components/input-otp/index.js +17 -0
  813. package/dist/components/input-otp/index.js.map +1 -0
  814. package/dist/components/input-otp/input-otp.js +17 -0
  815. package/dist/components/input-otp/input-otp.js.map +1 -0
  816. package/dist/components/install-tabs/index.js +28 -0
  817. package/dist/components/install-tabs/index.js.map +1 -0
  818. package/dist/components/install-tabs/install-tabs.js +28 -0
  819. package/dist/components/install-tabs/install-tabs.js.map +1 -0
  820. package/dist/components/integration-matrix/index.js +26 -0
  821. package/dist/components/integration-matrix/index.js.map +1 -0
  822. package/dist/components/integration-matrix/integration-matrix.js +26 -0
  823. package/dist/components/integration-matrix/integration-matrix.js.map +1 -0
  824. package/dist/components/kbd/index.js +11 -0
  825. package/dist/components/kbd/index.js.map +1 -0
  826. package/dist/components/kbd/kbd.js +10 -0
  827. package/dist/components/kbd/kbd.js.map +1 -0
  828. package/dist/components/key-value-editor/index.js +18 -0
  829. package/dist/components/key-value-editor/index.js.map +1 -0
  830. package/dist/components/key-value-editor/key-value-editor.js +18 -0
  831. package/dist/components/key-value-editor/key-value-editor.js.map +1 -0
  832. package/dist/components/keyboard-shortcuts/index.js +25 -0
  833. package/dist/components/keyboard-shortcuts/index.js.map +1 -0
  834. package/dist/components/keyboard-shortcuts/keyboard-shortcuts.js +25 -0
  835. package/dist/components/keyboard-shortcuts/keyboard-shortcuts.js.map +1 -0
  836. package/dist/components/label/index.js +11 -0
  837. package/dist/components/label/index.js.map +1 -0
  838. package/dist/components/label/label.js +10 -0
  839. package/dist/components/label/label.js.map +1 -0
  840. package/dist/components/link-preview/index.js +14 -0
  841. package/dist/components/link-preview/index.js.map +1 -0
  842. package/dist/components/link-preview/link-preview.js +14 -0
  843. package/dist/components/link-preview/link-preview.js.map +1 -0
  844. package/dist/components/list-editor/index.js +18 -0
  845. package/dist/components/list-editor/index.js.map +1 -0
  846. package/dist/components/list-editor/list-editor.js +18 -0
  847. package/dist/components/list-editor/list-editor.js.map +1 -0
  848. package/dist/components/loading-state/index.js +16 -0
  849. package/dist/components/loading-state/index.js.map +1 -0
  850. package/dist/components/loading-state/loading-state.js +15 -0
  851. package/dist/components/loading-state/loading-state.js.map +1 -0
  852. package/dist/components/locale-provider/index.js +16 -0
  853. package/dist/components/locale-provider/index.js.map +1 -0
  854. package/dist/components/locale-provider/locale-provider.js +13 -0
  855. package/dist/components/locale-provider/locale-provider.js.map +1 -0
  856. package/dist/components/locale-provider/messages.js +10 -0
  857. package/dist/components/locale-provider/messages.js.map +1 -0
  858. package/dist/components/match-highlight/index.js +15 -0
  859. package/dist/components/match-highlight/index.js.map +1 -0
  860. package/dist/components/match-highlight/match-highlight.js +14 -0
  861. package/dist/components/match-highlight/match-highlight.js.map +1 -0
  862. package/dist/components/mention-input/index.js +46 -0
  863. package/dist/components/mention-input/index.js.map +1 -0
  864. package/dist/components/mention-input/mention-input.js +33 -0
  865. package/dist/components/mention-input/mention-input.js.map +1 -0
  866. package/dist/components/mention-input/mention-value.js +20 -0
  867. package/dist/components/mention-input/mention-value.js.map +1 -0
  868. package/dist/components/menubar/index.js +39 -0
  869. package/dist/components/menubar/index.js.map +1 -0
  870. package/dist/components/menubar/menubar.js +38 -0
  871. package/dist/components/menubar/menubar.js.map +1 -0
  872. package/dist/components/meter/index.js +15 -0
  873. package/dist/components/meter/index.js.map +1 -0
  874. package/dist/components/meter/meter.js +15 -0
  875. package/dist/components/meter/meter.js.map +1 -0
  876. package/dist/components/metric-card/index.js +24 -0
  877. package/dist/components/metric-card/index.js.map +1 -0
  878. package/dist/components/metric-card/metric-card.js +24 -0
  879. package/dist/components/metric-card/metric-card.js.map +1 -0
  880. package/dist/components/model-picker/index.js +37 -0
  881. package/dist/components/model-picker/index.js.map +1 -0
  882. package/dist/components/model-picker/model-picker-state.js +13 -0
  883. package/dist/components/model-picker/model-picker-state.js.map +1 -0
  884. package/dist/components/model-picker/model-picker.js +37 -0
  885. package/dist/components/model-picker/model-picker.js.map +1 -0
  886. package/dist/components/nav-main/index.js +33 -0
  887. package/dist/components/nav-main/index.js.map +1 -0
  888. package/dist/components/nav-main/nav-main.js +33 -0
  889. package/dist/components/nav-main/nav-main.js.map +1 -0
  890. package/dist/components/nav-notifications/index.js +20 -0
  891. package/dist/components/nav-notifications/index.js.map +1 -0
  892. package/dist/components/nav-notifications/nav-notifications.js +20 -0
  893. package/dist/components/nav-notifications/nav-notifications.js.map +1 -0
  894. package/dist/components/nav-user/index.js +35 -0
  895. package/dist/components/nav-user/index.js.map +1 -0
  896. package/dist/components/nav-user/nav-user.js +35 -0
  897. package/dist/components/nav-user/nav-user.js.map +1 -0
  898. package/dist/components/navigation-menu/index.js +25 -0
  899. package/dist/components/navigation-menu/index.js.map +1 -0
  900. package/dist/components/navigation-menu/navigation-menu.js +25 -0
  901. package/dist/components/navigation-menu/navigation-menu.js.map +1 -0
  902. package/dist/components/number-input/index.js +22 -0
  903. package/dist/components/number-input/index.js.map +1 -0
  904. package/dist/components/number-input/number-input.js +22 -0
  905. package/dist/components/number-input/number-input.js.map +1 -0
  906. package/dist/components/page-shell/index.js +11 -0
  907. package/dist/components/page-shell/index.js.map +1 -0
  908. package/dist/components/page-shell/page-shell.js +10 -0
  909. package/dist/components/page-shell/page-shell.js.map +1 -0
  910. package/dist/components/pagination/index.js +28 -0
  911. package/dist/components/pagination/index.js.map +1 -0
  912. package/dist/components/pagination/pagination.js +28 -0
  913. package/dist/components/pagination/pagination.js.map +1 -0
  914. package/dist/components/parallax-plane/index.css +17 -0
  915. package/dist/components/parallax-plane/index.css.map +1 -0
  916. package/dist/components/parallax-plane/index.js +18 -0
  917. package/dist/components/parallax-plane/index.js.map +1 -0
  918. package/dist/components/parallax-plane/parallax-plane.css +17 -0
  919. package/dist/components/parallax-plane/parallax-plane.css.map +1 -0
  920. package/dist/components/parallax-plane/parallax-plane.js +18 -0
  921. package/dist/components/parallax-plane/parallax-plane.js.map +1 -0
  922. package/dist/components/popover/index.js +17 -0
  923. package/dist/components/popover/index.js.map +1 -0
  924. package/dist/components/popover/popover.js +16 -0
  925. package/dist/components/popover/popover.js.map +1 -0
  926. package/dist/components/progress/index.js +13 -0
  927. package/dist/components/progress/index.js.map +1 -0
  928. package/dist/components/progress/progress.js +12 -0
  929. package/dist/components/progress/progress.js.map +1 -0
  930. package/dist/components/radio-group/index.js +13 -0
  931. package/dist/components/radio-group/index.js.map +1 -0
  932. package/dist/components/radio-group/radio-group.js +12 -0
  933. package/dist/components/radio-group/radio-group.js.map +1 -0
  934. package/dist/components/rating/index.js +11 -0
  935. package/dist/components/rating/index.js.map +1 -0
  936. package/dist/components/rating/rating.js +11 -0
  937. package/dist/components/rating/rating.js.map +1 -0
  938. package/dist/components/resizable/index.js +15 -0
  939. package/dist/components/resizable/index.js.map +1 -0
  940. package/dist/components/resizable/resizable.js +14 -0
  941. package/dist/components/resizable/resizable.js.map +1 -0
  942. package/dist/components/reveal/index.js +15 -0
  943. package/dist/components/reveal/index.js.map +1 -0
  944. package/dist/components/reveal/reveal.js +14 -0
  945. package/dist/components/reveal/reveal.js.map +1 -0
  946. package/dist/components/reveal-on-enter/index.css +21 -0
  947. package/dist/components/reveal-on-enter/index.css.map +1 -0
  948. package/dist/components/reveal-on-enter/index.js +12 -0
  949. package/dist/components/reveal-on-enter/index.js.map +1 -0
  950. package/dist/components/reveal-on-enter/reveal-on-enter.css +21 -0
  951. package/dist/components/reveal-on-enter/reveal-on-enter.css.map +1 -0
  952. package/dist/components/reveal-on-enter/reveal-on-enter.js +12 -0
  953. package/dist/components/reveal-on-enter/reveal-on-enter.js.map +1 -0
  954. package/dist/components/revision-timeline/index.js +18 -0
  955. package/dist/components/revision-timeline/index.js.map +1 -0
  956. package/dist/components/revision-timeline/revision-timeline.js +18 -0
  957. package/dist/components/revision-timeline/revision-timeline.js.map +1 -0
  958. package/dist/components/schema-form/from-json-schema.js +13 -0
  959. package/dist/components/schema-form/from-json-schema.js.map +1 -0
  960. package/dist/components/schema-form/index.js +140 -0
  961. package/dist/components/schema-form/index.js.map +1 -0
  962. package/dist/components/schema-form/schema-form-spec.js +63 -0
  963. package/dist/components/schema-form/schema-form-spec.js.map +1 -0
  964. package/dist/components/schema-form/schema-form-store.js +21 -0
  965. package/dist/components/schema-form/schema-form-store.js.map +1 -0
  966. package/dist/components/schema-form/schema-form.js +77 -0
  967. package/dist/components/schema-form/schema-form.js.map +1 -0
  968. package/dist/components/scroll-area/index.js +13 -0
  969. package/dist/components/scroll-area/index.js.map +1 -0
  970. package/dist/components/scroll-area/scroll-area.js +12 -0
  971. package/dist/components/scroll-area/scroll-area.js.map +1 -0
  972. package/dist/components/section-header/index.js +11 -0
  973. package/dist/components/section-header/index.js.map +1 -0
  974. package/dist/components/section-header/section-header.js +10 -0
  975. package/dist/components/section-header/section-header.js.map +1 -0
  976. package/dist/components/segmented-field/index.js +17 -0
  977. package/dist/components/segmented-field/index.js.map +1 -0
  978. package/dist/components/segmented-field/segmented-field.js +17 -0
  979. package/dist/components/segmented-field/segmented-field.js.map +1 -0
  980. package/dist/components/select/index.js +26 -0
  981. package/dist/components/select/index.js.map +1 -0
  982. package/dist/components/select/select.js +26 -0
  983. package/dist/components/select/select.js.map +1 -0
  984. package/dist/components/separator/index.js +11 -0
  985. package/dist/components/separator/index.js.map +1 -0
  986. package/dist/components/separator/separator.js +10 -0
  987. package/dist/components/separator/separator.js.map +1 -0
  988. package/dist/components/sheet/index.js +30 -0
  989. package/dist/components/sheet/index.js.map +1 -0
  990. package/dist/components/sheet/sheet.js +30 -0
  991. package/dist/components/sheet/sheet.js.map +1 -0
  992. package/dist/components/side-dock/index.js +20 -0
  993. package/dist/components/side-dock/index.js.map +1 -0
  994. package/dist/components/side-dock/side-dock.js +20 -0
  995. package/dist/components/side-dock/side-dock.js.map +1 -0
  996. package/dist/components/sidebar/index.js +77 -0
  997. package/dist/components/sidebar/index.js.map +1 -0
  998. package/dist/components/sidebar/sidebar.js +77 -0
  999. package/dist/components/sidebar/sidebar.js.map +1 -0
  1000. package/dist/components/skeleton/index.js +11 -0
  1001. package/dist/components/skeleton/index.js.map +1 -0
  1002. package/dist/components/skeleton/skeleton.js +10 -0
  1003. package/dist/components/skeleton/skeleton.js.map +1 -0
  1004. package/dist/components/skip-link/index.js +11 -0
  1005. package/dist/components/skip-link/index.js.map +1 -0
  1006. package/dist/components/skip-link/skip-link.js +10 -0
  1007. package/dist/components/skip-link/skip-link.js.map +1 -0
  1008. package/dist/components/slider/index.js +11 -0
  1009. package/dist/components/slider/index.js.map +1 -0
  1010. package/dist/components/slider/slider.js +10 -0
  1011. package/dist/components/slider/slider.js.map +1 -0
  1012. package/dist/components/slider-number/index.js +26 -0
  1013. package/dist/components/slider-number/index.js.map +1 -0
  1014. package/dist/components/slider-number/slider-number.js +26 -0
  1015. package/dist/components/slider-number/slider-number.js.map +1 -0
  1016. package/dist/components/sonner/index.js +13 -0
  1017. package/dist/components/sonner/index.js.map +1 -0
  1018. package/dist/components/sonner/sonner.js +13 -0
  1019. package/dist/components/sonner/sonner.js.map +1 -0
  1020. package/dist/components/spec-playground/index.js +23 -0
  1021. package/dist/components/spec-playground/index.js.map +1 -0
  1022. package/dist/components/spec-playground/locate-json-path.js +17 -0
  1023. package/dist/components/spec-playground/locate-json-path.js.map +1 -0
  1024. package/dist/components/spec-playground/spec-playground.js +23 -0
  1025. package/dist/components/spec-playground/spec-playground.js.map +1 -0
  1026. package/dist/components/spinner/index.js +14 -0
  1027. package/dist/components/spinner/index.js.map +1 -0
  1028. package/dist/components/spinner/spinner.js +14 -0
  1029. package/dist/components/spinner/spinner.js.map +1 -0
  1030. package/dist/components/split-panel/index.js +13 -0
  1031. package/dist/components/split-panel/index.js.map +1 -0
  1032. package/dist/components/split-panel/split-panel.js +12 -0
  1033. package/dist/components/split-panel/split-panel.js.map +1 -0
  1034. package/dist/components/state-panel/index.js +17 -0
  1035. package/dist/components/state-panel/index.js.map +1 -0
  1036. package/dist/components/state-panel/state-panel.js +17 -0
  1037. package/dist/components/state-panel/state-panel.js.map +1 -0
  1038. package/dist/components/status-badge/index.js +30 -0
  1039. package/dist/components/status-badge/index.js.map +1 -0
  1040. package/dist/components/status-badge/status-badge.js +29 -0
  1041. package/dist/components/status-badge/status-badge.js.map +1 -0
  1042. package/dist/components/surface-tour/index.css +21 -0
  1043. package/dist/components/surface-tour/index.css.map +1 -0
  1044. package/dist/components/surface-tour/index.js +36 -0
  1045. package/dist/components/surface-tour/index.js.map +1 -0
  1046. package/dist/components/surface-tour/surface-tour.css +21 -0
  1047. package/dist/components/surface-tour/surface-tour.css.map +1 -0
  1048. package/dist/components/surface-tour/surface-tour.js +36 -0
  1049. package/dist/components/surface-tour/surface-tour.js.map +1 -0
  1050. package/dist/components/switch/index.js +11 -0
  1051. package/dist/components/switch/index.js.map +1 -0
  1052. package/dist/components/switch/switch.js +10 -0
  1053. package/dist/components/switch/switch.js.map +1 -0
  1054. package/dist/components/table/index.js +28 -0
  1055. package/dist/components/table/index.js.map +1 -0
  1056. package/dist/components/table/table.js +28 -0
  1057. package/dist/components/table/table.js.map +1 -0
  1058. package/dist/components/tabs/index.js +22 -0
  1059. package/dist/components/tabs/index.js.map +1 -0
  1060. package/dist/components/tabs/tabs.js +22 -0
  1061. package/dist/components/tabs/tabs.js.map +1 -0
  1062. package/dist/components/tag-input/index.js +21 -0
  1063. package/dist/components/tag-input/index.js.map +1 -0
  1064. package/dist/components/tag-input/tag-input.js +21 -0
  1065. package/dist/components/tag-input/tag-input.js.map +1 -0
  1066. package/dist/components/team-switcher/index.js +33 -0
  1067. package/dist/components/team-switcher/index.js.map +1 -0
  1068. package/dist/components/team-switcher/team-switcher.js +33 -0
  1069. package/dist/components/team-switcher/team-switcher.js.map +1 -0
  1070. package/dist/components/textarea/index.js +11 -0
  1071. package/dist/components/textarea/index.js.map +1 -0
  1072. package/dist/components/textarea/textarea.js +10 -0
  1073. package/dist/components/textarea/textarea.js.map +1 -0
  1074. package/dist/components/theme-family-switch/index.js +19 -0
  1075. package/dist/components/theme-family-switch/index.js.map +1 -0
  1076. package/dist/components/theme-family-switch/theme-family-switch.js +19 -0
  1077. package/dist/components/theme-family-switch/theme-family-switch.js.map +1 -0
  1078. package/dist/components/theme-switcher/index.js +24 -0
  1079. package/dist/components/theme-switcher/index.js.map +1 -0
  1080. package/dist/components/theme-switcher/theme-switcher.js +21 -0
  1081. package/dist/components/theme-switcher/theme-switcher.js.map +1 -0
  1082. package/dist/components/theme-switcher/use-theme-transition.js +10 -0
  1083. package/dist/components/theme-switcher/use-theme-transition.js.map +1 -0
  1084. package/dist/components/timeline/index.js +18 -0
  1085. package/dist/components/timeline/index.js.map +1 -0
  1086. package/dist/components/timeline/timeline.js +19 -0
  1087. package/dist/components/timeline/timeline.js.map +1 -0
  1088. package/dist/components/toggle/index.js +13 -0
  1089. package/dist/components/toggle/index.js.map +1 -0
  1090. package/dist/components/toggle/toggle.js +12 -0
  1091. package/dist/components/toggle/toggle.js.map +1 -0
  1092. package/dist/components/toggle-group/index.js +15 -0
  1093. package/dist/components/toggle-group/index.js.map +1 -0
  1094. package/dist/components/toggle-group/toggle-group.js +15 -0
  1095. package/dist/components/toggle-group/toggle-group.js.map +1 -0
  1096. package/dist/components/token-spotlight/index.css +25 -0
  1097. package/dist/components/token-spotlight/index.css.map +1 -0
  1098. package/dist/components/token-spotlight/index.js +23 -0
  1099. package/dist/components/token-spotlight/index.js.map +1 -0
  1100. package/dist/components/token-spotlight/token-spotlight.css +25 -0
  1101. package/dist/components/token-spotlight/token-spotlight.css.map +1 -0
  1102. package/dist/components/token-spotlight/token-spotlight.js +23 -0
  1103. package/dist/components/token-spotlight/token-spotlight.js.map +1 -0
  1104. package/dist/components/token-spotlight/token-value-format.js +11 -0
  1105. package/dist/components/token-spotlight/token-value-format.js.map +1 -0
  1106. package/dist/components/toolbar/index.js +27 -0
  1107. package/dist/components/toolbar/index.js.map +1 -0
  1108. package/dist/components/toolbar/toolbar.js +27 -0
  1109. package/dist/components/toolbar/toolbar.js.map +1 -0
  1110. package/dist/components/tooltip/index.js +17 -0
  1111. package/dist/components/tooltip/index.js.map +1 -0
  1112. package/dist/components/tooltip/tooltip.js +16 -0
  1113. package/dist/components/tooltip/tooltip.js.map +1 -0
  1114. package/dist/components/top-nav/index.js +11 -0
  1115. package/dist/components/top-nav/index.js.map +1 -0
  1116. package/dist/components/top-nav/top-nav.js +10 -0
  1117. package/dist/components/top-nav/top-nav.js.map +1 -0
  1118. package/dist/components/transfer/index.js +26 -0
  1119. package/dist/components/transfer/index.js.map +1 -0
  1120. package/dist/components/transfer/transfer.js +26 -0
  1121. package/dist/components/transfer/transfer.js.map +1 -0
  1122. package/dist/components/tree/index.js +21 -0
  1123. package/dist/components/tree/index.js.map +1 -0
  1124. package/dist/components/tree/tree.js +18 -0
  1125. package/dist/components/tree/tree.js.map +1 -0
  1126. package/dist/components/tree/use-tree-keyboard.js +14 -0
  1127. package/dist/components/tree/use-tree-keyboard.js.map +1 -0
  1128. package/dist/components/tree-select/index.js +26 -0
  1129. package/dist/components/tree-select/index.js.map +1 -0
  1130. package/dist/components/tree-select/tree-select.js +26 -0
  1131. package/dist/components/tree-select/tree-select.js.map +1 -0
  1132. package/dist/components/typography/index.js +41 -0
  1133. package/dist/components/typography/index.js.map +1 -0
  1134. package/dist/components/typography/prose.js +29 -0
  1135. package/dist/components/typography/prose.js.map +1 -0
  1136. package/dist/components/typography/typography.js +18 -0
  1137. package/dist/components/typography/typography.js.map +1 -0
  1138. package/dist/components/view-toolbar/index.js +27 -0
  1139. package/dist/components/view-toolbar/index.js.map +1 -0
  1140. package/dist/components/view-toolbar/view-toolbar.js +27 -0
  1141. package/dist/components/view-toolbar/view-toolbar.js.map +1 -0
  1142. package/dist/components/virtual-select/index.js +26 -0
  1143. package/dist/components/virtual-select/index.js.map +1 -0
  1144. package/dist/components/virtual-select/use-virtual-listbox.js +10 -0
  1145. package/dist/components/virtual-select/use-virtual-listbox.js.map +1 -0
  1146. package/dist/components/virtual-select/virtual-select.js +23 -0
  1147. package/dist/components/virtual-select/virtual-select.js.map +1 -0
  1148. package/dist/components/wizard/index.js +19 -0
  1149. package/dist/components/wizard/index.js.map +1 -0
  1150. package/dist/components/wizard/wizard.js +19 -0
  1151. package/dist/components/wizard/wizard.js.map +1 -0
  1152. package/dist/components/workspace-picker/index.js +38 -0
  1153. package/dist/components/workspace-picker/index.js.map +1 -0
  1154. package/dist/components/workspace-picker/workspace-picker-state.js +9 -0
  1155. package/dist/components/workspace-picker/workspace-picker-state.js.map +1 -0
  1156. package/dist/components/workspace-picker/workspace-picker.js +35 -0
  1157. package/dist/components/workspace-picker/workspace-picker.js.map +1 -0
  1158. package/dist/form.js +13 -110
  1159. package/dist/form.js.map +1 -1
  1160. package/dist/illustrations/empty-list-illustration.js +11 -0
  1161. package/dist/illustrations/empty-list-illustration.js.map +1 -0
  1162. package/dist/illustrations/error-illustration.js +11 -0
  1163. package/dist/illustrations/error-illustration.js.map +1 -0
  1164. package/dist/illustrations/first-run-illustration.js +11 -0
  1165. package/dist/illustrations/first-run-illustration.js.map +1 -0
  1166. package/dist/illustrations/illustration-base.js +16 -0
  1167. package/dist/illustrations/illustration-base.js.map +1 -0
  1168. package/dist/illustrations/index.js +41 -0
  1169. package/dist/illustrations/index.js.map +1 -0
  1170. package/dist/illustrations/no-access-illustration.js +11 -0
  1171. package/dist/illustrations/no-access-illustration.js.map +1 -0
  1172. package/dist/illustrations/no-results-illustration.js +11 -0
  1173. package/dist/illustrations/no-results-illustration.js.map +1 -0
  1174. package/dist/illustrations/offline-illustration.js +11 -0
  1175. package/dist/illustrations/offline-illustration.js.map +1 -0
  1176. package/dist/illustrations/success-illustration.js +11 -0
  1177. package/dist/illustrations/success-illustration.js.map +1 -0
  1178. package/dist/index.css +122 -0
  1179. package/dist/index.css.map +1 -0
  1180. package/dist/index.d.ts +1390 -146
  1181. package/dist/index.js +997 -22676
  1182. package/dist/index.js.map +1 -1
  1183. package/dist/lib/agent-event-model.js +9 -0
  1184. package/dist/lib/agent-event-model.js.map +1 -0
  1185. package/dist/lib/approval-option.js +9 -0
  1186. package/dist/lib/approval-option.js.map +1 -0
  1187. package/dist/lib/check-result.js +3 -0
  1188. package/dist/lib/check-result.js.map +1 -0
  1189. package/dist/lib/cn.js +28 -3
  1190. package/dist/lib/cn.js.map +1 -1
  1191. package/dist/lib/color-scale.js +11 -0
  1192. package/dist/lib/color-scale.js.map +1 -0
  1193. package/dist/lib/compact-number.js +21 -0
  1194. package/dist/lib/compact-number.js.map +1 -0
  1195. package/dist/lib/csv.js +11 -0
  1196. package/dist/lib/csv.js.map +1 -0
  1197. package/dist/lib/diff-line.js +11 -0
  1198. package/dist/lib/diff-line.js.map +1 -0
  1199. package/dist/lib/diff-rows.js +12 -0
  1200. package/dist/lib/diff-rows.js.map +1 -0
  1201. package/dist/lib/document-address.js +13 -0
  1202. package/dist/lib/document-address.js.map +1 -0
  1203. package/dist/lib/download.js +11 -0
  1204. package/dist/lib/download.js.map +1 -0
  1205. package/dist/lib/file-icon.js +12 -0
  1206. package/dist/lib/file-icon.js.map +1 -0
  1207. package/dist/lib/file-kind.js +13 -0
  1208. package/dist/lib/file-kind.js.map +1 -0
  1209. package/dist/lib/file-source.js +10 -0
  1210. package/dist/lib/file-source.js.map +1 -0
  1211. package/dist/lib/format-duration.js +9 -0
  1212. package/dist/lib/format-duration.js.map +1 -0
  1213. package/dist/lib/has-renderable-content.js +9 -0
  1214. package/dist/lib/has-renderable-content.js.map +1 -0
  1215. package/dist/lib/merge-refs.js +10 -0
  1216. package/dist/lib/merge-refs.js.map +1 -0
  1217. package/dist/lib/operating-mode.js +9 -0
  1218. package/dist/lib/operating-mode.js.map +1 -0
  1219. package/dist/lib/optional-peer.js +11 -0
  1220. package/dist/lib/optional-peer.js.map +1 -0
  1221. package/dist/lib/session-launch.js +3 -0
  1222. package/dist/lib/session-launch.js.map +1 -0
  1223. package/dist/lib/slash-command.js +11 -0
  1224. package/dist/lib/slash-command.js.map +1 -0
  1225. package/dist/lib/streamdown-translations.js +15 -0
  1226. package/dist/lib/streamdown-translations.js.map +1 -0
  1227. package/dist/lib/trigger-query.js +11 -0
  1228. package/dist/lib/trigger-query.js.map +1 -0
  1229. package/dist/lib/use-controllable-state.js +10 -0
  1230. package/dist/lib/use-controllable-state.js.map +1 -0
  1231. package/dist/lib/use-copy-to-clipboard.js +12 -0
  1232. package/dist/lib/use-copy-to-clipboard.js.map +1 -0
  1233. package/dist/lib/use-mobile.js +10 -0
  1234. package/dist/lib/use-mobile.js.map +1 -0
  1235. package/dist/lib/use-scroll-progress.js +18 -0
  1236. package/dist/lib/use-scroll-progress.js.map +1 -0
  1237. package/package.json +12 -5
  1238. package/src/__contract__/ambient-field.contract.test.tsx +49 -0
  1239. package/src/__contract__/attribution-panel.contract.test.tsx +49 -0
  1240. package/src/__contract__/badge.contract.test.tsx +49 -0
  1241. package/src/__contract__/bounded-number.contract.test.tsx +49 -0
  1242. package/src/__contract__/button.contract.test.tsx +49 -0
  1243. package/src/__contract__/color-picker.contract.test.tsx +49 -0
  1244. package/src/__contract__/combobox.contract.test.tsx +49 -0
  1245. package/src/__contract__/command-chip.contract.test.tsx +49 -0
  1246. package/src/__contract__/command-trigger.contract.test.tsx +49 -0
  1247. package/src/__contract__/copyable-value.contract.test.tsx +49 -0
  1248. package/src/__contract__/date-picker.contract.test.tsx +49 -0
  1249. package/src/__contract__/date-range-picker.contract.test.tsx +49 -0
  1250. package/src/__contract__/empty-state.contract.test.tsx +49 -0
  1251. package/src/__contract__/error-state.contract.test.tsx +49 -0
  1252. package/src/__contract__/icon-button.contract.test.tsx +49 -0
  1253. package/src/__contract__/input.contract.test.tsx +49 -0
  1254. package/src/__contract__/install-tabs.contract.test.tsx +49 -0
  1255. package/src/__contract__/integration-matrix.contract.test.tsx +49 -0
  1256. package/src/__contract__/key-value-editor.contract.test.tsx +49 -0
  1257. package/src/__contract__/list-editor.contract.test.tsx +49 -0
  1258. package/src/__contract__/loading-state.contract.test.tsx +49 -0
  1259. package/src/__contract__/meter.contract.test.tsx +49 -0
  1260. package/src/__contract__/metric-card.contract.test.tsx +49 -0
  1261. package/src/__contract__/model-picker.contract.test.tsx +49 -0
  1262. package/src/__contract__/nav-notifications.contract.test.tsx +49 -0
  1263. package/src/__contract__/number-input.contract.test.tsx +49 -0
  1264. package/src/__contract__/parallax-plane.contract.test.tsx +49 -0
  1265. package/src/__contract__/rating.contract.test.tsx +49 -0
  1266. package/src/__contract__/reveal-on-enter.contract.test.tsx +49 -0
  1267. package/src/__contract__/schema-form.contract.test.tsx +49 -0
  1268. package/src/__contract__/section-header.contract.test.tsx +49 -0
  1269. package/src/__contract__/segmented-field.contract.test.tsx +49 -0
  1270. package/src/__contract__/slider-number.contract.test.tsx +49 -0
  1271. package/src/__contract__/spec-playground.contract.test.tsx +49 -0
  1272. package/src/__contract__/status-badge.contract.test.tsx +49 -0
  1273. package/src/__contract__/surface-tour.contract.test.tsx +49 -0
  1274. package/src/__contract__/tag-input.contract.test.tsx +49 -0
  1275. package/src/__contract__/text.contract.test.tsx +49 -0
  1276. package/src/__contract__/textarea.contract.test.tsx +49 -0
  1277. package/src/__contract__/theme-family-switch.contract.test.tsx +49 -0
  1278. package/src/__contract__/timeline.contract.test.tsx +49 -0
  1279. package/src/__contract__/toggle.contract.test.tsx +49 -0
  1280. package/src/__contract__/token-spotlight.contract.test.tsx +49 -0
  1281. package/src/__contract__/transfer.contract.test.tsx +49 -0
  1282. package/src/__contract__/tree-select.contract.test.tsx +49 -0
  1283. package/src/__contract__/tree.contract.test.tsx +49 -0
  1284. package/src/__contract__/virtual-select.contract.test.tsx +49 -0
  1285. package/src/__contract__/workspace-picker.contract.test.tsx +49 -0
  1286. package/src/blocks-comparison-table.stories.tsx +1 -1
  1287. package/src/components/accordion/accordion.tsx +41 -16
  1288. package/src/components/advanced-group/advanced-group.stories.tsx +2 -0
  1289. package/src/components/alert/alert.tsx +24 -8
  1290. package/src/components/alert-dialog/alert-dialog.test.tsx +32 -0
  1291. package/src/components/alert-dialog/alert-dialog.tsx +28 -6
  1292. package/src/components/ambient-field/ambient-field.css +98 -0
  1293. package/src/components/ambient-field/ambient-field.stories.tsx +75 -0
  1294. package/src/components/ambient-field/ambient-field.test.tsx +28 -0
  1295. package/src/components/ambient-field/ambient-field.tsx +69 -0
  1296. package/src/components/ambient-field/index.ts +7 -0
  1297. package/src/components/app-shell/app-shell.stories.tsx +344 -1
  1298. package/src/components/app-shell/app-shell.test.tsx +266 -0
  1299. package/src/components/app-shell/app-shell.tsx +147 -14
  1300. package/src/components/app-shell/index.ts +1 -1
  1301. package/src/components/attribution-panel/attribution-panel.tsx +2 -0
  1302. package/src/components/attribution-panel/attributions.generated.ts +79 -6
  1303. package/src/components/avatar/avatar.tsx +4 -1
  1304. package/src/components/badge/badge.stories.tsx +62 -0
  1305. package/src/components/badge/badge.test.tsx +29 -0
  1306. package/src/components/badge/badge.tsx +101 -11
  1307. package/src/components/bento-grid/bento-grid.test.tsx +23 -2
  1308. package/src/components/bento-grid/bento-grid.tsx +10 -0
  1309. package/src/components/bounded-number/bounded-number.test.tsx +1 -1
  1310. package/src/components/bounded-number/bounded-number.tsx +78 -75
  1311. package/src/components/breadcrumb/breadcrumb.stories.tsx +1 -1
  1312. package/src/components/breadcrumb/breadcrumb.tsx +5 -2
  1313. package/src/components/button/button.stories.tsx +5 -1
  1314. package/src/components/button/button.tsx +37 -20
  1315. package/src/components/button-group/button-group.tsx +1 -1
  1316. package/src/components/calendar/calendar.tsx +9 -3
  1317. package/src/components/card/card.stories.tsx +73 -1
  1318. package/src/components/card/card.test.tsx +53 -4
  1319. package/src/components/card/card.tsx +122 -17
  1320. package/src/components/card/index.ts +2 -0
  1321. package/src/components/carousel/carousel.test.tsx +169 -0
  1322. package/src/components/carousel/carousel.tsx +93 -32
  1323. package/src/components/change-review/change-review.tsx +39 -30
  1324. package/src/components/checkbox/checkbox.tsx +1 -0
  1325. package/src/components/collapsible-panel/index.ts +1 -0
  1326. package/src/components/collapsible-panel/use-collapsible-panel.ts +21 -5
  1327. package/src/components/color-picker/color-picker.tsx +20 -14
  1328. package/src/components/combobox/combobox.stories.tsx +10 -0
  1329. package/src/components/combobox/combobox.test.tsx +54 -0
  1330. package/src/components/combobox/combobox.tsx +25 -11
  1331. package/src/components/command/command.stories.tsx +64 -1
  1332. package/src/components/command/command.test.tsx +88 -0
  1333. package/src/components/command/command.tsx +81 -8
  1334. package/src/components/command-chip/command-chip.stories.tsx +78 -0
  1335. package/src/components/command-chip/command-chip.test.tsx +57 -0
  1336. package/src/components/command-chip/command-chip.tsx +168 -0
  1337. package/src/components/command-chip/index.ts +7 -0
  1338. package/src/components/command-trigger/command-trigger.tsx +1 -1
  1339. package/src/components/confirm-dialog/confirm-dialog.stories.tsx +2 -0
  1340. package/src/components/context-menu/context-menu.stories.tsx +26 -0
  1341. package/src/components/context-menu/context-menu.tsx +17 -8
  1342. package/src/components/context-rail/context-rail.tsx +26 -8
  1343. package/src/components/copyable-value/copyable-value.stories.tsx +10 -0
  1344. package/src/components/copyable-value/copyable-value.test.tsx +28 -1
  1345. package/src/components/copyable-value/copyable-value.tsx +12 -1
  1346. package/src/components/date-picker/date-picker.stories.tsx +9 -0
  1347. package/src/components/date-picker/date-picker.test.tsx +52 -0
  1348. package/src/components/date-picker/date-picker.tsx +15 -15
  1349. package/src/components/date-range-picker/date-range-picker.stories.tsx +9 -0
  1350. package/src/components/date-range-picker/date-range-picker.test.tsx +76 -1
  1351. package/src/components/date-range-picker/date-range-picker.tsx +39 -28
  1352. package/src/components/descriptions/descriptions.stories.tsx +6 -0
  1353. package/src/components/descriptions/descriptions.test.tsx +18 -0
  1354. package/src/components/descriptions/descriptions.tsx +34 -6
  1355. package/src/components/descriptions/index.ts +1 -0
  1356. package/src/components/dialog/dialog.stories.tsx +5 -0
  1357. package/src/components/dialog/dialog.test.tsx +8 -3
  1358. package/src/components/dialog/dialog.tsx +13 -5
  1359. package/src/components/drawer/drawer.tsx +23 -6
  1360. package/src/components/dropdown-menu/dropdown-menu.stories.tsx +37 -0
  1361. package/src/components/dropdown-menu/dropdown-menu.tsx +17 -9
  1362. package/src/components/expand-dialog/expand-dialog.test.tsx +47 -0
  1363. package/src/components/expand-dialog/expand-dialog.tsx +20 -5
  1364. package/src/components/field/field.tsx +2 -0
  1365. package/src/components/field-row/field-row.tsx +2 -0
  1366. package/src/components/file-upload/file-upload.test.tsx +83 -10
  1367. package/src/components/file-upload/file-upload.tsx +150 -28
  1368. package/src/components/form/form.tsx +4 -2
  1369. package/src/components/hover-card/hover-card.tsx +2 -1
  1370. package/src/components/icon-button/icon-button.tsx +1 -1
  1371. package/src/components/input/input.stories.tsx +17 -0
  1372. package/src/components/input/input.tsx +8 -4
  1373. package/src/components/input-group/input-group.stories.tsx +43 -6
  1374. package/src/components/input-group/input-group.tsx +10 -7
  1375. package/src/components/input-otp/input-otp.tsx +7 -3
  1376. package/src/components/install-tabs/index.ts +8 -0
  1377. package/src/components/install-tabs/install-tabs.stories.tsx +147 -0
  1378. package/src/components/install-tabs/install-tabs.test.tsx +120 -0
  1379. package/src/components/install-tabs/install-tabs.tsx +238 -0
  1380. package/src/components/integration-matrix/index.ts +10 -0
  1381. package/src/components/integration-matrix/integration-matrix.stories.tsx +171 -0
  1382. package/src/components/integration-matrix/integration-matrix.test.tsx +89 -0
  1383. package/src/components/integration-matrix/integration-matrix.tsx +237 -0
  1384. package/src/components/keyboard-shortcuts/keyboard-shortcuts.tsx +2 -2
  1385. package/src/components/label/label.tsx +1 -1
  1386. package/src/components/list-editor/list-editor.test.tsx +24 -0
  1387. package/src/components/list-editor/list-editor.tsx +126 -52
  1388. package/src/components/locale-provider/locale-keys.test.ts +134 -0
  1389. package/src/components/locale-provider/messages.ts +573 -0
  1390. package/src/components/mention-input/mention-input.stories.tsx +3 -3
  1391. package/src/components/mention-input/mention-input.test.tsx +51 -1
  1392. package/src/components/mention-input/mention-input.tsx +59 -9
  1393. package/src/components/menubar/menubar.stories.tsx +25 -0
  1394. package/src/components/menubar/menubar.tsx +18 -8
  1395. package/src/components/meter/index.ts +1 -0
  1396. package/src/components/meter/meter.stories.tsx +102 -0
  1397. package/src/components/meter/meter.test.tsx +61 -0
  1398. package/src/components/meter/meter.tsx +173 -0
  1399. package/src/components/metric-card/index.ts +6 -1
  1400. package/src/components/metric-card/metric-card.stories.tsx +63 -0
  1401. package/src/components/metric-card/metric-card.test.tsx +83 -0
  1402. package/src/components/metric-card/metric-card.tsx +97 -14
  1403. package/src/components/nav-main/nav-main.tsx +7 -3
  1404. package/src/components/nav-notifications/nav-notifications.test.tsx +11 -0
  1405. package/src/components/nav-notifications/nav-notifications.tsx +11 -5
  1406. package/src/components/nav-user/nav-user.test.tsx +23 -1
  1407. package/src/components/nav-user/nav-user.tsx +68 -53
  1408. package/src/components/navigation-menu/navigation-menu.stories.tsx +42 -0
  1409. package/src/components/navigation-menu/navigation-menu.tsx +16 -4
  1410. package/src/components/number-input/number-input.stories.tsx +7 -3
  1411. package/src/components/number-input/number-input.test.tsx +47 -0
  1412. package/src/components/number-input/number-input.tsx +65 -24
  1413. package/src/components/page-shell/page-shell.stories.tsx +1 -1
  1414. package/src/components/page-shell/page-shell.tsx +3 -2
  1415. package/src/components/pagination/pagination.test.tsx +20 -1
  1416. package/src/components/pagination/pagination.tsx +20 -14
  1417. package/src/components/parallax-plane/index.ts +8 -0
  1418. package/src/components/parallax-plane/parallax-plane.css +26 -0
  1419. package/src/components/parallax-plane/parallax-plane.stories.tsx +88 -0
  1420. package/src/components/parallax-plane/parallax-plane.test.tsx +57 -0
  1421. package/src/components/parallax-plane/parallax-plane.tsx +80 -0
  1422. package/src/components/popover/popover.tsx +2 -1
  1423. package/src/components/progress/progress.stories.tsx +85 -0
  1424. package/src/components/progress/progress.test.tsx +47 -0
  1425. package/src/components/progress/progress.tsx +59 -3
  1426. package/src/components/rating/rating.tsx +2 -0
  1427. package/src/components/resizable/resizable.test.tsx +76 -0
  1428. package/src/components/resizable/resizable.tsx +31 -5
  1429. package/src/components/reveal-on-enter/index.ts +5 -0
  1430. package/src/components/reveal-on-enter/reveal-on-enter.css +32 -0
  1431. package/src/components/reveal-on-enter/reveal-on-enter.stories.tsx +100 -0
  1432. package/src/components/reveal-on-enter/reveal-on-enter.test.tsx +87 -0
  1433. package/src/components/reveal-on-enter/reveal-on-enter.tsx +75 -0
  1434. package/src/components/revision-timeline/revision-timeline.tsx +8 -5
  1435. package/src/components/schema-form/index.ts +2 -0
  1436. package/src/components/schema-form/schema-form-spec.ts +36 -0
  1437. package/src/components/schema-form/schema-form-store.ts +506 -0
  1438. package/src/components/schema-form/schema-form.stories.tsx +33 -0
  1439. package/src/components/schema-form/schema-form.test.tsx +165 -1
  1440. package/src/components/schema-form/schema-form.tsx +271 -328
  1441. package/src/components/scroll-area/index.ts +1 -1
  1442. package/src/components/scroll-area/scroll-area.tsx +47 -18
  1443. package/src/components/section-header/section-header.tsx +2 -4
  1444. package/src/components/select/select.stories.tsx +17 -0
  1445. package/src/components/select/select.test.tsx +28 -1
  1446. package/src/components/select/select.tsx +9 -7
  1447. package/src/components/separator/separator.tsx +1 -0
  1448. package/src/components/sheet/sheet.test.tsx +39 -0
  1449. package/src/components/sheet/sheet.tsx +40 -9
  1450. package/src/components/side-dock/side-dock.stories.tsx +83 -0
  1451. package/src/components/side-dock/side-dock.test.tsx +26 -0
  1452. package/src/components/side-dock/side-dock.tsx +65 -18
  1453. package/src/components/sidebar/sidebar.stories.tsx +3 -3
  1454. package/src/components/sidebar/sidebar.test.tsx +66 -2
  1455. package/src/components/sidebar/sidebar.tsx +54 -13
  1456. package/src/components/skeleton/skeleton.tsx +1 -0
  1457. package/src/components/skip-link/skip-link.stories.tsx +1 -0
  1458. package/src/components/slider/slider.stories.tsx +13 -77
  1459. package/src/components/slider-number/slider-number.stories.tsx +4 -1
  1460. package/src/components/slider-number/slider-number.test.tsx +1 -1
  1461. package/src/components/sonner/sonner.tsx +2 -0
  1462. package/src/components/spec-playground/index.ts +10 -0
  1463. package/src/components/spec-playground/locate-json-path.ts +144 -0
  1464. package/src/components/spec-playground/spec-playground.stories.tsx +156 -0
  1465. package/src/components/spec-playground/spec-playground.test.tsx +106 -0
  1466. package/src/components/spec-playground/spec-playground.tsx +351 -0
  1467. package/src/components/spinner/spinner.test.tsx +18 -0
  1468. package/src/components/spinner/spinner.tsx +14 -4
  1469. package/src/components/state-panel/state-panel.stories.tsx +4 -2
  1470. package/src/components/state-panel/state-panel.test.tsx +3 -3
  1471. package/src/components/state-panel/state-panel.tsx +16 -9
  1472. package/src/components/status-badge/status-badge.stories.tsx +53 -0
  1473. package/src/components/status-badge/status-badge.test.tsx +37 -0
  1474. package/src/components/status-badge/status-badge.tsx +75 -13
  1475. package/src/components/surface-tour/index.ts +11 -0
  1476. package/src/components/surface-tour/surface-tour.stories.tsx +150 -0
  1477. package/src/components/surface-tour/surface-tour.test.tsx +117 -0
  1478. package/src/components/surface-tour/surface-tour.tsx +456 -0
  1479. package/src/components/switch/switch.tsx +2 -0
  1480. package/src/components/table/table.stories.tsx +3 -1
  1481. package/src/components/table/table.test.tsx +9 -2
  1482. package/src/components/table/table.tsx +22 -9
  1483. package/src/components/tabs/index.ts +10 -1
  1484. package/src/components/tabs/tabs.stories.tsx +95 -1
  1485. package/src/components/tabs/tabs.test.tsx +93 -0
  1486. package/src/components/tabs/tabs.tsx +215 -77
  1487. package/src/components/tag-input/tag-input.tsx +4 -2
  1488. package/src/components/team-switcher/team-switcher.tsx +3 -3
  1489. package/src/components/textarea/textarea.tsx +2 -2
  1490. package/src/components/theme-family-switch/index.ts +10 -0
  1491. package/src/components/theme-family-switch/theme-family-switch.stories.tsx +97 -0
  1492. package/src/components/theme-family-switch/theme-family-switch.test.tsx +85 -0
  1493. package/src/components/theme-family-switch/theme-family-switch.tsx +166 -0
  1494. package/src/components/theme-switcher/theme-switcher.stories.tsx +76 -0
  1495. package/src/components/theme-switcher/theme-switcher.test.tsx +182 -0
  1496. package/src/components/theme-switcher/theme-switcher.tsx +144 -13
  1497. package/src/components/timeline/timeline.tsx +0 -3
  1498. package/src/components/toggle/toggle.tsx +7 -2
  1499. package/src/components/toggle-group/toggle-group.tsx +2 -0
  1500. package/src/components/token-spotlight/index.ts +11 -0
  1501. package/src/components/token-spotlight/token-spotlight.css +32 -0
  1502. package/src/components/token-spotlight/token-spotlight.stories.tsx +161 -0
  1503. package/src/components/token-spotlight/token-spotlight.test.tsx +323 -0
  1504. package/src/components/token-spotlight/token-spotlight.tsx +379 -0
  1505. package/src/components/token-spotlight/token-value-format.ts +205 -0
  1506. package/src/components/tooltip/tooltip.tsx +2 -1
  1507. package/src/components/top-nav/top-nav.test.tsx +59 -0
  1508. package/src/components/top-nav/top-nav.tsx +37 -7
  1509. package/src/components/transfer/transfer.tsx +35 -30
  1510. package/src/components/tree/tree.stories.tsx +1 -1
  1511. package/src/components/tree/tree.test.tsx +45 -4
  1512. package/src/components/tree/tree.tsx +81 -26
  1513. package/src/components/tree/use-tree-keyboard.ts +37 -14
  1514. package/src/components/tree-select/tree-select.stories.tsx +9 -0
  1515. package/src/components/tree-select/tree-select.test.tsx +5 -0
  1516. package/src/components/tree-select/tree-select.tsx +11 -14
  1517. package/src/components/typography/prose.test.tsx +3 -2
  1518. package/src/components/typography/prose.tsx +3 -3
  1519. package/src/components/typography/typography.stories.tsx +7 -2
  1520. package/src/components/typography/typography.tsx +8 -0
  1521. package/src/components/view-toolbar/view-toolbar.stories.tsx +2 -1
  1522. package/src/components/view-toolbar/view-toolbar.tsx +2 -2
  1523. package/src/components/virtual-select/virtual-select.stories.tsx +9 -0
  1524. package/src/components/virtual-select/virtual-select.test.tsx +28 -2
  1525. package/src/components/virtual-select/virtual-select.tsx +56 -18
  1526. package/src/components/wizard/wizard.test.tsx +9 -0
  1527. package/src/components/wizard/wizard.tsx +12 -4
  1528. package/src/decoration.stories.tsx +213 -2
  1529. package/src/index.ts +51 -0
  1530. package/src/lib/cn.test.ts +20 -0
  1531. package/src/lib/cn.ts +36 -2
  1532. package/src/lib/color-scale.test.ts +386 -0
  1533. package/src/lib/color-scale.ts +628 -0
  1534. package/src/lib/compact-number.ts +118 -28
  1535. package/src/lib/csv.ts +48 -0
  1536. package/src/lib/diff-rows.ts +2 -0
  1537. package/src/lib/merge-refs.ts +2 -0
  1538. package/src/lib/use-controllable-state.ts +47 -0
  1539. package/src/lib/use-mobile.test.tsx +47 -0
  1540. package/src/lib/use-mobile.ts +26 -10
  1541. package/src/lib/use-scroll-progress.ts +103 -0
  1542. package/src/motion.stories.tsx +1 -0
  1543. package/src/templates-object-detail-hub.stories.tsx +8 -8
  1544. package/src/templates-screen-states.stories.tsx +1 -1
  1545. package/src/templates-settings.stories.tsx +8 -3
  1546. package/dist/chunk-JKPPTL63.js +0 -48
  1547. package/dist/chunk-JKPPTL63.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/revision-timeline/revision-timeline.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * RevisionTimeline — a presentational git-history timeline.\n *\n * Renders revisions (newest-first) with:\n * - Day grouping by calendar day from `timestamp`\n * - An SVG lane gutter for branch-graph lanes and merge joins\n * - Churn indicators (+additions / -deletions)\n * - A selection rail (controlled + uncontrolled)\n *\n * The APP computes the graph layout (lane indices, edges). This component\n * only renders what it receives. Heavy graph-math stays out.\n *\n * WHY THIS DOES NOT RIDE THE SHARED `Timeline` RAIL (RM-014, #133).\n * `components/timeline/` is the canonical rail/node/connector spine (#190) and\n * `AgentTimeline` rides it. This component deliberately does not. The decision\n * was taken against the real code, so do not re-investigate it and do not\n * \"converge\" the two without reopening #133 — four things block it:\n *\n * 1. The node channel already carries a DIFFERENT meaning there. On the\n * shared rail a node's colour IS the closed 7-state execution `Status`:\n * `NODE_STYLE` is locked to `STATUS_ROLE`/`statusBadgeVariants` (#392)\n * and every status owns a unique non-colour signature (#387). A node\n * here is coloured by LANE IDENTITY (`laneColor` → `--chart-1..5`, a\n * categorical series ramp), and a revision has no execution status at\n * all. Mapping lane → status would be a lie (lane 3 is not `failed`),\n * and opening the rail node to a free-form colour would dissolve the two\n * invariants those tests exist to defend.\n * 2. A cross-lane join cannot be an item-local connector. The shared rail's\n * connector is one `w-px` span inside each `<li>` at a fixed inline\n * offset. A fork/merge join here is a cubic bezier from one row's centre\n * to ANOTHER row's centre, several rows away and in a different lane —\n * geometry that only exists in a coordinate space spanning the whole\n * list (`rowCenterY` + `LaneGutter`). No per-item primitive can draw it,\n * so the reusable unit would have to be the list, not the item.\n * 3. Row geometry is load-bearing, not styling. Rows are fixed-height\n * (`ROW_H_COMFORTABLE`/`ROW_H_COMPACT`) and day headers fixed at\n * `DAY_HEADER_H` precisely because the SVG shares the list's coordinate\n * space; the shared rail item is content-height (`pb-5 ps-7 last:pb-0`).\n * Riding it means overriding every geometry decision it makes.\n * 4. The row is a selection control, not a title slot. The whole row is one\n * `<button aria-pressed>`, while the rail item's title slot is a span\n * that unconditionally prefixes an `sr-only` status word — so every\n * revision would announce a status it does not have.\n *\n * Teaching the rail all four means ~5 opt-in props, four of which turn OFF\n * what the spine provides (its node, its connector, its geometry, its status\n * announcement) and one of which moves `LaneGutter` into it — a behavioural\n * mode fork (.claude/rules/component-api.md) paid for by every existing rail\n * consumer. That relocates the duplication rather than removing it. The two\n * are one silhouette (\"a vertical list with dots and lines\") speaking two\n * grammars: an execution trace vs a commit DAG.\n *\n * Nothing visual is shared, but the fork-prevention gate still binds this\n * file — which is why the GATE NOTES below are not optional.\n *\n * GATE NOTES:\n * - No identifier starting with `Timeline` (timeline-fork class 1).\n * - Lanes/connectors drawn with SVG <line> / <path>, NOT `absolute w-px`\n * hairlines (timeline-fork class 2 avoidance).\n */\n\nimport {\n createContext,\n forwardRef,\n use,\n useCallback,\n useMemo,\n useState,\n type HTMLAttributes,\n} from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ChevronRight, GitBranch, GitCommitHorizontal, GitMerge, Plus, Minus } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { useLocale } from \"../locale-provider\";\n\n// ─── Public data types ────────────────────────────────────────────────────────\n\n/**\n * A single revision entry. The APP assigns `lane` (0-based column index),\n * computes `additions`/`deletions`, and orders revisions newest-first.\n */\nexport interface Revision {\n /** Unique identifier — used for selection + edge references. */\n id: string;\n /** Commit message (may be long; the component truncates). */\n message: string;\n /** Display name of the commit author. */\n author?: string;\n /** Avatar image URL for the author. */\n authorAvatar?: string;\n /** When the commit was authored. Accepts Date, ISO string, or epoch ms. */\n timestamp: Date | string | number;\n /** Short commit hash (e.g. \"a1b2c3d\"). */\n shortSha?: string;\n /** Lines added (churn indicator). */\n additions?: number;\n /** Lines deleted (churn indicator). */\n deletions?: number;\n /**\n * Column index assigned by the app (0-based). Lane 0 = main branch (leftmost).\n * Used to position the node dot and draw the lane spine in the SVG gutter.\n */\n lane: number;\n /** Branch or tag labels rendered as chips on this revision. */\n refs?: string[];\n /**\n * Branch identity for the collapse/expand mode. Opt-in: only takes effect when\n * a matching `branches` entry is supplied to `RevisionTimeline`. When omitted\n * (or unmatched), the revision renders as a normal, never-collapsible row.\n */\n branchId?: string;\n}\n\n/**\n * A parent link between two revisions, for the lane graph.\n * Used to draw merge joins (curves / angled lines) in the SVG gutter.\n */\nexport interface RevisionEdge {\n /** Id of the child revision (newer, higher in the list). */\n from: string;\n /** Id of the parent revision (older, lower in the list). */\n to: string;\n}\n\n/**\n * A collapsible branch in the history. The APP supplies these (it already\n * computes lanes + edges); listing a branch here makes it collapsible. Nesting\n * via `parentBranchId` lets a parent branch's collapse also fold its descendants\n * (multi-level). Omitting a branch from this list keeps its commits permanently\n * visible (e.g. the trunk).\n */\nexport interface RevisionBranch {\n /** Stable id, referenced by `Revision.branchId` and other branches' `parentBranchId`. */\n id: string;\n /** Human label for the collapsed summary row. Defaults to `id`. */\n name?: string;\n /** Parent branch id — enables multi-level nesting in the collapse hierarchy. */\n parentBranchId?: string;\n}\n\n// ─── Variants ────────────────────────────────────────────────────────────────\n\n/** Visual density variants for the timeline. */\nexport const revisionTimelineVariants = cva(\"flex flex-col\", {\n variants: {\n density: {\n comfortable: \"gap-0\",\n compact: \"gap-0\",\n },\n },\n defaultVariants: { density: \"comfortable\" },\n});\n\nexport type RevisionTimelineDensity = NonNullable<\n VariantProps<typeof revisionTimelineVariants>[\"density\"]\n>;\n\n// ─── Lane geometry helpers ────────────────────────────────────────────────────\n\n/**\n * The number of chart palette colors. Lane index is wrapped modulo this count,\n * so `lane % LANE_PALETTE_SIZE` never exceeds the token range 1-5.\n */\nconst LANE_PALETTE_SIZE = 5;\n\n/** Lane index → CSS token string (`var(--chart-1)` … `var(--chart-5)`). */\nexport function laneColor(lane: number): string {\n return `var(--chart-${(lane % LANE_PALETTE_SIZE) + 1})`;\n}\n\n/** Width of one lane column in the SVG gutter (px). */\nconst LANE_W = 16;\n/** Row height in the SVG gutter — must match the rendered row height. */\nconst ROW_H_COMFORTABLE = 48;\nconst ROW_H_COMPACT = 36;\n/**\n * Fixed height of a day-group header. MUST match the rendered `DayHeader`'s box\n * so the SVG gutter's node dots stay aligned with their list rows once a header\n * inserts vertical space between groups (otherwise the graph desyncs from the\n * rows — the gutter and the list share one coordinate space).\n */\nconst DAY_HEADER_H = 32;\n/** Radius of the node dot. */\nconst NODE_R = 4;\n/**\n * Vertical length (px) the connector runs straight along a lane before turning\n * into the adjacent lane. A FIXED corner length (not a proportion of the row\n * span) makes a cross-lane join read as \"leave the lane → short elbow → arrive\",\n * so a branch clearly leads down into its parent lane instead of meandering\n * across the whole gap with a lazy midpoint S-curve.\n */\nconst EDGE_TURN = 16;\n/**\n * One opacity for BOTH lane spines and cross-lane connectors so a fork/merge join\n * reads as one continuous line — a mismatch here leaves a visible seam exactly\n * where a branch should be leading into the previous level.\n */\nconst LANE_STROKE_OPACITY = 0.75;\n\n/** X centre of a lane column in the SVG. */\nfunction laneX(lane: number): number {\n return lane * LANE_W + LANE_W / 2;\n}\n\n// ─── Branch collapse model ────────────────────────────────────────────────────\n\n/**\n * The minimal node shape the SVG gutter needs (lane position + id). Both real\n * revisions and synthetic collapsed-branch summary nodes satisfy this.\n */\ninterface GutterNode {\n id: string;\n lane: number;\n}\n\n/**\n * A list/gutter render item. Either a real revision row or a single summary row\n * standing in for a collapsed branch (placed at the branch's tip position).\n */\ntype RenderItem =\n | {\n kind: \"revision\";\n revision: Revision;\n /** True iff this row is the tip of an expanded, collapsible branch. */\n canCollapse: boolean;\n branchId?: string;\n }\n | {\n kind: \"summary\";\n branch: RevisionBranch;\n /** Hidden revisions in this branch's subtree (no double counting). */\n count: number;\n /** Lane the summary node sits on (the tip's lane). */\n lane: number;\n /** Synthetic, collision-free id (`summary:<branchId>`). */\n id: string;\n /** Tip timestamp — used for day grouping so the summary lands in the tip's day. */\n tipTimestamp: Date | string | number;\n };\n\ninterface BranchMaps {\n branchById: Map<string, RevisionBranch>;\n parentOf: Map<string, string | undefined>;\n}\n\n/** Index `branches` for O(1) lookup + parent-chain walks. Pure. */\nfunction buildBranchMaps(branches: RevisionBranch[]): BranchMaps {\n const branchById = new Map<string, RevisionBranch>();\n const parentOf = new Map<string, string | undefined>();\n for (const b of branches) {\n branchById.set(b.id, b);\n parentOf.set(b.id, b.parentBranchId);\n }\n return { branchById, parentOf };\n}\n\n/**\n * Returns a memoised lookup: branch id → the TOP-MOST collapsed ancestor on its\n * parent chain (itself included), or `undefined` if nothing in the chain is\n * collapsed. Walking leaf→root and keeping the last collapsed hit yields the\n * highest collapsed ancestor, which is the branch whose summary absorbs the row.\n * Cycle-guarded (defensive against malformed app data).\n */\nfunction makeTopCollapsed(parentOf: Map<string, string | undefined>, collapsedSet: Set<string>) {\n const cache = new Map<string, string | undefined>();\n return function topCollapsed(branchId: string): string | undefined {\n const cached = cache.get(branchId);\n if (cached !== undefined || cache.has(branchId)) return cached;\n let topMost: string | undefined;\n const visited = new Set<string>();\n let cur: string | undefined = branchId;\n while (cur !== undefined && !visited.has(cur)) {\n visited.add(cur);\n if (collapsedSet.has(cur)) topMost = cur;\n cur = parentOf.get(cur);\n }\n cache.set(branchId, topMost);\n return topMost;\n };\n}\n\ninterface ComputeResult {\n items: RenderItem[];\n /** Hidden revision id → the summary item id that absorbed it (for edge remap). */\n summaryOf: Map<string, string>;\n}\n\n/**\n * Single newest-first pass over `revisions` → the visible render-item list.\n *\n * A revision is hidden when its branch (or any ancestor branch) is collapsed; the\n * FIRST hidden revision of a collapsed subtree (the tip, since order is\n * newest-first) is replaced by ONE summary row at its slot, and the rest are\n * dropped. Each hidden revision is counted against its top-most collapsed\n * ancestor only, so nested collapse never double-counts. Light: Map/Set lookups\n * and a shallow parent-chain walk — no graph math.\n */\nfunction computeRenderItems(\n revisions: Revision[],\n collapsedSet: Set<string>,\n maps: BranchMaps,\n): ComputeResult {\n const items: RenderItem[] = [];\n const summaryOf = new Map<string, string>();\n const summaryCount = new Map<string, number>();\n const summaryEmitted = new Set<string>();\n const seenVisibleBranch = new Set<string>();\n const topCollapsed = makeTopCollapsed(maps.parentOf, collapsedSet);\n\n for (const rev of revisions) {\n const bid = rev.branchId;\n // Unknown branch ids (not in `branches`) are never hidden / never collapsible.\n if (bid !== undefined && maps.branchById.has(bid)) {\n const top = topCollapsed(bid);\n if (top !== undefined) {\n const summaryId = `summary:${top}`;\n summaryOf.set(rev.id, summaryId);\n summaryCount.set(top, (summaryCount.get(top) ?? 0) + 1);\n if (!summaryEmitted.has(top)) {\n summaryEmitted.add(top);\n const branch = maps.branchById.get(top) ?? { id: top };\n items.push({\n kind: \"summary\",\n branch,\n count: 0,\n lane: rev.lane,\n id: summaryId,\n tipTimestamp: rev.timestamp,\n });\n }\n continue;\n }\n const canCollapse = !seenVisibleBranch.has(bid);\n seenVisibleBranch.add(bid);\n items.push({ kind: \"revision\", revision: rev, canCollapse, branchId: bid });\n continue;\n }\n\n items.push({ kind: \"revision\", revision: rev, canCollapse: false, branchId: bid });\n }\n\n for (const it of items) {\n if (it.kind === \"summary\") it.count = summaryCount.get(it.branch.id) ?? 0;\n }\n\n return { items, summaryOf };\n}\n\n// ─── Context ─────────────────────────────────────────────────────────────────\n\ninterface RevisionTimelineCtx {\n selectedId: string | undefined;\n onSelect: (id: string) => void;\n}\n\nconst RevisionTimelineContext = createContext<RevisionTimelineCtx | null>(null);\n\nfunction useRevisionTimelineCtx(): RevisionTimelineCtx {\n const ctx = use(RevisionTimelineContext);\n if (!ctx) throw new Error(\"RevisionTimeline sub-parts must be inside <RevisionTimeline>\");\n return ctx;\n}\n\n// ─── SVG lane gutter ─────────────────────────────────────────────────────────\n\ninterface LaneGutterProps {\n revisions: GutterNode[];\n edges: RevisionEdge[];\n /**\n * Map of revision id → vertical centre (px) in the gutter's coordinate space.\n * Computed by the parent so the gutter shares ONE coordinate space with the\n * list — it already accounts for day-header heights, so dots line up with\n * their rows even when `groupBy=\"day\"` inserts headers between groups.\n */\n rowCenterY: Map<string, number>;\n /** Total gutter height (px) — equals the rendered list height. */\n height: number;\n className?: string;\n}\n\n/**\n * Renders the branch-graph SVG gutter. Draws:\n * - A vertical spine per lane (coloured via chart tokens)\n * - A filled circle node at each revision's lane position\n * - Merge-join cubic-bezier curves between a child revision and its parent\n * revision when they are in different lanes (cross-lane edges)\n *\n * All Y positions come from `rowCenterY` (header-aware), NOT `index * ROW_H`,\n * so the graph stays aligned with day-grouped rows. No `absolute w-px`\n * connectors — all drawing is SVG (timeline-fork safe).\n */\nfunction LaneGutter({ revisions, edges, rowCenterY, height, className }: LaneGutterProps) {\n const maxLane = revisions.reduce((m, r) => Math.max(m, r.lane), 0);\n const svgW = (maxLane + 1) * LANE_W;\n\n const idToRev = useMemo(() => {\n const m = new Map<string, GutterNode>();\n for (const r of revisions) m.set(r.id, r);\n return m;\n }, [revisions]);\n\n // Each lane's first + last revision (in list order) bound its spine.\n const laneSpan = useMemo(() => {\n const first = new Map<number, string>();\n const last = new Map<number, string>();\n for (const r of revisions) {\n if (!first.has(r.lane)) first.set(r.lane, r.id);\n last.set(r.lane, r.id);\n }\n return { first, last };\n }, [revisions]);\n\n // Pre-count incoming edges per revision → merge detection.\n const incomingCount = useMemo(() => {\n const m = new Map<string, number>();\n for (const e of edges) m.set(e.to, (m.get(e.to) ?? 0) + 1);\n return m;\n }, [edges]);\n\n if (height === 0 || revisions.length === 0) return null;\n\n return (\n <svg\n aria-hidden=\"true\"\n width={svgW}\n height={height}\n className={cn(\"shrink-0 self-stretch\", className)}\n style={{ minWidth: svgW }}\n >\n {/* Lane spines — one vertical line per lane from first to last revision */}\n {Array.from(laneSpan.last.entries()).map(([lane, lastId]) => {\n const firstId = laneSpan.first.get(lane);\n const y1 = firstId ? rowCenterY.get(firstId) : undefined;\n const y2 = rowCenterY.get(lastId);\n if (y1 === undefined || y2 === undefined) return null;\n const x = laneX(lane);\n return (\n <line\n key={`spine-${lane}`}\n x1={x}\n y1={y1}\n x2={x}\n y2={y2}\n stroke={laneColor(lane)}\n strokeWidth={2}\n strokeLinecap=\"round\"\n opacity={LANE_STROKE_OPACITY}\n />\n );\n })}\n\n {/* Edge connectors — cross-lane merge / fork joins. The line stays in its\n source lane for a fixed length (EDGE_TURN), turns through a short elbow,\n then runs straight into the target lane — so it leads cleanly into the\n previous level instead of drifting across the whole gap. */}\n {edges.map((edge, ei) => {\n const fromRev = idToRev.get(edge.from);\n const toRev = idToRev.get(edge.to);\n if (!fromRev || !toRev) return null;\n if (fromRev.lane === toRev.lane) return null; // covered by the spine\n const y1 = rowCenterY.get(fromRev.id);\n const y2 = rowCenterY.get(toRev.id);\n if (y1 === undefined || y2 === undefined) return null;\n const x1 = laneX(fromRev.lane);\n const x2 = laneX(toRev.lane);\n const dir = y2 >= y1 ? 1 : -1;\n // Tangent the curve to BOTH lanes (vertical at each end) with a fixed\n // corner length, capped so short joins don't overshoot.\n const k = Math.min(Math.abs(y2 - y1) / 2, EDGE_TURN);\n return (\n <path\n key={`edge-${ei}`}\n d={`M ${x1} ${y1} C ${x1} ${y1 + dir * k}, ${x2} ${y2 - dir * k}, ${x2} ${y2}`}\n stroke={laneColor(fromRev.lane)}\n strokeWidth={2}\n fill=\"none\"\n strokeLinecap=\"round\"\n opacity={LANE_STROKE_OPACITY}\n />\n );\n })}\n\n {/* Node dots — one circle per revision */}\n {revisions.map((rev) => {\n const x = laneX(rev.lane);\n const y = rowCenterY.get(rev.id);\n if (y === undefined) return null;\n const isMerge = (incomingCount.get(rev.id) ?? 0) >= 2;\n return (\n <g key={`node-${rev.id}`}>\n {isMerge ? (\n <>\n <circle\n cx={x}\n cy={y}\n r={NODE_R + 2}\n fill=\"var(--background)\"\n stroke={laneColor(rev.lane)}\n strokeWidth={2}\n />\n <circle cx={x} cy={y} r={NODE_R - 1} fill={laneColor(rev.lane)} />\n </>\n ) : (\n <circle cx={x} cy={y} r={NODE_R} fill={laneColor(rev.lane)} />\n )}\n </g>\n );\n })}\n </svg>\n );\n}\n\n// ─── Day group header ─────────────────────────────────────────────────────────\n\ninterface DayHeaderProps {\n label: string;\n}\n\nfunction DayHeader({ label }: DayHeaderProps) {\n // Fixed height (DAY_HEADER_H) so the SVG gutter's coordinate space stays in\n // lockstep with the rendered rows — see LaneGutter / rowCenterY.\n return (\n <div\n role=\"separator\"\n aria-label={label}\n style={{ height: DAY_HEADER_H }}\n className=\"box-border flex items-center gap-3 px-3\"\n >\n <span className=\"text-eyebrow uppercase text-muted-foreground\">{label}</span>\n <div className=\"h-px flex-1 bg-border\" aria-hidden=\"true\" />\n </div>\n );\n}\n\n// ─── Churn indicator ──────────────────────────────────────────────────────────\n\ninterface ChurnProps {\n additions?: number;\n deletions?: number;\n}\n\nfunction Churn({ additions, deletions }: ChurnProps) {\n const hasAdditions = additions !== undefined && additions > 0;\n const hasDeletions = deletions !== undefined && deletions > 0;\n if (!hasAdditions && !hasDeletions) return null;\n\n return (\n <span\n className=\"flex shrink-0 items-center gap-1 tabular-nums text-meta text-muted-foreground\"\n aria-label={`${additions ?? 0} additions, ${deletions ?? 0} deletions`}\n >\n {hasAdditions && (\n <span className=\"flex items-center gap-0.5 text-success-text\" aria-hidden=\"true\">\n <Plus aria-hidden=\"true\" className=\"size-2.5\" />\n {additions}\n </span>\n )}\n {hasDeletions && (\n <span className=\"flex items-center gap-0.5 text-destructive\" aria-hidden=\"true\">\n <Minus aria-hidden=\"true\" className=\"size-2.5\" />\n {deletions}\n </span>\n )}\n </span>\n );\n}\n\n// ─── Ref chip ─────────────────────────────────────────────────────────────────\n\nfunction RefChip({ label }: { label: string }) {\n return (\n <span className=\"inline-flex shrink-0 items-center rounded border border-border bg-muted px-1.5 py-0.5 text-meta text-muted-foreground\">\n {label}\n </span>\n );\n}\n\n// ─── Branch collapse UI ───────────────────────────────────────────────────────\n\n/** A right-chevron that rotates 90° to point down when its branch is expanded. */\nfunction BranchChevron({ expanded }: { expanded: boolean }) {\n return (\n <ChevronRight\n aria-hidden=\"true\"\n className={cn(\n \"size-3.5 shrink-0 text-muted-foreground transition-transform duration-fast ease-standard motion-reduce:transition-none\",\n expanded && \"rotate-90\",\n )}\n />\n );\n}\n\n/**\n * The collapse toggle shown on an expanded branch's tip row. A standalone button\n * (a sibling of the row's select button — never nested inside it) so there are no\n * nested interactive elements.\n */\nfunction BranchToggle({ branchName, onToggle }: { branchName: string; onToggle: () => void }) {\n return (\n <button\n type=\"button\"\n aria-expanded={true}\n aria-label={`Collapse branch ${branchName}`}\n onClick={onToggle}\n className={cn(\n \"flex size-6 shrink-0 items-center justify-center rounded text-muted-foreground\",\n \"transition-colors duration-fast ease-standard motion-reduce:transition-none\",\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus-ring\",\n )}\n >\n <BranchChevron expanded />\n </button>\n );\n}\n\ninterface CollapsedBranchRowProps {\n branchId: string;\n branchName: string;\n /** Pre-formatted trailing label, e.g. \"3 commits\" (default) or \"3 steps\". */\n summaryLabel: string;\n density: RevisionTimelineDensity;\n /** Left indent (px), proportional to the collapsed branch's lane depth. */\n indent: number;\n onExpand: () => void;\n}\n\n/**\n * The single summary row that stands in for a collapsed branch, placed at the\n * branch's tip position. The whole row IS the expand button (no nested\n * interactives), so it offers exactly one keyboard/AT target.\n */\nfunction CollapsedBranchRow({\n branchId,\n branchName,\n summaryLabel,\n density,\n indent,\n onExpand,\n}: CollapsedBranchRowProps) {\n const ROW_H = density === \"compact\" ? ROW_H_COMPACT : ROW_H_COMFORTABLE;\n\n return (\n <li\n role=\"listitem\"\n data-summary-branch-id={branchId}\n style={{ height: ROW_H, paddingInlineStart: indent }}\n className=\"relative flex items-center\"\n >\n <button\n type=\"button\"\n aria-expanded={false}\n aria-label={`Collapsed branch ${branchName}, ${summaryLabel}, expand`}\n onClick={onExpand}\n className={cn(\n \"flex h-full w-full min-w-0 items-center gap-2 px-2 text-start\",\n \"transition-colors duration-fast ease-standard motion-reduce:transition-none\",\n \"rounded focus-ring\",\n \"hover:bg-accent hover:text-accent-foreground\",\n )}\n >\n <BranchChevron expanded={false} />\n <GitBranch className=\"size-3.5 shrink-0 text-muted-foreground\" aria-hidden=\"true\" />\n <span className=\"min-w-0 flex-1 truncate text-body text-foreground\" title={branchName}>\n {branchName}\n </span>\n <span className=\"shrink-0 tabular-nums text-meta text-muted-foreground\">\n {summaryLabel}\n </span>\n </button>\n </li>\n );\n}\n\n// ─── Revision row ────────────────────────────────────────────────────────────\n\ninterface RevisionRowProps {\n revision: Revision;\n isMerge: boolean;\n density: RevisionTimelineDensity;\n /**\n * Left indent (px) for this row's content, proportional to its lane depth, so\n * the row text staircases alongside the branch graph instead of all rows\n * starting at the same point.\n */\n indent: number;\n /**\n * When set, this row is the tip of an expanded collapsible branch: render a\n * collapse toggle as a sibling of the select button (never nested).\n */\n collapseToggle?: { branchName: string; onToggle: () => void };\n}\n\nfunction RevisionRow({ revision, isMerge, density, indent, collapseToggle }: RevisionRowProps) {\n const { selectedId, onSelect } = useRevisionTimelineCtx();\n const isSelected = selectedId === revision.id;\n const ROW_H = density === \"compact\" ? ROW_H_COMPACT : ROW_H_COMFORTABLE;\n\n const formattedTimestamp = useMemo(() => {\n const d =\n revision.timestamp instanceof Date ? revision.timestamp : new Date(revision.timestamp);\n return new Intl.DateTimeFormat(undefined, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n }).format(d);\n }, [revision.timestamp]);\n\n const fullTimestamp = useMemo(() => {\n const d =\n revision.timestamp instanceof Date ? revision.timestamp : new Date(revision.timestamp);\n return new Intl.DateTimeFormat(undefined, {\n dateStyle: \"full\",\n timeStyle: \"medium\",\n }).format(d);\n }, [revision.timestamp]);\n\n return (\n <li\n role=\"listitem\"\n data-revision-id={revision.id}\n data-selected={isSelected || undefined}\n style={{ height: ROW_H, paddingInlineStart: indent }}\n className=\"relative flex items-center\"\n >\n {collapseToggle && (\n <BranchToggle branchName={collapseToggle.branchName} onToggle={collapseToggle.onToggle} />\n )}\n <button\n type=\"button\"\n aria-label={`Select revision: ${revision.message}`}\n aria-pressed={isSelected}\n onClick={() => onSelect(revision.id)}\n className={cn(\n collapseToggle\n ? \"flex h-full min-w-0 flex-1 items-center gap-2 px-2 text-start\"\n : \"flex h-full w-full min-w-0 items-center gap-2 px-2 text-start\",\n \"transition-colors duration-fast ease-standard motion-reduce:transition-none\",\n \"rounded focus-ring\",\n \"hover:bg-accent hover:text-accent-foreground\",\n isSelected && \"border-s-2 border-s-primary bg-accent text-accent-foreground\",\n )}\n >\n {/* Merge icon (non-color visual cue for merge commits) */}\n <span className=\"shrink-0 text-muted-foreground\" aria-hidden=\"true\">\n {isMerge ? (\n <GitMerge className=\"size-3.5\" aria-hidden=\"true\" />\n ) : (\n <GitCommitHorizontal className=\"size-3.5\" aria-hidden=\"true\" />\n )}\n </span>\n\n {/* Commit message — truncates with min-w-0 */}\n <span\n className=\"min-w-0 flex-1 truncate text-body text-foreground\"\n title={revision.message}\n >\n {revision.message}\n </span>\n\n {/* Ref chips (branch / tag labels) */}\n {revision.refs && revision.refs.length > 0 && (\n <span className=\"hidden shrink-0 items-center gap-1 sm:flex\">\n {revision.refs.map((ref) => (\n <RefChip key={ref} label={ref} />\n ))}\n </span>\n )}\n\n {/* Churn indicators */}\n <Churn additions={revision.additions} deletions={revision.deletions} />\n\n {/* Author */}\n {revision.author && (\n <span\n className=\"hidden shrink-0 text-caption text-muted-foreground md:block\"\n title={revision.author}\n >\n {revision.author}\n </span>\n )}\n\n {/* Short SHA */}\n {revision.shortSha && (\n <span\n className=\"hidden shrink-0 font-mono text-meta text-muted-foreground sm:block\"\n title={`Full SHA: ${revision.shortSha}`}\n >\n {revision.shortSha}\n </span>\n )}\n\n {/* Timestamp */}\n <time\n dateTime={\n revision.timestamp instanceof Date\n ? revision.timestamp.toISOString()\n : new Date(revision.timestamp).toISOString()\n }\n className=\"shrink-0 text-meta text-muted-foreground\"\n title={fullTimestamp}\n >\n {formattedTimestamp}\n </time>\n </button>\n </li>\n );\n}\n\n// ─── Collapse state hook ──────────────────────────────────────────────────────\n\n/**\n * Controlled/uncontrolled collapsed-branch state — mirrors the selection pattern.\n * Internally a `Set`; the controlled API stays array-shaped. `toggleBranch`\n * fires `onBranchToggle(id, next)` and only mutates internal state when\n * uncontrolled.\n */\nfunction useBranchCollapse(opts: {\n collapsedBranchIds?: string[];\n defaultCollapsedBranchIds?: string[];\n onBranchToggle?: (branchId: string, collapsed: boolean) => void;\n}) {\n const { collapsedBranchIds, defaultCollapsedBranchIds, onBranchToggle } = opts;\n const isControlled = collapsedBranchIds !== undefined;\n const [internal, setInternal] = useState<Set<string>>(\n () => new Set(defaultCollapsedBranchIds ?? []),\n );\n const collapsedSet = useMemo(\n () => (isControlled ? new Set(collapsedBranchIds) : internal),\n [isControlled, collapsedBranchIds, internal],\n );\n const toggleBranch = useCallback(\n (branchId: string) => {\n const next = !collapsedSet.has(branchId);\n onBranchToggle?.(branchId, next);\n if (!isControlled) {\n setInternal((prev) => {\n const s = new Set(prev);\n if (next) s.add(branchId);\n else s.delete(branchId);\n return s;\n });\n }\n },\n [collapsedSet, isControlled, onBranchToggle],\n );\n return { collapsedSet, toggleBranch };\n}\n\n// ─── Main component ───────────────────────────────────────────────────────────\n\nexport interface RevisionTimelineProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, \"onSelect\">,\n VariantProps<typeof revisionTimelineVariants> {\n /** Ordered revisions, newest → oldest. */\n revisions: Revision[];\n /**\n * Parent-link edges for drawing the branch graph.\n * Each edge connects a child revision (`from`) to its parent (`to`).\n */\n edges?: RevisionEdge[];\n /**\n * How to group revisions. `\"day\"` inserts day headers; `\"none\"` renders a\n * flat list. @default \"day\"\n */\n groupBy?: \"day\" | \"none\";\n /** Format the day-group header label. Defaults to `Intl.DateTimeFormat` long date. */\n formatDay?: (d: Date) => string;\n /**\n * Controlled selection: the id of the currently-selected revision.\n * Omit to use uncontrolled selection (`defaultSelectedId`).\n */\n selectedId?: string;\n /** Initial selected revision id for uncontrolled usage. */\n defaultSelectedId?: string;\n /** Called when the user selects a revision row. */\n onSelect?: (id: string) => void;\n /**\n * Collapsible branch registry. **Supplying this opts in to the collapse/expand\n * mode.** Each listed branch becomes collapsible; a branch's commits fold into a\n * single summary row at its tip. `parentBranchId` nests branches so collapsing a\n * parent also folds its descendants (multi-level). A revision whose `branchId`\n * is not listed here (e.g. the trunk) stays permanently visible. Omit entirely\n * for the classic, non-collapsible timeline.\n */\n branches?: RevisionBranch[];\n /** Controlled set of collapsed branch ids. */\n collapsedBranchIds?: string[];\n /** Uncontrolled initial set of collapsed branch ids. */\n defaultCollapsedBranchIds?: string[];\n /** Called when a branch is collapsed or expanded. `collapsed` is the NEXT state. */\n onBranchToggle?: (branchId: string, collapsed: boolean) => void;\n /**\n * Trailing summary text on a collapsed branch row. Defaults to\n * `\"<n> commit(s)\"`; override to re-vocabulary the timeline (e.g. `\"<n> steps\"`\n * when modelling a process flow rather than git history).\n */\n formatBranchSummary?: (count: number, branch: RevisionBranch) => string;\n}\n\n/**\n * RevisionTimeline — presentational git-history timeline.\n *\n * Renders revisions in a scrollable list with:\n * - Day grouping (collapsible via `groupBy`)\n * - SVG branch-graph lanes + merge joins in the left gutter\n * - Churn indicators, ref chips, author, SHA, timestamp\n * - Accessible selection (real `<button>` elements in an `<ol>`)\n *\n * Self-contained: no required Provider ancestor. Use `selectedId` +\n * `onSelect` for controlled selection, or `defaultSelectedId` for uncontrolled.\n *\n * Pass `branches` to enable the collapse/expand mode: a branch's commits fold\n * into a single summary row at its tip (multi-level via `parentBranchId`).\n */\nexport const RevisionTimeline = forwardRef<HTMLDivElement, RevisionTimelineProps>(\n function RevisionTimeline(\n {\n revisions,\n edges = [],\n groupBy = \"day\",\n formatDay,\n selectedId: controlledSelectedId,\n defaultSelectedId,\n onSelect,\n branches,\n collapsedBranchIds,\n defaultCollapsedBranchIds,\n onBranchToggle,\n formatBranchSummary,\n density,\n className,\n ...props\n },\n ref,\n ) {\n const { t } = useLocale();\n const resolvedDensity: RevisionTimelineDensity = density ?? \"comfortable\";\n\n // Collapse/expand mode is opt-in: active only when `branches` are supplied.\n const collapseEnabled = !!branches && branches.length > 0;\n const branchMaps = useMemo(() => buildBranchMaps(branches ?? []), [branches]);\n const { collapsedSet, toggleBranch } = useBranchCollapse({\n collapsedBranchIds,\n defaultCollapsedBranchIds,\n onBranchToggle,\n });\n\n // Controlled / uncontrolled selection\n const isControlled = controlledSelectedId !== undefined;\n const [internalSelectedId, setInternalSelectedId] = useState<string | undefined>(\n defaultSelectedId,\n );\n const resolvedSelectedId = isControlled ? controlledSelectedId : internalSelectedId;\n\n const handleSelect = useCallback(\n (id: string) => {\n onSelect?.(id);\n if (!isControlled) {\n setInternalSelectedId(id);\n }\n },\n [isControlled, onSelect],\n );\n\n // Default day formatter\n const defaultFormatDay = useCallback(\n (d: Date) =>\n new Intl.DateTimeFormat(undefined, {\n weekday: \"short\",\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n }).format(d),\n [],\n );\n const resolvedFormatDay = formatDay ?? defaultFormatDay;\n\n // Merge detection: revision is a merge if ≥2 incoming edges target it\n const mergeIds = useMemo(() => {\n const incoming = new Map<string, number>();\n for (const e of edges) {\n incoming.set(e.to, (incoming.get(e.to) ?? 0) + 1);\n }\n return new Set([...incoming.entries()].filter(([, n]) => n >= 2).map(([id]) => id));\n }, [edges]);\n\n // Visible render items (revisions + collapsed-branch summaries). With no\n // `branches`, `branchMaps` is empty → every item is a plain revision and\n // `summaryOf` is empty, so the legacy render path is reproduced exactly.\n const { items: renderItems, summaryOf } = useMemo(\n () => computeRenderItems(revisions, collapsedSet, branchMaps),\n [revisions, collapsedSet, branchMaps],\n );\n\n // Group the VISIBLE render items by day. A summary inherits its tip's\n // timestamp, so it lands in the tip's day; a fully-hidden day drops out.\n const groups = useMemo<Array<{ dayKey: string; dayLabel: string; items: RenderItem[] }>>(() => {\n const itemTime = (it: RenderItem) =>\n it.kind === \"revision\" ? it.revision.timestamp : it.tipTimestamp;\n if (groupBy === \"none\") {\n return [{ dayKey: \"all\", dayLabel: \"\", items: renderItems }];\n }\n const result: Array<{ dayKey: string; dayLabel: string; items: RenderItem[] }> = [];\n for (const it of renderItems) {\n const ts = itemTime(it);\n const d = ts instanceof Date ? ts : new Date(ts);\n // YYYY-MM-DD in local time for grouping key\n const key = `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, \"0\")}-${String(d.getDate()).padStart(2, \"0\")}`;\n const last = result[result.length - 1];\n if (last && last.dayKey === key) {\n last.items.push(it);\n } else {\n result.push({ dayKey: key, dayLabel: resolvedFormatDay(d), items: [it] });\n }\n }\n return result;\n }, [renderItems, groupBy, resolvedFormatDay]);\n\n // Shared gutter↔list coordinate space: a per-row vertical centre keyed by\n // render-item id (revision id OR `summary:<branchId>`), accounting for\n // day-header height, so the SVG dots line up with their rows.\n const ROW_H = resolvedDensity === \"compact\" ? ROW_H_COMPACT : ROW_H_COMFORTABLE;\n const { rowCenterY, gutterHeight } = useMemo(() => {\n const map = new Map<string, number>();\n let y = 0;\n for (const group of groups) {\n if (groupBy === \"day\") y += DAY_HEADER_H;\n for (const it of group.items) {\n const id = it.kind === \"revision\" ? it.revision.id : it.id;\n map.set(id, y + ROW_H / 2);\n y += ROW_H;\n }\n }\n return { rowCenterY: map, gutterHeight: y };\n }, [groups, groupBy, ROW_H]);\n\n // Gutter nodes: one per visible revision + one synthetic node per summary\n // (on the collapsed branch's own lane = its tip's lane).\n const gutterRevisions = useMemo<GutterNode[]>(\n () =>\n renderItems.map((it) =>\n it.kind === \"revision\"\n ? { id: it.revision.id, lane: it.revision.lane }\n : { id: it.id, lane: it.lane },\n ),\n [renderItems],\n );\n\n // Remap edges whose endpoints were hidden onto the summary that absorbed\n // them, so merge/fork curves still connect to the summary node.\n const visibleEdges = useMemo<RevisionEdge[]>(() => {\n if (!collapseEnabled || summaryOf.size === 0) return edges;\n const seen = new Set<string>();\n const out: RevisionEdge[] = [];\n for (const e of edges) {\n const from = summaryOf.get(e.from) ?? e.from;\n const to = summaryOf.get(e.to) ?? e.to;\n if (from === to) continue; // collapsed into a single node\n const key = `${from}\\u0000${to}`;\n if (seen.has(key)) continue; // de-dup coincident remaps\n seen.add(key);\n out.push({ from, to });\n }\n return out;\n }, [collapseEnabled, edges, summaryOf]);\n\n const ctx: RevisionTimelineCtx = useMemo(\n () => ({\n selectedId: resolvedSelectedId,\n onSelect: handleSelect,\n }),\n [resolvedSelectedId, handleSelect],\n );\n\n const branchLabel = (branch: RevisionBranch) => branch.name ?? branch.id;\n const summaryText =\n formatBranchSummary ?? ((count: number) => `${count} ${count === 1 ? \"commit\" : \"commits\"}`);\n\n return (\n <RevisionTimelineContext.Provider value={ctx}>\n <div\n ref={ref}\n className={cn(revisionTimelineVariants({ density: resolvedDensity }), className)}\n {...props}\n >\n {/* Lane gutter + list side-by-side */}\n <div className=\"flex min-w-0\">\n {/* SVG branch-graph gutter */}\n <LaneGutter\n revisions={gutterRevisions}\n edges={visibleEdges}\n rowCenterY={rowCenterY}\n height={gutterHeight}\n className=\"mr-1\"\n />\n\n {/* Revision list */}\n <div className=\"min-w-0 flex-1\">\n {groups.map((group) => (\n <div key={group.dayKey}>\n {groupBy === \"day\" && <DayHeader label={group.dayLabel} />}\n <ol\n role=\"list\"\n aria-label={groupBy === \"day\" ? group.dayLabel : t(\"ui.revisionTimeline.label\")}\n >\n {group.items.map((it) => {\n if (it.kind === \"summary\") {\n return (\n <CollapsedBranchRow\n key={it.id}\n branchId={it.branch.id}\n branchName={branchLabel(it.branch)}\n summaryLabel={summaryText(it.count, it.branch)}\n density={resolvedDensity}\n indent={it.lane * LANE_W}\n onExpand={() => toggleBranch(it.branch.id)}\n />\n );\n }\n const branch = it.branchId\n ? branchMaps.branchById.get(it.branchId)\n : undefined;\n const collapseToggle =\n it.canCollapse && branch\n ? {\n branchName: branchLabel(branch),\n onToggle: () => toggleBranch(branch.id),\n }\n : undefined;\n return (\n <RevisionRow\n key={it.revision.id}\n revision={it.revision}\n isMerge={mergeIds.has(it.revision.id)}\n density={resolvedDensity}\n indent={it.revision.lane * LANE_W}\n collapseToggle={collapseToggle}\n />\n );\n })}\n </ol>\n </div>\n ))}\n </div>\n </div>\n </div>\n </RevisionTimelineContext.Provider>\n );\n },\n);\n"],"mappings":"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","names":["RevisionTimeline"]}
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-KBNWM27Q.js";
5
+
6
+ // src/components/input/input.tsx
7
+ import { forwardRef } from "react";
8
+ import { jsx } from "react/jsx-runtime";
9
+ var Input = forwardRef(function Input2({ className, type = "text", ...props }, ref) {
10
+ return /* @__PURE__ */ jsx(
11
+ "input",
12
+ {
13
+ ref,
14
+ type,
15
+ className: cn(
16
+ "flex h-control w-full rounded-control border border-input bg-input-background text-foreground px-3 py-1 text-body shadow-input transition-[color,background-color,border-color,box-shadow] duration-fast ease-standard",
17
+ "placeholder:text-muted-foreground",
18
+ "focus-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background focus-visible:border-input-focus",
19
+ // One disabled mechanism (opacity fade), matching every `Button`
20
+ // variant — `disabled:bg-muted` used to also fire here, stacking a
21
+ // fill swap on top of the fade (#286); `disabled:border-border` stays,
22
+ // it is the separate/subtle "not editable" edge, not a fill.
23
+ "disabled:cursor-not-allowed disabled:opacity-50 disabled:border-border",
24
+ "aria-[invalid=true]:border-destructive aria-[invalid=true]:ring-destructive",
25
+ "file:border-0 file:bg-transparent file:text-body file:font-medium",
26
+ className
27
+ ),
28
+ ...props
29
+ }
30
+ );
31
+ });
32
+
33
+ export {
34
+ Input
35
+ };
36
+ //# sourceMappingURL=chunk-XYACSO57.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/input/input.tsx"],"sourcesContent":["import { forwardRef, type InputHTMLAttributes } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type InputProps = InputHTMLAttributes<HTMLInputElement>;\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { className, type = \"text\", ...props },\n ref,\n) {\n return (\n <input\n ref={ref}\n type={type}\n className={cn(\n \"flex h-control w-full rounded-control border border-input bg-input-background text-foreground px-3 py-1 text-body shadow-input transition-[color,background-color,border-color,box-shadow] duration-fast ease-standard\",\n \"placeholder:text-muted-foreground\",\n \"focus-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background focus-visible:border-input-focus\",\n // One disabled mechanism (opacity fade), matching every `Button`\n // variant — `disabled:bg-muted` used to also fire here, stacking a\n // fill swap on top of the fade (#286); `disabled:border-border` stays,\n // it is the separate/subtle \"not editable\" edge, not a fill.\n \"disabled:cursor-not-allowed disabled:opacity-50 disabled:border-border\",\n \"aria-[invalid=true]:border-destructive aria-[invalid=true]:ring-destructive\",\n \"file:border-0 file:bg-transparent file:text-body file:font-medium\",\n className,\n )}\n {...props}\n />\n );\n});\n"],"mappings":";;;;;;AAAA,SAAS,kBAA4C;AAUjD;AALG,IAAM,QAAQ,WAAyC,SAASA,OACrE,EAAE,WAAW,OAAO,QAAQ,GAAG,MAAM,GACrC,KACA;AACA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA;AAAA;AAAA;AAAA;AAAA,QAKA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;","names":["Input"]}
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ //# sourceMappingURL=chunk-XYFEQHEM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import {
3
+ StatePanel
4
+ } from "./chunk-BLNXHETI.js";
5
+
6
+ // src/components/empty-state/empty-state.tsx
7
+ import "react";
8
+ import { jsx } from "react/jsx-runtime";
9
+ function EmptyState({ title, description, icon, actions, className }) {
10
+ return /* @__PURE__ */ jsx(
11
+ StatePanel,
12
+ {
13
+ kind: "empty",
14
+ title,
15
+ description,
16
+ icon,
17
+ actions,
18
+ className
19
+ }
20
+ );
21
+ }
22
+
23
+ export {
24
+ EmptyState
25
+ };
26
+ //# sourceMappingURL=chunk-XZ23AFOP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/empty-state/empty-state.tsx"],"sourcesContent":["/**\n * @deprecated Use `StatePanel kind=\"empty\"` from `@elabs-ai/components-ui` instead.\n * This wrapper is kept for back-compat and will be removed in a future release.\n */\nimport { type ReactNode } from \"react\";\nimport { StatePanel } from \"../state-panel/state-panel\";\n\nexport interface EmptyStateProps {\n title: ReactNode;\n description?: ReactNode;\n /**\n * Optional icon shown above the title, clamped to a fixed 40×40 (this\n * wrapper only ever forwards `icon` to `StatePanel`, never `illustration`\n * — for a larger, unclamped illustration use\n * `StatePanel kind=\"empty\" illustration={...}` directly).\n */\n icon?: ReactNode;\n /** Primary/secondary actions. */\n actions?: ReactNode;\n className?: string;\n}\n\n/** @deprecated Use `<StatePanel kind=\"empty\" />` instead. */\nexport function EmptyState({ title, description, icon, actions, className }: EmptyStateProps) {\n return (\n <StatePanel\n kind=\"empty\"\n title={title}\n description={description}\n icon={icon}\n actions={actions}\n className={className}\n />\n );\n}\n"],"mappings":";;;;;;AAIA,OAA+B;AAqB3B;AAFG,SAAS,WAAW,EAAE,OAAO,aAAa,MAAM,SAAS,UAAU,GAAoB;AAC5F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -0,0 +1,54 @@
1
+ "use client";
2
+ import {
3
+ illustrationAccent,
4
+ illustrationSvgProps
5
+ } from "./chunk-A47AZPCL.js";
6
+
7
+ // src/illustrations/error-illustration.tsx
8
+ import { forwardRef } from "react";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ var ErrorIllustration = forwardRef(
11
+ function ErrorIllustration2({ size, className, ...props }, ref) {
12
+ return /* @__PURE__ */ jsxs(
13
+ "svg",
14
+ {
15
+ ref,
16
+ ...illustrationSvgProps(size, className),
17
+ "data-slot": "error-illustration",
18
+ ...props,
19
+ children: [
20
+ /* @__PURE__ */ jsx("path", { d: "M36,32 L83.06,32 L71.29,55.16 L92.47,69.06 L66.59,92.24 L76,120 L36,120 Z" }),
21
+ /* @__PURE__ */ jsx("path", { d: "M124,36 L124,124 L84,124 L74.59,96.24 L100.47,73.06 L79.29,59.16 L91.06,36 Z" }),
22
+ /* @__PURE__ */ jsx(
23
+ "rect",
24
+ {
25
+ x: "104",
26
+ y: "46",
27
+ width: "8",
28
+ height: "24",
29
+ rx: "4",
30
+ style: { fill: illustrationAccent("var(--destructive-text)") },
31
+ stroke: "none"
32
+ }
33
+ ),
34
+ /* @__PURE__ */ jsx(
35
+ "circle",
36
+ {
37
+ cx: "108",
38
+ cy: "80",
39
+ r: "5",
40
+ style: { fill: illustrationAccent("var(--destructive-text)") },
41
+ stroke: "none"
42
+ }
43
+ )
44
+ ]
45
+ }
46
+ );
47
+ }
48
+ );
49
+ ErrorIllustration.displayName = "ErrorIllustration";
50
+
51
+ export {
52
+ ErrorIllustration
53
+ };
54
+ //# sourceMappingURL=chunk-YACASX6X.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/illustrations/error-illustration.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport {\n illustrationSvgProps,\n illustrationAccent,\n type IllustrationProps,\n} from \"./illustration-base\";\n\n/**\n * Recoverable-failure state. A line-art document split into two halves with a\n * visible gap between them — distinguishable from `NoAccessIllustration`/\n * `OfflineIllustration` by silhouette alone (a split document reads as\n * \"broken\" even in greyscale), per the WCAG 1.4.1 \"never color-only\" rule.\n * The exclamation mark IS meaning-bearing (per the accent-semantics\n * convention in `illustration-base.tsx`, #48 finding 1) — it turns \"torn\n * document\" into \"warning\", information the silhouette alone doesn't carry —\n * so it stays, in the upper-right quadrant of the right-hand half, clear of\n * both documents' outlines.\n *\n * Redrawn for #24 fix round 1 (P1-3) — the previous cracked-card + tiny alert\n * triangle read as a lightning bolt or a broken-image placeholder and the\n * triangle's exclamation collapsed to an illegible blob at 4rem.\n *\n * Redrawn again for #48 finding 3 — the mark previously sat at (76-84,\n * 54-95), exactly where the two document halves' torn edges converge, so it\n * read as a knot of overlapping lines rather than a \"!\". Moved to\n * (98-113, 44-85), 8-15 units clear of the nearest tear line at every\n * y-coordinate it spans.\n */\nexport const ErrorIllustration = forwardRef<SVGSVGElement, IllustrationProps>(\n function ErrorIllustration({ size, className, ...props }, ref) {\n return (\n <svg\n ref={ref}\n {...illustrationSvgProps(size, className)}\n data-slot=\"error-illustration\"\n {...props}\n >\n <path d=\"M36,32 L83.06,32 L71.29,55.16 L92.47,69.06 L66.59,92.24 L76,120 L36,120 Z\" />\n <path d=\"M124,36 L124,124 L84,124 L74.59,96.24 L100.47,73.06 L79.29,59.16 L91.06,36 Z\" />\n <rect\n x=\"104\"\n y=\"46\"\n width=\"8\"\n height=\"24\"\n rx=\"4\"\n style={{ fill: illustrationAccent(\"var(--destructive-text)\") }}\n stroke=\"none\"\n />\n <circle\n cx=\"108\"\n cy=\"80\"\n r=\"5\"\n style={{ fill: illustrationAccent(\"var(--destructive-text)\") }}\n stroke=\"none\"\n />\n </svg>\n );\n },\n);\nErrorIllustration.displayName = \"ErrorIllustration\";\n"],"mappings":";;;;;;;AAAA,SAAS,kBAAkB;AA+BrB,SAME,KANF;AAHC,IAAM,oBAAoB;AAAA,EAC/B,SAASA,mBAAkB,EAAE,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK;AAC7D,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACC,GAAG,qBAAqB,MAAM,SAAS;AAAA,QACxC,aAAU;AAAA,QACT,GAAG;AAAA,QAEJ;AAAA,8BAAC,UAAK,GAAE,6EAA4E;AAAA,UACpF,oBAAC,UAAK,GAAE,gFAA+E;AAAA,UACvF;AAAA,YAAC;AAAA;AAAA,cACC,GAAE;AAAA,cACF,GAAE;AAAA,cACF,OAAM;AAAA,cACN,QAAO;AAAA,cACP,IAAG;AAAA,cACH,OAAO,EAAE,MAAM,mBAAmB,yBAAyB,EAAE;AAAA,cAC7D,QAAO;AAAA;AAAA,UACT;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,IAAG;AAAA,cACH,IAAG;AAAA,cACH,GAAE;AAAA,cACF,OAAO,EAAE,MAAM,mBAAmB,yBAAyB,EAAE;AAAA,cAC7D,QAAO;AAAA;AAAA,UACT;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AACA,kBAAkB,cAAc;","names":["ErrorIllustration"]}
@@ -0,0 +1,28 @@
1
+ "use client";
2
+
3
+ // src/lib/use-mobile.ts
4
+ import { useSyncExternalStore } from "react";
5
+ var MOBILE_BREAKPOINT = 768;
6
+ function subscribe(breakpoint, onStoreChange) {
7
+ const mql = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);
8
+ mql.addEventListener("change", onStoreChange);
9
+ return () => mql.removeEventListener("change", onStoreChange);
10
+ }
11
+ function getSnapshot(breakpoint) {
12
+ return window.innerWidth < breakpoint;
13
+ }
14
+ function getServerSnapshot() {
15
+ return false;
16
+ }
17
+ function useIsMobile(breakpoint = MOBILE_BREAKPOINT) {
18
+ return useSyncExternalStore(
19
+ (onStoreChange) => subscribe(breakpoint, onStoreChange),
20
+ () => getSnapshot(breakpoint),
21
+ getServerSnapshot
22
+ );
23
+ }
24
+
25
+ export {
26
+ useIsMobile
27
+ };
28
+ //# sourceMappingURL=chunk-YCFOFNQF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/use-mobile.ts"],"sourcesContent":["\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\n\nconst MOBILE_BREAKPOINT = 768;\n\nfunction subscribe(breakpoint: number, onStoreChange: () => void) {\n const mql = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);\n mql.addEventListener(\"change\", onStoreChange);\n return () => mql.removeEventListener(\"change\", onStoreChange);\n}\n\nfunction getSnapshot(breakpoint: number) {\n return window.innerWidth < breakpoint;\n}\n\n// SSR / first-paint snapshot: no viewport to measure yet, so report \"not\n// mobile\" rather than guessing — this must match what the server rendered to\n// avoid a hydration mismatch, and useSyncExternalStore re-syncs to the real\n// value on the client before paint (no desktop-layout flash).\nfunction getServerSnapshot() {\n return false;\n}\n\n/**\n * Returns true when the viewport is below `breakpoint` (default 768px, the\n * mobile breakpoint). Additive optional argument (ADR 0035 §5) — every\n * existing zero-arg call site is unchanged. A caller with its own threshold\n * (e.g. `ContextRail`'s `overlayBreakpoint`) passes it directly instead of a\n * second hook.\n */\nexport function useIsMobile(breakpoint: number = MOBILE_BREAKPOINT): boolean {\n return useSyncExternalStore(\n (onStoreChange) => subscribe(breakpoint, onStoreChange),\n () => getSnapshot(breakpoint),\n getServerSnapshot,\n );\n}\n"],"mappings":";;;AAEA,SAAS,4BAA4B;AAErC,IAAM,oBAAoB;AAE1B,SAAS,UAAU,YAAoB,eAA2B;AAChE,QAAM,MAAM,OAAO,WAAW,eAAe,aAAa,CAAC,KAAK;AAChE,MAAI,iBAAiB,UAAU,aAAa;AAC5C,SAAO,MAAM,IAAI,oBAAoB,UAAU,aAAa;AAC9D;AAEA,SAAS,YAAY,YAAoB;AACvC,SAAO,OAAO,aAAa;AAC7B;AAMA,SAAS,oBAAoB;AAC3B,SAAO;AACT;AASO,SAAS,YAAY,aAAqB,mBAA4B;AAC3E,SAAO;AAAA,IACL,CAAC,kBAAkB,UAAU,YAAY,aAAa;AAAA,IACtD,MAAM,YAAY,UAAU;AAAA,IAC5B;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,37 @@
1
+ "use client";
2
+
3
+ // src/components/theme-switcher/use-theme-transition.ts
4
+ import { useCallback } from "react";
5
+ import { useReducedMotion, useTheme } from "@elabs-ai/components-tokens";
6
+ function useThemeTransition(effect = "polygon") {
7
+ const { theme, setTheme, themeDefinitions } = useTheme();
8
+ const reduced = useReducedMotion();
9
+ return useCallback(
10
+ (next) => {
11
+ if (next === theme) return;
12
+ if (typeof document === "undefined") {
13
+ setTheme(next);
14
+ return;
15
+ }
16
+ const doc = document;
17
+ if (reduced || typeof doc.startViewTransition !== "function") {
18
+ setTheme(next);
19
+ return;
20
+ }
21
+ const root = document.documentElement;
22
+ root.dataset.vt = themeDefinitions.find((d) => d.value === next)?.dark ? "to-dark" : "to-light";
23
+ root.dataset.vtEffect = effect;
24
+ const transition = doc.startViewTransition(() => setTheme(next));
25
+ transition.finished.finally(() => {
26
+ delete root.dataset.vt;
27
+ delete root.dataset.vtEffect;
28
+ });
29
+ },
30
+ [theme, setTheme, reduced, effect, themeDefinitions]
31
+ );
32
+ }
33
+
34
+ export {
35
+ useThemeTransition
36
+ };
37
+ //# sourceMappingURL=chunk-YIFB24WW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/theme-switcher/use-theme-transition.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback } from \"react\";\nimport { useReducedMotion, useTheme, type ThemeName } from \"@elabs-ai/components-tokens\";\n\n/** Whole-screen reveal effects for the animated theme switch (View Transitions API). */\nexport type ThemeTransitionEffect = \"polygon\" | \"circle\" | \"circle-blur\" | \"triangle\";\n\ntype ViewTransitionDocument = Document & {\n startViewTransition?: (callback: () => void | Promise<void>) => { finished: Promise<void> };\n};\n\n/**\n * Returns a theme setter that animates the whole-screen switch via the View\n * Transitions API (the chanhdai.com \"theme toggle effect\", adapted to brand-ui).\n *\n * - Direction-aware: sets `data-vt=\"to-dark|to-light\"` on `<html>` from the\n * target theme's `dark` flag, so the clip-path wipes the right way for ANY\n * theme (not just light/dark).\n * - `data-vt-effect` selects the reveal shape (default \"polygon\").\n * - Motion-aware: under `useReducedMotion()` (OS or in-app preference) — or when\n * the browser lacks `startViewTransition` — it falls back to an instant,\n * unanimated `setTheme`.\n *\n * The visual is pure CSS on `::view-transition-*` in `@elabs-ai/components-tokens` themes.css;\n * this hook only orchestrates it.\n */\nexport function useThemeTransition(effect: ThemeTransitionEffect = \"polygon\") {\n const { theme, setTheme, themeDefinitions } = useTheme();\n const reduced = useReducedMotion();\n\n return useCallback(\n (next: ThemeName) => {\n if (next === theme) return;\n if (typeof document === \"undefined\") {\n setTheme(next);\n return;\n }\n const doc = document as ViewTransitionDocument;\n if (reduced || typeof doc.startViewTransition !== \"function\") {\n setTheme(next);\n return;\n }\n const root = document.documentElement;\n // The direction of the reveal comes from the provider's REGISTRY entry\n // for the incoming theme (ADR 0029) — a consumer theme animates correctly\n // without registering here. `resolveThemeIsDark` is deliberately NOT used:\n // it reads the CURRENT computed `color-scheme`, and `next` has not been\n // applied yet, so it would report the OUTGOING theme's direction.\n root.dataset.vt = themeDefinitions.find((d) => d.value === next)?.dark\n ? \"to-dark\"\n : \"to-light\";\n root.dataset.vtEffect = effect;\n const transition = doc.startViewTransition(() => setTheme(next));\n transition.finished.finally(() => {\n delete root.dataset.vt;\n delete root.dataset.vtEffect;\n });\n },\n [theme, setTheme, reduced, effect, themeDefinitions],\n );\n}\n"],"mappings":";;;AAEA,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB,gBAAgC;AAwBpD,SAAS,mBAAmB,SAAgC,WAAW;AAC5E,QAAM,EAAE,OAAO,UAAU,iBAAiB,IAAI,SAAS;AACvD,QAAM,UAAU,iBAAiB;AAEjC,SAAO;AAAA,IACL,CAAC,SAAoB;AACnB,UAAI,SAAS,MAAO;AACpB,UAAI,OAAO,aAAa,aAAa;AACnC,iBAAS,IAAI;AACb;AAAA,MACF;AACA,YAAM,MAAM;AACZ,UAAI,WAAW,OAAO,IAAI,wBAAwB,YAAY;AAC5D,iBAAS,IAAI;AACb;AAAA,MACF;AACA,YAAM,OAAO,SAAS;AAMtB,WAAK,QAAQ,KAAK,iBAAiB,KAAK,CAAC,MAAM,EAAE,UAAU,IAAI,GAAG,OAC9D,YACA;AACJ,WAAK,QAAQ,WAAW;AACxB,YAAM,aAAa,IAAI,oBAAoB,MAAM,SAAS,IAAI,CAAC;AAC/D,iBAAW,SAAS,QAAQ,MAAM;AAChC,eAAO,KAAK,QAAQ;AACpB,eAAO,KAAK,QAAQ;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,IACA,CAAC,OAAO,UAAU,SAAS,QAAQ,gBAAgB;AAAA,EACrD;AACF;","names":[]}
@@ -0,0 +1,68 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-KBNWM27Q.js";
5
+
6
+ // src/components/collapsible-panel/use-collapsible-panel.ts
7
+ import { useCallback, useMemo, useState } from "react";
8
+ var DEFAULT_WIDTH_CLASSNAME = "w-(--collapsible-panel-width)";
9
+ var DEFAULT_SPACER_COLLAPSED_CLASSNAME = "group-data-[state=collapsed]:w-0";
10
+ var DEFAULT_CONTAINER_SLIDE_CLASSNAMES = {
11
+ left: "left-0 group-data-[state=collapsed]:left-[calc(var(--collapsible-panel-width)*-1)]",
12
+ right: "right-0 group-data-[state=collapsed]:right-[calc(var(--collapsible-panel-width)*-1)]"
13
+ };
14
+ function useCollapsiblePanel({
15
+ side = "left",
16
+ open: openProp,
17
+ defaultOpen = true,
18
+ onOpenChange,
19
+ widthClassName = DEFAULT_WIDTH_CLASSNAME,
20
+ spacerCollapsedClassName = DEFAULT_SPACER_COLLAPSED_CLASSNAME,
21
+ containerSlideClassNames = DEFAULT_CONTAINER_SLIDE_CLASSNAMES,
22
+ containerPosition = "viewport"
23
+ } = {}) {
24
+ const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);
25
+ const isControlled = openProp !== void 0;
26
+ const open = isControlled ? openProp : uncontrolledOpen;
27
+ const setOpen = useCallback(
28
+ (value) => {
29
+ const next = typeof value === "function" ? value(open) : value;
30
+ if (!isControlled) setUncontrolledOpen(next);
31
+ onOpenChange?.(next);
32
+ },
33
+ [isControlled, onOpenChange, open]
34
+ );
35
+ const toggle = useCallback(() => setOpen((o) => !o), [setOpen]);
36
+ const state = open ? "expanded" : "collapsed";
37
+ const spacerClassName = useMemo(
38
+ () => cn(
39
+ "relative",
40
+ widthClassName,
41
+ "bg-transparent transition-[width] duration-base ease-linear",
42
+ spacerCollapsedClassName
43
+ ),
44
+ [spacerCollapsedClassName, widthClassName]
45
+ );
46
+ const containerClassName = useMemo(
47
+ () => cn(
48
+ containerPosition === "inset" ? "absolute inset-y-0 z-10 hidden h-full" : "fixed inset-y-0 z-10 hidden h-svh",
49
+ widthClassName,
50
+ "transition-[left,right,width] duration-base ease-linear md:flex",
51
+ containerSlideClassNames[side]
52
+ ),
53
+ [containerPosition, containerSlideClassNames, side, widthClassName]
54
+ );
55
+ const attrs = useMemo(
56
+ () => ({ "data-state": state, "data-side": side }),
57
+ [side, state]
58
+ );
59
+ return useMemo(
60
+ () => ({ open, state, side, setOpen, toggle, attrs, spacerClassName, containerClassName }),
61
+ [open, state, side, setOpen, toggle, attrs, spacerClassName, containerClassName]
62
+ );
63
+ }
64
+
65
+ export {
66
+ useCollapsiblePanel
67
+ };
68
+ //# sourceMappingURL=chunk-YIVL6HWS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/collapsible-panel/use-collapsible-panel.ts"],"sourcesContent":["\"use client\";\n\n/**\n * useCollapsiblePanel — THE canonical collapsing-panel mechanism (#190,\n * research 09 §B.2/§E.1).\n *\n * Extracted from Sidebar's collapse (sidebar.tsx): an always-mounted,\n * two-element width tween — a gap SPACER that reserves/releases the inline\n * width (`transition-[width] duration-base ease-linear`, collapsing to `w-0`)\n * and a fixed CONTAINER that slides off-screen\n * (`transition-[left,right,width] duration-base ease-linear`). `duration-base`\n * is the gated `--t-base` motion token, so reduced-motion is honoured for free\n * (pure CSS — the shared base stays motion-free, research 09 decision 2).\n *\n * The hook owns:\n * - the state machine — controlled + uncontrolled `open` per\n * component-api.md (`isControlled = open !== undefined`, never flips\n * modes) with `setOpen`/`toggle`;\n * - the `data-state`/`data-side` attrs for the group element;\n * - the assembly of the two class fragments in the canonical order.\n *\n * Width / collapse-trigger / slide utilities are passed as LITERAL class\n * strings by the consumer (Tailwind's scanner must see each literal in\n * source — a template-interpolated class is never generated), with\n * state-keyed defaults for a generic panel. Sidebar passes its\n * `--sidebar-width` + `group-data-[collapsible=offcanvas]` literals and gets\n * back its exact original fragments (the byte-identical re-point).\n */\nimport { useCallback, useMemo, useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type CollapsiblePanelSide = \"left\" | \"right\";\nexport type CollapsiblePanelState = \"expanded\" | \"collapsed\";\n/**\n * Where the CONTAINER fragment positions itself. `\"viewport\"` (default) pins\n * to the viewport edge (`fixed`) — Sidebar's original mechanism, byte-\n * identical to pre-#432 output. `\"inset\"` pins to the panel's OWN nearest\n * `relative` ancestor instead (`absolute`) — for a panel nested inside\n * another `fixed`-to-viewport element (e.g. a `SideDock` inside a Sidebar's\n * `SidebarInset`), so the two never race for the same viewport edge (#432).\n * The consumer must give that ancestor `relative` itself; `SideDock` does\n * this via its own `containerPosition` prop.\n */\nexport type CollapsiblePanelContainerPosition = \"viewport\" | \"inset\";\n\n/**\n * State-keyed defaults for a generic panel: the consumer wraps the panel in a\n * `group` element carrying `attrs` and sets `--collapsible-panel-width` on it.\n */\nconst DEFAULT_WIDTH_CLASSNAME = \"w-(--collapsible-panel-width)\";\nconst DEFAULT_SPACER_COLLAPSED_CLASSNAME = \"group-data-[state=collapsed]:w-0\";\nconst DEFAULT_CONTAINER_SLIDE_CLASSNAMES: Record<CollapsiblePanelSide, string> = {\n left: \"left-0 group-data-[state=collapsed]:left-[calc(var(--collapsible-panel-width)*-1)]\",\n right: \"right-0 group-data-[state=collapsed]:right-[calc(var(--collapsible-panel-width)*-1)]\",\n};\n\nexport interface UseCollapsiblePanelOptions {\n /** Which edge the panel lives on. Default `\"left\"`. */\n side?: CollapsiblePanelSide;\n /** Controlled open state (`isControlled = open !== undefined`). */\n open?: boolean;\n /** Uncontrolled initial open state. Default `true`. */\n defaultOpen?: boolean;\n /** Called with the next open state on `setOpen`/`toggle`. */\n onOpenChange?: (open: boolean) => void;\n /**\n * Literal expanded-width utility (e.g. `\"w-(--sidebar-width)\"`). Must be a\n * literal in the consumer's source so Tailwind generates it.\n */\n widthClassName?: string;\n /**\n * Literal collapsed-state utility for the gap spacer (e.g.\n * `\"group-data-[collapsible=offcanvas]:w-0\"`).\n */\n spacerCollapsedClassName?: string;\n /**\n * Literal off-screen slide utilities for the fixed container, keyed by side\n * (e.g. `left: \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"`).\n */\n containerSlideClassNames?: Record<CollapsiblePanelSide, string>;\n /**\n * `\"viewport\"` (default, byte-identical to pre-#432) or `\"inset\"` — see\n * `CollapsiblePanelContainerPosition`.\n */\n containerPosition?: CollapsiblePanelContainerPosition;\n}\n\n/** Data attributes for the panel's `group` element. */\nexport interface CollapsiblePanelAttrs {\n \"data-state\": CollapsiblePanelState;\n \"data-side\": CollapsiblePanelSide;\n}\n\nexport interface UseCollapsiblePanelReturn {\n /** Resolved open state (controlled prop wins). */\n open: boolean;\n /** `\"expanded\"` when open, `\"collapsed\"` when closed. */\n state: CollapsiblePanelState;\n side: CollapsiblePanelSide;\n /** Set the open state (accepts a value or an updater fn). */\n setOpen: (open: boolean | ((open: boolean) => boolean)) => void;\n toggle: () => void;\n /** `data-state`/`data-side` for the group element wrapping both fragments. */\n attrs: CollapsiblePanelAttrs;\n /** The gap-spacer fragment: reserves/releases the inline width. */\n spacerClassName: string;\n /** The fixed-container fragment: slides the panel off-screen. */\n containerClassName: string;\n}\n\nexport function useCollapsiblePanel({\n side = \"left\",\n open: openProp,\n defaultOpen = true,\n onOpenChange,\n widthClassName = DEFAULT_WIDTH_CLASSNAME,\n spacerCollapsedClassName = DEFAULT_SPACER_COLLAPSED_CLASSNAME,\n containerSlideClassNames = DEFAULT_CONTAINER_SLIDE_CLASSNAMES,\n containerPosition = \"viewport\",\n}: UseCollapsiblePanelOptions = {}): UseCollapsiblePanelReturn {\n // Controlled/uncontrolled per component-api.md: controlled iff the `open`\n // prop is provided; the mode never flips mid-life.\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isControlled = openProp !== undefined;\n const open = isControlled ? openProp : uncontrolledOpen;\n\n const setOpen = useCallback(\n (value: boolean | ((open: boolean) => boolean)) => {\n const next = typeof value === \"function\" ? value(open) : value;\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange, open],\n );\n\n const toggle = useCallback(() => setOpen((o) => !o), [setOpen]);\n\n const state: CollapsiblePanelState = open ? \"expanded\" : \"collapsed\";\n\n // The two class fragments — the Sidebar collapse mechanism verbatim\n // (research 09 §A.1): assembly order is part of the contract (it is what\n // keeps Sidebar's emitted className strings byte-identical).\n const spacerClassName = useMemo(\n () =>\n cn(\n \"relative\",\n widthClassName,\n \"bg-transparent transition-[width] duration-base ease-linear\",\n spacerCollapsedClassName,\n ),\n [spacerCollapsedClassName, widthClassName],\n );\n const containerClassName = useMemo(\n () =>\n cn(\n containerPosition === \"inset\"\n ? \"absolute inset-y-0 z-10 hidden h-full\"\n : \"fixed inset-y-0 z-10 hidden h-svh\",\n widthClassName,\n \"transition-[left,right,width] duration-base ease-linear md:flex\",\n containerSlideClassNames[side],\n ),\n [containerPosition, containerSlideClassNames, side, widthClassName],\n );\n\n const attrs = useMemo<CollapsiblePanelAttrs>(\n () => ({ \"data-state\": state, \"data-side\": side }),\n [side, state],\n );\n\n return useMemo(\n () => ({ open, state, side, setOpen, toggle, attrs, spacerClassName, containerClassName }),\n [open, state, side, setOpen, toggle, attrs, spacerClassName, containerClassName],\n );\n}\n"],"mappings":";;;;;;AA4BA,SAAS,aAAa,SAAS,gBAAgB;AAqB/C,IAAM,0BAA0B;AAChC,IAAM,qCAAqC;AAC3C,IAAM,qCAA2E;AAAA,EAC/E,MAAM;AAAA,EACN,OAAO;AACT;AAwDO,SAAS,oBAAoB;AAAA,EAClC,OAAO;AAAA,EACP,MAAM;AAAA,EACN,cAAc;AAAA,EACd;AAAA,EACA,iBAAiB;AAAA,EACjB,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,oBAAoB;AACtB,IAAgC,CAAC,GAA8B;AAG7D,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAS,WAAW;AACpE,QAAM,eAAe,aAAa;AAClC,QAAM,OAAO,eAAe,WAAW;AAEvC,QAAM,UAAU;AAAA,IACd,CAAC,UAAkD;AACjD,YAAM,OAAO,OAAO,UAAU,aAAa,MAAM,IAAI,IAAI;AACzD,UAAI,CAAC,aAAc,qBAAoB,IAAI;AAC3C,qBAAe,IAAI;AAAA,IACrB;AAAA,IACA,CAAC,cAAc,cAAc,IAAI;AAAA,EACnC;AAEA,QAAM,SAAS,YAAY,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AAE9D,QAAM,QAA+B,OAAO,aAAa;AAKzD,QAAM,kBAAkB;AAAA,IACtB,MACE;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACF,CAAC,0BAA0B,cAAc;AAAA,EAC3C;AACA,QAAM,qBAAqB;AAAA,IACzB,MACE;AAAA,MACE,sBAAsB,UAClB,0CACA;AAAA,MACJ;AAAA,MACA;AAAA,MACA,yBAAyB,IAAI;AAAA,IAC/B;AAAA,IACF,CAAC,mBAAmB,0BAA0B,MAAM,cAAc;AAAA,EACpE;AAEA,QAAM,QAAQ;AAAA,IACZ,OAAO,EAAE,cAAc,OAAO,aAAa,KAAK;AAAA,IAChD,CAAC,MAAM,KAAK;AAAA,EACd;AAEA,SAAO;AAAA,IACL,OAAO,EAAE,MAAM,OAAO,MAAM,SAAS,QAAQ,OAAO,iBAAiB,mBAAmB;AAAA,IACxF,CAAC,MAAM,OAAO,MAAM,SAAS,QAAQ,OAAO,iBAAiB,kBAAkB;AAAA,EACjF;AACF;","names":[]}
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ //# sourceMappingURL=chunk-YK4H7VWM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,100 @@
1
+ "use client";
2
+ import {
3
+ Skeleton
4
+ } from "./chunk-JNWXHPZG.js";
5
+ import {
6
+ cn
7
+ } from "./chunk-KBNWM27Q.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-YL7VBHPZ.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,2 @@
1
+ "use client";
2
+ //# sourceMappingURL=chunk-YMFEBGTU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}