@particle-academy/react-fancy 5.11.0 → 5.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (949) hide show
  1. package/dist/AudioViewer.types-VWhRx6XG.d.cts +22 -0
  2. package/dist/AudioViewer.types-VWhRx6XG.d.ts +22 -0
  3. package/dist/Card-BZ5F6-wd.d.cts +50 -0
  4. package/dist/Card-BZ5F6-wd.d.ts +50 -0
  5. package/dist/Carousel.context-Ba3gKZHQ.d.cts +61 -0
  6. package/dist/Carousel.context-Ba3gKZHQ.d.ts +61 -0
  7. package/dist/FieldMode.context-Bv_wuS8V.d.ts +74 -0
  8. package/dist/FieldMode.context-C28RH8GR.d.cts +74 -0
  9. package/dist/ImageViewer.types-BaqlDeuo.d.cts +55 -0
  10. package/dist/ImageViewer.types-BaqlDeuo.d.ts +55 -0
  11. package/dist/PdfViewer.types-_u6vboSl.d.cts +14 -0
  12. package/dist/PdfViewer.types-_u6vboSl.d.ts +14 -0
  13. package/dist/Timeline-7zHhIk3P.d.cts +73 -0
  14. package/dist/Timeline-Cvrd7N7-.d.ts +73 -0
  15. package/dist/VideoViewer.types-CTwS6PcM.d.cts +26 -0
  16. package/dist/VideoViewer.types-CTwS6PcM.d.ts +26 -0
  17. package/dist/accordion-panel.cjs +34 -0
  18. package/dist/accordion-panel.cjs.map +1 -0
  19. package/dist/accordion-panel.d.cts +186 -0
  20. package/dist/accordion-panel.d.ts +186 -0
  21. package/dist/accordion-panel.js +5 -0
  22. package/dist/accordion-panel.js.map +1 -0
  23. package/dist/accordion.cjs +17 -0
  24. package/dist/accordion.cjs.map +1 -0
  25. package/dist/accordion.d.cts +53 -0
  26. package/dist/accordion.d.ts +53 -0
  27. package/dist/accordion.js +4 -0
  28. package/dist/accordion.js.map +1 -0
  29. package/dist/audio-viewer.cjs +13 -0
  30. package/dist/audio-viewer.cjs.map +1 -0
  31. package/dist/audio-viewer.d.cts +14 -0
  32. package/dist/audio-viewer.d.ts +14 -0
  33. package/dist/audio-viewer.js +4 -0
  34. package/dist/audio-viewer.js.map +1 -0
  35. package/dist/autocomplete.cjs +20 -0
  36. package/dist/autocomplete.cjs.map +1 -0
  37. package/dist/autocomplete.d.cts +28 -0
  38. package/dist/autocomplete.d.ts +28 -0
  39. package/dist/autocomplete.js +11 -0
  40. package/dist/autocomplete.js.map +1 -0
  41. package/dist/avatar.cjs +13 -0
  42. package/dist/avatar.cjs.map +1 -0
  43. package/dist/avatar.d.cts +26 -0
  44. package/dist/avatar.d.ts +26 -0
  45. package/dist/avatar.js +4 -0
  46. package/dist/avatar.js.map +1 -0
  47. package/dist/badge.cjs +13 -0
  48. package/dist/badge.cjs.map +1 -0
  49. package/dist/badge.d.cts +18 -0
  50. package/dist/badge.d.ts +18 -0
  51. package/dist/badge.js +4 -0
  52. package/dist/badge.js.map +1 -0
  53. package/dist/brand.cjs +17 -0
  54. package/dist/brand.cjs.map +1 -0
  55. package/dist/brand.d.cts +43 -0
  56. package/dist/brand.d.ts +43 -0
  57. package/dist/brand.js +4 -0
  58. package/dist/brand.js.map +1 -0
  59. package/dist/breadcrumbs.cjs +15 -0
  60. package/dist/breadcrumbs.cjs.map +1 -0
  61. package/dist/breadcrumbs.d.cts +36 -0
  62. package/dist/breadcrumbs.d.ts +36 -0
  63. package/dist/breadcrumbs.js +6 -0
  64. package/dist/breadcrumbs.js.map +1 -0
  65. package/dist/button.cjs +20 -0
  66. package/dist/button.cjs.map +1 -0
  67. package/dist/button.d.cts +84 -0
  68. package/dist/button.d.ts +84 -0
  69. package/dist/button.js +7 -0
  70. package/dist/button.js.map +1 -0
  71. package/dist/calendar.cjs +13 -0
  72. package/dist/calendar.cjs.map +1 -0
  73. package/dist/calendar.d.cts +20 -0
  74. package/dist/calendar.d.ts +20 -0
  75. package/dist/calendar.js +4 -0
  76. package/dist/calendar.js.map +1 -0
  77. package/dist/callout.cjs +13 -0
  78. package/dist/callout.cjs.map +1 -0
  79. package/dist/callout.d.cts +16 -0
  80. package/dist/callout.d.ts +16 -0
  81. package/dist/callout.js +4 -0
  82. package/dist/callout.js.map +1 -0
  83. package/dist/card.cjs +29 -0
  84. package/dist/card.cjs.map +1 -0
  85. package/dist/card.d.cts +29 -0
  86. package/dist/card.d.ts +29 -0
  87. package/dist/card.js +4 -0
  88. package/dist/card.js.map +1 -0
  89. package/dist/carousel.cjs +34 -0
  90. package/dist/carousel.cjs.map +1 -0
  91. package/dist/carousel.d.cts +13 -0
  92. package/dist/carousel.d.ts +13 -0
  93. package/dist/carousel.js +5 -0
  94. package/dist/carousel.js.map +1 -0
  95. package/dist/chart.cjs +13 -0
  96. package/dist/chart.cjs.map +1 -0
  97. package/dist/chart.d.cts +140 -0
  98. package/dist/chart.d.ts +140 -0
  99. package/dist/chart.js +4 -0
  100. package/dist/chart.js.map +1 -0
  101. package/dist/chat-drawer.cjs +15 -0
  102. package/dist/chat-drawer.cjs.map +1 -0
  103. package/dist/chat-drawer.d.cts +63 -0
  104. package/dist/chat-drawer.d.ts +63 -0
  105. package/dist/chat-drawer.js +6 -0
  106. package/dist/chat-drawer.js.map +1 -0
  107. package/dist/checkbox-group.cjs +19 -0
  108. package/dist/checkbox-group.cjs.map +1 -0
  109. package/dist/checkbox-group.d.cts +18 -0
  110. package/dist/checkbox-group.d.ts +18 -0
  111. package/dist/checkbox-group.js +10 -0
  112. package/dist/checkbox-group.js.map +1 -0
  113. package/dist/checkbox.cjs +17 -0
  114. package/dist/checkbox.cjs.map +1 -0
  115. package/dist/checkbox.d.cts +16 -0
  116. package/dist/checkbox.d.ts +16 -0
  117. package/dist/checkbox.js +8 -0
  118. package/dist/checkbox.js.map +1 -0
  119. package/dist/chunk-2CNSZCVE.cjs +119 -0
  120. package/dist/chunk-2CNSZCVE.cjs.map +1 -0
  121. package/dist/chunk-2CYRAKWI.cjs +241 -0
  122. package/dist/chunk-2CYRAKWI.cjs.map +1 -0
  123. package/dist/chunk-2G3L4BLU.cjs +257 -0
  124. package/dist/chunk-2G3L4BLU.cjs.map +1 -0
  125. package/dist/chunk-2PELJ4VA.cjs +335 -0
  126. package/dist/chunk-2PELJ4VA.cjs.map +1 -0
  127. package/dist/chunk-2S7WRR5P.cjs +156 -0
  128. package/dist/chunk-2S7WRR5P.cjs.map +1 -0
  129. package/dist/chunk-32AJIHBZ.js +201 -0
  130. package/dist/chunk-32AJIHBZ.js.map +1 -0
  131. package/dist/chunk-3DJGPNUI.js +39 -0
  132. package/dist/chunk-3DJGPNUI.js.map +1 -0
  133. package/dist/chunk-3ETOEEVN.cjs +62 -0
  134. package/dist/chunk-3ETOEEVN.cjs.map +1 -0
  135. package/dist/chunk-3GRC5J2L.cjs +54 -0
  136. package/dist/chunk-3GRC5J2L.cjs.map +1 -0
  137. package/dist/chunk-3SQ34IQC.cjs +124 -0
  138. package/dist/chunk-3SQ34IQC.cjs.map +1 -0
  139. package/dist/chunk-3WGRVDQR.cjs +39 -0
  140. package/dist/chunk-3WGRVDQR.cjs.map +1 -0
  141. package/dist/chunk-3Z6ALUWP.cjs +13 -0
  142. package/dist/chunk-3Z6ALUWP.cjs.map +1 -0
  143. package/dist/chunk-45BBNJQD.js +2019 -0
  144. package/dist/chunk-45BBNJQD.js.map +1 -0
  145. package/dist/chunk-47TFRODY.cjs +107 -0
  146. package/dist/chunk-47TFRODY.cjs.map +1 -0
  147. package/dist/chunk-4DQ6HX27.cjs +187 -0
  148. package/dist/chunk-4DQ6HX27.cjs.map +1 -0
  149. package/dist/chunk-4UA45GB4.js +129 -0
  150. package/dist/chunk-4UA45GB4.js.map +1 -0
  151. package/dist/chunk-57FQGQJK.cjs +26 -0
  152. package/dist/chunk-57FQGQJK.cjs.map +1 -0
  153. package/dist/chunk-5FV6GMFP.cjs +4 -0
  154. package/dist/chunk-5FV6GMFP.cjs.map +1 -0
  155. package/dist/chunk-5HOQ2PHR.cjs +287 -0
  156. package/dist/chunk-5HOQ2PHR.cjs.map +1 -0
  157. package/dist/chunk-5I4PR2KV.cjs +131 -0
  158. package/dist/chunk-5I4PR2KV.cjs.map +1 -0
  159. package/dist/chunk-5OC6DUYT.js +139 -0
  160. package/dist/chunk-5OC6DUYT.js.map +1 -0
  161. package/dist/chunk-5QL7XT3N.js +80 -0
  162. package/dist/chunk-5QL7XT3N.js.map +1 -0
  163. package/dist/chunk-5U2DZ7AV.js +49 -0
  164. package/dist/chunk-5U2DZ7AV.js.map +1 -0
  165. package/dist/chunk-5UOQVGZC.cjs +930 -0
  166. package/dist/chunk-5UOQVGZC.cjs.map +1 -0
  167. package/dist/chunk-6BW5BQMN.cjs +57 -0
  168. package/dist/chunk-6BW5BQMN.cjs.map +1 -0
  169. package/dist/chunk-6FBFE66M.cjs +292 -0
  170. package/dist/chunk-6FBFE66M.cjs.map +1 -0
  171. package/dist/chunk-6FQGMVF2.js +25 -0
  172. package/dist/chunk-6FQGMVF2.js.map +1 -0
  173. package/dist/chunk-6GC5DMOK.cjs +141 -0
  174. package/dist/chunk-6GC5DMOK.cjs.map +1 -0
  175. package/dist/chunk-6H6OYLMJ.js +105 -0
  176. package/dist/chunk-6H6OYLMJ.js.map +1 -0
  177. package/dist/chunk-6L6LI2RL.cjs +37 -0
  178. package/dist/chunk-6L6LI2RL.cjs.map +1 -0
  179. package/dist/chunk-6MDZQIMZ.cjs +18 -0
  180. package/dist/chunk-6MDZQIMZ.cjs.map +1 -0
  181. package/dist/chunk-6OSHAP6L.cjs +110 -0
  182. package/dist/chunk-6OSHAP6L.cjs.map +1 -0
  183. package/dist/chunk-7AFEKDUS.js +202 -0
  184. package/dist/chunk-7AFEKDUS.js.map +1 -0
  185. package/dist/chunk-7C7VF4WY.cjs +155 -0
  186. package/dist/chunk-7C7VF4WY.cjs.map +1 -0
  187. package/dist/chunk-7NLKXBZ2.cjs +88 -0
  188. package/dist/chunk-7NLKXBZ2.cjs.map +1 -0
  189. package/dist/chunk-7XDKIZQE.js +382 -0
  190. package/dist/chunk-7XDKIZQE.js.map +1 -0
  191. package/dist/chunk-A22T6DKO.cjs +283 -0
  192. package/dist/chunk-A22T6DKO.cjs.map +1 -0
  193. package/dist/chunk-A3CNYKT3.js +197 -0
  194. package/dist/chunk-A3CNYKT3.js.map +1 -0
  195. package/dist/chunk-AC7M7JDO.cjs +199 -0
  196. package/dist/chunk-AC7M7JDO.cjs.map +1 -0
  197. package/dist/chunk-AGDW5ENV.js +37 -0
  198. package/dist/chunk-AGDW5ENV.js.map +1 -0
  199. package/dist/chunk-AIA5UNQ5.cjs +4 -0
  200. package/dist/chunk-AIA5UNQ5.cjs.map +1 -0
  201. package/dist/chunk-AKIUDPJU.js +119 -0
  202. package/dist/chunk-AKIUDPJU.js.map +1 -0
  203. package/dist/chunk-ANEX75DF.cjs +39 -0
  204. package/dist/chunk-ANEX75DF.cjs.map +1 -0
  205. package/dist/chunk-AOOBRPTE.cjs +142 -0
  206. package/dist/chunk-AOOBRPTE.cjs.map +1 -0
  207. package/dist/chunk-ARSQY4P7.cjs +101 -0
  208. package/dist/chunk-ARSQY4P7.cjs.map +1 -0
  209. package/dist/chunk-ATFXU6R6.js +122 -0
  210. package/dist/chunk-ATFXU6R6.js.map +1 -0
  211. package/dist/chunk-AUTW5O4W.js +3 -0
  212. package/dist/chunk-AUTW5O4W.js.map +1 -0
  213. package/dist/chunk-AVR5P4GA.cjs +832 -0
  214. package/dist/chunk-AVR5P4GA.cjs.map +1 -0
  215. package/dist/chunk-B3HVWXIQ.cjs +112 -0
  216. package/dist/chunk-B3HVWXIQ.cjs.map +1 -0
  217. package/dist/chunk-BEGDL2CD.js +81 -0
  218. package/dist/chunk-BEGDL2CD.js.map +1 -0
  219. package/dist/chunk-BFKCVSNK.cjs +80 -0
  220. package/dist/chunk-BFKCVSNK.cjs.map +1 -0
  221. package/dist/chunk-BPBI3WWQ.cjs +364 -0
  222. package/dist/chunk-BPBI3WWQ.cjs.map +1 -0
  223. package/dist/chunk-BYIY6BH2.js +927 -0
  224. package/dist/chunk-BYIY6BH2.js.map +1 -0
  225. package/dist/chunk-C4Z4S3CX.js +164 -0
  226. package/dist/chunk-C4Z4S3CX.js.map +1 -0
  227. package/dist/chunk-C5AZNBVB.js +153 -0
  228. package/dist/chunk-C5AZNBVB.js.map +1 -0
  229. package/dist/chunk-CFBK5RIZ.js +35 -0
  230. package/dist/chunk-CFBK5RIZ.js.map +1 -0
  231. package/dist/chunk-CHADHN6M.js +37 -0
  232. package/dist/chunk-CHADHN6M.js.map +1 -0
  233. package/dist/chunk-CPY7NHXM.js +88 -0
  234. package/dist/chunk-CPY7NHXM.js.map +1 -0
  235. package/dist/chunk-CS4GQXYY.js +131 -0
  236. package/dist/chunk-CS4GQXYY.js.map +1 -0
  237. package/dist/chunk-CTMJYV3O.js +99 -0
  238. package/dist/chunk-CTMJYV3O.js.map +1 -0
  239. package/dist/chunk-CZZH45GQ.cjs +122 -0
  240. package/dist/chunk-CZZH45GQ.cjs.map +1 -0
  241. package/dist/chunk-D4WM23Y4.js +109 -0
  242. package/dist/chunk-D4WM23Y4.js.map +1 -0
  243. package/dist/chunk-D7NAXQ2N.js +86 -0
  244. package/dist/chunk-D7NAXQ2N.js.map +1 -0
  245. package/dist/chunk-DJ3YM72H.cjs +353 -0
  246. package/dist/chunk-DJ3YM72H.cjs.map +1 -0
  247. package/dist/chunk-DOSSIU6S.cjs +162 -0
  248. package/dist/chunk-DOSSIU6S.cjs.map +1 -0
  249. package/dist/chunk-DSUHZO6T.js +11 -0
  250. package/dist/chunk-DSUHZO6T.js.map +1 -0
  251. package/dist/chunk-DTPGJNOI.js +204 -0
  252. package/dist/chunk-DTPGJNOI.js.map +1 -0
  253. package/dist/chunk-DV4IMAQW.js +100 -0
  254. package/dist/chunk-DV4IMAQW.js.map +1 -0
  255. package/dist/chunk-DWRMC2FN.cjs +95 -0
  256. package/dist/chunk-DWRMC2FN.cjs.map +1 -0
  257. package/dist/chunk-DZD2RJVD.js +47 -0
  258. package/dist/chunk-DZD2RJVD.js.map +1 -0
  259. package/dist/chunk-E4LFD44D.js +69 -0
  260. package/dist/chunk-E4LFD44D.js.map +1 -0
  261. package/dist/chunk-E7PHL3TD.cjs +144 -0
  262. package/dist/chunk-E7PHL3TD.cjs.map +1 -0
  263. package/dist/chunk-ECZ66DKF.js +522 -0
  264. package/dist/chunk-ECZ66DKF.js.map +1 -0
  265. package/dist/chunk-EERAEPQO.cjs +177 -0
  266. package/dist/chunk-EERAEPQO.cjs.map +1 -0
  267. package/dist/chunk-EIBW5YLS.js +52 -0
  268. package/dist/chunk-EIBW5YLS.js.map +1 -0
  269. package/dist/chunk-ESKVRRVA.js +56 -0
  270. package/dist/chunk-ESKVRRVA.js.map +1 -0
  271. package/dist/chunk-EVXDG2XN.js +108 -0
  272. package/dist/chunk-EVXDG2XN.js.map +1 -0
  273. package/dist/chunk-F6NEPU67.cjs +218 -0
  274. package/dist/chunk-F6NEPU67.cjs.map +1 -0
  275. package/dist/chunk-F6SCZCJE.js +176 -0
  276. package/dist/chunk-F6SCZCJE.js.map +1 -0
  277. package/dist/chunk-FA3D4GFC.cjs +323 -0
  278. package/dist/chunk-FA3D4GFC.cjs.map +1 -0
  279. package/dist/chunk-FCAV5IFW.js +63 -0
  280. package/dist/chunk-FCAV5IFW.js.map +1 -0
  281. package/dist/chunk-FVV76TRF.js +101 -0
  282. package/dist/chunk-FVV76TRF.js.map +1 -0
  283. package/dist/chunk-G2W7B3OG.js +420 -0
  284. package/dist/chunk-G2W7B3OG.js.map +1 -0
  285. package/dist/chunk-G34OBTU3.cjs +27 -0
  286. package/dist/chunk-G34OBTU3.cjs.map +1 -0
  287. package/dist/chunk-GFYSELJF.js +35 -0
  288. package/dist/chunk-GFYSELJF.js.map +1 -0
  289. package/dist/chunk-GIDW3SUE.cjs +59 -0
  290. package/dist/chunk-GIDW3SUE.cjs.map +1 -0
  291. package/dist/chunk-GKGL7F36.js +290 -0
  292. package/dist/chunk-GKGL7F36.js.map +1 -0
  293. package/dist/chunk-GKPCXPCD.js +262 -0
  294. package/dist/chunk-GKPCXPCD.js.map +1 -0
  295. package/dist/chunk-GZIUE4DE.js +117 -0
  296. package/dist/chunk-GZIUE4DE.js.map +1 -0
  297. package/dist/chunk-HAOYXGGJ.js +104 -0
  298. package/dist/chunk-HAOYXGGJ.js.map +1 -0
  299. package/dist/chunk-HBFVOHQC.cjs +102 -0
  300. package/dist/chunk-HBFVOHQC.cjs.map +1 -0
  301. package/dist/chunk-HG6XUJOT.js +328 -0
  302. package/dist/chunk-HG6XUJOT.js.map +1 -0
  303. package/dist/chunk-I6L7OP7G.cjs +203 -0
  304. package/dist/chunk-I6L7OP7G.cjs.map +1 -0
  305. package/dist/chunk-IE4CM2SN.js +122 -0
  306. package/dist/chunk-IE4CM2SN.js.map +1 -0
  307. package/dist/chunk-IF25CE6S.cjs +202 -0
  308. package/dist/chunk-IF25CE6S.cjs.map +1 -0
  309. package/dist/chunk-IF3T3ZCB.cjs +273 -0
  310. package/dist/chunk-IF3T3ZCB.cjs.map +1 -0
  311. package/dist/chunk-IF5LOWUL.js +273 -0
  312. package/dist/chunk-IF5LOWUL.js.map +1 -0
  313. package/dist/chunk-IGU5YXRV.cjs +138 -0
  314. package/dist/chunk-IGU5YXRV.cjs.map +1 -0
  315. package/dist/chunk-IGYIMS6J.js +174 -0
  316. package/dist/chunk-IGYIMS6J.js.map +1 -0
  317. package/dist/chunk-IJ4I55QQ.cjs +38 -0
  318. package/dist/chunk-IJ4I55QQ.cjs.map +1 -0
  319. package/dist/chunk-IXHZVFHX.cjs +44 -0
  320. package/dist/chunk-IXHZVFHX.cjs.map +1 -0
  321. package/dist/chunk-J2DI6RMR.cjs +115 -0
  322. package/dist/chunk-J2DI6RMR.cjs.map +1 -0
  323. package/dist/chunk-J3XS4HHX.js +230 -0
  324. package/dist/chunk-J3XS4HHX.js.map +1 -0
  325. package/dist/chunk-JCOBDDHF.js +118 -0
  326. package/dist/chunk-JCOBDDHF.js.map +1 -0
  327. package/dist/chunk-JHEM6IGT.cjs +49 -0
  328. package/dist/chunk-JHEM6IGT.cjs.map +1 -0
  329. package/dist/chunk-JIYP73OJ.js +169 -0
  330. package/dist/chunk-JIYP73OJ.js.map +1 -0
  331. package/dist/chunk-JKO2Y5SH.js +60 -0
  332. package/dist/chunk-JKO2Y5SH.js.map +1 -0
  333. package/dist/chunk-JPTWZ3RF.cjs +280 -0
  334. package/dist/chunk-JPTWZ3RF.cjs.map +1 -0
  335. package/dist/chunk-JXE5XID6.js +19 -0
  336. package/dist/chunk-JXE5XID6.js.map +1 -0
  337. package/dist/chunk-JXIBUIEY.cjs +144 -0
  338. package/dist/chunk-JXIBUIEY.cjs.map +1 -0
  339. package/dist/chunk-JYKZKSZJ.js +122 -0
  340. package/dist/chunk-JYKZKSZJ.js.map +1 -0
  341. package/dist/chunk-K2DZEYBF.js +321 -0
  342. package/dist/chunk-K2DZEYBF.js.map +1 -0
  343. package/dist/chunk-K7JGOQJG.js +55 -0
  344. package/dist/chunk-K7JGOQJG.js.map +1 -0
  345. package/dist/chunk-KC6QBKKB.cjs +173 -0
  346. package/dist/chunk-KC6QBKKB.cjs.map +1 -0
  347. package/dist/chunk-KE7KXY5C.cjs +233 -0
  348. package/dist/chunk-KE7KXY5C.cjs.map +1 -0
  349. package/dist/chunk-KICZTIZL.cjs +133 -0
  350. package/dist/chunk-KICZTIZL.cjs.map +1 -0
  351. package/dist/chunk-KJ22KE56.cjs +19 -0
  352. package/dist/chunk-KJ22KE56.cjs.map +1 -0
  353. package/dist/chunk-KUKYJZIU.cjs +179 -0
  354. package/dist/chunk-KUKYJZIU.cjs.map +1 -0
  355. package/dist/chunk-L3V3BYVS.cjs +15 -0
  356. package/dist/chunk-L3V3BYVS.cjs.map +1 -0
  357. package/dist/chunk-LNWO23PU.cjs +131 -0
  358. package/dist/chunk-LNWO23PU.cjs.map +1 -0
  359. package/dist/chunk-LPQVXTKV.js +36 -0
  360. package/dist/chunk-LPQVXTKV.js.map +1 -0
  361. package/dist/chunk-LZL2KD4P.cjs +207 -0
  362. package/dist/chunk-LZL2KD4P.cjs.map +1 -0
  363. package/dist/chunk-M24NCWBU.js +239 -0
  364. package/dist/chunk-M24NCWBU.js.map +1 -0
  365. package/dist/chunk-M7EEQPE7.js +137 -0
  366. package/dist/chunk-M7EEQPE7.js.map +1 -0
  367. package/dist/chunk-MDUSUJWY.cjs +31 -0
  368. package/dist/chunk-MDUSUJWY.cjs.map +1 -0
  369. package/dist/chunk-MGZE2QEM.cjs +51 -0
  370. package/dist/chunk-MGZE2QEM.cjs.map +1 -0
  371. package/dist/chunk-MILTPAF6.js +255 -0
  372. package/dist/chunk-MILTPAF6.js.map +1 -0
  373. package/dist/chunk-MQ6VGG62.js +113 -0
  374. package/dist/chunk-MQ6VGG62.js.map +1 -0
  375. package/dist/chunk-MYF2PDTU.js +137 -0
  376. package/dist/chunk-MYF2PDTU.js.map +1 -0
  377. package/dist/chunk-MZIU27UY.js +133 -0
  378. package/dist/chunk-MZIU27UY.js.map +1 -0
  379. package/dist/chunk-N7WQ53US.js +211 -0
  380. package/dist/chunk-N7WQ53US.js.map +1 -0
  381. package/dist/chunk-NBZC6LOB.cjs +43 -0
  382. package/dist/chunk-NBZC6LOB.cjs.map +1 -0
  383. package/dist/chunk-NH7NRRII.js +167 -0
  384. package/dist/chunk-NH7NRRII.js.map +1 -0
  385. package/dist/chunk-NLJGNPNN.js +284 -0
  386. package/dist/chunk-NLJGNPNN.js.map +1 -0
  387. package/dist/chunk-NNSNANNY.cjs +224 -0
  388. package/dist/chunk-NNSNANNY.cjs.map +1 -0
  389. package/dist/chunk-NPKE2IX6.js +154 -0
  390. package/dist/chunk-NPKE2IX6.js.map +1 -0
  391. package/dist/chunk-NRXK42LO.js +12 -0
  392. package/dist/chunk-NRXK42LO.js.map +1 -0
  393. package/dist/chunk-O432BDEO.js +160 -0
  394. package/dist/chunk-O432BDEO.js.map +1 -0
  395. package/dist/chunk-O4MKOSU2.js +29 -0
  396. package/dist/chunk-O4MKOSU2.js.map +1 -0
  397. package/dist/chunk-O5IO7TCO.cjs +4 -0
  398. package/dist/chunk-O5IO7TCO.cjs.map +1 -0
  399. package/dist/chunk-OL53XYHF.js +17 -0
  400. package/dist/chunk-OL53XYHF.js.map +1 -0
  401. package/dist/chunk-ORCXPDDG.js +3 -0
  402. package/dist/chunk-ORCXPDDG.js.map +1 -0
  403. package/dist/chunk-ORFHF6PT.cjs +172 -0
  404. package/dist/chunk-ORFHF6PT.cjs.map +1 -0
  405. package/dist/chunk-ORPYY2MO.cjs +124 -0
  406. package/dist/chunk-ORPYY2MO.cjs.map +1 -0
  407. package/dist/chunk-OUOEQZHY.cjs +27 -0
  408. package/dist/chunk-OUOEQZHY.cjs.map +1 -0
  409. package/dist/chunk-PBXYU4EV.cjs +121 -0
  410. package/dist/chunk-PBXYU4EV.cjs.map +1 -0
  411. package/dist/chunk-PH3WGR5P.cjs +82 -0
  412. package/dist/chunk-PH3WGR5P.cjs.map +1 -0
  413. package/dist/chunk-POZZY3D5.cjs +135 -0
  414. package/dist/chunk-POZZY3D5.cjs.map +1 -0
  415. package/dist/chunk-PPLR2DNC.cjs +41 -0
  416. package/dist/chunk-PPLR2DNC.cjs.map +1 -0
  417. package/dist/chunk-PQWQ5K6J.js +15 -0
  418. package/dist/chunk-PQWQ5K6J.js.map +1 -0
  419. package/dist/chunk-PRDWJ4AR.js +215 -0
  420. package/dist/chunk-PRDWJ4AR.js.map +1 -0
  421. package/dist/chunk-PRJSEZ5F.cjs +285 -0
  422. package/dist/chunk-PRJSEZ5F.cjs.map +1 -0
  423. package/dist/chunk-PVWPZYTR.js +830 -0
  424. package/dist/chunk-PVWPZYTR.js.map +1 -0
  425. package/dist/chunk-PYRMH34E.js +49 -0
  426. package/dist/chunk-PYRMH34E.js.map +1 -0
  427. package/dist/chunk-PZIAL4OP.cjs +524 -0
  428. package/dist/chunk-PZIAL4OP.cjs.map +1 -0
  429. package/dist/chunk-QFFC2DKK.js +56 -0
  430. package/dist/chunk-QFFC2DKK.js.map +1 -0
  431. package/dist/chunk-R55HE5C5.js +81 -0
  432. package/dist/chunk-R55HE5C5.js.map +1 -0
  433. package/dist/chunk-RA3P63XW.cjs +65 -0
  434. package/dist/chunk-RA3P63XW.cjs.map +1 -0
  435. package/dist/chunk-RES2GOQQ.js +139 -0
  436. package/dist/chunk-RES2GOQQ.js.map +1 -0
  437. package/dist/chunk-RGANGU7X.js +24 -0
  438. package/dist/chunk-RGANGU7X.js.map +1 -0
  439. package/dist/chunk-RID7CYGD.js +344 -0
  440. package/dist/chunk-RID7CYGD.js.map +1 -0
  441. package/dist/chunk-RM4QWJS3.js +200 -0
  442. package/dist/chunk-RM4QWJS3.js.map +1 -0
  443. package/dist/chunk-RNHIDZLE.cjs +103 -0
  444. package/dist/chunk-RNHIDZLE.cjs.map +1 -0
  445. package/dist/chunk-RNPFSVFN.js +24 -0
  446. package/dist/chunk-RNPFSVFN.js.map +1 -0
  447. package/dist/chunk-RR7BWUVP.cjs +58 -0
  448. package/dist/chunk-RR7BWUVP.cjs.map +1 -0
  449. package/dist/chunk-RXDRYWVD.cjs +21 -0
  450. package/dist/chunk-RXDRYWVD.cjs.map +1 -0
  451. package/dist/chunk-S3TRSECD.cjs +4 -0
  452. package/dist/chunk-S3TRSECD.cjs.map +1 -0
  453. package/dist/chunk-SCPHSBBU.cjs +83 -0
  454. package/dist/chunk-SCPHSBBU.cjs.map +1 -0
  455. package/dist/chunk-SKI33QNW.js +133 -0
  456. package/dist/chunk-SKI33QNW.js.map +1 -0
  457. package/dist/chunk-T6IXZZBQ.cjs +83 -0
  458. package/dist/chunk-T6IXZZBQ.cjs.map +1 -0
  459. package/dist/chunk-T6YELZPJ.cjs +90 -0
  460. package/dist/chunk-T6YELZPJ.cjs.map +1 -0
  461. package/dist/chunk-TECFGOV2.js +222 -0
  462. package/dist/chunk-TECFGOV2.js.map +1 -0
  463. package/dist/chunk-TJ66S5K6.js +3 -0
  464. package/dist/chunk-TJ66S5K6.js.map +1 -0
  465. package/dist/chunk-TVRCOKJQ.cjs +106 -0
  466. package/dist/chunk-TVRCOKJQ.cjs.map +1 -0
  467. package/dist/chunk-TXTRTTG7.cjs +51 -0
  468. package/dist/chunk-TXTRTTG7.cjs.map +1 -0
  469. package/dist/chunk-TZKZ2LUF.cjs +140 -0
  470. package/dist/chunk-TZKZ2LUF.cjs.map +1 -0
  471. package/dist/chunk-UCYAHLGM.js +142 -0
  472. package/dist/chunk-UCYAHLGM.js.map +1 -0
  473. package/dist/chunk-UH2YXQ2B.cjs +166 -0
  474. package/dist/chunk-UH2YXQ2B.cjs.map +1 -0
  475. package/dist/chunk-UWVVEB2N.js +55 -0
  476. package/dist/chunk-UWVVEB2N.js.map +1 -0
  477. package/dist/chunk-VBZZ4CMM.cjs +71 -0
  478. package/dist/chunk-VBZZ4CMM.cjs.map +1 -0
  479. package/dist/chunk-VE3EM4K2.cjs +57 -0
  480. package/dist/chunk-VE3EM4K2.cjs.map +1 -0
  481. package/dist/chunk-VNDOT3NK.cjs +426 -0
  482. package/dist/chunk-VNDOT3NK.cjs.map +1 -0
  483. package/dist/chunk-VXHFR5MV.js +3 -0
  484. package/dist/chunk-VXHFR5MV.js.map +1 -0
  485. package/dist/chunk-W2Q4OWHX.cjs +204 -0
  486. package/dist/chunk-W2Q4OWHX.cjs.map +1 -0
  487. package/dist/chunk-WEGL4S52.js +450 -0
  488. package/dist/chunk-WEGL4S52.js.map +1 -0
  489. package/dist/chunk-WHEXTDPV.js +41 -0
  490. package/dist/chunk-WHEXTDPV.js.map +1 -0
  491. package/dist/chunk-WT72KW5M.cjs +347 -0
  492. package/dist/chunk-WT72KW5M.cjs.map +1 -0
  493. package/dist/chunk-WVO2EKE6.cjs +101 -0
  494. package/dist/chunk-WVO2EKE6.cjs.map +1 -0
  495. package/dist/chunk-WXADO5TS.cjs +124 -0
  496. package/dist/chunk-WXADO5TS.cjs.map +1 -0
  497. package/dist/chunk-X36ZGYTF.js +281 -0
  498. package/dist/chunk-X36ZGYTF.js.map +1 -0
  499. package/dist/chunk-XBBEQLMY.cjs +214 -0
  500. package/dist/chunk-XBBEQLMY.cjs.map +1 -0
  501. package/dist/chunk-XCZZVRBY.cjs +2030 -0
  502. package/dist/chunk-XCZZVRBY.cjs.map +1 -0
  503. package/dist/chunk-XJXQG34J.js +77 -0
  504. package/dist/chunk-XJXQG34J.js.map +1 -0
  505. package/dist/chunk-XMBOZ73D.js +92 -0
  506. package/dist/chunk-XMBOZ73D.js.map +1 -0
  507. package/dist/chunk-XZYKPGSK.cjs +453 -0
  508. package/dist/chunk-XZYKPGSK.cjs.map +1 -0
  509. package/dist/chunk-YCZN4FWI.js +42 -0
  510. package/dist/chunk-YCZN4FWI.js.map +1 -0
  511. package/dist/chunk-YHXE274U.js +129 -0
  512. package/dist/chunk-YHXE274U.js.map +1 -0
  513. package/dist/chunk-YLGTDBB2.cjs +43 -0
  514. package/dist/chunk-YLGTDBB2.cjs.map +1 -0
  515. package/dist/chunk-YT42J4VQ.js +361 -0
  516. package/dist/chunk-YT42J4VQ.js.map +1 -0
  517. package/dist/chunk-YT6N44Z3.js +99 -0
  518. package/dist/chunk-YT6N44Z3.js.map +1 -0
  519. package/dist/chunk-YXC7QHNT.cjs +385 -0
  520. package/dist/chunk-YXC7QHNT.cjs.map +1 -0
  521. package/dist/chunk-ZFVSEO5Z.cjs +136 -0
  522. package/dist/chunk-ZFVSEO5Z.cjs.map +1 -0
  523. package/dist/chunk-ZLCVKYHY.js +344 -0
  524. package/dist/chunk-ZLCVKYHY.js.map +1 -0
  525. package/dist/chunk-ZNTEM7F2.js +184 -0
  526. package/dist/chunk-ZNTEM7F2.js.map +1 -0
  527. package/dist/chunk-ZT36VWIA.js +136 -0
  528. package/dist/chunk-ZT36VWIA.js.map +1 -0
  529. package/dist/chunk-ZWOEKDNI.js +281 -0
  530. package/dist/chunk-ZWOEKDNI.js.map +1 -0
  531. package/dist/code-view.cjs +13 -0
  532. package/dist/code-view.cjs.map +1 -0
  533. package/dist/code-view.d.cts +44 -0
  534. package/dist/code-view.d.ts +44 -0
  535. package/dist/code-view.js +4 -0
  536. package/dist/code-view.js.map +1 -0
  537. package/dist/color-picker.cjs +16 -0
  538. package/dist/color-picker.cjs.map +1 -0
  539. package/dist/color-picker.d.cts +20 -0
  540. package/dist/color-picker.d.ts +20 -0
  541. package/dist/color-picker.js +7 -0
  542. package/dist/color-picker.js.map +1 -0
  543. package/dist/command.cjs +21 -0
  544. package/dist/command.cjs.map +1 -0
  545. package/dist/command.d.cts +78 -0
  546. package/dist/command.d.ts +78 -0
  547. package/dist/command.js +8 -0
  548. package/dist/command.js.map +1 -0
  549. package/dist/composer.cjs +14 -0
  550. package/dist/composer.cjs.map +1 -0
  551. package/dist/composer.d.cts +17 -0
  552. package/dist/composer.d.ts +17 -0
  553. package/dist/composer.js +5 -0
  554. package/dist/composer.js.map +1 -0
  555. package/dist/content-renderer.cjs +23 -0
  556. package/dist/content-renderer.cjs.map +1 -0
  557. package/dist/content-renderer.d.cts +27 -0
  558. package/dist/content-renderer.d.ts +27 -0
  559. package/dist/content-renderer.js +6 -0
  560. package/dist/content-renderer.js.map +1 -0
  561. package/dist/context-menu.cjs +21 -0
  562. package/dist/context-menu.cjs.map +1 -0
  563. package/dist/context-menu.d.cts +91 -0
  564. package/dist/context-menu.d.ts +91 -0
  565. package/dist/context-menu.js +8 -0
  566. package/dist/context-menu.js.map +1 -0
  567. package/dist/date-picker.cjs +19 -0
  568. package/dist/date-picker.cjs.map +1 -0
  569. package/dist/date-picker.d.cts +26 -0
  570. package/dist/date-picker.d.ts +26 -0
  571. package/dist/date-picker.js +10 -0
  572. package/dist/date-picker.js.map +1 -0
  573. package/dist/drawer.cjs +21 -0
  574. package/dist/drawer.cjs.map +1 -0
  575. package/dist/drawer.d.cts +116 -0
  576. package/dist/drawer.d.ts +116 -0
  577. package/dist/drawer.js +8 -0
  578. package/dist/drawer.js.map +1 -0
  579. package/dist/dropdown.cjs +22 -0
  580. package/dist/dropdown.cjs.map +1 -0
  581. package/dist/dropdown.d.cts +67 -0
  582. package/dist/dropdown.d.ts +67 -0
  583. package/dist/dropdown.js +9 -0
  584. package/dist/dropdown.js.map +1 -0
  585. package/dist/editor.cjs +29 -0
  586. package/dist/editor.cjs.map +1 -0
  587. package/dist/editor.d.cts +153 -0
  588. package/dist/editor.d.ts +153 -0
  589. package/dist/editor.js +16 -0
  590. package/dist/editor.js.map +1 -0
  591. package/dist/emoji-select.cjs +15 -0
  592. package/dist/emoji-select.cjs.map +1 -0
  593. package/dist/emoji-select.d.cts +13 -0
  594. package/dist/emoji-select.d.ts +13 -0
  595. package/dist/emoji-select.js +6 -0
  596. package/dist/emoji-select.js.map +1 -0
  597. package/dist/emoji.cjs +14 -0
  598. package/dist/emoji.cjs.map +1 -0
  599. package/dist/emoji.d.cts +2 -0
  600. package/dist/emoji.d.ts +2 -0
  601. package/dist/emoji.js +5 -0
  602. package/dist/emoji.js.map +1 -0
  603. package/dist/extensions-6PVd3-vB.d.cts +38 -0
  604. package/dist/extensions-6PVd3-vB.d.ts +38 -0
  605. package/dist/eyebrow.cjs +13 -0
  606. package/dist/eyebrow.cjs.map +1 -0
  607. package/dist/eyebrow.d.cts +33 -0
  608. package/dist/eyebrow.d.ts +33 -0
  609. package/dist/eyebrow.js +4 -0
  610. package/dist/eyebrow.js.map +1 -0
  611. package/dist/faux-client.cjs +13 -0
  612. package/dist/faux-client.cjs.map +1 -0
  613. package/dist/faux-client.d.cts +39 -0
  614. package/dist/faux-client.d.ts +39 -0
  615. package/dist/faux-client.js +4 -0
  616. package/dist/faux-client.js.map +1 -0
  617. package/dist/field.cjs +14 -0
  618. package/dist/field.cjs.map +1 -0
  619. package/dist/field.d.cts +18 -0
  620. package/dist/field.d.ts +18 -0
  621. package/dist/field.js +5 -0
  622. package/dist/field.js.map +1 -0
  623. package/dist/file-browser.cjs +18 -0
  624. package/dist/file-browser.cjs.map +1 -0
  625. package/dist/file-browser.d.cts +269 -0
  626. package/dist/file-browser.d.ts +269 -0
  627. package/dist/file-browser.js +5 -0
  628. package/dist/file-browser.js.map +1 -0
  629. package/dist/file-upload.cjs +17 -0
  630. package/dist/file-upload.cjs.map +1 -0
  631. package/dist/file-upload.d.cts +48 -0
  632. package/dist/file-upload.d.ts +48 -0
  633. package/dist/file-upload.js +4 -0
  634. package/dist/file-upload.js.map +1 -0
  635. package/dist/heading.cjs +13 -0
  636. package/dist/heading.cjs.map +1 -0
  637. package/dist/heading.d.cts +25 -0
  638. package/dist/heading.d.ts +25 -0
  639. package/dist/heading.js +4 -0
  640. package/dist/heading.js.map +1 -0
  641. package/dist/icon.cjs +34 -0
  642. package/dist/icon.cjs.map +1 -0
  643. package/dist/icon.d.cts +51 -0
  644. package/dist/icon.d.ts +51 -0
  645. package/dist/icon.js +5 -0
  646. package/dist/icon.js.map +1 -0
  647. package/dist/image-viewer.cjs +14 -0
  648. package/dist/image-viewer.cjs.map +1 -0
  649. package/dist/image-viewer.d.cts +19 -0
  650. package/dist/image-viewer.d.ts +19 -0
  651. package/dist/image-viewer.js +5 -0
  652. package/dist/image-viewer.js.map +1 -0
  653. package/dist/index-B71wa9AW.d.cts +79 -0
  654. package/dist/index-BktWpyRH.d.cts +53 -0
  655. package/dist/index-BktWpyRH.d.ts +53 -0
  656. package/dist/index-bIntFOl5.d.ts +79 -0
  657. package/dist/index-list.cjs +13 -0
  658. package/dist/index-list.cjs.map +1 -0
  659. package/dist/index-list.d.cts +49 -0
  660. package/dist/index-list.d.ts +49 -0
  661. package/dist/index-list.js +4 -0
  662. package/dist/index-list.js.map +1 -0
  663. package/dist/index.cjs +666 -16810
  664. package/dist/index.cjs.map +1 -1
  665. package/dist/index.d.cts +93 -4059
  666. package/dist/index.d.ts +93 -4059
  667. package/dist/index.js +103 -16692
  668. package/dist/index.js.map +1 -1
  669. package/dist/input-tag.cjs +28 -0
  670. package/dist/input-tag.cjs.map +1 -0
  671. package/dist/input-tag.d.cts +134 -0
  672. package/dist/input-tag.d.ts +134 -0
  673. package/dist/input-tag.js +3 -0
  674. package/dist/input-tag.js.map +1 -0
  675. package/dist/input.cjs +20 -0
  676. package/dist/input.cjs.map +1 -0
  677. package/dist/input.d.cts +32 -0
  678. package/dist/input.d.ts +32 -0
  679. package/dist/input.js +11 -0
  680. package/dist/input.js.map +1 -0
  681. package/dist/inputs.cjs +100 -0
  682. package/dist/inputs.cjs.map +1 -0
  683. package/dist/inputs.d.cts +16 -0
  684. package/dist/inputs.d.ts +16 -0
  685. package/dist/inputs.js +27 -0
  686. package/dist/inputs.js.map +1 -0
  687. package/dist/inputs.types-CkWdvN-t.d.cts +44 -0
  688. package/dist/inputs.types-DERzxpe1.d.ts +44 -0
  689. package/dist/kanban.cjs +17 -0
  690. package/dist/kanban.cjs.map +1 -0
  691. package/dist/kanban.d.cts +136 -0
  692. package/dist/kanban.d.ts +136 -0
  693. package/dist/kanban.js +4 -0
  694. package/dist/kanban.js.map +1 -0
  695. package/dist/kbd.cjs +13 -0
  696. package/dist/kbd.cjs.map +1 -0
  697. package/dist/kbd.d.cts +30 -0
  698. package/dist/kbd.d.ts +30 -0
  699. package/dist/kbd.js +4 -0
  700. package/dist/kbd.js.map +1 -0
  701. package/dist/magic-wand.cjs +25 -0
  702. package/dist/magic-wand.cjs.map +1 -0
  703. package/dist/magic-wand.d.cts +62 -0
  704. package/dist/magic-wand.d.ts +62 -0
  705. package/dist/magic-wand.js +16 -0
  706. package/dist/magic-wand.js.map +1 -0
  707. package/dist/marquee.cjs +13 -0
  708. package/dist/marquee.cjs.map +1 -0
  709. package/dist/marquee.d.cts +48 -0
  710. package/dist/marquee.d.ts +48 -0
  711. package/dist/marquee.js +4 -0
  712. package/dist/marquee.js.map +1 -0
  713. package/dist/media-viewer.cjs +18 -0
  714. package/dist/media-viewer.cjs.map +1 -0
  715. package/dist/media-viewer.d.cts +6 -0
  716. package/dist/media-viewer.d.ts +6 -0
  717. package/dist/media-viewer.js +9 -0
  718. package/dist/media-viewer.js.map +1 -0
  719. package/dist/menu.cjs +17 -0
  720. package/dist/menu.cjs.map +1 -0
  721. package/dist/menu.d.cts +60 -0
  722. package/dist/menu.d.ts +60 -0
  723. package/dist/menu.js +4 -0
  724. package/dist/menu.js.map +1 -0
  725. package/dist/mobile-menu.cjs +26 -0
  726. package/dist/mobile-menu.cjs.map +1 -0
  727. package/dist/mobile-menu.d.cts +60 -0
  728. package/dist/mobile-menu.d.ts +60 -0
  729. package/dist/mobile-menu.js +13 -0
  730. package/dist/mobile-menu.js.map +1 -0
  731. package/dist/modal.cjs +21 -0
  732. package/dist/modal.cjs.map +1 -0
  733. package/dist/modal.d.cts +52 -0
  734. package/dist/modal.d.ts +52 -0
  735. package/dist/modal.js +8 -0
  736. package/dist/modal.js.map +1 -0
  737. package/dist/mode.cjs +37 -0
  738. package/dist/mode.cjs.map +1 -0
  739. package/dist/mode.d.cts +28 -0
  740. package/dist/mode.d.ts +28 -0
  741. package/dist/mode.js +8 -0
  742. package/dist/mode.js.map +1 -0
  743. package/dist/mood-meter.cjs +12 -0
  744. package/dist/mood-meter.cjs.map +1 -0
  745. package/dist/mood-meter.d.cts +67 -0
  746. package/dist/mood-meter.d.ts +67 -0
  747. package/dist/mood-meter.js +3 -0
  748. package/dist/mood-meter.js.map +1 -0
  749. package/dist/multi-switch.cjs +19 -0
  750. package/dist/multi-switch.cjs.map +1 -0
  751. package/dist/multi-switch.d.cts +18 -0
  752. package/dist/multi-switch.d.ts +18 -0
  753. package/dist/multi-switch.js +10 -0
  754. package/dist/multi-switch.js.map +1 -0
  755. package/dist/navbar.cjs +17 -0
  756. package/dist/navbar.cjs.map +1 -0
  757. package/dist/navbar.d.cts +60 -0
  758. package/dist/navbar.d.ts +60 -0
  759. package/dist/navbar.js +4 -0
  760. package/dist/navbar.js.map +1 -0
  761. package/dist/otp-input.cjs +16 -0
  762. package/dist/otp-input.cjs.map +1 -0
  763. package/dist/otp-input.d.cts +18 -0
  764. package/dist/otp-input.d.ts +18 -0
  765. package/dist/otp-input.js +7 -0
  766. package/dist/otp-input.js.map +1 -0
  767. package/dist/pagination.cjs +13 -0
  768. package/dist/pagination.cjs.map +1 -0
  769. package/dist/pagination.d.cts +16 -0
  770. package/dist/pagination.d.ts +16 -0
  771. package/dist/pagination.js +4 -0
  772. package/dist/pagination.js.map +1 -0
  773. package/dist/pdf-viewer.cjs +13 -0
  774. package/dist/pdf-viewer.cjs.map +1 -0
  775. package/dist/pdf-viewer.d.cts +16 -0
  776. package/dist/pdf-viewer.d.ts +16 -0
  777. package/dist/pdf-viewer.js +4 -0
  778. package/dist/pdf-viewer.js.map +1 -0
  779. package/dist/pillbox.cjs +14 -0
  780. package/dist/pillbox.cjs.map +1 -0
  781. package/dist/pillbox.d.cts +15 -0
  782. package/dist/pillbox.d.ts +15 -0
  783. package/dist/pillbox.js +5 -0
  784. package/dist/pillbox.js.map +1 -0
  785. package/dist/popover.cjs +21 -0
  786. package/dist/popover.cjs.map +1 -0
  787. package/dist/popover.d.cts +71 -0
  788. package/dist/popover.d.ts +71 -0
  789. package/dist/popover.js +8 -0
  790. package/dist/popover.js.map +1 -0
  791. package/dist/portal.cjs +12 -0
  792. package/dist/portal.cjs.map +1 -0
  793. package/dist/portal.d.cts +10 -0
  794. package/dist/portal.d.ts +10 -0
  795. package/dist/portal.js +3 -0
  796. package/dist/portal.js.map +1 -0
  797. package/dist/profile.cjs +14 -0
  798. package/dist/profile.cjs.map +1 -0
  799. package/dist/profile.d.cts +16 -0
  800. package/dist/profile.d.ts +16 -0
  801. package/dist/profile.js +5 -0
  802. package/dist/profile.js.map +1 -0
  803. package/dist/progress.cjs +13 -0
  804. package/dist/progress.cjs.map +1 -0
  805. package/dist/progress.d.cts +25 -0
  806. package/dist/progress.d.ts +25 -0
  807. package/dist/progress.js +4 -0
  808. package/dist/progress.js.map +1 -0
  809. package/dist/prompt-input.cjs +20 -0
  810. package/dist/prompt-input.cjs.map +1 -0
  811. package/dist/prompt-input.d.cts +76 -0
  812. package/dist/prompt-input.d.ts +76 -0
  813. package/dist/prompt-input.js +11 -0
  814. package/dist/prompt-input.js.map +1 -0
  815. package/dist/pull-quote.cjs +13 -0
  816. package/dist/pull-quote.cjs.map +1 -0
  817. package/dist/pull-quote.d.cts +33 -0
  818. package/dist/pull-quote.d.ts +33 -0
  819. package/dist/pull-quote.js +4 -0
  820. package/dist/pull-quote.js.map +1 -0
  821. package/dist/radio-group.cjs +19 -0
  822. package/dist/radio-group.cjs.map +1 -0
  823. package/dist/radio-group.d.cts +18 -0
  824. package/dist/radio-group.d.ts +18 -0
  825. package/dist/radio-group.js +10 -0
  826. package/dist/radio-group.js.map +1 -0
  827. package/dist/reason-tag.cjs +22 -0
  828. package/dist/reason-tag.cjs.map +1 -0
  829. package/dist/reason-tag.d.cts +57 -0
  830. package/dist/reason-tag.d.ts +57 -0
  831. package/dist/reason-tag.js +13 -0
  832. package/dist/reason-tag.js.map +1 -0
  833. package/dist/select.cjs +23 -0
  834. package/dist/select.cjs.map +1 -0
  835. package/dist/select.d.cts +41 -0
  836. package/dist/select.d.ts +41 -0
  837. package/dist/select.js +14 -0
  838. package/dist/select.js.map +1 -0
  839. package/dist/separator.cjs +13 -0
  840. package/dist/separator.cjs.map +1 -0
  841. package/dist/separator.d.cts +14 -0
  842. package/dist/separator.d.ts +14 -0
  843. package/dist/separator.js +4 -0
  844. package/dist/separator.js.map +1 -0
  845. package/dist/sidebar.cjs +25 -0
  846. package/dist/sidebar.cjs.map +1 -0
  847. package/dist/sidebar.d.cts +80 -0
  848. package/dist/sidebar.d.ts +80 -0
  849. package/dist/sidebar.js +12 -0
  850. package/dist/sidebar.js.map +1 -0
  851. package/dist/skeleton.cjs +13 -0
  852. package/dist/skeleton.cjs.map +1 -0
  853. package/dist/skeleton.d.cts +16 -0
  854. package/dist/skeleton.d.ts +16 -0
  855. package/dist/skeleton.js +4 -0
  856. package/dist/skeleton.js.map +1 -0
  857. package/dist/slider.cjs +19 -0
  858. package/dist/slider.cjs.map +1 -0
  859. package/dist/slider.d.cts +34 -0
  860. package/dist/slider.d.ts +34 -0
  861. package/dist/slider.js +10 -0
  862. package/dist/slider.js.map +1 -0
  863. package/dist/stat.cjs +17 -0
  864. package/dist/stat.cjs.map +1 -0
  865. package/dist/stat.d.cts +29 -0
  866. package/dist/stat.d.ts +29 -0
  867. package/dist/stat.js +4 -0
  868. package/dist/stat.js.map +1 -0
  869. package/dist/sticky-note.cjs +13 -0
  870. package/dist/sticky-note.cjs.map +1 -0
  871. package/dist/sticky-note.d.cts +53 -0
  872. package/dist/sticky-note.d.ts +53 -0
  873. package/dist/sticky-note.js +4 -0
  874. package/dist/sticky-note.js.map +1 -0
  875. package/dist/switch.cjs +17 -0
  876. package/dist/switch.cjs.map +1 -0
  877. package/dist/switch.d.cts +16 -0
  878. package/dist/switch.d.ts +16 -0
  879. package/dist/switch.js +8 -0
  880. package/dist/switch.js.map +1 -0
  881. package/dist/table.cjs +50 -0
  882. package/dist/table.cjs.map +1 -0
  883. package/dist/table.d.cts +89 -0
  884. package/dist/table.d.ts +89 -0
  885. package/dist/table.js +5 -0
  886. package/dist/table.js.map +1 -0
  887. package/dist/tabs.cjs +18 -0
  888. package/dist/tabs.cjs.map +1 -0
  889. package/dist/tabs.d.cts +68 -0
  890. package/dist/tabs.d.ts +68 -0
  891. package/dist/tabs.js +5 -0
  892. package/dist/tabs.js.map +1 -0
  893. package/dist/text.cjs +13 -0
  894. package/dist/text.cjs.map +1 -0
  895. package/dist/text.d.cts +17 -0
  896. package/dist/text.d.ts +17 -0
  897. package/dist/text.js +4 -0
  898. package/dist/text.js.map +1 -0
  899. package/dist/textarea.cjs +20 -0
  900. package/dist/textarea.cjs.map +1 -0
  901. package/dist/textarea.d.cts +15 -0
  902. package/dist/textarea.d.ts +15 -0
  903. package/dist/textarea.js +11 -0
  904. package/dist/textarea.js.map +1 -0
  905. package/dist/time-grid.cjs +13 -0
  906. package/dist/time-grid.cjs.map +1 -0
  907. package/dist/time-grid.d.cts +53 -0
  908. package/dist/time-grid.d.ts +53 -0
  909. package/dist/time-grid.js +4 -0
  910. package/dist/time-grid.js.map +1 -0
  911. package/dist/time-picker.cjs +16 -0
  912. package/dist/time-picker.cjs.map +1 -0
  913. package/dist/time-picker.d.cts +19 -0
  914. package/dist/time-picker.d.ts +19 -0
  915. package/dist/time-picker.js +7 -0
  916. package/dist/time-picker.js.map +1 -0
  917. package/dist/timeline.cjs +21 -0
  918. package/dist/timeline.cjs.map +1 -0
  919. package/dist/timeline.d.cts +10 -0
  920. package/dist/timeline.d.ts +10 -0
  921. package/dist/timeline.js +4 -0
  922. package/dist/timeline.js.map +1 -0
  923. package/dist/toast.cjs +18 -0
  924. package/dist/toast.cjs.map +1 -0
  925. package/dist/toast.d.cts +54 -0
  926. package/dist/toast.d.ts +54 -0
  927. package/dist/toast.js +5 -0
  928. package/dist/toast.js.map +1 -0
  929. package/dist/tooltip.cjs +15 -0
  930. package/dist/tooltip.cjs.map +1 -0
  931. package/dist/tooltip.d.cts +16 -0
  932. package/dist/tooltip.d.ts +16 -0
  933. package/dist/tooltip.js +6 -0
  934. package/dist/tooltip.js.map +1 -0
  935. package/dist/tree-nav.cjs +17 -0
  936. package/dist/tree-nav.cjs.map +1 -0
  937. package/dist/tree-nav.d.cts +114 -0
  938. package/dist/tree-nav.d.ts +114 -0
  939. package/dist/tree-nav.js +4 -0
  940. package/dist/tree-nav.js.map +1 -0
  941. package/dist/types-8Sv0rCjw.d.cts +58 -0
  942. package/dist/types-8Sv0rCjw.d.ts +58 -0
  943. package/dist/video-viewer.cjs +13 -0
  944. package/dist/video-viewer.cjs.map +1 -0
  945. package/dist/video-viewer.d.cts +14 -0
  946. package/dist/video-viewer.d.ts +14 -0
  947. package/dist/video-viewer.js +4 -0
  948. package/dist/video-viewer.js.map +1 -0
  949. package/package.json +845 -5
package/dist/index.d.cts CHANGED
@@ -1,3402 +1,96 @@
1
- import * as react from 'react';
2
- import { ElementType, ButtonHTMLAttributes, AnchorHTMLAttributes, ReactNode, HTMLAttributes, InputHTMLAttributes, TextareaHTMLAttributes, SelectHTMLAttributes, FormHTMLAttributes, TdHTMLAttributes, ComponentType, CSSProperties, ReactElement, RefObject } from 'react';
1
+ export { Action, ActionProps, Button, ButtonProps } from './button.cjs';
2
+ export { AccordionOrientation, AccordionPanel, AccordionPanelContent, AccordionPanelContentProps, AccordionPanelProps, AccordionPanelSection, AccordionPanelSectionProps, AccordionPanelTrigger, AccordionPanelTriggerProps, SectionRenderState, SectionRenderable, useAccordionPanel, useAccordionSection } from './accordion-panel.cjs';
3
+ export { Field, FieldProps } from './field.cjs';
4
+ export { Input, InputProps } from './input.cjs';
5
+ export { Textarea, TextareaProps } from './textarea.cjs';
6
+ export { Select, SelectProps } from './select.cjs';
7
+ export { Checkbox, CheckboxProps } from './checkbox.cjs';
8
+ export { CheckboxGroup, CheckboxGroupProps } from './checkbox-group.cjs';
9
+ export { RadioGroup, RadioGroupProps } from './radio-group.cjs';
10
+ export { Switch, SwitchProps } from './switch.cjs';
11
+ export { Slider, SliderProps } from './slider.cjs';
12
+ export { MultiSwitch, MultiSwitchProps } from './multi-switch.cjs';
13
+ export { DatePicker, DatePickerProps } from './date-picker.cjs';
14
+ export { A as AffixPosition, F as FieldMode, I as InputAffixProps, a as InputBaseProps, b as InputOption, c as InputOptionGroup } from './inputs.types-CkWdvN-t.cjs';
15
+ export { D as DisplayValue, a as DisplayValueProps, F as FieldModeContext, b as FieldModeContextValue, c as Form, d as FormProps, e as FormProvider, f as FormProviderProps, u as useFieldMode } from './FieldMode.context-C28RH8GR.cjs';
16
+ export { d as Carousel, e as CarouselContextValue, b as CarouselControlsProps, C as CarouselPanelsProps, f as CarouselProps, a as CarouselSlideProps, c as CarouselStepsProps, g as CarouselVariant, u as useCarousel } from './Carousel.context-Ba3gKZHQ.cjs';
17
+ export { ColorPicker, ColorPickerProps } from './color-picker.cjs';
18
+ export { E as EMOJI_CATEGORY_ORDER, a as EMOJI_DATA, b as EMOJI_ENTRIES, c as Emoji, d as EmojiCategory, e as EmojiCategoryKey, f as EmojiEntry, g as EmojiFlatEntry, h as EmojiProps, S as SKIN_TONES, i as SkinTone, j as applyTone, k as find, l as hasSkinTones, r as resolve, s as search, m as skinTones } from './index-BktWpyRH.cjs';
19
+ export { EmojiSelect, EmojiSelectProps } from './emoji-select.cjs';
20
+ export { Table, TableBodyProps, TableCellProps, TableColumnProps, TableHeadProps, TablePaginationProps, TableProps, TableRowProps, TableRowTrayProps, TableSearchProps, TableTrayProps } from './table.cjs';
21
+ export { Portal, PortalProps } from './portal.cjs';
22
+ export { Heading, HeadingProps } from './heading.cjs';
23
+ export { Text, TextProps } from './text.cjs';
24
+ export { Separator, SeparatorProps } from './separator.cjs';
25
+ export { Badge, BadgeProps } from './badge.cjs';
26
+ export { Icon, IconProps, IconSet, configureIcons, registerIconAddendum, registerIconSet, registerIcons } from './icon.cjs';
27
+ export { Avatar, AvatarProps } from './avatar.cjs';
28
+ export { Skeleton, SkeletonProps } from './skeleton.cjs';
29
+ export { Progress, ProgressProps } from './progress.cjs';
30
+ export { Brand, BrandMark, BrandMarkProps, BrandProps } from './brand.cjs';
31
+ export { Eyebrow, EyebrowProps } from './eyebrow.cjs';
32
+ export { Kbd, KbdProps } from './kbd.cjs';
33
+ export { IndexList, IndexListItem, IndexListProps } from './index-list.cjs';
34
+ export { PullQuote, PullQuoteProps } from './pull-quote.cjs';
35
+ export { Stat, StatBand, StatBandProps, StatProps } from './stat.cjs';
36
+ export { Profile, ProfileProps } from './profile.cjs';
37
+ export { d as Card, a as CardBodyProps, b as CardFooterProps, C as CardHeaderProps, e as CardProps } from './Card-BZ5F6-wd.cjs';
38
+ export { Callout, CalloutProps } from './callout.cjs';
39
+ export { FauxClient, FauxClientProps } from './faux-client.cjs';
40
+ export { StickyNote, StickyNoteColor, StickyNoteProps } from './sticky-note.cjs';
41
+ export { b as Timeline, a as TimelineBlockProps, c as TimelineEvent, T as TimelineItemProps, d as TimelineOrientation, e as TimelineProps, f as TimelineVariant } from './Timeline-7zHhIk3P.cjs';
42
+ export { TimeGrid, TimeGridProps, TimeGridTone } from './time-grid.cjs';
43
+ export { Marquee, MarqueeDirection, MarqueeProps } from './marquee.cjs';
44
+ export { Tooltip, TooltipProps } from './tooltip.cjs';
45
+ export { Popover, PopoverContentProps, PopoverContextValue, PopoverProps, PopoverTriggerProps, usePopover } from './popover.cjs';
46
+ export { Dropdown, DropdownContextValue, DropdownItemProps, DropdownItemsProps, DropdownProps, DropdownSeparatorProps, DropdownTriggerProps, useDropdown } from './dropdown.cjs';
47
+ export { ContextMenu, ContextMenuContentProps, ContextMenuContextValue, ContextMenuItemProps, ContextMenuProps, ContextMenuSeparatorProps, ContextMenuTriggerProps, useContextMenu } from './context-menu.cjs';
48
+ export { Modal, ModalBodyProps, ModalContextValue, ModalFooterProps, ModalHeaderProps, ModalProps, useModal } from './modal.cjs';
49
+ export { Drawer, DrawerAttach, DrawerBodyProps, DrawerContainerProps, DrawerContextValue, DrawerFooterProps, DrawerHeaderProps, DrawerProps, DrawerSide, DrawerSize, useDrawer } from './drawer.cjs';
50
+ export { Toast, ToastAction, ToastContextValue, ToastData, ToastPosition, ToastProviderProps, ToastVariant, useToast } from './toast.cjs';
51
+ export { Command, CommandContextValue, CommandEmptyProps, CommandGroupProps, CommandInputProps, CommandItemProps, CommandListProps, CommandProps, useCommand } from './command.cjs';
52
+ export { Tabs, TabsContextValue, TabsListProps, TabsPanelProps, TabsPanelsProps, TabsProps, TabsTabProps, TabsVariant, useTabs } from './tabs.cjs';
53
+ export { Accordion, AccordionContentProps, AccordionContextValue, AccordionItemProps, AccordionProps, AccordionTriggerProps, useAccordion } from './accordion.cjs';
54
+ export { Breadcrumbs, BreadcrumbsItemProps, BreadcrumbsProps } from './breadcrumbs.cjs';
55
+ export { Navbar, NavbarBrandProps, NavbarContextValue, NavbarItemProps, NavbarItemsProps, NavbarProps, NavbarToggleProps, useNavbar } from './navbar.cjs';
56
+ export { Pagination, PaginationProps } from './pagination.cjs';
57
+ export { Autocomplete, AutocompleteOption, AutocompleteProps } from './autocomplete.cjs';
58
+ export { Pillbox, PillboxProps } from './pillbox.cjs';
59
+ export { OtpInput, OtpInputProps } from './otp-input.cjs';
60
+ export { FileUpload, FileUploadContextValue, FileUploadDropzoneProps, FileUploadListProps, FileUploadProps, useFileUpload } from './file-upload.cjs';
61
+ export { TimePicker, TimePickerProps } from './time-picker.cjs';
62
+ export { Calendar, CalendarMode, CalendarProps, DateRange } from './calendar.cjs';
63
+ export { Composer, ComposerProps } from './composer.cjs';
64
+ export { Chart, ChartAreaProps, ChartBarData, ChartBarProps, ChartCommonProps, ChartDonutData, ChartDonutProps, ChartHorizontalBarProps, ChartLineProps, ChartPieData, ChartPieProps, ChartSeries, ChartSparklineProps, ChartStackedBarProps } from './chart.cjs';
65
+ export { Editor, EditorAction, EditorContentProps, EditorContextValue, EditorProps, EditorSourceToggleProps, EditorToolbarProps, useEditor } from './editor.cjs';
66
+ export { CodeView, CodeViewProps } from './code-view.cjs';
67
+ export { ContentRenderer, ContentRendererProps } from './content-renderer.cjs';
68
+ export { R as RenderExtension, a as RenderExtensionProps, r as registerExtension, b as registerExtensions } from './extensions-6PVd3-vB.cjs';
69
+ export { Menu, MenuContextValue, MenuGroupProps, MenuItemProps, MenuOrientation, MenuProps, MenuSubmenuProps, useMenu } from './menu.cjs';
70
+ export { Sidebar, SidebarCollapseMode, SidebarContextValue, SidebarGroupProps, SidebarItemProps, SidebarProps, SidebarSubmenuProps, SidebarToggleProps, useSidebar } from './sidebar.cjs';
71
+ export { MobileMenu, MobileMenuBottomBarProps, MobileMenuContextValue, MobileMenuFlyoutProps, MobileMenuItemProps, MobileMenuSide, MobileMenuVariant, useMobileMenu } from './mobile-menu.cjs';
72
+ export { Kanban, KanbanCardMoveHandler, KanbanCardProps, KanbanColumnHandleProps, KanbanColumnMoveHandler, KanbanColumnProps, KanbanContextValue, KanbanProps, useKanban } from './kanban.cjs';
73
+ export { DropPosition, TreeNav, TreeNavContextValue, TreeNavProps, TreeNodeData, TreeNodeProps, useTreeNav } from './tree-nav.cjs';
74
+ export { FileBrowser, FileBrowserContextValue, FileBrowserNodeProps, FileBrowserPathBarProps, FileBrowserProps, FileBrowserProvider, FileBrowserRow, FileBrowserToolbarProps, FileBrowserTreeProps, FileEntry, FileKind, FileLoadStatus, FileSelectMode, FileSnapshotNode, FileSort, FileSortDirection, FileSortField, useFileBrowser } from './file-browser.cjs';
3
75
  import { ClassValue } from 'clsx';
4
-
5
- type Size = "xs" | "sm" | "md" | "lg" | "xl";
6
- /**
7
- * What a navigation primitive owes a router.
8
- *
9
- * Every nav surface here — `Navbar.Item`, `Sidebar.Item`, `Menu.Item`,
10
- * `MobileMenu.Item`, `Breadcrumbs.Item` used to hardcode a plain `<a href>`.
11
- * That is a FULL PAGE LOAD in every client-routed app, and the only way around
12
- * it was to nest a router `<Link>` inside the item: an anchor inside an anchor,
13
- * which is invalid HTML and the same nested-anchor shape that already cost this
14
- * suite an SSR hydration bug.
15
- *
16
- * `as` is the seam {@link ButtonProps.as} already had. It is router-agnostic on
17
- * purpose one prop serves Inertia, TanStack Router, React Router and Next
18
- * rather than a package per router:
19
- *
20
- * ```tsx
21
- * // href-based routers (Inertia, Next)
22
- * <Navbar.Item as={Link} href="/dashboard">Dashboard</Navbar.Item>
23
- *
24
- * // to-based routers (TanStack Router, React Router) — `to` reaches the Link
25
- * // through the forwarded rest props
26
- * <Navbar.Item as={Link} to="/dashboard">Dashboard</Navbar.Item>
27
- * ```
28
- *
29
- * Link mode engages on `href` OR `as`, because a `to`-based router never passes
30
- * an `href` and would otherwise silently render the non-interactive fallback.
31
- */
32
- interface NavigableProps {
33
- /** Target URL. Renders link mode with a plain `<a>` unless `as` is given. */
34
- href?: string;
35
- /**
36
- * Link-mode element override — the component to render INSTEAD of the plain
37
- * `<a>`, e.g. a router's `<Link>` so navigation happens client-side. Receives
38
- * `className`, the item's `data-*` handles, and every unrecognized prop, so
39
- * router-specific props (`to`, `params`, `preload`, `search`) pass straight
40
- * through. Ignored in button mode.
41
- */
42
- as?: ElementType;
43
- }
44
- /**
45
- * The full Tailwind v4 named color palette — every default hue, including all
46
- * five gray families. Components that accept a `color` should type it as this
47
- * so the whole palette is available.
48
- */
49
- type Color = "slate" | "gray" | "zinc" | "neutral" | "stone" | "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose";
50
- type Variant = "solid" | "outline" | "ghost" | "soft";
51
- /** Button accepts the full Tailwind v4 palette (alias of {@link Color}). */
52
- type ButtonColor = Color;
53
- /**
54
- * @deprecated Renamed to {@link ButtonColor}. `ActionColor` remains as an alias
55
- * for backward compatibility and will be removed in a future major version.
56
- */
57
- type ActionColor = ButtonColor;
58
- type Placement = "top" | "bottom" | "left" | "right" | "top-start" | "top-end" | "bottom-start" | "bottom-end";
59
-
60
- interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "color"> {
61
- /** Shape/fill variant */
62
- variant?: "default" | "circle" | "ghost";
63
- /** Standalone color (overrides state colors) */
64
- color?: ButtonColor;
65
- size?: Size;
66
- /** Behavioral states */
67
- active?: boolean;
68
- checked?: boolean;
69
- warn?: boolean;
70
- alert?: boolean;
71
- /** Leading icon slug (resolved via Icon component, e.g. "pencil", "chevron-right") */
72
- icon?: string;
73
- /** Trailing icon slug (convenience for right-side icon) */
74
- iconTrailing?: string;
75
- /** Icon placement direction */
76
- iconPlace?: "left" | "right" | "top" | "bottom" | "top left" | "top right" | "bottom left" | "bottom right" | "left top" | "left bottom" | "right top" | "right bottom";
77
- /** Pulsing alert icon slug */
78
- alertIcon?: string;
79
- /** Position alert icon on trailing side */
80
- alertIconTrailing?: boolean;
81
- /** Emoji slug (resolved via emoji-utils) */
82
- emoji?: string;
83
- /** Trailing emoji slug */
84
- emojiTrailing?: string;
85
- /** Avatar image URL */
86
- avatar?: string;
87
- /** Position avatar on trailing side */
88
- avatarTrailing?: boolean;
89
- /** Badge text */
90
- badge?: string;
91
- /** Position badge on trailing side */
92
- badgeTrailing?: boolean;
93
- /** Sort order of decorative elements: e=emoji, i=icon, a=avatar, b=badge */
94
- sort?: string;
95
- /** Show loading spinner */
96
- loading?: boolean;
97
- disabled?: boolean;
98
- /** Render as anchor tag */
99
- href?: string;
100
- /**
101
- * Anchor-mode element override — the component to render INSTEAD of the
102
- * plain `<a>` when `href` is set, e.g. a router's `<Link>` (Inertia, React
103
- * Router, Next) so the button navigates client-side. Receives `href`,
104
- * `className`, and the forwarded rest props. Ignored without `href` or when
105
- * `disabled` (the plain `<button>` renders as always).
106
- */
107
- as?: ElementType;
108
- /** Anchor `target` — only applies in `href` (anchor) mode. */
109
- target?: AnchorHTMLAttributes<HTMLAnchorElement>["target"];
110
- /** Anchor `rel` — only applies in `href` (anchor) mode. */
111
- rel?: AnchorHTMLAttributes<HTMLAnchorElement>["rel"];
112
- /** Anchor `download` — only applies in `href` (anchor) mode. */
113
- download?: AnchorHTMLAttributes<HTMLAnchorElement>["download"];
114
- /**
115
- * Collapse to icon-only when squeezed — injects the minimal Tailwind classes
116
- * (`sr-only sm:not-sr-only`) onto the label so it stays screen-reader
117
- * accessible but visually hidden on small screens. The label is also directly
118
- * targetable via `data-react-fancy-button-label` for a custom breakpoint, e.g.
119
- * `className="[&_[data-react-fancy-button-label]]:hidden md:[&_[data-react-fancy-button-label]]:inline"`.
120
- */
121
- responsive?: boolean;
122
- /** Extra classes for the label wrapper — alignment, responsive hiding, etc. */
123
- labelClassName?: string;
124
- }
125
- /**
126
- * @deprecated Renamed to {@link ButtonProps}. `ActionProps` remains as an alias
127
- * for backward compatibility and will be removed in a future major version.
128
- */
129
- type ActionProps = ButtonProps;
130
-
131
- declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
132
- /**
133
- * @deprecated Renamed to {@link Button}. `Action` remains as an alias for
134
- * backward compatibility and will be removed in a future major version.
135
- * Prefer importing `Button` from "@particle-academy/react-fancy".
136
- */
137
- declare const Action: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
138
-
139
- type AccordionOrientation = "horizontal" | "vertical";
140
- /**
141
- * Render-prop or static node accepted by Trigger.children — lets the
142
- * caller branch rendering on the section state.
143
- */
144
- type SectionRenderable = ReactNode | ((state: SectionRenderState) => ReactNode);
145
- interface SectionRenderState {
146
- /** Section's id */
147
- id: string;
148
- /** True when the section is currently open */
149
- open: boolean;
150
- /** Direction the panel is laid out in */
151
- orientation: AccordionOrientation;
152
- /** Toggle this section open/closed */
153
- toggle: () => void;
154
- }
155
- interface AccordionPanelProps {
156
- /** Layout direction. Horizontal for menus/toolbars, vertical for sidebars/panels. */
157
- orientation?: AccordionOrientation;
158
- /** Controlled list of open section ids */
159
- value?: string[];
160
- /** Default open section ids (uncontrolled) */
161
- defaultValue?: string[];
162
- /** Fires whenever the open set changes */
163
- onValueChange?: (open: string[]) => void;
164
- /** Optional class on the root container */
165
- className?: string;
166
- children: ReactNode;
167
- }
168
- interface AccordionPanelSectionProps {
169
- /** Stable id used for open-state tracking */
170
- id: string;
171
- /**
172
- * Pinned sections never collapse. Useful for an "anchor" item like a
173
- * Home button at the start of a menu.
174
- */
175
- pinned?: boolean;
176
- /** Class on the section's outer container */
177
- className?: string;
178
- /** Class applied only when the section is open */
179
- openClassName?: string;
180
- /** Class applied only when the section is collapsed */
181
- closedClassName?: string;
182
- /**
183
- * Skip the default flex layout (items-center + gap-1 + flex-row/col).
184
- * Use this for full-bleed panel sections that need their children
185
- * to stretch (e.g. a chat sidebar where the trigger should fill
186
- * full panel height). The data attributes, section context, and
187
- * conditional render of children stay in place.
188
- */
189
- unstyled?: boolean;
190
- /**
191
- * Children. Compose with `<AccordionPanel.Trigger>` and
192
- * `<AccordionPanel.Content>` — Trigger always renders, Content only
193
- * renders when the section is open.
194
- */
195
- children: ReactNode;
196
- }
197
- interface AccordionPanelTriggerProps {
198
- /**
199
- * Custom render. Receives section state — `{ open, toggle, ... }`. If
200
- * omitted, the default chevron-divider is rendered.
201
- */
202
- children?: SectionRenderable;
203
- /** Class on the trigger element */
204
- className?: string;
205
- /** Aria label override (default: "Toggle section") */
206
- "aria-label"?: string;
207
- }
208
-
209
- /**
210
- * One collapsible section inside an AccordionPanel.
211
- *
212
- * Compose with `<AccordionPanel.Trigger>` and `<AccordionPanel.Content>`
213
- * children — Content renders only when open, Trigger always renders and
214
- * adapts its look by state. Children that are not Trigger/Content are
215
- * rendered as-is, regardless of state, so static decorations stay put.
216
- *
217
- * Pinned sections never collapse and don't need a Trigger.
218
- */
219
- declare function AccordionPanelSection({ id, pinned, className, openClassName, closedClassName, unstyled, children, }: AccordionPanelSectionProps): react.JSX.Element;
220
- declare namespace AccordionPanelSection {
221
- var displayName: string;
222
- }
223
-
224
- /**
225
- * Trigger for an AccordionPanel.Section.
226
- *
227
- * Has two visual roles, picked automatically from section state:
228
- *
229
- * - When the section is OPEN: renders as a thin divider on the section's
230
- * trailing edge. Hovering reveals an inset chevron pointing toward the
231
- * section so the user knows clicking will collapse it.
232
- *
233
- * - When the section is CLOSED: renders as a standalone chevron button
234
- * in place of the section content. Clicking re-expands the section.
235
- *
236
- * Supply `children` (node or render-prop) to fully replace the default
237
- * rendering. The render-prop receives `{ open, toggle, orientation, id }`.
238
- */
239
- declare function AccordionPanelTrigger({ children, className, "aria-label": ariaLabel, }: AccordionPanelTriggerProps): react.JSX.Element;
240
- declare namespace AccordionPanelTrigger {
241
- var displayName: string;
242
- }
243
-
244
- interface AccordionPanelContentProps {
245
- children: ReactNode;
246
- className?: string;
247
- /**
248
- * Skip the default flex-row/flex-col + items-center + gap classes so the
249
- * consumer can lay out the open-state content however they want (e.g. a
250
- * full-height chat panel with header/scroll/input rows). The
251
- * `data-react-fancy-accordion-content` attribute and conditional render
252
- * (only when the section is open) are kept.
253
- */
254
- unstyled?: boolean;
255
- }
256
- /**
257
- * Wrapper for the open-state content of a Section. Renders its children
258
- * only when the parent Section is open; returns `null` otherwise.
259
- *
260
- * Use this so siblings of `<AccordionPanel.Trigger>` inside a section can
261
- * cleanly toggle in/out of the DOM.
262
- *
263
- * The default styling assumes an inline cluster — flex row (horizontal
264
- * orientation) or column (vertical), centered, with a small gap. For panel
265
- * use cases where the content needs full-bleed layout (chat panes, canvas
266
- * surfaces, etc.), pass `unstyled` and supply your own className.
267
- */
268
- declare function AccordionPanelContent({ children, className, unstyled, }: AccordionPanelContentProps): react.JSX.Element | null;
269
- declare namespace AccordionPanelContent {
270
- var displayName: string;
271
- }
272
-
273
- /**
274
- * Horizontal or vertical accordion of collapsible sections.
275
- *
276
- * Use the compound parts:
277
- * <AccordionPanel orientation="horizontal" defaultValue={["wishlist"]}>
278
- * <AccordionPanel.Section id="home" pinned>
279
- * <Button icon="home" />
280
- * </AccordionPanel.Section>
281
- * <AccordionPanel.Section id="wishlist">
282
- * <Button icon="list">Wishlist</Button>
283
- * </AccordionPanel.Section>
284
- * </AccordionPanel>
285
- *
286
- * Each non-pinned section renders a trigger (default chevron-divider) that
287
- * collapses/expands. Pass a custom `trigger` prop on a Section, or use the
288
- * exported `AccordionPanel.Trigger` directly to compose your own.
289
- */
290
- declare function AccordionPanelRoot({ orientation, value: controlledValue, defaultValue, onValueChange, className, children, }: AccordionPanelProps): react.JSX.Element;
291
- declare namespace AccordionPanelRoot {
292
- var displayName: string;
293
- }
294
- type AccordionPanelType = typeof AccordionPanelRoot & {
295
- Section: typeof AccordionPanelSection;
296
- Trigger: typeof AccordionPanelTrigger;
297
- Content: typeof AccordionPanelContent;
298
- };
299
- declare const AccordionPanel: AccordionPanelType;
300
-
301
- interface AccordionPanelContextValue {
302
- orientation: AccordionOrientation;
303
- isOpen: (id: string) => boolean;
304
- toggle: (id: string) => void;
305
- open: (id: string) => void;
306
- close: (id: string) => void;
307
- /** Ordered list of all section ids registered in this panel */
308
- sectionIds: string[];
309
- registerSection: (id: string) => () => void;
310
- }
311
- declare function useAccordionPanel(): AccordionPanelContextValue;
312
- interface AccordionSectionContextValue {
313
- id: string;
314
- open: boolean;
315
- pinned: boolean;
316
- orientation: AccordionOrientation;
317
- toggle: () => void;
318
- }
319
- declare function useAccordionSection(): AccordionSectionContextValue;
320
-
321
- interface FieldProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
322
- label?: string;
323
- description?: string;
324
- error?: string;
325
- required?: boolean;
326
- htmlFor?: string;
327
- size?: Size;
328
- children: ReactNode;
329
- className?: string;
330
- }
331
-
332
- declare function Field({ label, description, error, required, htmlFor, size, children, className, ...rest }: FieldProps): react.JSX.Element;
333
-
334
- type InputOption<V = string> = string | {
335
- value: V;
336
- label: string;
337
- disabled?: boolean;
338
- description?: string;
339
- };
340
- type InputOptionGroup<V = string> = {
341
- label: string;
342
- options: InputOption<V>[];
343
- };
344
- /**
345
- * Edit vs. read-only display. In `"view"` mode an input renders the bound value
346
- * as static text instead of an interactive control — the React/Inertia analog of
347
- * Livewire's public/bindable properties. Declared here (rather than in `mode/`)
348
- * to keep `InputBaseProps` free of an import cycle. Resolved per input via
349
- * {@link useFieldMode}: explicit prop → `<Form>`/`<FormProvider>` context → `"edit"`.
350
- */
351
- type FieldMode = "edit" | "view";
352
- interface InputBaseProps {
353
- size?: Size;
354
- dirty?: boolean;
355
- error?: string;
356
- label?: string;
357
- description?: string;
358
- required?: boolean;
359
- disabled?: boolean;
360
- className?: string;
361
- id?: string;
362
- name?: string;
363
- /** `"edit"` (default) renders the control; `"view"` renders the value as text. Overrides the `<Form mode>` context. */
364
- mode?: FieldMode;
365
- }
366
- type AffixPosition = "inside" | "outside";
367
- interface InputAffixProps {
368
- prefix?: ReactNode;
369
- suffix?: ReactNode;
370
- prefixPosition?: AffixPosition;
371
- suffixPosition?: AffixPosition;
372
- }
373
-
374
- interface InputProps extends InputBaseProps, InputAffixProps, Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "type" | "prefix"> {
375
- type?: "text" | "email" | "password" | "number" | "tel" | "url" | "search";
376
- onValueChange?: (value: string) => void;
377
- leading?: ReactNode;
378
- trailing?: ReactNode;
379
- /**
380
- * Show a toggle that reveals the value, for `type="password"`.
381
- *
382
- * Ignored on other input types — a reveal on a field that is already visible
383
- * is a button that does nothing.
384
- *
385
- * It occupies the trailing slot, so it replaces `trailing` when both are set:
386
- * the two would otherwise stack in the same corner, and the reveal is the one
387
- * a person needs to click.
388
- */
389
- reveal?: boolean;
390
- /** Controlled reveal state. Omit to let the input own it. */
391
- revealed?: boolean;
392
- onRevealedChange?: (revealed: boolean) => void;
393
- /** Accessible label for the toggle. Defaults to "Show password" / "Hide password". */
394
- revealLabel?: string;
395
- hideLabel?: string;
396
- }
397
-
398
- declare const Input: react.ForwardRefExoticComponent<InputProps & react.RefAttributes<HTMLInputElement>>;
399
-
400
- interface TextareaProps extends InputBaseProps, InputAffixProps, Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "size" | "prefix"> {
401
- autoResize?: boolean;
402
- minRows?: number;
403
- maxRows?: number;
404
- onValueChange?: (value: string) => void;
405
- }
406
-
407
- declare const Textarea: react.ForwardRefExoticComponent<TextareaProps & react.RefAttributes<HTMLTextAreaElement>>;
408
-
409
- interface SelectProps extends InputBaseProps, InputAffixProps, Omit<SelectHTMLAttributes<HTMLSelectElement>, "size" | "prefix" | "multiple"> {
410
- /** Options list — strings or objects with value/label */
411
- list: InputOption[] | InputOptionGroup[];
412
- placeholder?: string;
413
- /** Callback for single-select value changes */
414
- onValueChange?: (value: string) => void;
415
- /** Layout variant. "native" uses <select>, "listbox" uses a custom dropdown. Default: "native" */
416
- variant?: "native" | "listbox";
417
- /** Enable multi-select (listbox variant only) */
418
- multiple?: boolean;
419
- /** Controlled multi-select value */
420
- values?: string[];
421
- /** Default multi-select value (uncontrolled) */
422
- defaultValues?: string[];
423
- /** Callback for multi-select value changes */
424
- onValuesChange?: (values: string[]) => void;
425
- /** Enable search/filter within the dropdown (listbox variant only) */
426
- searchable?: boolean;
427
- /**
428
- * Allow creating new options by typing in the dropdown's text input
429
- * (listbox variant only). Automatically enables the text input.
430
- */
431
- creatable?: boolean;
432
- /** Callback invoked when a new option is created from user input */
433
- onCreate?: (label: string) => void;
434
- /** Label prefix for the "Create" affordance. Default: "Create" */
435
- createLabel?: string;
436
- /** Suffix for the selected count display. Default: "selected" */
437
- selectedSuffix?: string;
438
- /** Selection indicator style. Default: "check" */
439
- indicator?: "check" | "checkbox";
440
- }
441
-
442
- declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLSelectElement>>;
443
-
444
- interface CheckboxProps extends Omit<InputBaseProps, "label">, Omit<HTMLAttributes<HTMLDivElement>, "color" | "defaultChecked" | "onChange" | "id"> {
445
- checked?: boolean;
446
- defaultChecked?: boolean;
447
- onCheckedChange?: (checked: boolean) => void;
448
- indeterminate?: boolean;
449
- label?: string;
450
- }
451
-
452
- declare const Checkbox: react.ForwardRefExoticComponent<CheckboxProps & react.RefAttributes<HTMLInputElement>>;
453
-
454
- interface CheckboxGroupProps<V = string> extends Omit<InputBaseProps, "id"> {
455
- list: InputOption<V>[];
456
- value?: V[];
457
- defaultValue?: V[];
458
- onValueChange?: (values: V[]) => void;
459
- orientation?: "horizontal" | "vertical";
460
- }
461
-
462
- declare function CheckboxGroup<V = string>({ size, dirty, error, label, description, required, disabled, className, name, list, value: controlledValue, defaultValue, onValueChange, orientation, mode, ...rest }: CheckboxGroupProps<V>): react.JSX.Element;
463
- declare namespace CheckboxGroup {
464
- var displayName: string;
465
- }
466
-
467
- interface RadioGroupProps<V = string> extends Omit<InputBaseProps, "id"> {
468
- list: InputOption<V>[];
469
- value?: V;
470
- defaultValue?: V;
471
- onValueChange?: (value: V) => void;
472
- orientation?: "horizontal" | "vertical";
473
- }
474
-
475
- declare function RadioGroup<V = string>({ size, dirty, error, label, description, required, disabled, className, name, list, value: controlledValue, defaultValue, onValueChange, orientation, mode, ...rest }: RadioGroupProps<V>): react.JSX.Element;
476
- declare namespace RadioGroup {
477
- var displayName: string;
478
- }
479
-
480
- interface SwitchProps extends Omit<InputBaseProps, "label">, Omit<HTMLAttributes<HTMLDivElement>, "color" | "defaultChecked" | "onChange" | "id"> {
481
- checked?: boolean;
482
- defaultChecked?: boolean;
483
- onCheckedChange?: (checked: boolean) => void;
484
- color?: Color;
485
- label?: string;
486
- }
487
-
488
- declare const Switch: react.ForwardRefExoticComponent<SwitchProps & react.RefAttributes<HTMLButtonElement>>;
489
-
490
- interface SliderBaseProps extends InputBaseProps {
491
- min?: number;
492
- max?: number;
493
- step?: number;
494
- showValue?: boolean;
495
- marks?: {
496
- value: number;
497
- label?: string;
498
- }[];
499
- prefix?: ReactNode;
500
- suffix?: ReactNode;
501
- }
502
- interface SliderSingleProps extends SliderBaseProps {
503
- range?: false;
504
- value?: number;
505
- defaultValue?: number;
506
- onValueChange?: (value: number) => void;
507
- }
508
- interface SliderRangeProps extends SliderBaseProps {
509
- range: true;
510
- value?: [number, number];
511
- defaultValue?: [number, number];
512
- onValueChange?: (value: [number, number]) => void;
513
- }
514
- type SliderProps = SliderSingleProps | SliderRangeProps;
515
-
516
- declare const Slider: react.ForwardRefExoticComponent<SliderProps & react.RefAttributes<HTMLInputElement>>;
517
-
518
- interface MultiSwitchProps<V = string> extends InputBaseProps {
519
- list: InputOption<V>[];
520
- value?: V;
521
- defaultValue?: V;
522
- onValueChange?: (value: V) => void;
523
- linear?: boolean;
524
- }
525
-
526
- declare function MultiSwitch<V = string>({ size, dirty, error, label, description, required, disabled, className, id, name, list, value: controlledValue, defaultValue, onValueChange, linear, mode, ...rest }: MultiSwitchProps<V>): react.JSX.Element;
527
- declare namespace MultiSwitch {
528
- var displayName: string;
529
- }
530
-
531
- interface DatePickerBaseProps extends InputBaseProps {
532
- min?: string;
533
- max?: string;
534
- includeTime?: boolean;
535
- }
536
- interface DatePickerSingleProps extends DatePickerBaseProps {
537
- range?: false;
538
- value?: string;
539
- defaultValue?: string;
540
- onValueChange?: (value: string) => void;
541
- }
542
- interface DatePickerRangeProps extends DatePickerBaseProps {
543
- range: true;
544
- value?: [string, string];
545
- defaultValue?: [string, string];
546
- onValueChange?: (value: [string, string]) => void;
547
- }
548
- type DatePickerProps = DatePickerSingleProps | DatePickerRangeProps;
549
-
550
- declare const DatePicker: react.ForwardRefExoticComponent<DatePickerProps & react.RefAttributes<HTMLInputElement>>;
551
-
552
- interface FormProviderProps {
553
- /** `"edit"` (default) or `"view"` — applied to every input below that doesn't override it. */
554
- mode?: FieldMode;
555
- children?: ReactNode;
556
- }
557
- interface FormProps extends FormHTMLAttributes<HTMLFormElement> {
558
- /** `"edit"` (default) or `"view"` — applied to every input inside. */
559
- mode?: FieldMode;
560
- }
561
- /**
562
- * Provide a form-wide {@link FieldMode} to every Fancy input below — flip a
563
- * whole form from editable to read-only display in one place. Pure context, no
564
- * DOM (use it to wrap a filter bar or any tree that isn't a `<form>`).
565
- */
566
- declare function FormProvider({ mode, children }: FormProviderProps): react.JSX.Element;
567
- /**
568
- * A real `<form>` that also broadcasts a form-wide {@link FieldMode} to the
569
- * inputs inside it (sugar over {@link FormProvider}). Per-input `mode` props
570
- * still override this.
571
- */
572
- declare function Form({ mode, children, ...formProps }: FormProps): react.JSX.Element;
573
-
574
- interface DisplayValueProps {
575
- /** The formatted value to show. Empty / null / undefined renders `empty`. */
576
- children?: ReactNode;
577
- size?: Size;
578
- /** Static adornment rendered before the value (mirrors an input's `leading`/`prefix`). */
579
- leading?: ReactNode;
580
- /** Static adornment rendered after the value (mirrors an input's `trailing`/`suffix`). */
581
- trailing?: ReactNode;
582
- /** Shown when the value is empty. Default `—`. */
583
- empty?: ReactNode;
584
- /** When true the value is clickable to enter edit mode (inline click-to-edit). */
585
- interactive?: boolean;
586
- /** Called when an interactive value is activated (click / Enter / Space). */
587
- onActivate?: () => void;
588
- className?: string;
589
- }
590
- /**
591
- * The read-only counterpart to an `<input>`. Renders a non-interactive value
592
- * with the same size rhythm as the editable control (reusing
593
- * {@link inputSizeClasses}) but without the border / background / focus ring.
594
- *
595
- * When `interactive` (inline click-to-edit), the value becomes a focusable,
596
- * hoverable target that calls `onActivate` on click / Enter / Space to swap in
597
- * the real control. Dropped into the SAME `Field` wrapper the editable control
598
- * uses, so label / description / error chrome stays byte-identical between the
599
- * display and the editor.
600
- *
601
- * Carries `data-react-fancy-display` / `data-mode="view"` stable handles for
602
- * agents and tests (Human+ contract).
603
- */
604
- declare function DisplayValue({ children, size, leading, trailing, empty, interactive, onActivate, className, }: DisplayValueProps): react.JSX.Element;
605
-
606
- interface FieldModeContextValue {
607
- mode: FieldMode;
608
- }
609
- declare const FieldModeContext: react.Context<FieldModeContextValue | null>;
610
- /**
611
- * Resolve the effective mode for an input. Precedence: an explicit prop wins,
612
- * then the nearest `<Form>` / `<FormProvider>` context, then `"edit"`.
613
- *
614
- * Deliberately tolerant (returns `"edit"` outside any provider) — unlike a slot
615
- * guard — so every input works standalone with zero context and existing call
616
- * sites behave identically.
617
- */
618
- declare function useFieldMode(explicit?: FieldMode): FieldMode;
619
-
620
- type CarouselVariant = "directional" | "wizard";
621
- interface CarouselContextValue {
622
- activeIndex: number;
623
- totalSlides: number;
624
- next: () => void;
625
- prev: () => void;
626
- goTo: (index: number) => void;
627
- registerSlides: (count: number) => void;
628
- variant: CarouselVariant;
629
- loop: boolean;
630
- slideNames: string[];
631
- registerSlideNames: (names: string[]) => void;
632
- onFinish?: () => void;
633
- headless: boolean;
634
- }
635
- interface CarouselProps {
636
- children: ReactNode;
637
- defaultIndex?: number;
638
- activeIndex?: number;
639
- onIndexChange?: (index: number) => void;
640
- className?: string;
641
- autoPlay?: boolean;
642
- interval?: number;
643
- loop?: boolean;
644
- variant?: CarouselVariant;
645
- headless?: boolean;
646
- onFinish?: () => void;
647
- }
648
- interface CarouselSlideProps {
649
- children: ReactNode;
650
- className?: string;
651
- name?: string;
652
- }
653
- interface CarouselControlsProps {
654
- className?: string;
655
- prevLabel?: ReactNode;
656
- nextLabel?: ReactNode;
657
- finishLabel?: ReactNode;
658
- }
659
- interface CarouselStepsProps {
660
- className?: string;
661
- }
662
- interface CarouselPanelsProps {
663
- children: ReactNode;
664
- className?: string;
665
- transition?: "none" | "fade";
666
- }
667
-
668
- declare const Carousel: react.ForwardRefExoticComponent<CarouselProps & react.RefAttributes<HTMLDivElement>> & {
669
- Panels: react.ForwardRefExoticComponent<CarouselPanelsProps & react.RefAttributes<HTMLDivElement>>;
670
- Slide: react.ForwardRefExoticComponent<CarouselSlideProps & react.RefAttributes<HTMLDivElement>>;
671
- Controls: react.ForwardRefExoticComponent<CarouselControlsProps & react.RefAttributes<HTMLDivElement>>;
672
- Steps: react.ForwardRefExoticComponent<CarouselStepsProps & react.RefAttributes<HTMLDivElement>>;
673
- };
674
-
675
- declare function useCarousel(): CarouselContextValue;
676
-
677
- interface ColorPickerProps {
678
- value?: string;
679
- defaultValue?: string;
680
- onChange?: (color: string) => void;
681
- presets?: string[];
682
- size?: "sm" | "md" | "lg";
683
- variant?: "outline" | "filled";
684
- disabled?: boolean;
685
- className?: string;
686
- /** `"edit"` (default) renders the control; `"view"` renders the value as text. */
687
- mode?: FieldMode;
688
- }
689
-
690
- declare const ColorPicker: react.ForwardRefExoticComponent<ColorPickerProps & react.RefAttributes<HTMLDivElement>>;
691
-
692
- /**
693
- * Full Unicode 15.1 emoji set, generated from emoji-test.txt.
694
- * DO NOT EDIT BY HAND — run scripts/generate-emoji-data.mjs.
695
- */
696
- type EmojiEntry = {
697
- char: string;
698
- name: string;
699
- skinTones?: [string, string, string, string, string];
700
- };
701
- type EmojiCategory = {
702
- icon: string;
703
- label: string;
704
- emojis: EmojiEntry[];
705
- };
706
- declare const EMOJI_CATEGORY_ORDER: readonly ["smileys", "people", "animals", "food", "travel", "activities", "objects", "symbols", "flags"];
707
- type EmojiCategoryKey = typeof EMOJI_CATEGORY_ORDER[number];
708
- declare const EMOJI_DATA: Record<EmojiCategoryKey, EmojiCategory>;
709
- type EmojiFlatEntry = EmojiEntry & {
710
- category: EmojiCategoryKey;
711
- };
712
- declare const EMOJI_ENTRIES: EmojiFlatEntry[];
713
-
714
- declare const SKIN_TONES: readonly ["light", "medium-light", "medium", "medium-dark", "dark"];
715
- type SkinTone = typeof SKIN_TONES[number];
716
- type IndexedEntry = EmojiEntry & {
717
- category: EmojiCategoryKey;
718
- };
719
- /** Resolve an emoji name to its character. */
720
- declare function resolve(name: string): string | undefined;
721
- /** Search emojis by name substring. Returns matching base emoji characters. */
722
- declare function search(query: string): string[];
723
- /** Find an emoji entry by its character (toned or base). */
724
- declare function find(char: string): IndexedEntry | undefined;
725
- /** Return the 5-tone variant array for an emoji (by char, toned or base). */
726
- declare function skinTones(char: string): readonly [string, string, string, string, string] | undefined;
727
- /** Whether an emoji supports skin tones. */
728
- declare function hasSkinTones(char: string): boolean;
729
- /** Return the toned variant for an emoji, or the base if no tones. */
730
- declare function applyTone(char: string, tone: SkinTone | null): string;
731
-
732
- interface EmojiProps {
733
- name?: string;
734
- emoji?: string;
735
- tone?: SkinTone;
736
- size?: "sm" | "md" | "lg" | "xl";
737
- className?: string;
738
- }
739
-
740
- declare function Emoji({ name, emoji, tone, size, className }: EmojiProps): react.JSX.Element | null;
741
-
742
- interface EmojiSelectProps {
743
- value?: string;
744
- defaultValue?: string;
745
- onChange?: (emoji: string) => void;
746
- placeholder?: string;
747
- className?: string;
748
- }
749
-
750
- declare function EmojiSelect({ value, defaultValue, onChange, placeholder, className }: EmojiSelectProps): react.JSX.Element;
751
-
752
- interface TableProps {
753
- children: ReactNode;
754
- className?: string;
755
- }
756
- interface TableHeadProps {
757
- children: ReactNode;
758
- className?: string;
759
- }
760
- interface TableBodyProps {
761
- children: ReactNode;
762
- className?: string;
763
- }
764
- interface TableRowProps extends Omit<HTMLAttributes<HTMLTableRowElement>, "onClick"> {
765
- children: ReactNode;
766
- className?: string;
767
- onClick?: () => void;
768
- tray?: ReactNode;
769
- trayTriggerPosition?: "start" | "end" | "hidden";
770
- expanded?: boolean;
771
- defaultExpanded?: boolean;
772
- onExpandedChange?: (expanded: boolean) => void;
773
- }
774
- interface TableRowTrayProps {
775
- children: ReactNode;
776
- className?: string;
777
- }
778
- /**
779
- * Extends the native cell attributes so `colSpan`/`rowSpan` (full-span
780
- * empty-state rows, trays) plus `onClick`, `style`, `scope`, `data-*`, etc. are
781
- * forwarded onto the underlying `<td>`/`<th>` instead of silently dropped.
782
- */
783
- interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {
784
- /** Render a `<th>` header cell instead of a `<td>`. */
785
- header?: boolean;
786
- }
787
- interface TableColumnProps {
788
- label: string;
789
- sortKey?: string;
790
- className?: string;
791
- }
792
- interface TablePaginationProps {
793
- className?: string;
794
- total: number;
795
- pageSize?: number;
796
- }
797
- interface TableSearchProps {
798
- className?: string;
799
- placeholder?: string;
800
- }
801
- interface TableTrayProps {
802
- children: ReactNode;
803
- className?: string;
804
- }
805
-
806
- declare function TableHead({ children, className }: TableHeadProps): react.JSX.Element;
807
-
808
- declare function TableBody({ children, className }: TableBodyProps): react.JSX.Element;
809
-
810
- declare function TableRow({ children, className, onClick, tray, trayTriggerPosition, expanded: controlledExpanded, defaultExpanded, onExpandedChange, ...rest }: TableRowProps): react.JSX.Element;
811
-
812
- declare function TableCell({ children, className, header, ...rest }: TableCellProps): react.JSX.Element;
813
-
814
- declare function TableColumn({ label, sortKey, className }: TableColumnProps): react.JSX.Element;
815
-
816
- declare function TablePagination({ className, total, pageSize, }: TablePaginationProps): react.JSX.Element | null;
817
-
818
- declare function TableSearch({ className, placeholder, }: TableSearchProps): react.JSX.Element;
819
-
820
- declare function TableTray({ children, className }: TableTrayProps): react.JSX.Element;
821
-
822
- declare function TableRowTray({ children, className }: TableRowTrayProps): react.JSX.Element;
823
-
824
- declare function TableRoot({ children, className }: TableProps): react.JSX.Element;
825
- declare const Table: typeof TableRoot & {
826
- Head: typeof TableHead;
827
- Body: typeof TableBody;
828
- Row: typeof TableRow;
829
- Cell: typeof TableCell;
830
- Column: typeof TableColumn;
831
- Pagination: typeof TablePagination;
832
- Search: typeof TableSearch;
833
- Tray: typeof TableTray;
834
- RowTray: typeof TableRowTray;
835
- };
836
-
837
- interface PortalProps {
838
- children: ReactNode;
839
- container?: HTMLElement;
840
- }
841
- declare function Portal({ children, container }: PortalProps): react.ReactPortal | null;
842
-
843
- interface HeadingProps extends HTMLAttributes<HTMLHeadingElement> {
844
- /** Which heading element to render */
845
- as?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
846
- /**
847
- * Text size, on a SEMANTIC ramp — the names are steps on this scale, not
848
- * Tailwind class names. `xl` is `text-2xl` and `2xl` is `text-4xl`, and that
849
- * offset has been true since the component shipped, so the display steps
850
- * below continue the same ramp rather than re-basing it and silently
851
- * resizing every existing heading.
852
- *
853
- * `3xl`–`7xl` are DISPLAY sizes: hero type, "typography at maximum volume".
854
- * They carry tighter tracking, because letter-spacing tuned for body-adjacent
855
- * headings reads loose and unset once type gets big.
856
- */
857
- size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl";
858
- /** Font weight */
859
- weight?: "normal" | "medium" | "semibold" | "bold";
860
- }
861
-
862
- declare const Heading: react.ForwardRefExoticComponent<HeadingProps & react.RefAttributes<HTMLHeadingElement>>;
863
-
864
- interface TextProps extends HTMLAttributes<HTMLElement> {
865
- /** Which element to render */
866
- as?: "p" | "span" | "div" | "label";
867
- /** Text size */
868
- size?: "xs" | "sm" | "md" | "lg";
869
- /** Font weight */
870
- weight?: "normal" | "medium" | "semibold" | "bold";
871
- /** Text color preset */
872
- color?: "default" | "muted" | "accent" | "danger" | "success";
873
- }
874
-
875
- declare const Text: react.ForwardRefExoticComponent<TextProps & react.RefAttributes<HTMLElement>>;
876
-
877
- interface SeparatorProps {
878
- /** Separator direction */
879
- orientation?: "horizontal" | "vertical";
880
- /** Optional centered label text */
881
- label?: string;
882
- /** Additional CSS classes */
883
- className?: string;
884
- }
885
-
886
- declare const Separator: react.ForwardRefExoticComponent<SeparatorProps & react.RefAttributes<HTMLDivElement>>;
887
-
888
- interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
889
- /** Badge color — any color in the Tailwind v4 palette. */
890
- color?: Color;
891
- /** Visual variant */
892
- variant?: "solid" | "outline" | "soft";
893
- /** Badge size */
894
- size?: "sm" | "md" | "lg";
895
- /** Show a small dot indicator before text */
896
- dot?: boolean;
897
- }
898
-
899
- declare const Badge: react.ForwardRefExoticComponent<BadgeProps & react.RefAttributes<HTMLSpanElement>>;
900
-
901
- interface IconProps extends HTMLAttributes<HTMLSpanElement> {
902
- /** Icon container size */
903
- size?: "xs" | "sm" | "md" | "lg" | "xl";
904
- /** Icon name to resolve from the registered icon set (e.g., "rocket", "arrow-right") */
905
- name?: string;
906
- /** Which registered icon set to use (defaults to the configured default) */
907
- iconSet?: string;
908
- }
909
-
910
- declare const Icon: react.ForwardRefExoticComponent<IconProps & react.RefAttributes<HTMLSpanElement>>;
911
-
912
- interface IconSet {
913
- resolve: (name: string) => ComponentType<{
914
- className?: string;
915
- size?: number;
916
- }> | null;
917
- }
918
-
919
- /** Register an icon set as an addendum (supplements every base set). */
920
- declare function registerIconAddendum(set: IconSet): void;
921
- /**
922
- * Register individual icon components by their kebab-case name.
923
- *
924
- * ```tsx
925
- * import { registerIcons } from "@particle-academy/react-fancy";
926
- * import { Home, Settings, Mail } from "lucide-react";
927
- *
928
- * registerIcons({ Home, Settings, Mail });
929
- * ```
930
- *
931
- * Icons are registered into the default "lucide" icon set and resolved
932
- * by the `<Icon name="home" />` component using kebab-case names.
933
- */
934
- declare function registerIcons(icons: Record<string, ComponentType<{
935
- className?: string;
936
- size?: number;
937
- }>>): void;
938
- declare function registerIconSet(name: string, set: IconSet): void;
939
- declare function configureIcons(options: {
940
- defaultSet?: string;
941
- }): void;
942
-
943
- interface AvatarProps {
944
- /** Image source URL */
945
- src?: string;
946
- /** Alt text for the image */
947
- alt?: string;
948
- /** Fallback initials when no image is provided */
949
- fallback?: string;
950
- /** Avatar size */
951
- size?: "xs" | "sm" | "md" | "lg" | "xl";
952
- /** Online status indicator */
953
- status?: "online" | "offline" | "busy" | "away";
954
- /**
955
- * Pulsing halo ring around the avatar. `true` = neutral (violet) glow;
956
- * `"xp"` tints green, `"achievement"` tints amber. Pulse respects
957
- * `prefers-reduced-motion` (the steady ring stays, the pulse drops).
958
- */
959
- glow?: boolean | "xp" | "achievement";
960
- /** Additional CSS classes */
961
- className?: string;
962
- }
963
-
964
- declare const Avatar: react.ForwardRefExoticComponent<AvatarProps & react.RefAttributes<HTMLDivElement>>;
965
-
966
- interface SkeletonProps {
967
- /** Shape of the skeleton placeholder */
968
- shape?: "rect" | "circle" | "text";
969
- /** Custom width (CSS value or number in px) */
970
- width?: string | number;
971
- /** Custom height (CSS value or number in px) */
972
- height?: string | number;
973
- /** Additional CSS classes */
974
- className?: string;
975
- }
976
-
977
- declare const Skeleton: react.ForwardRefExoticComponent<SkeletonProps & react.RefAttributes<HTMLDivElement>>;
978
-
979
- interface ProgressProps {
980
- value?: number;
981
- max?: number;
982
- variant?: "bar" | "circular";
983
- /**
984
- * Named scale, or an explicit pixel diameter for `variant="circular"`.
985
- *
986
- * The scale topped out at 64px and was written inline, so a larger ring was
987
- * impossible rather than merely awkward.
988
- */
989
- size?: "sm" | "md" | "lg" | number;
990
- /** Ring thickness in px (circular only). Derived from the diameter if unset. */
991
- strokeWidth?: number;
992
- color?: Color;
993
- indeterminate?: boolean;
994
- showValue?: boolean;
995
- className?: string;
996
- }
997
-
998
- declare const Progress: react.ForwardRefExoticComponent<ProgressProps & react.RefAttributes<HTMLDivElement>>;
999
-
1000
- interface BrandProps {
1001
- logo?: ReactNode;
1002
- name?: string;
1003
- tagline?: string;
1004
- size?: "sm" | "md" | "lg";
1005
- className?: string;
1006
- }
1007
- interface BrandMarkProps extends HTMLAttributes<HTMLSpanElement> {
1008
- /** What sits in the square — a letter, an initial, an icon. */
1009
- glyph?: ReactNode;
1010
- /**
1011
- * `"sm" | "md" | "lg"`, or an exact pixel size when a design calls for one
1012
- * the scale does not have.
1013
- */
1014
- size?: "sm" | "md" | "lg" | number;
1015
- }
1016
-
1017
- declare const Brand: react.ForwardRefExoticComponent<BrandProps & react.RefAttributes<HTMLDivElement>> & {
1018
- Mark: react.ForwardRefExoticComponent<BrandMarkProps & react.RefAttributes<HTMLSpanElement>>;
1019
- };
1020
-
1021
- /**
1022
- * The square logo tile — a glyph centred in a rounded, coloured square.
1023
- *
1024
- * `Brand` has always taken its mark as a caller-supplied `logo` node, which is
1025
- * exactly why every page that wanted one rebuilt the same square: fixed size,
1026
- * rounded, grid-centred, bold, white, and `shrink-0` so a flex row never
1027
- * squashes it. Four surfaces carried that block inline.
1028
- *
1029
- * ## It ships no brand colour, deliberately
1030
- *
1031
- * The default is a neutral zinc tile. A component library inventing your brand
1032
- * gradient would be wrong, and would be the first thing every consumer had to
1033
- * override — so the FILL is `className`'s job and only the geometry lives here.
1034
- * That is also what the duplicated code actually had in common: each copy
1035
- * already pulled its gradient from a token class and hand-rolled the box.
1036
- */
1037
- declare const BrandMark: react.ForwardRefExoticComponent<BrandMarkProps & react.RefAttributes<HTMLSpanElement>>;
1038
-
1039
- interface EyebrowProps extends HTMLAttributes<HTMLDivElement> {
1040
- /** The section marker — `"01"`, `"00"`, a roman numeral. Emphasised. */
1041
- num?: ReactNode;
1042
- /** The section name. Rendered after `num` and an em dash. */
1043
- label?: ReactNode;
1044
- /** A second item pushed to the far end of the line. */
1045
- aside?: ReactNode;
1046
- /** Draw the hairline rule under the head. Default `false`. */
1047
- rule?: boolean;
1048
- /** Full control — replaces the `num`/`label` pair, keeping the arrangement. */
1049
- children?: ReactNode;
1050
- }
1051
-
1052
- /**
1053
- * The mono running head that opens a section — `01 — SELECTED WORK`, optionally
1054
- * over a hairline rule, with a second item pushed to the far end.
1055
- *
1056
- * Thirty-six surfaces in the Inspiration Gallery carry some version of this. It
1057
- * is a small component for a reason: what they share is the STRUCTURE (a
1058
- * numbered marker, a label, an optional trailing aside, an optional rule) while
1059
- * every one of them restyles the type. So this owns the arrangement and the
1060
- * uppercase mono default, and gets out of the way of `className`.
1061
- *
1062
- * `num` is emphasised rather than styled a fixed colour, because in half the
1063
- * designs it is the only part of the line that is not muted — and expressing
1064
- * that with a `<b>` keeps it meaningful when the styling is replaced wholesale.
1065
- */
1066
- declare const Eyebrow: react.ForwardRefExoticComponent<EyebrowProps & react.RefAttributes<HTMLDivElement>>;
1067
-
1068
- interface KbdProps extends HTMLAttributes<HTMLElement> {
1069
- /**
1070
- * Render a chord as separate keys — `keys={["Cmd", "K"]}` renders two caps
1071
- * with a separator between them, rather than one wide cap reading "Cmd K".
1072
- */
1073
- keys?: ReactNode[];
1074
- /** Separator drawn between chord keys. Default `"+"`. */
1075
- separator?: ReactNode;
1076
- size?: "xs" | "sm" | "md";
1077
- children?: ReactNode;
1078
- }
1079
-
1080
- /**
1081
- * A keyboard key cap — `<Kbd>K</Kbd>`, or a chord via `<Kbd keys={["Cmd","K"]} />`.
1082
- *
1083
- * Twenty `<kbd>` elements across this suite's own showcase carried six
1084
- * different className recipes for the same thing: rounded, bordered, mono,
1085
- * small, with a dark-mode counterpart. None of them disagreed on intent; they
1086
- * disagreed on which greys.
1087
- *
1088
- * `min-w` is the detail worth having in one place: without it a `K` cap is
1089
- * visibly narrower than an `Esc` cap beside it, and a row of single letters
1090
- * reads as ragged rather than as keys.
1091
- */
1092
- declare const Kbd: react.ForwardRefExoticComponent<KbdProps & react.RefAttributes<HTMLElement>>;
1093
-
1094
- interface IndexListItem {
1095
- /** Row marker — `"01"`, `"1."`. Rendered tabular so the column aligns. */
1096
- num?: ReactNode;
1097
- /** The row's subject, and the link text when `href` is set. */
1098
- title: ReactNode;
1099
- /** Secondary text after the title. */
1100
- meta?: ReactNode;
1101
- /** Trailing value, pushed to the far end — a year, a count. */
1102
- value?: ReactNode;
1103
- /** Makes the whole row clickable. See the note on nested anchors. */
1104
- href?: string;
1105
- /** Stable key. Defaults to the index. */
1106
- id?: string;
1107
- }
1108
- interface IndexListProps extends Omit<HTMLAttributes<HTMLOListElement>, "children"> {
1109
- items: IndexListItem[];
1110
- /**
1111
- * Render an `<a>` for `href`. Pass your router's link (Inertia `Link`,
1112
- * `next/link`) to keep client-side navigation. It receives `href`,
1113
- * `className` and `children`.
1114
- */
1115
- linkAs?: React.ElementType;
1116
- }
1117
-
1118
- /**
1119
- * A flush-left numbered index — `num · title · meta · trailing value`, each row
1120
- * optionally a single clickable target.
1121
- *
1122
- * Thirteen gallery styles build this, and the sandbox uses a `stretched-link`
1123
- * treatment in twenty-four places.
1124
- *
1125
- * ## Exactly one anchor per row, by construction
1126
- *
1127
- * The row is `relative` and the title's `<a>` carries `after:absolute
1128
- * after:inset-0`, so the anchor's own pseudo-element covers the row. The
1129
- * alternative — wrapping the row in an `<a>` and putting more links inside —
1130
- * produces nested anchors, which is issue #418: the browser silently
1131
- * restructures that DOM, so the server HTML and the client tree disagree and
1132
- * hydration blows up. A test asserts one anchor per row for that reason.
1133
- *
1134
- * The link text stays the title rather than becoming an `aria-label` on an
1135
- * invisible overlay, so the accessible name is the thing you would say out loud.
1136
- */
1137
- declare const IndexList: react.ForwardRefExoticComponent<IndexListProps & react.RefAttributes<HTMLOListElement>>;
1138
-
1139
- interface PullQuoteProps extends Omit<HTMLAttributes<HTMLQuoteElement>, "cite"> {
1140
- /** Who said it. Rendered in a `<cite>`. */
1141
- attribution?: ReactNode;
1142
- /** Where it is from — publication, page, role. Follows the attribution. */
1143
- source?: ReactNode;
1144
- /** URL the quote came from. Becomes the `<blockquote cite>` attribute. */
1145
- citeUrl?: string;
1146
- /** Rule-bracketed treatment: hairlines above and below. Default `false`. */
1147
- rule?: boolean;
1148
- children?: ReactNode;
1149
- }
1150
-
1151
- /**
1152
- * A pull quote — the oversized line lifted out of body copy, with optional
1153
- * attribution and a rule-bracketed treatment.
1154
- *
1155
- * Twelve gallery styles build one. The reason this is a component rather than a
1156
- * class is the same reason `<Kbd>` renders a real `<kbd>`: of the eight quote
1157
- * elements in those styles, **one** was a `<blockquote>` — five were `<p>` and
1158
- * two were `<div>` — and **none** used `<cite>` for the attribution. They all
1159
- * look right and none of them says what it is.
1160
- *
1161
- * `citeUrl` maps to `<blockquote cite>`, which is the attribute's actual job
1162
- * (the source URL) and is routinely confused with the visible `<cite>` element
1163
- * (the work's title). Keeping them as separate props stops the two collapsing
1164
- * into one another.
1165
- */
1166
- declare const PullQuote: react.ForwardRefExoticComponent<PullQuoteProps & react.RefAttributes<HTMLQuoteElement>>;
1167
-
1168
- interface StatProps extends HTMLAttributes<HTMLDivElement> {
1169
- /** The figure itself — `"2016"`, `"120+"`, `"08"`. */
1170
- value?: ReactNode;
1171
- /** The caption under it. */
1172
- label?: ReactNode;
1173
- size?: "sm" | "md" | "lg";
1174
- }
1175
- interface StatBandProps extends HTMLAttributes<HTMLDivElement> {
1176
- /** Columns in the band. Default `4`. */
1177
- columns?: number;
1178
- }
1179
-
1180
- declare const Stat: react.ForwardRefExoticComponent<StatProps & react.RefAttributes<HTMLDivElement>> & {
1181
- Band: react.ForwardRefExoticComponent<StatBandProps & react.RefAttributes<HTMLDivElement>>;
1182
- };
1183
-
1184
- /**
1185
- * The row a set of `<Stat>`s sits in.
1186
- *
1187
- * A plain grid, but it is the reason `<Stat>` defaults to `tabular-nums`: a
1188
- * figure alone can be proportional without anyone noticing, and only becomes
1189
- * wrong once it has neighbours to fail to line up with.
1190
- */
1191
- declare const StatBand: react.ForwardRefExoticComponent<StatBandProps & react.RefAttributes<HTMLDivElement>>;
1192
-
1193
- interface ProfileProps {
1194
- src?: string;
1195
- alt?: string;
1196
- fallback?: string;
1197
- name: string;
1198
- subtitle?: string;
1199
- size?: "sm" | "md" | "lg";
1200
- status?: "online" | "offline" | "busy" | "away";
1201
- className?: string;
1202
- }
1203
-
1204
- declare const Profile: react.ForwardRefExoticComponent<ProfileProps & react.RefAttributes<HTMLDivElement>>;
1205
-
1206
- interface CardProps extends HTMLAttributes<HTMLDivElement> {
1207
- variant?: "outlined" | "elevated" | "flat";
1208
- padding?: "none" | "sm" | "md" | "lg";
1209
- /**
1210
- * Card is a link or a grid tile: adds the hover lift + border/shadow
1211
- * response, and clips children to the rounded corners so a `Card.Media`
1212
- * sits flush.
1213
- */
1214
- interactive?: boolean;
1215
- }
1216
- interface CardMediaProps extends HTMLAttributes<HTMLDivElement> {
1217
- /** Image URL. Omit for a pure colour/gradient tile. */
1218
- src?: string;
1219
- alt?: string;
1220
- /** CSS `aspect-ratio`. Default `"16/9"`. Ignored when `height` is set. */
1221
- ratio?: string;
1222
- /** Fixed height instead of an aspect ratio. */
1223
- height?: number | string;
1224
- /**
1225
- * Shown UNDER the image — while it loads, and permanently if it never
1226
- * arrives. Any CSS background value, so a gradient works.
1227
- */
1228
- background?: string;
1229
- /** `object-position` for the image. Default `"center"`. */
1230
- objectPosition?: string;
1231
- loading?: "lazy" | "eager";
1232
- /** Slots pinned to the media's corners — a number chip, a status pill. */
1233
- topLeft?: ReactNode;
1234
- topRight?: ReactNode;
1235
- bottomLeft?: ReactNode;
1236
- bottomRight?: ReactNode;
1237
- }
1238
- interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {
1239
- }
1240
- interface CardBodyProps extends HTMLAttributes<HTMLDivElement> {
1241
- }
1242
- interface CardFooterProps extends HTMLAttributes<HTMLDivElement> {
1243
- }
1244
-
1245
- declare const Card: react.ForwardRefExoticComponent<CardProps & react.RefAttributes<HTMLDivElement>> & {
1246
- Media: react.ForwardRefExoticComponent<CardMediaProps & react.RefAttributes<HTMLDivElement>>;
1247
- Header: react.ForwardRefExoticComponent<CardHeaderProps & react.RefAttributes<HTMLDivElement>>;
1248
- Body: react.ForwardRefExoticComponent<CardBodyProps & react.RefAttributes<HTMLDivElement>>;
1249
- Footer: react.ForwardRefExoticComponent<CardFooterProps & react.RefAttributes<HTMLDivElement>>;
1250
- };
1251
-
1252
- interface CalloutProps {
1253
- children: ReactNode;
1254
- color?: Color;
1255
- icon?: ReactNode;
1256
- dismissible?: boolean;
1257
- onDismiss?: () => void;
1258
- className?: string;
1259
- }
1260
-
1261
- declare const Callout: react.ForwardRefExoticComponent<CalloutProps & react.RefAttributes<HTMLDivElement>>;
1262
-
1263
- interface FauxClientProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
1264
- /** Chrome style: a browser window, a device bezel, or no chrome. */
1265
- variant?: "browser" | "device" | "bare";
1266
- /** Address-bar / title text (browser variant). */
1267
- url?: ReactNode;
1268
- /** Right-aligned meta text in the bar (browser variant). */
1269
- meta?: ReactNode;
1270
- /** Show the macOS traffic-light dots (browser variant). */
1271
- dots?: boolean;
1272
- /**
1273
- * Logical content width in px. When set, children render at this width and are
1274
- * scaled to fit (see {@link FauxClientProps.scale}) — for downscaled previews
1275
- * of full pages/apps. Omit to render children at natural size (chrome only).
1276
- */
1277
- width?: number;
1278
- /** `"fit"` scales the logical {@link FauxClientProps.width} to the frame; a number is a fixed scale. */
1279
- scale?: number | "fit";
1280
- className?: string;
1281
- /** Class for the browser bar. */
1282
- barClassName?: string;
1283
- /** Class for the content viewport. */
1284
- bodyClassName?: string;
1285
- children?: ReactNode;
1286
- }
1287
-
1288
- /**
1289
- * A frame that mimics a browser window or device, rendering **real UI** inside.
1290
- * With a logical `width` + `scale="fit"` it renders a full-size page/app and
1291
- * scales it down to fit any container (live thumbnails, device mockups) — the
1292
- * content is real and interactive, just zoomed.
1293
- *
1294
- * Omit `width` for chrome around natural-size content (e.g. a code/preview card).
1295
- */
1296
- declare const FauxClient: react.ForwardRefExoticComponent<FauxClientProps & react.RefAttributes<HTMLDivElement>>;
1297
-
1298
- /** Built-in paper colors. Any CSS color string is also accepted. */
1299
- type StickyNoteColor = "yellow" | "blue" | "green" | "pink" | "violet";
1300
- interface StickyNoteProps {
1301
- /** Note text (controlled). */
1302
- value?: string;
1303
- /** Initial text when uncontrolled. */
1304
- defaultValue?: string;
1305
- /** Fires when the edited text is committed (on blur). */
1306
- onChange?: (text: string) => void;
1307
- /** Paper color — one of the presets, or any CSS color string. Default `"yellow"`. */
1308
- color?: StickyNoteColor | (string & {});
1309
- /** Rotation in degrees. Default `0`. */
1310
- rotate?: number;
1311
- /** Width as px number or any CSS length. Default `180`. */
1312
- width?: number | string;
1313
- /** Height as px number or any CSS length. Default `"auto"`. */
1314
- height?: number | string;
1315
- /** Selected styling (focus ring). */
1316
- selected?: boolean;
1317
- /** Allow inline editing of the text. Default `true`. */
1318
- editable?: boolean;
1319
- /**
1320
- * Focus the editable region (caret at end) when it becomes editable. Lets a
1321
- * consumer's "enter edit mode" gesture drop straight into typing. Default `false`.
1322
- */
1323
- autoFocus?: boolean;
1324
- /**
1325
- * Stable handle — also emitted as the element `id`. Lets agents and
1326
- * selectors target a specific note without guessing the DOM.
1327
- */
1328
- id?: string;
1329
- /** Static content; when provided, overrides the editable text. */
1330
- children?: ReactNode;
1331
- className?: string;
1332
- style?: CSSProperties;
1333
- }
1334
-
1335
- /**
1336
- * A sticky note — paper-styled, with optional inline text editing.
1337
- *
1338
- * Presentational primitive only: it owns the note's look and its editable
1339
- * text. Positioning, dragging, resizing, and z-order are the consumer's job
1340
- * (e.g. `fancy-whiteboard`'s `<Board>` places it in world space;
1341
- * `fancy-artboard`'s `<ArtBoard.Note>` positions it absolutely).
1342
- *
1343
- * <StickyNote value={text} onChange={setText} color="yellow" rotate={-2} />
1344
- */
1345
- declare const StickyNote: react.ForwardRefExoticComponent<StickyNoteProps & react.RefAttributes<HTMLDivElement>>;
1346
-
1347
- type TimelineVariant = "stacked" | "alternating" | "horizontal";
1348
- /** @deprecated Use TimelineVariant instead */
1349
- type TimelineOrientation = "vertical" | "horizontal";
1350
- interface TimelineEvent {
1351
- /** Free-form date string */
1352
- date?: string;
1353
- /** Event heading */
1354
- title: string;
1355
- /** Body text (rendered as children) */
1356
- description?: string;
1357
- /** Emoji character for the dot */
1358
- emoji?: string;
1359
- /** Custom icon ReactNode for the dot */
1360
- icon?: ReactNode;
1361
- /** Accent color for the dot */
1362
- color?: Color;
1363
- }
1364
- interface TimelineProps {
1365
- children?: ReactNode;
1366
- /** Layout variant. Default: "stacked" */
1367
- variant?: TimelineVariant;
1368
- /** @deprecated Use variant instead. Maps "vertical" → "stacked", "horizontal" → "horizontal" */
1369
- orientation?: TimelineOrientation;
1370
- /** Data-driven events (alternative to children) */
1371
- events?: TimelineEvent[];
1372
- /** Optional heading above the timeline */
1373
- heading?: ReactNode;
1374
- /** Optional description below the heading */
1375
- description?: ReactNode;
1376
- /** Enable scroll-reveal animation. Default: true */
1377
- animated?: boolean;
1378
- className?: string;
1379
- }
1380
- interface TimelineItemProps {
1381
- children?: ReactNode;
1382
- /** Custom icon ReactNode for the dot */
1383
- icon?: ReactNode;
1384
- /** Emoji character for the dot */
1385
- emoji?: string;
1386
- /** Date label displayed above the title */
1387
- date?: string;
1388
- /** Dot accent color */
1389
- color?: Color;
1390
- /** Whether this item is the active/current step */
1391
- active?: boolean;
1392
- className?: string;
1393
- }
1394
- interface TimelineBlockProps {
1395
- /** Block heading */
1396
- heading?: ReactNode;
1397
- /** Block description / body content */
1398
- children: ReactNode;
1399
- /** Optional icon displayed in the timeline dot */
1400
- icon?: ReactNode;
1401
- /** Emoji character for the dot */
1402
- emoji?: string;
1403
- /** Dot/icon color */
1404
- color?: Color;
1405
- /** Whether this block is the active/current step */
1406
- active?: boolean;
1407
- className?: string;
1408
- }
1409
-
1410
- declare const Timeline: react.ForwardRefExoticComponent<TimelineProps & react.RefAttributes<HTMLDivElement>> & {
1411
- Item: react.ForwardRefExoticComponent<TimelineItemProps & react.RefAttributes<HTMLDivElement>>;
1412
- Block: react.ForwardRefExoticComponent<TimelineBlockProps & react.RefAttributes<HTMLDivElement>>;
1413
- };
1414
-
1415
- /**
1416
- * Subset of palette colors the TimeGrid offers for the "cell-on" tone —
1417
- * small enough to keep the compiled CSS tight, broad enough to cover most
1418
- * use cases.
1419
- */
1420
- type TimeGridTone = "violet" | "emerald" | "sky" | "rose" | "amber" | "indigo" | "blue" | "zinc";
1421
- interface TimeGridProps {
1422
- /** Row labels, one per row in `value` (e.g. ["Sun","Mon",…]). */
1423
- rows: string[];
1424
- /** Column labels, one per column in `value` (e.g. ["0","1",…,"23"]). */
1425
- cols: string[];
1426
- /**
1427
- * Controlled cell state. Must be a rectangular `rows.length × cols.length`
1428
- * matrix of booleans. The component never mutates it — every change
1429
- * produces a new array passed to `onChange`.
1430
- */
1431
- value: boolean[][];
1432
- /** Called with the next matrix whenever a cell, row, or column toggles. */
1433
- onChange: (next: boolean[][]) => void;
1434
- /** Cell-on tone. Default `"violet"`. */
1435
- toneOn?: TimeGridTone;
1436
- /** Cell width in px. Default `20`. */
1437
- cellWidth?: number;
1438
- /** Cell height in px. Default `16`. */
1439
- cellHeight?: number;
1440
- /**
1441
- * If true (default), only every Nth column label is rendered to keep the
1442
- * top axis legible at small `cellWidth`. Set false to show all labels.
1443
- */
1444
- sparseColLabels?: boolean;
1445
- /** If true (default), clicking a row/column header toggles that strip. */
1446
- toggleStripsOnHeaderClick?: boolean;
1447
- /**
1448
- * Optional accessible label per cell. Default produces
1449
- * `${rows[r]} ${cols[c]} on|off`. Override for richer context
1450
- * (e.g. include unit: `${rows[r]} ${cols[c]}:00 ${on ? "on" : "off"}`).
1451
- */
1452
- ariaCell?: (rowIdx: number, colIdx: number, on: boolean) => string;
1453
- /**
1454
- * Stable per-cell identifier. Emitted as `data-react-fancy-timegrid-cell`
1455
- * on the button so MCP bridges can address a specific cell from a tool
1456
- * call without DOM walking. Default `${row}:${col}`.
1457
- */
1458
- cellId?: (rowIdx: number, colIdx: number) => string;
1459
- /** Additional CSS classes on the outer scroll container. */
1460
- className?: string;
1461
- }
1462
-
1463
- declare const TimeGrid: react.ForwardRefExoticComponent<TimeGridProps & react.RefAttributes<HTMLDivElement>>;
1464
-
1465
- type MarqueeDirection = "left" | "right";
1466
- interface MarqueeProps extends HTMLAttributes<HTMLDivElement> {
1467
- /** Item nodes — each child is one strip item (alternative to `items`) */
1468
- children?: ReactNode;
1469
- /** Data-driven items (alternative to children) — strings or nodes */
1470
- items?: ReactNode[];
1471
- /**
1472
- * Scroll speed in px/s — keeps perceived speed constant regardless of
1473
- * content width. Ignored when `duration` is set. Default: 40
1474
- */
1475
- speed?: number;
1476
- /** Explicit seconds per loop (overrides `speed`) */
1477
- duration?: number;
1478
- /** Scroll direction. Default: "left" */
1479
- direction?: MarqueeDirection;
1480
- /** Pause the animation while hovered. Default: false */
1481
- pauseOnHover?: boolean;
1482
- /** Controlled pause — `true` freezes the strip. Default: false */
1483
- paused?: boolean;
1484
- /** Gap between items (number = px). Default: 40 */
1485
- gap?: number | string;
1486
- /**
1487
- * Masked fade at the strip edges: `true` (48px, default), `false` to
1488
- * disable, or a number/CSS length for a custom fade width
1489
- */
1490
- fade?: boolean | number | string;
1491
- /** Optional node rendered between items */
1492
- separator?: ReactNode;
1493
- /**
1494
- * Tilt the whole strip in degrees (e.g. `-1` for the torn, off-axis band
1495
- * look). The strip widens slightly to stay edge-to-edge. Default: 0
1496
- */
1497
- angle?: number;
1498
- /**
1499
- * Decorative strips are `aria-hidden` (default). Set `false` to expose the
1500
- * content to assistive tech — the duplicated loop copy stays hidden either
1501
- * way. Default: true
1502
- */
1503
- decorative?: boolean;
1504
- className?: string;
1505
- }
1506
-
1507
- declare const Marquee: react.ForwardRefExoticComponent<MarqueeProps & react.RefAttributes<HTMLDivElement>>;
1508
-
1509
- interface TooltipProps {
1510
- children: ReactElement;
1511
- content: ReactNode;
1512
- placement?: Placement;
1513
- delay?: number;
1514
- offset?: number;
1515
- className?: string;
1516
- }
1517
-
1518
- declare const Tooltip: react.ForwardRefExoticComponent<TooltipProps & react.RefAttributes<HTMLDivElement>>;
1519
-
1520
- interface PopoverContextValue {
1521
- open: boolean;
1522
- setOpen: (open: boolean) => void;
1523
- anchorRef: React.RefObject<HTMLElement | null>;
1524
- floatingRef: React.RefObject<HTMLDivElement | null>;
1525
- placement: Placement;
1526
- offset: number;
1527
- hover: boolean;
1528
- onHoverEnter: () => void;
1529
- onHoverLeave: () => void;
1530
- }
1531
- interface PopoverProps {
1532
- children: ReactNode;
1533
- /** Controlled open state */
1534
- open?: boolean;
1535
- /** Default open state (uncontrolled) */
1536
- defaultOpen?: boolean;
1537
- /** Callback when open state changes */
1538
- onOpenChange?: (open: boolean) => void;
1539
- /** Placement of the popover relative to the trigger */
1540
- placement?: Placement;
1541
- /** Pixel offset from the trigger */
1542
- offset?: number;
1543
- /** Open on hover instead of click */
1544
- hover?: boolean;
1545
- /** Delay in ms before opening on hover. Default: 200 */
1546
- hoverDelay?: number;
1547
- /** Delay in ms before closing after hover leaves. Default: 300 */
1548
- hoverCloseDelay?: number;
1549
- }
1550
- /**
1551
- * The trigger renders a `<span>` — it extends its attributes so consumers can
1552
- * forward `aria-*`, `data-*`, `id`, `title`, etc. onto the actual anchor node
1553
- * (e.g. `aria-label` for an icon-only trigger). Popover-owned props (ref,
1554
- * onClick, aria-expanded/haspopup) always win over forwarded ones.
1555
- */
1556
- interface PopoverTriggerProps extends HTMLAttributes<HTMLSpanElement> {
1557
- children: ReactNode;
1558
- }
1559
- /**
1560
- * The content renders a `<div>` — it extends its attributes so consumers can
1561
- * forward `aria-*`/`data-*`/`role`/`id` onto the floating panel. Consumer
1562
- * `style` is merged under the Popover's positioning (left/top always win).
1563
- */
1564
- interface PopoverContentProps extends HTMLAttributes<HTMLDivElement> {
1565
- children: ReactNode;
1566
- }
1567
-
1568
- declare function PopoverTrigger({ children, className, ...rest }: PopoverTriggerProps): react.JSX.Element;
1569
- declare namespace PopoverTrigger {
1570
- var displayName: string;
1571
- }
1572
-
1573
- declare function PopoverContent({ children, className, style, ...rest }: PopoverContentProps): react.JSX.Element | null;
1574
- declare namespace PopoverContent {
1575
- var displayName: string;
1576
- }
1577
-
1578
- declare function PopoverRoot({ children, open: controlledOpen, defaultOpen, onOpenChange, placement, offset, hover, hoverDelay, hoverCloseDelay, }: PopoverProps): react.JSX.Element;
1579
- declare const Popover: typeof PopoverRoot & {
1580
- Trigger: typeof PopoverTrigger;
1581
- Content: typeof PopoverContent;
1582
- };
1583
-
1584
- declare function usePopover(): PopoverContextValue;
1585
-
1586
- interface DropdownContextValue {
1587
- open: boolean;
1588
- setOpen: (open: boolean) => void;
1589
- anchorRef: React.RefObject<HTMLElement | null>;
1590
- activeIndex: number;
1591
- setActiveIndex: (index: number) => void;
1592
- placement: Placement;
1593
- offset: number;
1594
- }
1595
- interface DropdownProps {
1596
- children: ReactNode;
1597
- placement?: Placement;
1598
- offset?: number;
1599
- }
1600
- interface DropdownTriggerProps {
1601
- children: ReactNode;
1602
- }
1603
- interface DropdownItemsProps {
1604
- children: ReactNode;
1605
- className?: string;
1606
- }
1607
- interface DropdownItemProps {
1608
- children: ReactNode;
1609
- onClick?: () => void;
1610
- disabled?: boolean;
1611
- danger?: boolean;
1612
- className?: string;
1613
- }
1614
- interface DropdownSeparatorProps {
1615
- className?: string;
1616
- }
1617
-
1618
- declare function DropdownTrigger({ children }: DropdownTriggerProps): react.JSX.Element;
1619
- declare namespace DropdownTrigger {
1620
- var displayName: string;
1621
- }
1622
-
1623
- declare function DropdownItems({ children, className }: DropdownItemsProps): react.JSX.Element | null;
1624
- declare namespace DropdownItems {
1625
- var displayName: string;
1626
- }
1627
-
1628
- declare function DropdownItem({ children, onClick, disabled, danger, className, }: DropdownItemProps): react.JSX.Element;
1629
- declare namespace DropdownItem {
1630
- var displayName: string;
1631
- }
1632
-
1633
- declare function DropdownSeparator({ className }: DropdownSeparatorProps): react.JSX.Element;
1634
- declare namespace DropdownSeparator {
1635
- var displayName: string;
1636
- }
1637
-
1638
- declare function DropdownRoot({ children, placement, offset, }: DropdownProps): react.JSX.Element;
1639
- declare const Dropdown: typeof DropdownRoot & {
1640
- Trigger: typeof DropdownTrigger;
1641
- Items: typeof DropdownItems;
1642
- Item: typeof DropdownItem;
1643
- Separator: typeof DropdownSeparator;
1644
- };
1645
-
1646
- declare function useDropdown(): DropdownContextValue;
1647
-
1648
- interface ContextMenuContextValue {
1649
- open: boolean;
1650
- setOpen: (open: boolean) => void;
1651
- position: {
1652
- x: number;
1653
- y: number;
1654
- };
1655
- }
1656
- interface ContextMenuProps {
1657
- children: ReactNode;
1658
- }
1659
- interface ContextMenuTriggerProps {
1660
- children: ReactNode;
1661
- className?: string;
1662
- }
1663
- interface ContextMenuContentProps {
1664
- children: ReactNode;
1665
- className?: string;
1666
- }
1667
- interface ContextMenuItemProps {
1668
- children: ReactNode;
1669
- onClick?: () => void;
1670
- disabled?: boolean;
1671
- danger?: boolean;
1672
- className?: string;
1673
- }
1674
- interface ContextMenuSeparatorProps {
1675
- className?: string;
1676
- }
1677
- interface ContextMenuSubProps {
1678
- children: ReactNode;
1679
- }
1680
- interface ContextMenuSubTriggerProps {
1681
- children: ReactNode;
1682
- className?: string;
1683
- }
1684
- interface ContextMenuSubContentProps {
1685
- children: ReactNode;
1686
- className?: string;
1687
- }
1688
-
1689
- declare function ContextMenuTrigger({ children, className, }: ContextMenuTriggerProps): react.JSX.Element;
1690
- declare namespace ContextMenuTrigger {
1691
- var displayName: string;
1692
- }
1693
-
1694
- declare function ContextMenuContent({ children, className, }: ContextMenuContentProps): react.JSX.Element | null;
1695
- declare namespace ContextMenuContent {
1696
- var displayName: string;
1697
- }
1698
-
1699
- declare function ContextMenuItem({ children, onClick, disabled, danger, className, }: ContextMenuItemProps): react.JSX.Element;
1700
- declare namespace ContextMenuItem {
1701
- var displayName: string;
1702
- }
1703
-
1704
- declare function ContextMenuSeparator({ className }: ContextMenuSeparatorProps): react.JSX.Element;
1705
- declare namespace ContextMenuSeparator {
1706
- var displayName: string;
1707
- }
1708
-
1709
- declare function ContextMenuSub({ children }: ContextMenuSubProps): react.JSX.Element;
1710
- declare namespace ContextMenuSub {
1711
- var displayName: string;
1712
- }
1713
- declare function ContextMenuSubTrigger({ children, className }: ContextMenuSubTriggerProps): react.JSX.Element;
1714
- declare namespace ContextMenuSubTrigger {
1715
- var displayName: string;
1716
- }
1717
- declare function ContextMenuSubContent({ children, className }: ContextMenuSubContentProps): react.JSX.Element | null;
1718
- declare namespace ContextMenuSubContent {
1719
- var displayName: string;
1720
- }
1721
-
1722
- declare function ContextMenuRoot({ children }: ContextMenuProps): react.JSX.Element;
1723
- declare const ContextMenu: typeof ContextMenuRoot & {
1724
- Trigger: typeof ContextMenuTrigger;
1725
- Content: typeof ContextMenuContent;
1726
- Item: typeof ContextMenuItem;
1727
- Separator: typeof ContextMenuSeparator;
1728
- Sub: typeof ContextMenuSub;
1729
- SubTrigger: typeof ContextMenuSubTrigger;
1730
- SubContent: typeof ContextMenuSubContent;
1731
- };
1732
-
1733
- declare function useContextMenu(): ContextMenuContextValue;
1734
-
1735
- interface ModalContextValue {
1736
- open: boolean;
1737
- close: () => void;
1738
- }
1739
- interface ModalProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
1740
- children: ReactNode;
1741
- open: boolean;
1742
- onClose: () => void;
1743
- size?: "sm" | "md" | "lg" | "xl" | "full";
1744
- className?: string;
1745
- }
1746
- interface ModalHeaderProps {
1747
- children: ReactNode;
1748
- className?: string;
1749
- }
1750
- interface ModalBodyProps {
1751
- children: ReactNode;
1752
- className?: string;
1753
- }
1754
- interface ModalFooterProps {
1755
- children: ReactNode;
1756
- className?: string;
1757
- }
1758
-
1759
- declare function ModalHeader({ children, className }: ModalHeaderProps): react.JSX.Element;
1760
- declare namespace ModalHeader {
1761
- var displayName: string;
1762
- }
1763
-
1764
- declare function ModalBody({ children, className }: ModalBodyProps): react.JSX.Element;
1765
- declare namespace ModalBody {
1766
- var displayName: string;
1767
- }
1768
-
1769
- declare function ModalFooter({ children, className }: ModalFooterProps): react.JSX.Element;
1770
- declare namespace ModalFooter {
1771
- var displayName: string;
1772
- }
1773
-
1774
- declare function ModalRoot({ children, open, onClose, size, className, ...rest }: ModalProps): react.JSX.Element | null;
1775
- declare const Modal: typeof ModalRoot & {
1776
- Header: typeof ModalHeader;
1777
- Body: typeof ModalBody;
1778
- Footer: typeof ModalFooter;
1779
- };
1780
-
1781
- declare function useModal(): ModalContextValue;
1782
-
1783
- /** Which edge the drawer is anchored to, and therefore slides in from. */
1784
- type DrawerSide = "left" | "right" | "top" | "bottom";
1785
- /**
1786
- * How large the drawer is along its own axis.
1787
- *
1788
- * `size` controls WIDTH for `left`/`right` and HEIGHT for `top`/`bottom` — the
1789
- * cross-axis always fills its anchor. One scale, two meanings, so `size="md"`
1790
- * reads the same whichever edge you attach to.
1791
- */
1792
- type DrawerSize = "sm" | "md" | "lg" | "xl" | "full";
1793
- /**
1794
- * Where the drawer is anchored.
1795
- *
1796
- * - `viewport` (default) — portalled, `fixed`, covers the screen, locks body
1797
- * scroll and traps focus. The classic app-level drawer.
1798
- * - `container` — `absolute` inside the nearest positioned ancestor, no portal,
1799
- * no scroll lock, no focus trap. Attach it to a Card, a layout region, or the
1800
- * shell around a prompt input and it stays inside that box.
1801
- */
1802
- type DrawerAttach = "viewport" | "container";
1803
- interface DrawerContextValue {
1804
- open: boolean;
1805
- close: () => void;
1806
- side: DrawerSide;
1807
- }
1808
- interface DrawerProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
1809
- children: ReactNode;
1810
- open: boolean;
1811
- onClose: () => void;
1812
- /** Edge to anchor to. Default `right`. */
1813
- side?: DrawerSide;
1814
- /** Extent along the drawer's own axis. Default `md`. */
1815
- size?: DrawerSize;
1816
- /** Viewport-level or scoped to a container. Default `viewport`. */
1817
- attach?: DrawerAttach;
1818
- /** Render the scrim behind the panel. Default `true`. */
1819
- backdrop?: boolean;
1820
- /** Clicking the scrim closes. Default `true`. */
1821
- dismissOnBackdrop?: boolean;
1822
- /** Escape closes. Default `true`. */
1823
- dismissOnEscape?: boolean;
1824
- className?: string;
1825
- }
1826
- interface DrawerHeaderProps {
1827
- children: ReactNode;
1828
- /** Show the close button. Default `true`. */
1829
- closable?: boolean;
1830
- className?: string;
1831
- }
1832
- interface DrawerBodyProps {
1833
- children: ReactNode;
1834
- className?: string;
1835
- }
1836
- interface DrawerFooterProps {
1837
- children: ReactNode;
1838
- className?: string;
1839
- }
1840
- interface DrawerContainerProps extends HTMLAttributes<HTMLDivElement> {
1841
- children: ReactNode;
1842
- className?: string;
1843
- }
1844
-
1845
- declare function DrawerHeader({ children, closable, className }: DrawerHeaderProps): react.JSX.Element;
1846
- declare namespace DrawerHeader {
1847
- var displayName: string;
1848
- }
1849
-
1850
- declare function DrawerBody({ children, className }: DrawerBodyProps): react.JSX.Element;
1851
- declare namespace DrawerBody {
1852
- var displayName: string;
1853
- }
1854
-
1855
- declare function DrawerFooter({ children, className }: DrawerFooterProps): react.JSX.Element;
1856
- declare namespace DrawerFooter {
1857
- var displayName: string;
1858
- }
1859
-
1860
- /**
1861
- * The anchor for `<Drawer attach="container">`.
1862
- *
1863
- * A container-attached drawer positions itself `absolute`, which resolves
1864
- * against the nearest *positioned* ancestor — so without `relative` somewhere
1865
- * above it, the drawer silently escapes to the viewport and looks like it
1866
- * ignored `attach` entirely. This wrapper supplies `relative` + `overflow-hidden`
1867
- * so the panel slides within the box rather than out of it.
1868
- *
1869
- * <Drawer.Container className="h-80 rounded-xl border">
1870
- * <YourContent />
1871
- * <Drawer attach="container" side="bottom" open={open} onClose={close}>
1872
- * <Drawer.Body>Filters</Drawer.Body>
1873
- * </Drawer>
1874
- * </Drawer.Container>
1875
- *
1876
- * Any element works as long as it is positioned — this is the shortcut, not a
1877
- * requirement. Wrapping a Card, a layout pane, or a prompt-input shell in
1878
- * `relative overflow-hidden` does the same job.
1879
- */
1880
- declare function DrawerContainer({ children, className, ...rest }: DrawerContainerProps): react.JSX.Element;
1881
- declare namespace DrawerContainer {
1882
- var displayName: string;
1883
- }
1884
-
1885
- declare function DrawerRoot({ children, open, onClose, side, size, attach, backdrop, dismissOnBackdrop, dismissOnEscape, className, ...rest }: DrawerProps): react.JSX.Element | null;
1886
- declare const Drawer: typeof DrawerRoot & {
1887
- Header: typeof DrawerHeader;
1888
- Body: typeof DrawerBody;
1889
- Footer: typeof DrawerFooter;
1890
- Container: typeof DrawerContainer;
1891
- };
1892
-
1893
- declare function useDrawer(): DrawerContextValue;
1894
-
1895
- type ToastVariant = "default" | "success" | "error" | "warning" | "info";
1896
- type ToastPosition = "top-right" | "top-left" | "bottom-right" | "bottom-left";
1897
- interface ToastData {
1898
- id: string;
1899
- title: string;
1900
- description?: string;
1901
- variant?: ToastVariant;
1902
- duration?: number;
1903
- }
1904
- interface ToastContextValue {
1905
- toasts: ToastData[];
1906
- toast: (data: Omit<ToastData, "id">) => string;
1907
- dismiss: (id: string) => void;
1908
- }
1909
- interface ToastProviderProps {
1910
- children: ReactNode;
1911
- position?: ToastPosition;
1912
- maxToasts?: number;
1913
- }
1914
-
1915
- declare function ToastProvider({ children, position, maxToasts, }: ToastProviderProps): react.JSX.Element;
1916
- declare const Toast: {
1917
- Provider: typeof ToastProvider;
1918
- };
1919
-
1920
- declare function useToast(): ToastContextValue;
1921
-
1922
- interface CommandContextValue {
1923
- open: boolean;
1924
- close: () => void;
1925
- query: string;
1926
- setQuery: (query: string) => void;
1927
- activeIndex: number;
1928
- setActiveIndex: (index: number) => void;
1929
- }
1930
- interface CommandProps {
1931
- children: ReactNode;
1932
- open: boolean;
1933
- onClose: () => void;
1934
- className?: string;
1935
- }
1936
- interface CommandInputProps {
1937
- placeholder?: string;
1938
- className?: string;
1939
- }
1940
- interface CommandListProps {
1941
- children: ReactNode;
1942
- className?: string;
1943
- }
1944
- interface CommandItemProps {
1945
- children: ReactNode;
1946
- value?: string;
1947
- onSelect?: () => void;
1948
- className?: string;
1949
- }
1950
- interface CommandGroupProps {
1951
- children: ReactNode;
1952
- heading?: string;
1953
- className?: string;
1954
- }
1955
- interface CommandEmptyProps {
1956
- children?: ReactNode;
1957
- className?: string;
1958
- }
1959
-
1960
- declare function CommandInput({ placeholder, className, }: CommandInputProps): react.JSX.Element;
1961
- declare namespace CommandInput {
1962
- var displayName: string;
1963
- }
1964
-
1965
- declare function CommandList({ children, className }: CommandListProps): react.JSX.Element;
1966
- declare namespace CommandList {
1967
- var displayName: string;
1968
- }
1969
-
1970
- declare function CommandItem({ children, value, onSelect, className, }: CommandItemProps): react.JSX.Element | null;
1971
- declare namespace CommandItem {
1972
- var displayName: string;
1973
- }
1974
-
1975
- declare function CommandGroup({ children, heading, className, }: CommandGroupProps): react.JSX.Element;
1976
- declare namespace CommandGroup {
1977
- var displayName: string;
1978
- }
1979
-
1980
- declare function CommandEmpty({ children, className, }: CommandEmptyProps): react.JSX.Element;
1981
- declare namespace CommandEmpty {
1982
- var displayName: string;
1983
- }
1984
-
1985
- declare function CommandRoot({ children, open, onClose, className }: CommandProps): react.JSX.Element | null;
1986
- declare const Command: typeof CommandRoot & {
1987
- Input: typeof CommandInput;
1988
- List: typeof CommandList;
1989
- Item: typeof CommandItem;
1990
- Group: typeof CommandGroup;
1991
- Empty: typeof CommandEmpty;
1992
- };
1993
-
1994
- declare function useCommand(): CommandContextValue;
1995
-
1996
- type TabsVariant = "underline" | "pills" | "boxed";
1997
- interface TabsContextValue {
1998
- activeTab: string;
1999
- setActiveTab: (tab: string) => void;
2000
- variant: TabsVariant;
2001
- }
2002
- interface TabsProps {
2003
- children: ReactNode;
2004
- defaultTab?: string;
2005
- activeTab?: string;
2006
- onTabChange?: (tab: string) => void;
2007
- variant?: TabsVariant;
2008
- className?: string;
2009
- }
2010
- interface TabsListProps {
2011
- children: ReactNode;
2012
- className?: string;
2013
- }
2014
- interface TabsTabProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "value"> {
2015
- children: ReactNode;
2016
- value: string;
2017
- disabled?: boolean;
2018
- className?: string;
2019
- }
2020
- interface TabsPanelsProps {
2021
- children: ReactNode;
2022
- className?: string;
2023
- }
2024
- interface TabsPanelProps {
2025
- children: ReactNode;
2026
- value: string;
2027
- className?: string;
2028
- }
2029
-
2030
- declare function TabsList({ children, className }: TabsListProps): react.JSX.Element;
2031
- declare namespace TabsList {
2032
- var displayName: string;
2033
- }
2034
-
2035
- declare function TabsTab({ children, value, disabled, className, onClick, ...rest }: TabsTabProps): react.JSX.Element;
2036
- declare namespace TabsTab {
2037
- var displayName: string;
2038
- }
2039
-
2040
- declare function TabsPanels({ children, className }: TabsPanelsProps): react.JSX.Element;
2041
- declare namespace TabsPanels {
2042
- var displayName: string;
2043
- }
2044
-
2045
- declare function TabsPanel({ children, value, className }: TabsPanelProps): react.JSX.Element | null;
2046
- declare namespace TabsPanel {
2047
- var displayName: string;
2048
- }
2049
-
2050
- declare function TabsRoot({ children, defaultTab, activeTab: controlledTab, onTabChange, variant, className, }: TabsProps): react.JSX.Element;
2051
- declare const Tabs: typeof TabsRoot & {
2052
- List: typeof TabsList;
2053
- Tab: typeof TabsTab;
2054
- Panels: typeof TabsPanels;
2055
- Panel: typeof TabsPanel;
2056
- };
2057
-
2058
- declare function useTabs(): TabsContextValue;
2059
-
2060
- interface AccordionContextValue {
2061
- openItems: string[];
2062
- toggle: (value: string) => void;
2063
- multiple: boolean;
2064
- }
2065
- interface AccordionProps {
2066
- children: ReactNode;
2067
- type?: "single" | "multiple";
2068
- defaultOpen?: string[];
2069
- className?: string;
2070
- }
2071
- interface AccordionItemProps {
2072
- children: ReactNode;
2073
- value: string;
2074
- className?: string;
2075
- }
2076
- interface AccordionTriggerProps {
2077
- children: ReactNode;
2078
- className?: string;
2079
- }
2080
- interface AccordionContentProps {
2081
- children: ReactNode;
2082
- className?: string;
2083
- }
2084
-
2085
- declare function AccordionItem({ children, value, className, }: AccordionItemProps): react.JSX.Element;
2086
- declare namespace AccordionItem {
2087
- var displayName: string;
2088
- }
2089
-
2090
- declare function AccordionTrigger({ children, className, }: AccordionTriggerProps): react.JSX.Element;
2091
- declare namespace AccordionTrigger {
2092
- var displayName: string;
2093
- }
2094
-
2095
- declare function AccordionContent({ children, className, }: AccordionContentProps): react.JSX.Element;
2096
- declare namespace AccordionContent {
2097
- var displayName: string;
2098
- }
2099
-
2100
- declare function AccordionRoot({ children, type, defaultOpen, className, }: AccordionProps): react.JSX.Element;
2101
- declare const Accordion: typeof AccordionRoot & {
2102
- Item: typeof AccordionItem;
2103
- Trigger: typeof AccordionTrigger;
2104
- Content: typeof AccordionContent;
2105
- };
2106
-
2107
- declare function useAccordion(): AccordionContextValue;
2108
-
2109
- interface BreadcrumbsProps {
2110
- children: ReactNode;
2111
- separator?: ReactNode;
2112
- shrink?: boolean;
2113
- className?: string;
2114
- }
2115
- interface BreadcrumbsItemProps extends NavigableProps {
2116
- children: ReactNode;
2117
- active?: boolean;
2118
- /**
2119
- * Navigate by callback instead of by URL, for a crumb with no href.
2120
- *
2121
- * Controlled components own their own navigation — a repository browser
2122
- * walking directories, a wizard stepping back — and have no address to link
2123
- * to. Renders the crumb as a `<button>`. Ignored when `active`, since the
2124
- * current crumb is not a destination, and `href` wins if both are given.
2125
- */
2126
- onClick?: () => void;
2127
- className?: string;
2128
- }
2129
-
2130
- declare function BreadcrumbsItem({ children, href, as: As, active, onClick, className, ...rest }: BreadcrumbsItemProps): react.JSX.Element;
2131
- declare namespace BreadcrumbsItem {
2132
- var displayName: string;
2133
- }
2134
-
2135
- declare function BreadcrumbsRoot({ children, separator, shrink, className, }: BreadcrumbsProps): react.JSX.Element;
2136
- declare const Breadcrumbs: typeof BreadcrumbsRoot & {
2137
- Item: typeof BreadcrumbsItem;
2138
- };
2139
-
2140
- interface NavbarContextValue {
2141
- mobileOpen: boolean;
2142
- setMobileOpen: (open: boolean) => void;
2143
- }
2144
- interface NavbarProps {
2145
- children: ReactNode;
2146
- className?: string;
2147
- }
2148
- interface NavbarBrandProps {
2149
- children: ReactNode;
2150
- className?: string;
2151
- }
2152
- interface NavbarItemsProps {
2153
- children: ReactNode;
2154
- className?: string;
2155
- }
2156
- interface NavbarItemProps extends NavigableProps {
2157
- children: ReactNode;
2158
- active?: boolean;
2159
- className?: string;
2160
- }
2161
- interface NavbarToggleProps {
2162
- className?: string;
2163
- }
2164
-
2165
- declare function NavbarBrand({ children, className }: NavbarBrandProps): react.JSX.Element;
2166
- declare namespace NavbarBrand {
2167
- var displayName: string;
2168
- }
2169
-
2170
- declare function NavbarItems({ children, className }: NavbarItemsProps): react.JSX.Element;
2171
- declare namespace NavbarItems {
2172
- var displayName: string;
2173
- }
2174
-
2175
- declare function NavbarItem({ children, href, as: As, active, className, ...rest }: NavbarItemProps): react.JSX.Element;
2176
- declare namespace NavbarItem {
2177
- var displayName: string;
2178
- }
2179
-
2180
- declare function NavbarToggle({ className }: NavbarToggleProps): react.JSX.Element;
2181
- declare namespace NavbarToggle {
2182
- var displayName: string;
2183
- }
2184
-
2185
- declare function NavbarRoot({ children, className }: NavbarProps): react.JSX.Element;
2186
- declare const Navbar: typeof NavbarRoot & {
2187
- Brand: typeof NavbarBrand;
2188
- Items: typeof NavbarItems;
2189
- Item: typeof NavbarItem;
2190
- Toggle: typeof NavbarToggle;
2191
- };
2192
-
2193
- declare function useNavbar(): NavbarContextValue;
2194
-
2195
- interface PaginationProps {
2196
- page: number;
2197
- onPageChange: (page: number) => void;
2198
- totalPages: number;
2199
- siblingCount?: number;
2200
- className?: string;
2201
- }
2202
-
2203
- declare function Pagination({ page, onPageChange, totalPages, siblingCount, className, }: PaginationProps): react.JSX.Element | null;
2204
- declare namespace Pagination {
2205
- var displayName: string;
2206
- }
2207
-
2208
- interface AutocompleteOption {
2209
- value: string;
2210
- label: string;
2211
- disabled?: boolean;
2212
- }
2213
- interface AutocompleteProps {
2214
- value?: string;
2215
- defaultValue?: string;
2216
- onChange?: (value: string) => void;
2217
- onSearch?: (query: string) => void;
2218
- options: AutocompleteOption[];
2219
- placeholder?: string;
2220
- loading?: boolean;
2221
- emptyMessage?: ReactNode;
2222
- disabled?: boolean;
2223
- className?: string;
2224
- /** `"edit"` (default) renders the control; `"view"` renders the value as text. */
2225
- mode?: FieldMode;
2226
- }
2227
-
2228
- declare const Autocomplete: react.ForwardRefExoticComponent<AutocompleteProps & react.RefAttributes<HTMLInputElement>>;
2229
-
2230
- interface PillboxProps {
2231
- value?: string[];
2232
- defaultValue?: string[];
2233
- onChange?: (values: string[]) => void;
2234
- placeholder?: string;
2235
- maxItems?: number;
2236
- disabled?: boolean;
2237
- className?: string;
2238
- }
2239
-
2240
- declare const Pillbox: react.ForwardRefExoticComponent<PillboxProps & react.RefAttributes<HTMLDivElement>>;
2241
-
2242
- interface OtpInputProps {
2243
- length?: number;
2244
- value?: string;
2245
- onChange?: (value: string) => void;
2246
- disabled?: boolean;
2247
- autoFocus?: boolean;
2248
- className?: string;
2249
- /** `"edit"` (default) renders the inputs; `"view"` renders the digits as text. */
2250
- mode?: FieldMode;
2251
- }
2252
-
2253
- declare const OtpInput: react.ForwardRefExoticComponent<OtpInputProps & react.RefAttributes<HTMLDivElement>>;
2254
-
2255
- interface FileUploadContextValue {
2256
- files: File[];
2257
- addFiles: (files: FileList | File[]) => void;
2258
- removeFile: (index: number) => void;
2259
- disabled: boolean;
2260
- }
2261
- interface FileUploadProps {
2262
- children: ReactNode;
2263
- value?: File[];
2264
- onChange?: (files: File[]) => void;
2265
- accept?: string;
2266
- multiple?: boolean;
2267
- maxFiles?: number;
2268
- maxSize?: number;
2269
- disabled?: boolean;
2270
- className?: string;
2271
- }
2272
- interface FileUploadDropzoneProps {
2273
- children?: ReactNode;
2274
- className?: string;
2275
- }
2276
- interface FileUploadListProps {
2277
- thumbnail?: boolean;
2278
- className?: string;
2279
- }
2280
-
2281
- declare function FileUploadDropzone({ children, className, }: FileUploadDropzoneProps): react.JSX.Element;
2282
- declare namespace FileUploadDropzone {
2283
- var displayName: string;
2284
- }
2285
-
2286
- declare function FileUploadList({ thumbnail, className }: FileUploadListProps): react.JSX.Element | null;
2287
- declare namespace FileUploadList {
2288
- var displayName: string;
2289
- }
2290
-
2291
- declare function FileUploadRoot({ children, value, onChange, maxFiles, maxSize, disabled, className, }: FileUploadProps): react.JSX.Element;
2292
- declare const FileUpload: typeof FileUploadRoot & {
2293
- Dropzone: typeof FileUploadDropzone;
2294
- List: typeof FileUploadList;
2295
- };
2296
-
2297
- declare function useFileUpload(): FileUploadContextValue;
2298
-
2299
- interface TimePickerProps {
2300
- value?: string;
2301
- defaultValue?: string;
2302
- onChange?: (value: string) => void;
2303
- format?: "12h" | "24h";
2304
- minuteStep?: number;
2305
- disabled?: boolean;
2306
- className?: string;
2307
- /** `"edit"` (default) renders the spinners; `"view"` renders the time as text. */
2308
- mode?: FieldMode;
2309
- }
2310
-
2311
- declare const TimePicker: react.ForwardRefExoticComponent<TimePickerProps & react.RefAttributes<HTMLDivElement>>;
2312
-
2313
- type CalendarMode = "single" | "range" | "multiple";
2314
- interface DateRange {
2315
- start: Date | null;
2316
- end: Date | null;
2317
- }
2318
- interface CalendarProps {
2319
- mode?: CalendarMode;
2320
- value?: Date | Date[] | DateRange | null;
2321
- onChange?: (value: Date | Date[] | DateRange | null) => void;
2322
- minDate?: Date;
2323
- maxDate?: Date;
2324
- disabledDates?: Date[];
2325
- className?: string;
2326
- }
2327
-
2328
- declare const Calendar: react.ForwardRefExoticComponent<CalendarProps & react.RefAttributes<HTMLDivElement>>;
2329
-
2330
- interface ComposerProps {
2331
- value?: string;
2332
- defaultValue?: string;
2333
- onChange?: (value: string) => void;
2334
- onSubmit?: (value: string) => void;
2335
- placeholder?: string;
2336
- actions?: ReactNode;
2337
- disabled?: boolean;
2338
- className?: string;
2339
- }
2340
-
2341
- declare const Composer: react.ForwardRefExoticComponent<ComposerProps & react.RefAttributes<HTMLDivElement>>;
2342
-
2343
- interface ChartBarData {
2344
- label: string;
2345
- value: number;
2346
- color?: string;
2347
- }
2348
- interface ChartBarProps {
2349
- data: ChartBarData[];
2350
- height?: number;
2351
- showValues?: boolean;
2352
- className?: string;
2353
- }
2354
- interface ChartDonutData {
2355
- label: string;
2356
- value: number;
2357
- color?: string;
2358
- }
2359
- interface ChartDonutProps {
2360
- data: ChartDonutData[];
2361
- size?: number;
2362
- strokeWidth?: number;
2363
- showLegend?: boolean;
2364
- className?: string;
2365
- }
2366
- interface ChartSeries {
2367
- label: string;
2368
- data: number[];
2369
- color?: string;
2370
- }
2371
- interface ChartCommonProps {
2372
- className?: string;
2373
- height?: number;
2374
- xAxis?: boolean | {
2375
- label?: string;
2376
- tickCount?: number;
2377
- };
2378
- yAxis?: boolean | {
2379
- label?: string;
2380
- tickCount?: number;
2381
- };
2382
- grid?: boolean | {
2383
- horizontal?: boolean;
2384
- vertical?: boolean;
2385
- };
2386
- tooltip?: boolean;
2387
- animate?: boolean;
2388
- responsive?: boolean;
2389
- }
2390
- interface ChartLineProps extends ChartCommonProps {
2391
- labels: string[];
2392
- series: ChartSeries[];
2393
- curve?: "linear" | "monotone";
2394
- showDots?: boolean;
2395
- fill?: boolean;
2396
- fillOpacity?: number;
2397
- }
2398
- type ChartAreaProps = Omit<ChartLineProps, "fill">;
2399
- interface ChartPieData {
2400
- label: string;
2401
- value: number;
2402
- color?: string;
2403
- }
2404
- interface ChartPieProps {
2405
- data: ChartPieData[];
2406
- size?: number;
2407
- showLabels?: boolean;
2408
- tooltip?: boolean;
2409
- className?: string;
2410
- }
2411
- interface ChartSparklineProps {
2412
- data: number[];
2413
- width?: number;
2414
- height?: number;
2415
- color?: string;
2416
- className?: string;
2417
- }
2418
- interface ChartHorizontalBarProps {
2419
- data: ChartBarData[];
2420
- height?: number;
2421
- showValues?: boolean;
2422
- className?: string;
2423
- }
2424
- interface ChartStackedBarProps extends ChartCommonProps {
2425
- labels: string[];
2426
- series: ChartSeries[];
2427
- }
2428
-
2429
- declare function ChartBar({ data, height, showValues, className, }: ChartBarProps): react.JSX.Element;
2430
- declare namespace ChartBar {
2431
- var displayName: string;
2432
- }
2433
-
2434
- declare function ChartDonut({ data, size, strokeWidth, showLegend, className, }: ChartDonutProps): react.JSX.Element;
2435
- declare namespace ChartDonut {
2436
- var displayName: string;
2437
- }
2438
-
2439
- declare function ChartLine({ labels, series, height, curve, showDots, fill, fillOpacity, xAxis, yAxis, grid, tooltip, animate, responsive, className, }: ChartLineProps): react.JSX.Element;
2440
- declare namespace ChartLine {
2441
- var displayName: string;
2442
- }
2443
-
2444
- declare function ChartArea(props: ChartAreaProps): react.JSX.Element;
2445
- declare namespace ChartArea {
2446
- var displayName: string;
2447
- }
2448
-
2449
- declare function ChartPie({ data, size, showLabels, tooltip, className, }: ChartPieProps): react.JSX.Element;
2450
- declare namespace ChartPie {
2451
- var displayName: string;
2452
- }
2453
-
2454
- declare function ChartSparkline({ data, width, height, color, className, }: ChartSparklineProps): react.JSX.Element;
2455
- declare namespace ChartSparkline {
2456
- var displayName: string;
2457
- }
2458
-
2459
- declare function ChartHorizontalBar({ data, height, showValues, className, }: ChartHorizontalBarProps): react.JSX.Element;
2460
- declare namespace ChartHorizontalBar {
2461
- var displayName: string;
2462
- }
2463
-
2464
- declare function ChartStackedBar({ labels, series, height, xAxis, yAxis, grid, tooltip, responsive, className, }: ChartStackedBarProps): react.JSX.Element;
2465
- declare namespace ChartStackedBar {
2466
- var displayName: string;
2467
- }
2468
-
2469
- declare const Chart: {
2470
- Bar: typeof ChartBar;
2471
- Donut: typeof ChartDonut;
2472
- Line: typeof ChartLine;
2473
- Area: typeof ChartArea;
2474
- Pie: typeof ChartPie;
2475
- Sparkline: typeof ChartSparkline;
2476
- HorizontalBar: typeof ChartHorizontalBar;
2477
- StackedBar: typeof ChartStackedBar;
2478
- };
2479
-
2480
- /** Props passed to every render-extension component. */
2481
- interface RenderExtensionProps {
2482
- /** The inner content of the custom tag (raw string). */
2483
- content: string;
2484
- /** Parsed HTML attributes from the opening tag. */
2485
- attributes: Record<string, string>;
2486
- }
2487
- /** Registers a custom tag with a React component for rendering. */
2488
- interface RenderExtension {
2489
- /** Tag name to match, e.g. "questions", "thinking". Case-insensitive. */
2490
- tag: string;
2491
- /** React component that renders the matched tag. */
2492
- component: ComponentType<RenderExtensionProps>;
2493
- /**
2494
- * Whether this is a block-level element.
2495
- * Block extensions are wrapped in a `<div>`, inline in a `<span>`.
2496
- * @default true
2497
- */
2498
- block?: boolean;
2499
- }
2500
- /** Register a single render extension globally (available to all ContentRenderer and Editor instances). */
2501
- declare function registerExtension(extension: RenderExtension): void;
2502
- /** Register multiple render extensions globally. */
2503
- declare function registerExtensions(extensions: RenderExtension[]): void;
2504
-
2505
- interface EditorAction {
2506
- icon: ReactNode;
2507
- label: string;
2508
- command: string;
2509
- commandArg?: string;
2510
- active?: boolean;
2511
- }
2512
- interface EditorToolbarProps {
2513
- actions?: EditorAction[];
2514
- onAction?: (command: string) => void;
2515
- children?: ReactNode;
2516
- className?: string;
2517
- /**
2518
- * Append a "Source" toggle (reveals the raw HTML/Markdown behind the editor)
2519
- * to the right of the default toolbar. Ignored when `children` are supplied —
2520
- * custom toolbars compose their own `<Editor.SourceToggle />`.
2521
- * @default true
2522
- */
2523
- showSourceToggle?: boolean;
2524
- }
2525
- interface EditorContentProps {
2526
- className?: string;
2527
- /** Max height in px before scrolling. When set, content area becomes scrollable. */
2528
- maxHeight?: number;
2529
- /** Class names applied to the raw-source `<textarea>` shown while source mode is on. */
2530
- sourceClassName?: string;
2531
- }
2532
- interface EditorSourceToggleProps {
2533
- className?: string;
2534
- /** Toggle glyph/label. @default `</>` */
2535
- icon?: ReactNode;
2536
- /** Accessible title when in rich-text mode (click → source). @default "Source" */
2537
- title?: string;
2538
- /** Accessible title when in source mode (click → rich text). @default "Rich text" */
2539
- activeTitle?: string;
2540
- }
2541
- interface EditorProps {
2542
- children: ReactNode;
2543
- className?: string;
2544
- value?: string;
2545
- defaultValue?: string;
2546
- onChange?: (value: string) => void;
2547
- outputFormat?: "html" | "markdown";
2548
- /**
2549
- * The format of the INCOMING `value` / `defaultValue`. Default `"auto"`
2550
- * keeps the historical sniff (`detectFormat`) — but real-world markdown that
2551
- * merely mentions HTML-ish snippets (`<code>`, `<table`, …) flips the sniff
2552
- * to html and renders as a wall of text. Callers with a KNOWN format
2553
- * (file-typed content, values previously emitted with
2554
- * `outputFormat="markdown"`) should declare it; explicit values bypass the
2555
- * sniff entirely — in edit mode AND view mode.
2556
- * @default "auto"
2557
- */
2558
- valueFormat?: "markdown" | "html" | "auto";
2559
- lineSpacing?: number;
2560
- placeholder?: string;
2561
- /**
2562
- * View/edit mode — like the react-fancy inputs. Resolution: this prop →
2563
- * nearest `<Form>` / `<FormProvider>` context → `"edit"`. In `"view"` mode the
2564
- * editor renders its value read-only through `<ContentRenderer>` (matching
2565
- * `outputFormat` — markdown/html) instead of the editable toolbar + content.
2566
- * @default "edit"
2567
- */
2568
- mode?: FieldMode;
2569
- /** Per-instance render extensions. Merged with any globally-registered extensions. */
2570
- extensions?: RenderExtension[];
2571
- /**
2572
- * Controlled source-view flag. When `true` the content area shows the raw
2573
- * HTML/Markdown (`value`, in `outputFormat`) in an editable `<textarea>`
2574
- * instead of the rich-text surface. Pair with `onShowSourceChange`, or leave
2575
- * uncontrolled and drive it with the toolbar's Source toggle.
2576
- */
2577
- showSource?: boolean;
2578
- /** Initial source-view flag when uncontrolled. @default false */
2579
- defaultShowSource?: boolean;
2580
- /** Fired when the Source toggle (or an agent) flips source view on/off. */
2581
- onShowSourceChange?: (showSource: boolean) => void;
2582
- /**
2583
- * Skip HTML sanitization of the initial value. By default the initial markdown/HTML
2584
- * is sanitized to remove `<script>`, `<iframe>`, event handlers, and `javascript:`
2585
- * URIs before being placed into contentEditable. Pass `unsafe` only when the
2586
- * initial value is fully trusted.
2587
- * @default false
2588
- */
2589
- unsafe?: boolean;
2590
- }
2591
-
2592
- declare function EditorToolbar({ actions, onAction, children, className, showSourceToggle, }: EditorToolbarProps): react.JSX.Element;
2593
- declare namespace EditorToolbar {
2594
- var displayName: string;
2595
- }
2596
-
2597
- declare function EditorToolbarSeparator(): react.JSX.Element;
2598
- declare namespace EditorToolbarSeparator {
2599
- var displayName: string;
2600
- }
2601
-
2602
- /**
2603
- * Toolbar button that reveals the raw HTML/Markdown behind the editor. Reads
2604
- * `showSource` / `setShowSource` from context, so it works in the default
2605
- * toolbar and in any custom toolbar composed with `useEditor()`.
2606
- */
2607
- declare function EditorSourceToggle({ className, icon, title, activeTitle, }: EditorSourceToggleProps): react.JSX.Element;
2608
- declare namespace EditorSourceToggle {
2609
- var displayName: string;
2610
- }
2611
-
2612
- declare function EditorContent({ className, maxHeight, sourceClassName }: EditorContentProps): react.JSX.Element;
2613
- declare namespace EditorContent {
2614
- var displayName: string;
2615
- }
2616
-
2617
- declare function EditorRoot({ children, className, value: controlledValue, defaultValue, onChange, outputFormat, valueFormat, lineSpacing, placeholder, mode: modeProp, extensions: instanceExtensions, unsafe, showSource: showSourceProp, defaultShowSource, onShowSourceChange, }: EditorProps): react.JSX.Element;
2618
- declare const Editor: typeof EditorRoot & {
2619
- Toolbar: typeof EditorToolbar & {
2620
- Separator: typeof EditorToolbarSeparator;
2621
- };
2622
- Content: typeof EditorContent;
2623
- SourceToggle: typeof EditorSourceToggle;
2624
- };
2625
-
2626
- interface EditorContextValue {
2627
- contentRef: RefObject<HTMLDivElement | null>;
2628
- exec: (command: string, arg?: string) => void;
2629
- insertText: (text: string) => void;
2630
- wrapSelection: (before: string, after: string) => void;
2631
- outputFormat: "html" | "markdown";
2632
- lineSpacing: number;
2633
- placeholder?: string;
2634
- /** Merged render extensions (global + instance). */
2635
- extensions: RenderExtension[];
2636
- /** Whether the raw-source view (textarea) is showing instead of the rich-text surface. */
2637
- showSource: boolean;
2638
- /** Toggle/set the raw-source view. */
2639
- setShowSource: (showSource: boolean) => void;
2640
- /** Initial HTML content to load into the editor on mount */
2641
- _initialHtml: string;
2642
- /** @internal Called by EditorContent on input events */
2643
- _onInput: () => void;
2644
- /** @internal Raw source value (`value` in `outputFormat`), for the source textarea. */
2645
- _sourceValue: string;
2646
- /** @internal Commit an edit made directly in the source textarea. */
2647
- _onSourceInput: (value: string) => void;
2648
- }
2649
- declare function useEditor(): EditorContextValue;
2650
-
2651
- interface CodeViewProps {
2652
- /** Source text to display / edit. Controlled. */
2653
- value: string;
2654
- /**
2655
- * Called on edit. Omit (or set `readOnly`) for a read-only view. When
2656
- * provided, the view is an editable source surface (transparent textarea over
2657
- * the highlight overlay).
2658
- */
2659
- onChange?: (value: string) => void;
2660
- /**
2661
- * Language id for syntax highlighting. Only `"html"` is highlighted (the one
2662
- * grammar shipped by `fancy-file-commons`); everything else — including
2663
- * `"markdown"` and `"plaintext"` — renders un-highlighted. For richer language
2664
- * highlighting use `@particle-academy/fancy-code`'s `CodeEditor`.
2665
- * @default "plaintext"
2666
- */
2667
- language?: "html" | "markdown" | "plaintext" | (string & {});
2668
- /** Read-only mode (no editing even if `onChange` is passed). @default false */
2669
- readOnly?: boolean;
2670
- /** Placeholder shown when empty. */
2671
- placeholder?: string;
2672
- /** Min height in px before the view grows with content. @default 120 */
2673
- minHeight?: number;
2674
- /** Max height in px before the view scrolls internally. */
2675
- maxHeight?: number;
2676
- /** Additional classes on the scroll container (e.g. `h-full`, `flex-auto`). */
2677
- className?: string;
2678
- }
2679
-
2680
- /**
2681
- * A lightweight, syntax-highlighted source view built on the pure highlight
2682
- * primitives in `@particle-academy/fancy-file-commons` — a highlight overlay
2683
- * with a transparent, auto-growing textarea on top; the container scrolls both
2684
- * together. Fills its parent's height (`h-full`) and grows with content down to
2685
- * `minHeight`. Only HTML is highlighted; other languages render as plain text.
2686
- */
2687
- declare function CodeView({ value, onChange, language, readOnly, placeholder, minHeight, maxHeight, className, }: CodeViewProps): react.JSX.Element;
2688
- declare namespace CodeView {
2689
- var displayName: string;
2690
- }
2691
-
2692
- interface ContentRendererProps {
2693
- value: string;
2694
- format?: "html" | "markdown" | "auto";
2695
- lineSpacing?: number;
2696
- className?: string;
2697
- /** Per-instance render extensions. Merged with any globally-registered extensions. */
2698
- extensions?: RenderExtension[];
2699
- /**
2700
- * Skip HTML sanitization. By default, rendered output is sanitized to remove
2701
- * `<script>`, `<iframe>`, event handlers, and `javascript:` URIs. Pass
2702
- * `unsafe` only when the input is fully trusted (e.g. server-rendered
2703
- * markdown from your own CMS).
2704
- * @default false
2705
- */
2706
- unsafe?: boolean;
2707
- }
2708
-
2709
- declare function ContentRenderer({ value, format, lineSpacing, className, extensions: instanceExtensions, unsafe, }: ContentRendererProps): react.JSX.Element;
2710
- declare namespace ContentRenderer {
2711
- var displayName: string;
2712
- }
2713
-
2714
- type MenuOrientation = "horizontal" | "vertical";
2715
- interface MenuProps {
2716
- children: ReactNode;
2717
- orientation?: MenuOrientation;
2718
- className?: string;
2719
- }
2720
- interface MenuItemProps extends NavigableProps {
2721
- children: ReactNode;
2722
- icon?: ReactNode;
2723
- active?: boolean;
2724
- disabled?: boolean;
2725
- badge?: ReactNode;
2726
- onClick?: () => void;
2727
- className?: string;
2728
- }
2729
- interface MenuSubmenuProps {
2730
- children: ReactNode;
2731
- label: ReactNode;
2732
- icon?: ReactNode;
2733
- defaultOpen?: boolean;
2734
- className?: string;
2735
- }
2736
- interface MenuGroupProps {
2737
- children: ReactNode;
2738
- label?: string;
2739
- className?: string;
2740
- }
2741
- interface MenuContextValue {
2742
- orientation: MenuOrientation;
2743
- }
2744
-
2745
- declare function MenuItem({ children, href, as: As, icon, active, disabled, badge, onClick, className, ...rest }: MenuItemProps): react.JSX.Element;
2746
- declare namespace MenuItem {
2747
- var displayName: string;
2748
- }
2749
-
2750
- declare function MenuSubmenu({ children, label, icon, defaultOpen, className, }: MenuSubmenuProps): react.JSX.Element;
2751
- declare namespace MenuSubmenu {
2752
- var displayName: string;
2753
- }
2754
-
2755
- declare function MenuGroup({ children, label, className }: MenuGroupProps): react.JSX.Element;
2756
- declare namespace MenuGroup {
2757
- var displayName: string;
2758
- }
2759
-
2760
- declare function MenuRoot({ children, orientation, className }: MenuProps): react.JSX.Element;
2761
- declare const Menu: typeof MenuRoot & {
2762
- Item: typeof MenuItem;
2763
- Submenu: typeof MenuSubmenu;
2764
- Group: typeof MenuGroup;
2765
- };
2766
-
2767
- declare function useMenu(): MenuContextValue;
2768
-
2769
- type SidebarCollapseMode = "icons" | "letters";
2770
- interface SidebarProps {
2771
- children: ReactNode;
2772
- collapsed?: boolean;
2773
- defaultCollapsed?: boolean;
2774
- onCollapsedChange?: (collapsed: boolean) => void;
2775
- /**
2776
- * How items display when collapsed:
2777
- * - `"icons"` — show only the icon (falls back to first 3 letters if no icon)
2778
- * - `"letters"` — show the first 3 letters of the label
2779
- * @default "icons"
2780
- */
2781
- collapseMode?: SidebarCollapseMode;
2782
- className?: string;
2783
- }
2784
- interface SidebarItemProps extends NavigableProps {
2785
- children: ReactNode;
2786
- icon?: ReactNode;
2787
- active?: boolean;
2788
- disabled?: boolean;
2789
- badge?: ReactNode;
2790
- onClick?: () => void;
2791
- className?: string;
2792
- }
2793
- interface SidebarGroupProps {
2794
- children: ReactNode;
2795
- label?: string;
2796
- className?: string;
2797
- }
2798
- interface SidebarToggleProps {
2799
- className?: string;
2800
- }
2801
- interface SidebarSubmenuProps {
2802
- children: ReactNode;
2803
- label: string;
2804
- icon?: ReactNode;
2805
- defaultOpen?: boolean;
2806
- className?: string;
2807
- }
2808
- interface SidebarContextValue {
2809
- collapsed: boolean;
2810
- collapseMode: SidebarCollapseMode;
2811
- setCollapsed: (collapsed: boolean) => void;
2812
- }
2813
-
2814
- declare function SidebarItem({ children, href, as: As, icon, active, disabled, badge, onClick, className, ...rest }: SidebarItemProps): react.JSX.Element;
2815
- declare namespace SidebarItem {
2816
- var displayName: string;
2817
- }
2818
-
2819
- declare function SidebarGroup({ children, label, className }: SidebarGroupProps): react.JSX.Element;
2820
- declare namespace SidebarGroup {
2821
- var displayName: string;
2822
- }
2823
-
2824
- declare function SidebarSubmenu({ children, label, icon, defaultOpen, className, }: SidebarSubmenuProps): react.JSX.Element;
2825
- declare namespace SidebarSubmenu {
2826
- var displayName: string;
2827
- }
2828
-
2829
- declare function SidebarToggle({ className }: SidebarToggleProps): react.JSX.Element;
2830
- declare namespace SidebarToggle {
2831
- var displayName: string;
2832
- }
2833
-
2834
- declare function SidebarRoot({ children, collapsed: controlledCollapsed, defaultCollapsed, onCollapsedChange, collapseMode, className, }: SidebarProps): react.JSX.Element;
2835
- declare const Sidebar: typeof SidebarRoot & {
2836
- Item: typeof SidebarItem;
2837
- Group: typeof SidebarGroup;
2838
- Submenu: typeof SidebarSubmenu;
2839
- Toggle: typeof SidebarToggle;
2840
- };
2841
-
2842
- declare function useSidebar(): SidebarContextValue;
2843
-
2844
- type MobileMenuVariant = "flyout" | "bottom-bar";
2845
- type MobileMenuSide = "left" | "right";
2846
- interface MobileMenuFlyoutProps {
2847
- children: ReactNode;
2848
- open: boolean;
2849
- onClose: () => void;
2850
- side?: MobileMenuSide;
2851
- title?: string;
2852
- className?: string;
2853
- }
2854
- interface MobileMenuBottomBarProps {
2855
- children: ReactNode;
2856
- className?: string;
2857
- }
2858
- interface MobileMenuItemProps extends NavigableProps {
2859
- children: ReactNode;
2860
- icon?: ReactNode;
2861
- active?: boolean;
2862
- disabled?: boolean;
2863
- badge?: ReactNode;
2864
- onClick?: () => void;
2865
- className?: string;
2866
- }
2867
- interface MobileMenuContextValue {
2868
- variant: MobileMenuVariant;
2869
- }
2870
-
2871
- declare function MobileMenuFlyout({ children, open, onClose, side, title, className, }: MobileMenuFlyoutProps): react.JSX.Element | null;
2872
- declare namespace MobileMenuFlyout {
2873
- var displayName: string;
2874
- }
2875
-
2876
- declare function MobileMenuBottomBar({ children, className }: MobileMenuBottomBarProps): react.JSX.Element;
2877
- declare namespace MobileMenuBottomBar {
2878
- var displayName: string;
2879
- }
2880
-
2881
- declare function MobileMenuItem({ children, href, as: As, icon, active, disabled, badge, onClick, className, ...rest }: MobileMenuItemProps): react.JSX.Element;
2882
- declare namespace MobileMenuItem {
2883
- var displayName: string;
2884
- }
2885
-
2886
- declare const MobileMenu: {
2887
- Flyout: typeof MobileMenuFlyout;
2888
- BottomBar: typeof MobileMenuBottomBar;
2889
- Item: typeof MobileMenuItem;
2890
- };
2891
-
2892
- declare function useMobileMenu(): MobileMenuContextValue;
2893
-
2894
- /**
2895
- * Fired when a card is dropped into a column. `toIndex` is the position
2896
- * the card should land at within the destination column (0-based;
2897
- * `toIndex === current count` means append).
2898
- *
2899
- * For a same-column reorder, `fromColumn === toColumn` and `toIndex` is
2900
- * the new position.
2901
- */
2902
- type KanbanCardMoveHandler = (cardId: string, fromColumn: string, toColumn: string, toIndex: number) => void;
2903
- /**
2904
- * Fired when a column is dropped at a new position. `toIndex` is the
2905
- * new position among registered columns (0-based).
2906
- */
2907
- type KanbanColumnMoveHandler = (columnId: string, toIndex: number) => void;
2908
- interface KanbanContextValue {
2909
- draggedCard: string | null;
2910
- setDraggedCard: (id: string | null) => void;
2911
- dragSource: string | null;
2912
- setDragSource: (id: string | null) => void;
2913
- draggedColumn: string | null;
2914
- setDraggedColumn: (id: string | null) => void;
2915
- onCardMove?: KanbanCardMoveHandler;
2916
- onColumnMove?: KanbanColumnMoveHandler;
2917
- columnIds: string[];
2918
- registerColumn: (id: string) => () => void;
2919
- }
2920
- interface KanbanProps {
2921
- children: ReactNode;
2922
- /**
2923
- * Called when a card is dropped into a column. Receives the destination
2924
- * index so handlers can support within-column reorder.
2925
- */
2926
- onCardMove?: KanbanCardMoveHandler;
2927
- /**
2928
- * Called when a column is dropped at a new position. Only fires if at
2929
- * least one column inside the board has a `<Kanban.ColumnHandle>` and
2930
- * a column was actually dragged.
2931
- */
2932
- onColumnMove?: KanbanColumnMoveHandler;
2933
- className?: string;
2934
- }
2935
- interface KanbanColumnProps {
2936
- children: ReactNode;
2937
- id: string;
2938
- title?: string;
2939
- className?: string;
2940
- /**
2941
- * Skip the column's default visuals (background, padding, min-height,
2942
- * fixed width). Drop-target wiring and the drag-over ring stay.
2943
- */
2944
- unstyled?: boolean;
2945
- /**
2946
- * Soft work-in-progress limit. Shown in the column header (when `title`
2947
- * is provided) as `count/limit`. Turns red over capacity. Drops are
2948
- * still accepted — enforce hard via the consumer's `onCardMove`.
2949
- */
2950
- wipLimit?: number;
2951
- /**
2952
- * If true, the column renders nothing when it has zero card children.
2953
- * Useful for filter UIs that want clean collapse instead of empty
2954
- * placeholders.
2955
- */
2956
- hideWhenEmpty?: boolean;
2957
- }
2958
- interface KanbanCardProps {
2959
- children: ReactNode;
2960
- id: string;
2961
- className?: string;
2962
- /**
2963
- * Skip the card's default visuals (border, padding, shadow). Drag
2964
- * handlers and `draggable` stay.
2965
- */
2966
- unstyled?: boolean;
2967
- }
2968
- interface KanbanColumnHandleProps {
2969
- children: ReactNode;
2970
- className?: string;
2971
- }
2972
-
2973
- declare function KanbanColumn({ children, id, title, className, unstyled, wipLimit, hideWhenEmpty, }: KanbanColumnProps): react.JSX.Element | null;
2974
- declare namespace KanbanColumn {
2975
- var displayName: string;
2976
- }
2977
-
2978
- declare function KanbanCard({ children, id, className, unstyled }: KanbanCardProps): react.JSX.Element;
2979
- declare namespace KanbanCard {
2980
- var displayName: string;
2981
- }
2982
-
2983
- /**
2984
- * Drag handle for column reordering.
2985
- *
2986
- * Mount inside a `Kanban.Column` to make that column draggable. The
2987
- * column's parent `Kanban` listens for the drop and surfaces the new
2988
- * position via `onColumnMove`. Without a handle, columns are static.
2989
- *
2990
- * Typically wrapped around the column header so users grab the title
2991
- * to reorder; can also be a small grip icon.
2992
- */
2993
- declare function KanbanColumnHandle({ children, className, }: KanbanColumnHandleProps): react.JSX.Element;
2994
- declare namespace KanbanColumnHandle {
2995
- var displayName: string;
2996
- }
2997
-
2998
- /**
2999
- * Kanban board.
3000
- *
3001
- * Compound:
3002
- * <Kanban onCardMove={...} onColumnMove={...}>
3003
- * <Kanban.Column id="todo" wipLimit={4}>
3004
- * <Kanban.ColumnHandle>...header...</Kanban.ColumnHandle> // optional
3005
- * <Kanban.Card id="...">...</Kanban.Card>
3006
- * </Kanban.Column>
3007
- * </Kanban>
3008
- *
3009
- * Cards drag between columns AND within a column. Drop position is
3010
- * computed from mouse Y at hover time and surfaced via the `toIndex`
3011
- * argument on `onCardMove`.
3012
- *
3013
- * Columns drag horizontally to reorder when a `<Kanban.ColumnHandle>`
3014
- * is mounted inside them. The root computes the drop index from
3015
- * mouse X and surfaces it via `onColumnMove`.
3016
- */
3017
- declare function KanbanRoot({ children, onCardMove, onColumnMove, className, }: KanbanProps): react.JSX.Element;
3018
- declare const Kanban: typeof KanbanRoot & {
3019
- Column: typeof KanbanColumn;
3020
- Card: typeof KanbanCard;
3021
- ColumnHandle: typeof KanbanColumnHandle;
3022
- };
3023
-
3024
- declare function useKanban(): KanbanContextValue;
3025
-
3026
- interface TreeNodeData {
3027
- /** Unique identifier */
3028
- id: string;
3029
- /** Display label */
3030
- label: string;
3031
- /** Node type for icon rendering */
3032
- type?: "file" | "folder";
3033
- /** File extension hint (e.g., "ts", "php", "html") for icon coloring */
3034
- ext?: string;
3035
- /** Nested children */
3036
- children?: TreeNodeData[];
3037
- /** Custom icon override */
3038
- icon?: ReactNode;
3039
- /** Whether the node is disabled */
3040
- disabled?: boolean;
3041
- }
3042
- /** Where the dragged node will land relative to the drop target */
3043
- type DropPosition = "before" | "after" | "inside";
3044
- interface DragState {
3045
- draggedNodeId: string | null;
3046
- dropTargetId: string | null;
3047
- dropPosition: DropPosition | null;
3048
- }
3049
- interface TreeNavProps {
3050
- /** Tree data */
3051
- nodes: TreeNodeData[];
3052
- /** Currently selected node ID */
3053
- selectedId?: string;
3054
- /** Callback when a node is selected */
3055
- onSelect?: (id: string, node: TreeNodeData) => void;
3056
- /** Callback when a node is right-clicked */
3057
- onNodeContextMenu?: (e: React.MouseEvent, node: TreeNodeData) => void;
3058
- /** Enable drag-and-drop reordering (default: false) */
3059
- draggable?: boolean;
3060
- /** Callback when a node is moved via drag and drop */
3061
- onNodeMove?: (sourceId: string, targetId: string, position: DropPosition) => void;
3062
- /** Accept drops from outside the tree — OS files, items from other
3063
- * components, etc. When true, drag-over is allowed for any data source
3064
- * and `onExternalDrop` fires on drop. (default: false) */
3065
- acceptExternalDrops?: boolean;
3066
- /** Called when an external drag (file or cross-component) is dropped on
3067
- * a node. The raw event lets you read `event.dataTransfer.files` for OS
3068
- * file drops or `event.dataTransfer.getData(type)` for custom MIME
3069
- * payloads from other components. */
3070
- onExternalDrop?: (event: React.DragEvent, target: TreeNodeData, position: DropPosition) => void;
3071
- /** Controlled expanded node IDs */
3072
- expandedIds?: string[];
3073
- /** Default expanded node IDs (uncontrolled) */
3074
- defaultExpandedIds?: string[];
3075
- /** Callback when expanded state changes */
3076
- onExpandedChange?: (ids: string[]) => void;
3077
- /** Expand all folders by default */
3078
- defaultExpandAll?: boolean;
3079
- /** Indent size per nesting level in px (default: 16) */
3080
- indentSize?: number;
3081
- /** Show file/folder icons (default: true) */
3082
- showIcons?: boolean;
3083
- /**
3084
- * Cursor shown on hover over a draggable node.
3085
- * - `"none"` (default): the normal clickable cursor — no move affordance on
3086
- * mere hover. A closed-hand `grabbing` cursor still appears while a drag is
3087
- * actually happening. This suits click-to-select/open trees (file/nav
3088
- * trees), where an always-on grab cursor wrongly implies move-first intent.
3089
- * - `"grab"`: show the open-hand `grab` cursor on hover. Opt in when the whole
3090
- * row is genuinely a drag handle and reordering is the primary interaction.
3091
- * @default "none"
3092
- */
3093
- dragCursor?: "grab" | "none";
3094
- /** Custom className */
3095
- className?: string;
3096
- }
3097
- interface TreeNavContextValue {
3098
- selectedId?: string;
3099
- onSelect?: (id: string, node: TreeNodeData) => void;
3100
- onNodeContextMenu?: (e: React.MouseEvent, node: TreeNodeData) => void;
3101
- expandedIds: string[];
3102
- toggle: (id: string) => void;
3103
- indentSize: number;
3104
- showIcons: boolean;
3105
- draggable: boolean;
3106
- dragCursor: "grab" | "none";
3107
- dragState: DragState;
3108
- setDragState: (state: DragState) => void;
3109
- onNodeMove?: (sourceId: string, targetId: string, position: DropPosition) => void;
3110
- acceptExternalDrops: boolean;
3111
- onExternalDrop?: (event: React.DragEvent, target: TreeNodeData, position: DropPosition) => void;
3112
- nodes: TreeNodeData[];
3113
- expandNode: (id: string) => void;
3114
- }
3115
- interface TreeNodeProps {
3116
- node: TreeNodeData;
3117
- depth: number;
3118
- className?: string;
3119
- }
3120
-
3121
- declare function TreeNode({ node, depth }: TreeNodeProps): react.JSX.Element;
3122
- declare namespace TreeNode {
3123
- var displayName: string;
3124
- }
3125
-
3126
- declare function TreeNavRoot({ nodes, selectedId, onSelect, onNodeContextMenu, draggable, onNodeMove, acceptExternalDrops, onExternalDrop, expandedIds: controlledExpanded, defaultExpandedIds, onExpandedChange, defaultExpandAll, indentSize, showIcons, dragCursor, className, }: TreeNavProps): react.JSX.Element;
3127
- declare namespace TreeNavRoot {
3128
- var displayName: string;
3129
- }
3130
- declare const TreeNav: typeof TreeNavRoot & {
3131
- Node: typeof TreeNode;
3132
- };
3133
-
3134
- declare function useTreeNav(): TreeNavContextValue;
3135
-
3136
- /** Entry kind — regular file or directory. */
3137
- type FileKind = "file" | "dir";
3138
- /**
3139
- * A single file-system entry. JSON-friendly by design so agents and remote
3140
- * hosts can emit entries directly (over MCP, a relay, or a WebSocket).
3141
- * `path` is the stable identity — POSIX-style, never an index.
3142
- */
3143
- interface FileEntry {
3144
- /** Stable identity — POSIX-style path (e.g. `"/src/App.tsx"`). */
3145
- path: string;
3146
- /** Display name (usually the last path segment). */
3147
- name: string;
3148
- /** `"file"` or `"dir"`. */
3149
- kind: FileKind;
3150
- /** Size in bytes (optional; shown for files and used by size sorting). */
3151
- size?: number;
3152
- /** Last-modified timestamp, ISO 8601 (optional; used by mtime sorting). */
3153
- mtime?: string;
3154
- /**
3155
- * Dirs only: `false` = known-empty (no expand affordance), `true` = has
3156
- * children, `undefined` = unknown (expandable when a provider is present).
3157
- */
3158
- hasChildren?: boolean;
3159
- /** Disabled entries render dimmed and cannot be selected, expanded, or navigated into. */
3160
- disabled?: boolean;
3161
- }
3162
- /**
3163
- * JSON-friendly snapshot node — a {@link FileEntry} plus optionally
3164
- * materialized children. `children: undefined` on a dir = unknown depth (a
3165
- * provider fills it lazily in hybrid mode); `children: []` = known-empty.
3166
- */
3167
- interface FileSnapshotNode extends FileEntry {
3168
- children?: FileSnapshotNode[];
3169
- }
3170
- /** Async data source for provider mode. Works against local FS, HTTP, MCP bridges, SSH adapters — anything that resolves a listing. */
3171
- interface FileBrowserProvider {
3172
- /**
3173
- * Load the direct children of `path`. Called lazily — only for the current
3174
- * directory and explicitly expanded folders. The component never walks the
3175
- * tree eagerly.
3176
- */
3177
- loadChildren: (path: string) => Promise<FileEntry[]>;
3178
- }
3179
- /** Which entry kinds are selectable. */
3180
- type FileSelectMode = "file" | "directory" | "both";
3181
- type FileSortField = "name" | "size" | "mtime";
3182
- type FileSortDirection = "asc" | "desc";
3183
- /** Sort order for directory listings. Directories always sort before files. */
3184
- interface FileSort {
3185
- by: FileSortField;
3186
- direction: FileSortDirection;
3187
- }
3188
- /** Per-path load lifecycle for provider mode. */
3189
- type FileLoadStatus = "idle" | "loading" | "loaded" | "error";
3190
- interface FileBrowserProps {
3191
- /** Async data source (provider mode). Folders load on first expand — never an eager walk. */
3192
- provider?: FileBrowserProvider;
3193
- /**
3194
- * JSON-friendly tree value (snapshot mode). Replace or patch it from outside
3195
- * as stream chunks land — the component treats it as the source of truth for
3196
- * every path it covers. May be combined with `provider` (hybrid): the
3197
- * snapshot seeds, the provider fills unknown-depth folders.
3198
- */
3199
- snapshot?: FileSnapshotNode[];
3200
- /** Which entry kinds are selectable (default `"file"`). Non-selectable entries stay browsable. */
3201
- select?: FileSelectMode;
3202
- /** Allow selecting multiple entries; `value` becomes `string[]` (default `false`). */
3203
- multiple?: boolean;
3204
- /** Controlled selection — a path, an array of paths (`multiple`), or `null`. */
3205
- value?: string | string[] | null;
3206
- /** Initial selection (uncontrolled). */
3207
- defaultValue?: string | string[] | null;
3208
- /** Called with the next selection and the matching known entries. */
3209
- onChange?: (value: string | string[] | null, entries: FileEntry[]) => void;
3210
- /** Controlled current directory. */
3211
- path?: string;
3212
- /** Initial current directory (uncontrolled, default `"/"`). */
3213
- defaultPath?: string;
3214
- /** Called when the current directory changes (breadcrumb click, path input, double-clicked folder). */
3215
- onPathChange?: (path: string) => void;
3216
- /** Controlled expanded folder paths. */
3217
- expandedPaths?: string[];
3218
- /** Initially expanded folder paths (uncontrolled). */
3219
- defaultExpandedPaths?: string[];
3220
- /** Called when the expanded set changes. */
3221
- onExpandedChange?: (paths: string[]) => void;
3222
- /** Controlled sort order. */
3223
- sort?: FileSort;
3224
- /** Initial sort order (uncontrolled, default `{ by: "name", direction: "asc" }`). */
3225
- defaultSort?: FileSort;
3226
- /** Called when the sort order changes. */
3227
- onSortChange?: (sort: FileSort) => void;
3228
- /** Controlled name filter — a client-side substring match over loaded nodes. */
3229
- filter?: string;
3230
- /** Initial name filter (uncontrolled). */
3231
- defaultFilter?: string;
3232
- /** Called when the name filter changes. */
3233
- onFilterChange?: (filter: string) => void;
3234
- /** Called when a provider load rejects; the failed folder shows an inline error with a retry. */
3235
- onError?: (path: string, error: unknown) => void;
3236
- /** Indent per nesting level in px (default `16`). */
3237
- indentSize?: number;
3238
- /** Show file/folder icons (default `true`). */
3239
- showIcons?: boolean;
3240
- /** Custom className for the outer shell. */
3241
- className?: string;
3242
- /**
3243
- * Custom layout. When omitted, renders the default
3244
- * `<FileBrowser.PathBar />` + `<FileBrowser.Toolbar />` + `<FileBrowser.Tree />`.
3245
- */
3246
- children?: ReactNode;
3247
- }
3248
- /** A flattened, visible row — the keyboard-navigation order of the tree pane. */
3249
- interface FileBrowserRow {
3250
- entry: FileEntry;
3251
- depth: number;
3252
- /** Whether the row shows an expand affordance. */
3253
- expandable: boolean;
3254
- /** Whether the row is currently expanded. */
3255
- expanded: boolean;
3256
- /** Path of the parent row, or `null` for top-level rows of the current directory. */
3257
- parentPath: string | null;
3258
- }
3259
- interface FileBrowserContextValue {
3260
- /** Known children of a path (snapshot first, then provider cache), or `undefined` when not yet loaded. */
3261
- entriesFor: (path: string) => FileEntry[] | undefined;
3262
- /** Children of a path after the name filter + sort are applied (empty when unknown). */
3263
- visibleChildrenFor: (path: string) => FileEntry[];
3264
- statusFor: (path: string) => FileLoadStatus;
3265
- errorFor: (path: string) => string | undefined;
3266
- /** Request a lazy load of a path's children (no-op without a provider or when already known/loading). */
3267
- loadPath: (path: string, options?: {
3268
- reload?: boolean;
3269
- }) => void;
3270
- hasProvider: boolean;
3271
- path: string;
3272
- /** Change the current directory (also clears the name filter and resets roving focus). */
3273
- navigate: (path: string) => void;
3274
- expandedPaths: string[];
3275
- toggleExpanded: (path: string) => void;
3276
- select: FileSelectMode;
3277
- multiple: boolean;
3278
- selectedPaths: string[];
3279
- isSelected: (path: string) => boolean;
3280
- isSelectable: (entry: FileEntry) => boolean;
3281
- selectEntry: (entry: FileEntry) => void;
3282
- sort: FileSort;
3283
- setSort: (sort: FileSort) => void;
3284
- filter: string;
3285
- setFilter: (filter: string) => void;
3286
- visibleRows: FileBrowserRow[];
3287
- focusedPath: string | null;
3288
- setFocusedPath: (path: string | null) => void;
3289
- /** The row that currently owns `tabIndex={0}`. */
3290
- tabFocusPath: string | null;
3291
- focusRow: (path: string) => void;
3292
- registerRow: (path: string, el: HTMLElement | null) => void;
3293
- indentSize: number;
3294
- showIcons: boolean;
3295
- }
3296
- interface FileBrowserPathBarProps {
3297
- /** Allow switching to the editable path input (default `true`). */
3298
- editable?: boolean;
3299
- /** Placeholder for the path input. */
3300
- placeholder?: string;
3301
- className?: string;
3302
- }
3303
- interface FileBrowserToolbarProps {
3304
- /** Placeholder for the name filter input (default `"Filter"`). */
3305
- filterPlaceholder?: string;
3306
- className?: string;
3307
- }
3308
- interface FileBrowserTreeProps {
3309
- /** Accessible label for the tree (default `"Files"`). */
3310
- ariaLabel?: string;
3311
- className?: string;
3312
- }
3313
- interface FileBrowserNodeProps {
3314
- entry: FileEntry;
3315
- depth: number;
3316
- }
3317
-
3318
- /**
3319
- * Breadcrumb trail over the current directory plus an editable path input —
3320
- * type a POSIX-style path and press Enter to navigate (lazy-loading it in
3321
- * provider mode). Escape or blur cancels the edit.
3322
- */
3323
- declare function FileBrowserPathBar({ editable, placeholder, className, }: FileBrowserPathBarProps): react.JSX.Element;
3324
- declare namespace FileBrowserPathBar {
3325
- var displayName: string;
3326
- }
3327
-
3328
- /**
3329
- * Toolbar: client-side name filter (over loaded nodes only — never triggers
3330
- * loads) plus a dirs-first sort control. Clicking the active sort field flips
3331
- * its direction.
3332
- */
3333
- declare function FileBrowserToolbar({ filterPlaceholder, className }: FileBrowserToolbarProps): react.JSX.Element;
3334
- declare namespace FileBrowserToolbar {
3335
- var displayName: string;
3336
- }
3337
-
3338
- /**
3339
- * The tree pane: ARIA `tree` semantics, roving tabindex, and full keyboard
3340
- * navigation (arrows / Enter / Space / Home / End) over the flattened row
3341
- * order. Lazy loads fire on expand only.
3342
- */
3343
- declare function FileBrowserTree({ ariaLabel, className }: FileBrowserTreeProps): react.JSX.Element;
3344
- declare namespace FileBrowserTree {
3345
- var displayName: string;
3346
- }
3347
-
3348
- declare function FileBrowserNode({ entry, depth }: FileBrowserNodeProps): react.JSX.Element;
3349
- declare namespace FileBrowserNode {
3350
- var displayName: string;
3351
- }
3352
-
3353
- /**
3354
- * FileBrowser — remote-capable file/folder browser + directory picker.
3355
- *
3356
- * Browses any file tree the host can describe — local FS, HTTP, SSH, or a
3357
- * remote machine streaming snapshots — via two feeding modes that may be
3358
- * combined:
3359
- *
3360
- * - **Provider mode (lazy pull):** pass `provider.loadChildren(path)`. Folders
3361
- * load on first expand with per-node loading + error states; the tree is
3362
- * never walked eagerly.
3363
- * - **Snapshot mode (streamed push):** pass a JSON-friendly `snapshot` tree
3364
- * and replace/patch it as chunks arrive (relay / WebSocket / MCP). The
3365
- * snapshot is the source of truth for every path it covers; with a provider
3366
- * also present, unknown-depth folders stay lazily loadable (hybrid).
3367
- *
3368
- * Fully controlled per the Human+ component contract (`value`/`onChange`,
3369
- * `path`/`onPathChange`, `expandedPaths`/`onExpandedChange`, plus
3370
- * `sort`/`filter`), with uncontrolled `defaultX` fallbacks. Every row carries
3371
- * a `data-path` attribute — paths are the stable handles agents target, never
3372
- * indexes or generated ids.
3373
- *
3374
- * Agent bridge sketch (ships later in `@particle-academy/agent-integrations`):
3375
- * `registerFilesBridge(server, { adapter })` will expose MCP tools over this
3376
- * surface — `files_list(path)`, `files_expand(path)` / `files_collapse(path)`,
3377
- * `files_select(paths)`, `files_navigate(path)`, and
3378
- * `files_request_snapshot(path, depth)` — with each mutation emitting an
3379
- * `AgentActivity` event so presence, undo, and coaching layers compose. The
3380
- * adapter maps those tools onto the same controlled props
3381
- * (`value`/`path`/`expandedPaths`) and provider/snapshot contract; no DOM
3382
- * scraping required.
3383
- *
3384
- * Read-only in v1: no content preview (pair with fancy-code's `FileViewer`)
3385
- * and no write operations — rename/delete/upload arrive later behind a
3386
- * `pendingMode`-gated iteration.
3387
- */
3388
- declare function FileBrowserRoot({ provider, snapshot, select, multiple, value, defaultValue, onChange, path, defaultPath, onPathChange, expandedPaths, defaultExpandedPaths, onExpandedChange, sort, defaultSort, onSortChange, filter, defaultFilter, onFilterChange, onError, indentSize, showIcons, className, children, }: FileBrowserProps): react.JSX.Element;
3389
- declare namespace FileBrowserRoot {
3390
- var displayName: string;
3391
- }
3392
- declare const FileBrowser: typeof FileBrowserRoot & {
3393
- PathBar: typeof FileBrowserPathBar;
3394
- Toolbar: typeof FileBrowserToolbar;
3395
- Tree: typeof FileBrowserTree;
3396
- Node: typeof FileBrowserNode;
3397
- };
3398
-
3399
- declare function useFileBrowser(): FileBrowserContextValue;
76
+ export { M as MediaKind, a as MediaViewer, b as MediaViewerProps, R as ResolveMediaTypeInput, r as resolveMediaType } from './index-B71wa9AW.cjs';
77
+ import { P as Placement } from './types-8Sv0rCjw.cjs';
78
+ export { A as ActionColor, B as ButtonColor, C as Color, S as Size, V as Variant } from './types-8Sv0rCjw.cjs';
79
+ import { RefObject } from 'react';
80
+ export { ReasonTag, ReasonTagProps, ReasonTagSource, ReasonTagTheme } from './reason-tag.cjs';
81
+ export { MoodMeter, MoodMeterProps } from './mood-meter.cjs';
82
+ export { PromptAttachment, PromptCmd, PromptInput, PromptInputProps, PromptMention } from './prompt-input.cjs';
83
+ export { ChatDrawer, ChatDrawerProps, ChatDrawerTab } from './chat-drawer.cjs';
84
+ export { ControlledAdapterHandle, InputTag, InputTagAdapter, InputTagAdapterState, InputTagProps, InputTagTrigger, InputTagTriggers, contentEditableAdapter, controlledAdapter, inputAdapter, textareaAdapter } from './input-tag.cjs';
85
+ export { MagicWand, MagicWandAction, MagicWandAppearance, MagicWandProps, MagicWandSelection } from './magic-wand.cjs';
86
+ export { ImageViewer } from './image-viewer.cjs';
87
+ export { I as ImageViewerProps, a as ImageViewerViewport } from './ImageViewer.types-BaqlDeuo.cjs';
88
+ export { VideoViewer } from './video-viewer.cjs';
89
+ export { V as VideoViewerProps } from './VideoViewer.types-CTwS6PcM.cjs';
90
+ export { AudioViewer } from './audio-viewer.cjs';
91
+ export { A as AudioViewerProps } from './AudioViewer.types-VWhRx6XG.cjs';
92
+ export { PdfViewer } from './pdf-viewer.cjs';
93
+ export { P as PdfViewerProps } from './PdfViewer.types-_u6vboSl.cjs';
3400
94
 
3401
95
  declare function cn(...inputs: ClassValue[]): string;
3402
96
 
@@ -3429,34 +123,6 @@ declare function sanitizeHref(href: string | undefined | null): string | undefin
3429
123
  */
3430
124
  declare function sanitizeHtml(html: string): string;
3431
125
 
3432
- /**
3433
- * Resolve what kind of media a source is, from its MIME type (preferred) or its
3434
- * URL — a file extension, or the type embedded in a `data:` URI.
3435
- *
3436
- * Shared by `<MediaViewer>` to pick the right per-type viewer, and exported so
3437
- * downstream packages (e.g. fancy-code's file viewer) can make the same
3438
- * text-vs-media decision without re-deriving the table.
3439
- */
3440
- type MediaKind = "image" | "video" | "audio" | "pdf" | "unknown";
3441
- interface ResolveMediaTypeInput {
3442
- /** MIME type — preferred when known (e.g. `"image/png"`, `"video/mp4"`). */
3443
- mime?: string | null;
3444
- /**
3445
- * Source URL — used to sniff the kind from a file extension, or from the type
3446
- * embedded in a `data:` URI, when no `mime` is given. `http(s):` / `data:` /
3447
- * `blob:` are all accepted (a bare `blob:` URL carries no type, so pass
3448
- * `mime` alongside it).
3449
- */
3450
- src?: string | null;
3451
- }
3452
- /**
3453
- * Resolve a {@link MediaKind} from a MIME type and/or source URL. MIME wins
3454
- * when it's conclusive; otherwise the `src` is sniffed (a `data:` URI's
3455
- * embedded type first, then the file extension). Returns `"unknown"` when
3456
- * nothing matches — callers treat that as "not previewable media" (e.g. text).
3457
- */
3458
- declare function resolveMediaType({ mime, src }: ResolveMediaTypeInput): MediaKind;
3459
-
3460
126
  declare function useControllableState<T>(controlledValue: T | undefined, defaultValue: T, onChange?: (value: T) => void): [T, (value: T | ((prev: T) => T)) => void];
3461
127
 
3462
128
  declare function useOutsideClick(ref: RefObject<HTMLElement | null>, handler: (event: MouseEvent | TouchEvent) => void, enabled?: boolean, ignoreRef?: RefObject<HTMLElement | null>): void;
@@ -3529,636 +195,4 @@ interface UseNodeRegistryReturn {
3529
195
  }
3530
196
  declare function useNodeRegistry(): UseNodeRegistryReturn;
3531
197
 
3532
- /**
3533
- * ReasonTag — wraps any value with a small affordance that reveals the
3534
- * agent's reasoning, sources, and confidence on hover or click.
3535
- *
3536
- * <ReasonTag
3537
- * value="$1.4M"
3538
- * reason="Projected Q3 ARR after stacking renewals."
3539
- * confidence={0.91}
3540
- * sources={[{ label: "Q2 actuals · CRM export" }]}
3541
- * by="Forecaster"
3542
- * />
3543
- *
3544
- * Three visual styles:
3545
- * • "dot" — value with a tiny coloured dot (default, subtle)
3546
- * • "underline" — dotted underline + trailing "?"
3547
- * • "chip" — full coloured pill (loud)
3548
- *
3549
- * Confidence drives the colour via three tiers (high / medium / low),
3550
- * so a quick visual scan tells the human which suggestions deserve a
3551
- * second look without opening any tooltips.
3552
- *
3553
- * `pinned` swaps the popover for an inline annotation slot — useful
3554
- * when explainability should always be visible, not buried in a hover.
3555
- */
3556
- type ReasonTagSource = {
3557
- label: string;
3558
- href?: string;
3559
- };
3560
- type ReasonTagTheme = "dot" | "underline" | "chip";
3561
- interface ReasonTagProps {
3562
- /** The value the tag wraps — usually a number, label, or short phrase. */
3563
- value: React.ReactNode;
3564
- /** Free-text rationale shown in the popover / inline annotation. */
3565
- reason: string;
3566
- /** 0..1 confidence. Drives the tier colour. Defaults to 1. */
3567
- confidence?: number;
3568
- /** Optional list of sources (label + optional href). */
3569
- sources?: ReasonTagSource[];
3570
- /** Optional author / agent name shown in the popover header. */
3571
- by?: string;
3572
- /** Visual treatment for the trigger. */
3573
- theme?: ReasonTagTheme;
3574
- /**
3575
- * When true, the popover is replaced with an always-visible inline
3576
- * annotation below the value.
3577
- */
3578
- pinned?: boolean;
3579
- /** Called when the user hits the "ask follow-up" action. */
3580
- onFollowUp?: () => void;
3581
- /** Optional className applied to the trigger element. */
3582
- className?: string;
3583
- }
3584
- declare function ReasonTag({ value, reason, confidence, sources, by, theme, pinned, onFollowUp, className, }: ReasonTagProps): react.JSX.Element;
3585
-
3586
- /**
3587
- * MoodMeter — a 2D draggable pad that captures a value AND the
3588
- * confidence in that value on the same handle.
3589
- *
3590
- * <MoodMeter
3591
- * min={0} max={1}
3592
- * value={value} confidence={confidence}
3593
- * onChange={(v, c) => { setValue(v); setConfidence(c); }}
3594
- * />
3595
- *
3596
- * • x-axis maps to [min..max]
3597
- * • y-axis maps to [0..1] confidence (top = sure)
3598
- * • the halo around the handle scales inversely with confidence —
3599
- * uncertain readings literally look fuzzier
3600
- *
3601
- * Why pair them in one control? When AIs post a number, humans
3602
- * immediately ask "how sure are you?". Making confidence an explicit
3603
- * sibling of value — and letting the user drag either independently —
3604
- * turns vague "AI suggestion" UX into something you can argue with
3605
- * precisely.
3606
- *
3607
- * The agent's posted value/confidence renders as a dashed ghost
3608
- * handle alongside the live user handle, so the human can see where
3609
- * the agent landed and how far they've drifted.
3610
- */
3611
- interface MoodMeterProps {
3612
- /** Range minimum. */
3613
- min: number;
3614
- /** Range maximum. */
3615
- max: number;
3616
- /** Step for value snapping. Defaults to (max-min)/100. */
3617
- step?: number;
3618
- /** Current value (controlled). */
3619
- value: number;
3620
- /** Current confidence 0..1 (controlled). */
3621
- confidence: number;
3622
- /** Called with (value, confidence) on drag / pointer events. */
3623
- onChange: (value: number, confidence: number) => void;
3624
- /** Optional agent post — renders as a dashed ghost handle. */
3625
- posted?: {
3626
- value: number;
3627
- confidence: number;
3628
- };
3629
- /** Pixel width of the pad. Defaults to 320. */
3630
- width?: number;
3631
- /** Pixel height of the pad. Defaults to 220. */
3632
- height?: number;
3633
- /** Show the grid + axis labels. Defaults to true. */
3634
- showGrid?: boolean;
3635
- /** Color of the user handle. Defaults to sky blue. */
3636
- color?: string;
3637
- /** Color of the posted-ghost handle. Defaults to violet. */
3638
- postedColor?: string;
3639
- /** Optional prefix for the value label (e.g. "$"). */
3640
- prefix?: string;
3641
- /** Optional suffix for the value label (e.g. "k", "%"). */
3642
- suffix?: string;
3643
- /** Optional label text override. Falls back to formatted value. */
3644
- formatValue?: (v: number) => string;
3645
- /** Optional className applied to the outer pad. */
3646
- className?: string;
3647
- }
3648
- declare function MoodMeter({ min, max, step, value, confidence, onChange, posted, width, height, showGrid, color, postedColor, prefix, suffix, formatValue, className, }: MoodMeterProps): react.JSX.Element;
3649
-
3650
- /**
3651
- * PromptInput — the chat composer every AI app rebuilds. Auto-growing
3652
- * multi-line input with:
3653
- *
3654
- * • slash-command picker (`/` triggers a filtered command palette,
3655
- * ↑/↓ navigate, Enter inserts)
3656
- * • mention picker (`@` triggers, filtered against `mentions`)
3657
- * • drop-to-attach (drag files anywhere on the surface) + chip bar
3658
- * • submit on ⌘/Ctrl+Enter (plain Enter inserts a newline)
3659
- * • live token-budget meter (green → amber → red as headroom drops)
3660
- *
3661
- * Wire it up:
3662
- *
3663
- * <PromptInput
3664
- * budgetTokens={32000}
3665
- * commands={[{ name: "/rewrite", hint: "rewrite the selection" }]}
3666
- * mentions={[{ id: "ada", name: "Ada", kind: "person" }]}
3667
- * onSubmit={(text, attachments) => sendToAgent(text, attachments)}
3668
- * />
3669
- */
3670
- type PromptCmd = {
3671
- name: string;
3672
- hint: string;
3673
- };
3674
- type PromptMention = {
3675
- id: string;
3676
- name: string;
3677
- kind: "agent" | "file" | "person" | string;
3678
- };
3679
- type PromptAttachment = {
3680
- id: string;
3681
- name: string;
3682
- bytes: number;
3683
- /**
3684
- * The file the user actually attached.
3685
- *
3686
- * Optional because an attachment restored from a server has no File — but for
3687
- * anything the user dropped or picked it is always present. Without it a host
3688
- * can render a chip and nothing else: no POST, no FormData, no send-to-model.
3689
- */
3690
- file?: File;
3691
- /** MIME type. Hosts branch on this to decide whether a file can be sent as-is. */
3692
- type?: string;
3693
- };
3694
- interface PromptInputProps {
3695
- /** Token budget for the meter. */
3696
- budgetTokens: number;
3697
- /** Slash-commands. Names must start with `/`. */
3698
- commands?: PromptCmd[];
3699
- /** @-mentions. */
3700
- mentions?: PromptMention[];
3701
- /** Show the keyboard hint ("⌘ + Enter to send"). */
3702
- showHint?: boolean;
3703
- /** Called on ⌘/Ctrl+Enter or send button. */
3704
- onSubmit: (text: string, attachments: PromptAttachment[]) => void;
3705
- /** Placeholder text. */
3706
- placeholder?: string;
3707
- /** Rough estimator: chars-per-token. Defaults to 4. */
3708
- charsPerToken?: number;
3709
- /** Color → CSS chip mapping for mention kinds. */
3710
- mentionColor?: Record<string, string>;
3711
- /** Optional max textarea height in px. Defaults to 280. */
3712
- maxHeight?: number;
3713
- /**
3714
- * Rendered INSIDE the rounded shell, ABOVE the attachments bar and
3715
- * textarea. Use this slot for a drawer of tools/files/prompts/etc. so
3716
- * the drawer and composer share one visual panel. See {@link ChatDrawer}.
3717
- */
3718
- aboveInput?: ReactNode;
3719
- }
3720
- declare function PromptInput({ budgetTokens, commands, mentions, showHint, onSubmit, placeholder, charsPerToken, mentionColor, maxHeight, aboveInput, }: PromptInputProps): react.JSX.Element;
3721
-
3722
- /**
3723
- * ChatDrawer — tabbed, collapsible panel that sits *above* a `PromptInput`
3724
- * (via the input's `aboveInput` slot) so the drawer and composer share one
3725
- * rounded shell. Each tab gets a numbered chip and a content panel; only
3726
- * one panel renders at a time.
3727
- *
3728
- * <PromptInput
3729
- * aboveInput={
3730
- * <ChatDrawer
3731
- * tabs={[
3732
- * { id: "files", label: "Files" },
3733
- * { id: "tools", label: "Chat Tools" },
3734
- * { id: "prompts", label: "Chat Prompts" },
3735
- * { id: "deal", label: "IBM Analytics Platform" },
3736
- * ]}
3737
- * activeTabId={tab}
3738
- * onTabChange={setTab}
3739
- * open={open}
3740
- * onToggle={setOpen}
3741
- * >
3742
- * {tab === "tools" && <ToolsGrid />}
3743
- * {tab === "deal" && <DealCard />}
3744
- * </ChatDrawer>
3745
- * }
3746
- * budgetTokens={200_000}
3747
- * onSubmit={(text) => send(text)}
3748
- * />
3749
- *
3750
- * The drawer is purely presentational and slot-driven — you decide what
3751
- * each tab shows. Tab order in the numbered chips is the order you pass.
3752
- */
3753
- type ChatDrawerTab = {
3754
- /** Stable id — used as the React key and as `activeTabId`. */
3755
- id: string;
3756
- /** Human label rendered on the chip. */
3757
- label: string;
3758
- /**
3759
- * Optional override for the numbered prefix (defaults to position +1).
3760
- * Set to `null` to hide the number entirely (e.g. for a context-specific
3761
- * tab like the deal one in the screenshots).
3762
- */
3763
- number?: number | null;
3764
- };
3765
- interface ChatDrawerProps {
3766
- tabs: ChatDrawerTab[];
3767
- activeTabId: string;
3768
- onTabChange: (id: string) => void;
3769
- /** Body open/closed. Default true. */
3770
- open?: boolean;
3771
- /** Called when the chevron is clicked. */
3772
- onToggle?: (open: boolean) => void;
3773
- /** Body content for the active tab. */
3774
- children?: ReactNode;
3775
- /** Min height of the body when open, in px. Default 140. */
3776
- minBodyHeight?: number;
3777
- className?: string;
3778
- }
3779
- declare function ChatDrawer({ tabs, activeTabId, onTabChange, open, onToggle, children, minBodyHeight, className, }: ChatDrawerProps): react.JSX.Element;
3780
-
3781
- /**
3782
- * InputTag — attach a `/`-style or `@`-style autocomplete picker to *any*
3783
- * text surface (a `<textarea>`, an `<input>`, a `contenteditable`, a code
3784
- * editor, a sheet cell editor, a whiteboard sticky note…) via an adapter
3785
- * that abstracts the surface's read/write/caret API.
3786
- *
3787
- * The component is "headless" in the sense that it has no input of its
3788
- * own — it floats a small picker menu near the surface and writes back
3789
- * through the adapter when the user picks an item.
3790
- *
3791
- * <textarea ref={ref} value={text} onChange={...} />
3792
- * <InputTag
3793
- * adapter={textareaAdapter(ref)}
3794
- * triggers={{
3795
- * "/": { items: commands, insert: (c) => `${c.name} ` },
3796
- * "@": { items: mentions, insert: (m) => `@${m.name} ` },
3797
- * }}
3798
- * />
3799
- *
3800
- * For non-DOM surfaces, write a small adapter that conforms to
3801
- * {@link InputTagAdapter}. Adapters typically run 20–40 lines.
3802
- */
3803
- /** What the surface tells the picker on every text/caret change. */
3804
- type InputTagAdapterState = {
3805
- text: string;
3806
- caretIndex: number;
3807
- };
3808
- /**
3809
- * The contract every input surface implements. The picker subscribes to
3810
- * state changes, anchors itself using `getAnchorRect`, intercepts
3811
- * navigation keys via `onKey`, and writes the selected item back through
3812
- * `replaceRange`.
3813
- */
3814
- type InputTagAdapter = {
3815
- /** Push current state whenever text or caret changes. Returns an unsubscribe. */
3816
- subscribe: (fn: (state: InputTagAdapterState) => void) => () => void;
3817
- /** Replace text in `[start, end)` with `replacement`. The adapter is
3818
- * responsible for moving the caret to the end of the inserted text. */
3819
- replaceRange: (start: number, end: number, replacement: string) => void;
3820
- /** Screen-space rect to anchor the picker against. Usually the surface's
3821
- * bounding rect; for editors that can compute caret-precise coordinates,
3822
- * return a small rect there instead. */
3823
- getAnchorRect: () => DOMRect | null;
3824
- /** Subscribe to keydown events on the surface. The handler may return
3825
- * `true` to consume the event (the adapter then calls
3826
- * `preventDefault` / `stopPropagation`). Returns an unsubscribe. */
3827
- onKey: (handler: (e: KeyboardEvent) => boolean) => () => void;
3828
- };
3829
- /**
3830
- * Per-trigger configuration. `T` is the item shape — typically a
3831
- * `{ id, name, ... }` object, but any shape works as long as `keyOf` /
3832
- * `insert` know how to handle it.
3833
- */
3834
- type InputTagTrigger<T> = {
3835
- /** The pool the picker filters against. */
3836
- items: T[];
3837
- /** Text inserted in place of `<triggerChar><query>`. */
3838
- insert: (item: T, query: string) => string;
3839
- /** Custom filter. Default: case-insensitive prefix match against
3840
- * `String(keyOf(item))`. Pass `() => true` to disable filtering and
3841
- * rely on `items` being pre-filtered (e.g. from an async source). */
3842
- filter?: (item: T, query: string) => boolean;
3843
- /** How to render each row. Default renders the result of `keyOf(item)`. */
3844
- render?: (item: T, active: boolean) => ReactNode;
3845
- /** How to derive a stable key + default label for each item. Default
3846
- * reads `item.name` then `item.id` then `String(item)`. */
3847
- keyOf?: (item: T) => string;
3848
- /** Optional header label shown above the list. */
3849
- label?: string;
3850
- };
3851
- type InputTagTriggers = Record<string, InputTagTrigger<any>>;
3852
- interface InputTagProps {
3853
- adapter: InputTagAdapter;
3854
- triggers: InputTagTriggers;
3855
- /** Max rows shown. Default 8. */
3856
- maxItems?: number;
3857
- /** Where the picker anchors relative to the surface. Default `"bottom-left"`. */
3858
- placement?: "bottom-left" | "bottom-right" | "top-left" | "top-right";
3859
- /** Custom class for the popover container. */
3860
- className?: string;
3861
- /** Inline style for the popover container. */
3862
- style?: CSSProperties;
3863
- /** Fires whenever an item is picked. */
3864
- onPick?: (info: {
3865
- triggerChar: string;
3866
- query: string;
3867
- item: unknown;
3868
- }) => void;
3869
- }
3870
- declare function InputTag({ adapter, triggers, maxItems, placement, className, style, onPick, }: InputTagProps): react.JSX.Element | null;
3871
-
3872
- /**
3873
- * Adapter for a DOM `<textarea>`. Works whether the consumer manages
3874
- * `value` via React state (controlled) or lets the DOM hold it
3875
- * (uncontrolled) — `replaceRange` uses React's native value setter and
3876
- * dispatches a native `input` event so the upstream onChange fires.
3877
- */
3878
- declare function textareaAdapter(ref: RefObject<HTMLTextAreaElement | null>): InputTagAdapter;
3879
- /** Adapter for a DOM `<input type="text|search|...">`. */
3880
- declare function inputAdapter(ref: RefObject<HTMLInputElement | null>): InputTagAdapter;
3881
- /**
3882
- * Adapter for any `contenteditable` element. Operates on the element's
3883
- * `textContent`; rich-text editors with their own internal model should
3884
- * write a custom adapter that talks to that model instead.
3885
- */
3886
- declare function contentEditableAdapter(ref: RefObject<HTMLElement | null>): InputTagAdapter;
3887
- /**
3888
- * Adapter for hosts that fully control the text state themselves. Use
3889
- * this when you can't (or don't want to) let the DOM be the source of
3890
- * truth — for code editors with internal state, sheet cell editors, or
3891
- * any host that already has `value` + `onChange` and wants to reach the
3892
- * picker programmatically.
3893
- *
3894
- * The host calls `notify({ text, caretIndex })` after every text or
3895
- * caret change. `<InputTag>` calls `onReplaceRange` to write back.
3896
- */
3897
- type ControlledAdapterHandle = InputTagAdapter & {
3898
- /** Push the latest text + caret to the picker. */
3899
- notify: (state: {
3900
- text: string;
3901
- caretIndex: number;
3902
- }) => void;
3903
- };
3904
- declare function controlledAdapter(opts: {
3905
- /** Element used as anchor + key target. Usually the visible input. */
3906
- anchorRef: RefObject<HTMLElement | null>;
3907
- /** Called when the picker writes back an insertion. */
3908
- onReplaceRange: (start: number, end: number, replacement: string) => void;
3909
- }): ControlledAdapterHandle;
3910
-
3911
- /**
3912
- * MagicWand — selection-anchored floating toolbar for text inputs.
3913
- *
3914
- * When the user highlights text inside the wrapped <Textarea>, a small
3915
- * pill of AI quick-actions floats above the selection. Clicking an
3916
- * action invokes the host callback with the selected substring + range;
3917
- * the host returns a replacement string and MagicWand swaps it in-place.
3918
- *
3919
- * <MagicWand
3920
- * value={body}
3921
- * onValueChange={setBody}
3922
- * actions={[
3923
- * { id: "rephrase", label: "Rephrase", hint: "same meaning, different words",
3924
- * run: async (s) => await ai.rephrase(s) },
3925
- * …
3926
- * ]}
3927
- * />
3928
- *
3929
- * Two appearances: `"floating"` (default — full labels) and `"pill"`
3930
- * (icon-only, compact). Auto-hides on click-away or scroll by default.
3931
- */
3932
- type MagicWandSelection = {
3933
- start: number;
3934
- end: number;
3935
- text: string;
3936
- };
3937
- type MagicWandAction = {
3938
- /** Stable id, also shown as the busy-state key. */
3939
- id: string;
3940
- /** Display label (first character used in `pill` mode). */
3941
- label: string;
3942
- /** Tooltip body. */
3943
- hint?: string;
3944
- /** Optional kind chip rendered next to the label. */
3945
- tag?: string;
3946
- /** Returns the replacement text for the selection. */
3947
- run: (selection: string, range: MagicWandSelection) => Promise<string> | string;
3948
- };
3949
- type MagicWandAppearance = "pill" | "floating";
3950
- interface MagicWandProps {
3951
- /** Controlled textarea value. */
3952
- value: string;
3953
- /** Called on every edit. */
3954
- onValueChange: (v: string) => void;
3955
- /** Action list. */
3956
- actions: MagicWandAction[];
3957
- /** Visual treatment. Defaults to "floating". */
3958
- appearance?: MagicWandAppearance;
3959
- /** Auto-hide the wand on click-away or scroll. Defaults to true. */
3960
- autoHide?: boolean;
3961
- /** Textarea rows. */
3962
- rows?: number;
3963
- /** Placeholder. */
3964
- placeholder?: string;
3965
- /** Called after an action runs successfully. */
3966
- onAction?: (action: MagicWandAction, selection: MagicWandSelection, replacement: string) => void;
3967
- }
3968
- declare function MagicWand({ value, onValueChange, actions, appearance, autoHide, rows, placeholder, onAction, }: MagicWandProps): react.JSX.Element;
3969
-
3970
- /** Pan offset (in container pixels) + zoom factor for an `<ImageViewer>`. */
3971
- interface ImageViewerViewport {
3972
- panX: number;
3973
- panY: number;
3974
- zoom: number;
3975
- }
3976
- interface ImageViewerProps {
3977
- /** Image source — an `http(s):`, `data:`, or `blob:` URL. */
3978
- src: string;
3979
- /** Alt text for the image (also used as the download filename hint). */
3980
- alt?: string;
3981
- /**
3982
- * How the image sits in its container at zoom 1. `"contain"` (default) fits
3983
- * the whole image, `"cover"` fills and crops, `"none"` shows it at natural
3984
- * size (pan to see the rest).
3985
- */
3986
- fit?: "contain" | "cover" | "none";
3987
- /** Allow Ctrl/⌘+wheel zoom and the zoom controls (default `true`). */
3988
- zoomable?: boolean;
3989
- /** Allow click-drag panning (default `true`). */
3990
- pannable?: boolean;
3991
- /** Show the floating zoom controls. Defaults to the value of `zoomable`. */
3992
- controls?: boolean;
3993
- /** Minimum zoom factor (default `0.25`). */
3994
- minZoom?: number;
3995
- /** Maximum zoom factor (default `8`). */
3996
- maxZoom?: number;
3997
- /**
3998
- * Paint a checkerboard behind the image so transparency reads clearly
3999
- * (default `true`). Set `false` for a flat themed surface.
4000
- */
4001
- checkerboard?: boolean;
4002
- /**
4003
- * Controlled viewport (pan + zoom). Pair with `onViewportChange`. Omit for
4004
- * uncontrolled internal state. Exposed so an agent can pan/zoom to point at
4005
- * something via a bridge.
4006
- */
4007
- viewport?: ImageViewerViewport;
4008
- /** Initial viewport when uncontrolled. */
4009
- defaultViewport?: ImageViewerViewport;
4010
- /** Called whenever the viewport (pan/zoom) changes. */
4011
- onViewportChange?: (viewport: ImageViewerViewport) => void;
4012
- /** Fired when the image finishes loading. */
4013
- onLoad?: () => void;
4014
- /** Fired when the image fails to load. */
4015
- onError?: () => void;
4016
- /** Additional CSS classes for the viewport container. */
4017
- className?: string;
4018
- /** Inline styles for the viewport container (e.g. a fixed height). */
4019
- style?: CSSProperties;
4020
- }
4021
-
4022
- interface VideoViewerProps {
4023
- /** Video source — an `http(s):`, `data:`, or `blob:` URL. */
4024
- src: string;
4025
- /** Poster image shown before playback. */
4026
- poster?: string;
4027
- /** Show native playback controls (default `true`). */
4028
- controls?: boolean;
4029
- /** Autoplay on mount (most browsers require `muted` too). */
4030
- autoPlay?: boolean;
4031
- /** Loop playback (default `false`). */
4032
- loop?: boolean;
4033
- /** Start muted (default `false`). */
4034
- muted?: boolean;
4035
- /** How the video fits its box: `"contain"` (default) or `"cover"`. */
4036
- fit?: "contain" | "cover";
4037
- /** Fired when the video fails to load. */
4038
- onError?: () => void;
4039
- /** Additional CSS classes for the container. */
4040
- className?: string;
4041
- /** Inline styles for the container (e.g. a fixed height). */
4042
- style?: CSSProperties;
4043
- }
4044
-
4045
- interface AudioViewerProps {
4046
- /** Audio source — an `http(s):`, `data:`, or `blob:` URL. */
4047
- src: string;
4048
- /** Optional label shown above the player (e.g. the file name). */
4049
- title?: string;
4050
- /** Show native playback controls (default `true`). */
4051
- controls?: boolean;
4052
- /** Autoplay on mount. */
4053
- autoPlay?: boolean;
4054
- /** Loop playback (default `false`). */
4055
- loop?: boolean;
4056
- /** Fired when the audio fails to load. */
4057
- onError?: () => void;
4058
- /** Additional CSS classes for the card. */
4059
- className?: string;
4060
- /** Inline styles for the card. */
4061
- style?: CSSProperties;
4062
- }
4063
-
4064
- interface PdfViewerProps {
4065
- /** PDF source — an `http(s):`, `data:`, or `blob:` URL. */
4066
- src: string;
4067
- /** Accessible title for the embedded document (default `"PDF document"`). */
4068
- title?: string;
4069
- /** Additional CSS classes for the container. */
4070
- className?: string;
4071
- /** Inline styles for the container (e.g. a fixed height). */
4072
- style?: CSSProperties;
4073
- }
4074
-
4075
- interface MediaViewerProps {
4076
- /** Media source — an `http(s):`, `data:`, or `blob:` URL. */
4077
- src: string;
4078
- /**
4079
- * MIME type — preferred for picking the viewer. When omitted, the kind is
4080
- * sniffed from `src` (extension or `data:` URI). Always pass `mime` with a
4081
- * bare `blob:` URL, which carries no type of its own.
4082
- */
4083
- mime?: string;
4084
- /** Alt text / label, forwarded as image alt and audio/PDF title. */
4085
- alt?: string;
4086
- /** Force a specific viewer, bypassing detection. */
4087
- kind?: MediaKind;
4088
- /** Extra props for the underlying `<ImageViewer>`. */
4089
- imageProps?: Partial<Omit<ImageViewerProps, "src" | "alt">>;
4090
- /** Extra props for the underlying `<VideoViewer>`. */
4091
- videoProps?: Partial<Omit<VideoViewerProps, "src">>;
4092
- /** Extra props for the underlying `<AudioViewer>`. */
4093
- audioProps?: Partial<Omit<AudioViewerProps, "src">>;
4094
- /** Extra props for the underlying `<PdfViewer>`. */
4095
- pdfProps?: Partial<Omit<PdfViewerProps, "src">>;
4096
- /** Rendered for unknown / unpreviewable types (default: a download card). */
4097
- fallback?: ReactNode;
4098
- /** Fired when the chosen viewer reports a load error. */
4099
- onError?: () => void;
4100
- /** Additional CSS classes, forwarded to the chosen viewer. */
4101
- className?: string;
4102
- /** Inline styles, forwarded to the chosen viewer. */
4103
- style?: CSSProperties;
4104
- }
4105
-
4106
- /**
4107
- * Renders the right viewer for a media file, picked from its `mime` (preferred)
4108
- * or `src` — image, video, audio, or PDF — and a download fallback for anything
4109
- * else. SVG renders through `<ImageViewer>`. The single entry point for showing
4110
- * a file from a tree/workspace when you don't know its type ahead of time.
4111
- *
4112
- * ```tsx
4113
- * <MediaViewer src={url} mime="image/png" alt="logo.png" style={{ height: 320 }} />
4114
- * ```
4115
- */
4116
- declare const MediaViewer: react.ForwardRefExoticComponent<MediaViewerProps & react.RefAttributes<HTMLDivElement>>;
4117
-
4118
- /**
4119
- * A standalone image viewer: fits the image to its container, with optional
4120
- * Ctrl/⌘+wheel zoom, click-drag panning, and a transparency checkerboard. Works
4121
- * anywhere on its own and is also what `<MediaViewer>` renders for images.
4122
- *
4123
- * The pan/zoom viewport is controllable (`viewport` + `onViewportChange`) so an
4124
- * agent bridge can drive it; it's uncontrolled by default.
4125
- *
4126
- * ```tsx
4127
- * <ImageViewer src="/logo.png" alt="logo.png" style={{ height: 320 }} />
4128
- * ```
4129
- */
4130
- declare const ImageViewer: react.ForwardRefExoticComponent<ImageViewerProps & react.RefAttributes<HTMLDivElement>>;
4131
-
4132
- /**
4133
- * A standalone video viewer — native controls, optional poster, fit-to-box, and
4134
- * dark-aware framing. Renders for video sources inside `<MediaViewer>`.
4135
- *
4136
- * ```tsx
4137
- * <VideoViewer src="/clip.mp4" poster="/clip.jpg" style={{ height: 360 }} />
4138
- * ```
4139
- */
4140
- declare const VideoViewer: react.ForwardRefExoticComponent<VideoViewerProps & react.RefAttributes<HTMLDivElement>>;
4141
-
4142
- /**
4143
- * A standalone audio viewer — a themed card wrapping the native audio player,
4144
- * with an optional title. Renders for audio sources inside `<MediaViewer>`.
4145
- *
4146
- * ```tsx
4147
- * <AudioViewer src="/track.mp3" title="track.mp3" />
4148
- * ```
4149
- */
4150
- declare const AudioViewer: react.ForwardRefExoticComponent<AudioViewerProps & react.RefAttributes<HTMLDivElement>>;
4151
-
4152
- /**
4153
- * A standalone PDF viewer — embeds the document via the browser's native PDF
4154
- * plugin (`<object>`), falling back to an `<iframe>`, then to a download link.
4155
- * Fills its container, so give it a height (a `min-h` floor is built in).
4156
- * Renders for PDF sources inside `<MediaViewer>`.
4157
- *
4158
- * ```tsx
4159
- * <PdfViewer src="/report.pdf" title="report.pdf" style={{ height: 600 }} />
4160
- * ```
4161
- */
4162
- declare const PdfViewer: react.ForwardRefExoticComponent<PdfViewerProps & react.RefAttributes<HTMLDivElement>>;
4163
-
4164
- export { Accordion, type AccordionContentProps, type AccordionContextValue, type AccordionItemProps, type AccordionOrientation, AccordionPanel, AccordionPanelContent, type AccordionPanelContentProps, type AccordionPanelProps, AccordionPanelSection, type AccordionPanelSectionProps, AccordionPanelTrigger, type AccordionPanelTriggerProps, type AccordionProps, type AccordionTriggerProps, Action, type ActionColor, type ActionProps, type AffixPosition, AudioViewer, type AudioViewerProps, Autocomplete, type AutocompleteOption, type AutocompleteProps, Avatar, type AvatarProps, Badge, type BadgeProps, Brand, BrandMark, type BrandMarkProps, type BrandProps, Breadcrumbs, type BreadcrumbsItemProps, type BreadcrumbsProps, Button, type ButtonColor, type ButtonProps, Calendar, type CalendarMode, type CalendarProps, Callout, type CalloutProps, Card, type CardBodyProps, type CardFooterProps, type CardHeaderProps, type CardProps, Carousel, type CarouselContextValue, type CarouselControlsProps, type CarouselPanelsProps, type CarouselProps, type CarouselSlideProps, type CarouselStepsProps, type CarouselVariant, Chart, type ChartAreaProps, type ChartBarData, type ChartBarProps, type ChartCommonProps, type ChartDonutData, type ChartDonutProps, type ChartHorizontalBarProps, type ChartLineProps, type ChartPieData, type ChartPieProps, type ChartSeries, type ChartSparklineProps, type ChartStackedBarProps, ChatDrawer, type ChatDrawerProps, type ChatDrawerTab, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, CodeView, type CodeViewProps, type Color, ColorPicker, type ColorPickerProps, Command, type CommandContextValue, type CommandEmptyProps, type CommandGroupProps, type CommandInputProps, type CommandItemProps, type CommandListProps, type CommandProps, Composer, type ComposerProps, ContentRenderer, type ContentRendererProps, ContextMenu, type ContextMenuContentProps, type ContextMenuContextValue, type ContextMenuItemProps, type ContextMenuProps, type ContextMenuSeparatorProps, type ContextMenuTriggerProps, type ControlledAdapterHandle, DatePicker, type DatePickerProps, type DateRange, DisplayValue, type DisplayValueProps, Drawer, type DrawerAttach, type DrawerBodyProps, type DrawerContainerProps, type DrawerContextValue, type DrawerFooterProps, type DrawerHeaderProps, type DrawerProps, type DrawerSide, type DrawerSize, type DropPosition, Dropdown, type DropdownContextValue, type DropdownItemProps, type DropdownItemsProps, type DropdownProps, type DropdownSeparatorProps, type DropdownTriggerProps, EMOJI_CATEGORY_ORDER, EMOJI_DATA, EMOJI_ENTRIES, Editor, type EditorAction, type EditorContentProps, type EditorContextValue, type EditorProps, type EditorSourceToggleProps, type EditorToolbarProps, Emoji, type EmojiCategory, type EmojiCategoryKey, type EmojiEntry, type EmojiFlatEntry, type EmojiProps, EmojiSelect, type EmojiSelectProps, Eyebrow, type EyebrowProps, FauxClient, type FauxClientProps, Field, type FieldMode, FieldModeContext, type FieldModeContextValue, type FieldProps, FileBrowser, type FileBrowserContextValue, type FileBrowserNodeProps, type FileBrowserPathBarProps, type FileBrowserProps, type FileBrowserProvider, type FileBrowserRow, type FileBrowserToolbarProps, type FileBrowserTreeProps, type FileEntry, type FileKind, type FileLoadStatus, type FileSelectMode, type FileSnapshotNode, type FileSort, type FileSortDirection, type FileSortField, FileUpload, type FileUploadContextValue, type FileUploadDropzoneProps, type FileUploadListProps, type FileUploadProps, Form, type FormProps, FormProvider, type FormProviderProps, Heading, type HeadingProps, Icon, type IconProps, type IconSet, ImageViewer, type ImageViewerProps, type ImageViewerViewport, IndexList, type IndexListItem, type IndexListProps, Input, type InputAffixProps, type InputBaseProps, type InputOption, type InputOptionGroup, type InputProps, InputTag, type InputTagAdapter, type InputTagAdapterState, type InputTagProps, type InputTagTrigger, type InputTagTriggers, Kanban, type KanbanCardMoveHandler, type KanbanCardProps, type KanbanColumnHandleProps, type KanbanColumnMoveHandler, type KanbanColumnProps, type KanbanContextValue, type KanbanProps, Kbd, type KbdProps, MagicWand, type MagicWandAction, type MagicWandAppearance, type MagicWandProps, type MagicWandSelection, Marquee, type MarqueeDirection, type MarqueeProps, type MediaKind, MediaViewer, type MediaViewerProps, Menu, type MenuContextValue, type MenuGroupProps, type MenuItemProps, type MenuOrientation, type MenuProps, type MenuSubmenuProps, MobileMenu, type MobileMenuBottomBarProps, type MobileMenuContextValue, type MobileMenuFlyoutProps, type MobileMenuItemProps, type MobileMenuSide, type MobileMenuVariant, Modal, type ModalBodyProps, type ModalContextValue, type ModalFooterProps, type ModalHeaderProps, type ModalProps, MoodMeter, type MoodMeterProps, MultiSwitch, type MultiSwitchProps, Navbar, type NavbarBrandProps, type NavbarContextValue, type NavbarItemProps, type NavbarItemsProps, type NavbarProps, type NavbarToggleProps, type NodeRect, OtpInput, type OtpInputProps, Pagination, type PaginationProps, PdfViewer, type PdfViewerProps, Pillbox, type PillboxProps, type Placement, Popover, type PopoverContentProps, type PopoverContextValue, type PopoverProps, type PopoverTriggerProps, Portal, type PortalProps, Profile, type ProfileProps, Progress, type ProgressProps, type PromptAttachment, type PromptCmd, PromptInput, type PromptInputProps, type PromptMention, PullQuote, type PullQuoteProps, RadioGroup, type RadioGroupProps, ReasonTag, type ReasonTagProps, type ReasonTagSource, type ReasonTagTheme, type RenderExtension, type RenderExtensionProps, type ResolveMediaTypeInput, SKIN_TONES, type SectionRenderState, type SectionRenderable, Select, type SelectProps, Separator, type SeparatorProps, Sidebar, type SidebarCollapseMode, type SidebarContextValue, type SidebarGroupProps, type SidebarItemProps, type SidebarProps, type SidebarSubmenuProps, type SidebarToggleProps, type Size, Skeleton, type SkeletonProps, type SkinTone, Slider, type SliderProps, Stat, StatBand, type StatBandProps, type StatProps, StickyNote, type StickyNoteColor, type StickyNoteProps, Switch, type SwitchProps, Table, type TableBodyProps, type TableCellProps, type TableColumnProps, type TableHeadProps, type TablePaginationProps, type TableProps, type TableRowProps, type TableRowTrayProps, type TableSearchProps, type TableTrayProps, Tabs, type TabsContextValue, type TabsListProps, type TabsPanelProps, type TabsPanelsProps, type TabsProps, type TabsTabProps, type TabsVariant, Text, type TextProps, Textarea, type TextareaProps, TimeGrid, type TimeGridProps, type TimeGridTone, TimePicker, type TimePickerProps, Timeline, type TimelineBlockProps, type TimelineEvent, type TimelineItemProps, type TimelineOrientation, type TimelineProps, type TimelineVariant, Toast, type ToastContextValue, type ToastData, type ToastPosition, type ToastProviderProps, type ToastVariant, Tooltip, type TooltipProps, TreeNav, type TreeNavContextValue, type TreeNavProps, type TreeNodeData, type TreeNodeProps, type Variant, VideoViewer, type VideoViewerProps, applyTone, cn, configureIcons, contentEditableAdapter, controlledAdapter, find, hasSkinTones, inputAdapter, registerExtension, registerExtensions, registerIconAddendum, registerIconSet, registerIcons, resolve, resolveMediaType, sanitizeHref, sanitizeHtml, search, skinTones, textareaAdapter, useAccordion, useAccordionPanel, useAccordionSection, useAnimation, useCarousel, useCommand, useContextMenu, useControllableState, useDrawer, useDropdown, useEditor, useEscapeKey, useFieldMode, useFileBrowser, useFileUpload, useFloatingPosition, useFocusTrap, useId, useKanban, useMenu, useMobileMenu, useModal, useNavbar, useNodeRegistry, useOutsideClick, usePanZoom, usePopover, useSidebar, useTabs, useToast, useTreeNav };
198
+ export { type NodeRect, Placement, cn, sanitizeHref, sanitizeHtml, useAnimation, useControllableState, useEscapeKey, useFloatingPosition, useFocusTrap, useId, useNodeRegistry, useOutsideClick, usePanZoom };