@bysages/react 0.4.4 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/dist/ai-B0o-dsAf.mjs +309 -0
  2. package/dist/ai-prompt-input-Cl9ulICF.mjs +401 -0
  3. package/dist/{ai-response-CjjjprMY.mjs → ai-response-DTxdL5rX.mjs} +9 -11
  4. package/dist/{chevron-BA7kV9m7.mjs → chevron-DnImlNip.mjs} +2 -3
  5. package/dist/components/accordion/index.d.mts +1 -2
  6. package/dist/components/accordion/index.mjs +3 -4
  7. package/dist/components/affix/index.d.mts +1 -2
  8. package/dist/components/affix/index.mjs +2 -3
  9. package/dist/components/ai/index.d.mts +107 -2
  10. package/dist/components/ai/index.mjs +7 -82
  11. package/dist/components/ai-action/index.d.mts +0 -2
  12. package/dist/components/ai-action/index.mjs +2 -3
  13. package/dist/components/ai-attachments/index.d.mts +0 -2
  14. package/dist/components/ai-attachments/index.mjs +4 -5
  15. package/dist/components/ai-message/index.d.mts +2 -14
  16. package/dist/components/ai-message/index.mjs +5 -4
  17. package/dist/components/ai-prompt-input/index.d.mts +14 -18
  18. package/dist/components/ai-prompt-input/index.mjs +1 -126
  19. package/dist/components/ai-reasoning/index.d.mts +0 -2
  20. package/dist/components/ai-reasoning/index.mjs +3 -4
  21. package/dist/components/ai-response/index.d.mts +1 -3
  22. package/dist/components/ai-response/index.mjs +1 -2
  23. package/dist/components/ai-source/index.d.mts +0 -2
  24. package/dist/components/ai-source/index.mjs +2 -3
  25. package/dist/components/ai-suggestion/index.d.mts +0 -2
  26. package/dist/components/ai-suggestion/index.mjs +2 -3
  27. package/dist/components/ai-tool/index.d.mts +2 -24
  28. package/dist/components/ai-tool/index.mjs +46 -14
  29. package/dist/components/alert/index.d.mts +1 -2
  30. package/dist/components/alert/index.mjs +2 -3
  31. package/dist/components/angle-slider/index.d.mts +1 -2
  32. package/dist/components/angle-slider/index.mjs +2 -3
  33. package/dist/components/aspect-ratio/index.d.mts +1 -2
  34. package/dist/components/aspect-ratio/index.mjs +2 -3
  35. package/dist/components/autocomplete/index.d.mts +5 -3
  36. package/dist/components/autocomplete/index.mjs +12 -10
  37. package/dist/components/avatar/index.d.mts +1 -2
  38. package/dist/components/avatar/index.mjs +2 -3
  39. package/dist/components/avatar-group/index.d.mts +1 -2
  40. package/dist/components/avatar-group/index.mjs +2 -3
  41. package/dist/components/back-top/index.d.mts +1 -2
  42. package/dist/components/back-top/index.mjs +3 -4
  43. package/dist/components/badge/index.d.mts +1 -2
  44. package/dist/components/badge/index.mjs +2 -3
  45. package/dist/components/banner/index.d.mts +1 -2
  46. package/dist/components/banner/index.mjs +3 -4
  47. package/dist/components/bento/index.d.mts +1 -3
  48. package/dist/components/bento/index.mjs +1 -2
  49. package/dist/components/block-ui/index.d.mts +1 -2
  50. package/dist/components/block-ui/index.mjs +2 -3
  51. package/dist/components/breadcrumb/index.d.mts +1 -2
  52. package/dist/components/breadcrumb/index.mjs +2 -3
  53. package/dist/components/browser/index.d.mts +1 -3
  54. package/dist/components/browser/index.mjs +1 -2
  55. package/dist/components/button/index.d.mts +1 -2
  56. package/dist/components/button/index.mjs +2 -3
  57. package/dist/components/button-group/index.d.mts +1 -2
  58. package/dist/components/button-group/index.mjs +1 -2
  59. package/dist/components/calendar/index.d.mts +1 -2
  60. package/dist/components/calendar/index.mjs +3 -4
  61. package/dist/components/card/index.d.mts +1 -3
  62. package/dist/components/card/index.mjs +1 -2
  63. package/dist/components/carousel/index.d.mts +1 -2
  64. package/dist/components/carousel/index.mjs +3 -4
  65. package/dist/components/cascade-select/index.d.mts +5 -3
  66. package/dist/components/cascade-select/index.mjs +42 -40
  67. package/dist/components/checkbox/index.d.mts +1 -2
  68. package/dist/components/checkbox/index.mjs +3 -4
  69. package/dist/components/checkbox-group/index.d.mts +1 -2
  70. package/dist/components/checkbox-group/index.mjs +3 -4
  71. package/dist/components/chip/index.d.mts +1 -2
  72. package/dist/components/chip/index.mjs +2 -3
  73. package/dist/components/client-only/index.d.mts +0 -2
  74. package/dist/components/client-only/index.mjs +2 -3
  75. package/dist/components/clipboard/index.d.mts +1 -2
  76. package/dist/components/clipboard/index.mjs +3 -4
  77. package/dist/components/collapsible/index.d.mts +1 -2
  78. package/dist/components/collapsible/index.mjs +3 -4
  79. package/dist/components/collection/index.mjs +1 -2
  80. package/dist/components/color-picker/index.d.mts +10 -3
  81. package/dist/components/color-picker/index.mjs +39 -33
  82. package/dist/components/combobox/index.d.mts +10 -3
  83. package/dist/components/combobox/index.mjs +17 -12
  84. package/dist/components/command/index.d.mts +5 -3
  85. package/dist/components/command/index.mjs +74 -72
  86. package/dist/components/comment/index.d.mts +1 -2
  87. package/dist/components/comment/index.mjs +2 -3
  88. package/dist/components/config-provider/index.d.mts +1 -2
  89. package/dist/components/config-provider/index.mjs +2 -3
  90. package/dist/components/container/index.d.mts +1 -2
  91. package/dist/components/container/index.mjs +2 -3
  92. package/dist/components/data-view/index.d.mts +1 -2
  93. package/dist/components/data-view/index.mjs +3 -4
  94. package/dist/components/date-input/index.d.mts +0 -2
  95. package/dist/components/date-input/index.mjs +2 -3
  96. package/dist/components/date-picker/index.d.mts +9 -3
  97. package/dist/components/date-picker/index.mjs +30 -25
  98. package/dist/components/deferred-content/index.d.mts +1 -2
  99. package/dist/components/deferred-content/index.mjs +2 -3
  100. package/dist/components/descriptions/index.d.mts +1 -2
  101. package/dist/components/descriptions/index.mjs +2 -3
  102. package/dist/components/dialog/index.d.mts +49 -5
  103. package/dist/components/dialog/index.mjs +67 -20
  104. package/dist/components/dock/index.d.mts +1 -3
  105. package/dist/components/dock/index.mjs +1 -2
  106. package/dist/components/download-trigger/index.d.mts +0 -2
  107. package/dist/components/download-trigger/index.mjs +2 -3
  108. package/dist/components/drawer/index.d.mts +20 -5
  109. package/dist/components/drawer/index.mjs +21 -16
  110. package/dist/components/dynamic-input/index.d.mts +1 -2
  111. package/dist/components/dynamic-input/index.mjs +5 -6
  112. package/dist/components/editable/index.d.mts +1 -2
  113. package/dist/components/editable/index.mjs +3 -4
  114. package/dist/components/ellipsis/index.d.mts +1 -2
  115. package/dist/components/ellipsis/index.mjs +2 -3
  116. package/dist/components/empty/index.d.mts +1 -3
  117. package/dist/components/empty/index.mjs +1 -2
  118. package/dist/components/field/index.d.mts +1 -2
  119. package/dist/components/field/index.mjs +2 -3
  120. package/dist/components/fieldset/index.d.mts +1 -2
  121. package/dist/components/fieldset/index.mjs +2 -3
  122. package/dist/components/file-upload/index.d.mts +1 -2
  123. package/dist/components/file-upload/index.mjs +3 -4
  124. package/dist/components/float-button/index.d.mts +1 -2
  125. package/dist/components/float-button/index.mjs +3 -4
  126. package/dist/components/floating-panel/index.d.mts +20 -5
  127. package/dist/components/floating-panel/index.mjs +37 -32
  128. package/dist/components/focus-trap/index.d.mts +0 -2
  129. package/dist/components/focus-trap/index.mjs +2 -3
  130. package/dist/components/form/index.d.mts +0 -2
  131. package/dist/components/form/index.mjs +2 -3
  132. package/dist/components/format/index.d.mts +1 -3
  133. package/dist/components/format/index.mjs +1 -2
  134. package/dist/components/frame/index.d.mts +1 -3
  135. package/dist/components/frame/index.mjs +3 -4
  136. package/dist/components/grid/index.d.mts +1 -2
  137. package/dist/components/grid/index.mjs +2 -3
  138. package/dist/components/highlight/index.d.mts +1 -3
  139. package/dist/components/highlight/index.mjs +2 -3
  140. package/dist/components/hover-card/index.d.mts +18 -5
  141. package/dist/components/hover-card/index.mjs +16 -11
  142. package/dist/components/icon/index.d.mts +1 -2
  143. package/dist/components/icon/index.mjs +2 -3
  144. package/dist/components/image/index.d.mts +1 -2
  145. package/dist/components/image/index.mjs +3 -4
  146. package/dist/components/image-cropper/index.d.mts +1 -2
  147. package/dist/components/image-cropper/index.mjs +2 -3
  148. package/dist/components/image-viewer/index.d.mts +1 -1
  149. package/dist/components/image-viewer/index.mjs +1 -2
  150. package/dist/components/input/index.d.mts +1 -3
  151. package/dist/components/input/index.mjs +1 -2
  152. package/dist/components/input-group/index.d.mts +1 -3
  153. package/dist/components/input-group/index.mjs +1 -2
  154. package/dist/components/json-tree-view/index.d.mts +1 -2
  155. package/dist/components/json-tree-view/index.mjs +3 -4
  156. package/dist/components/kbd/index.d.mts +1 -2
  157. package/dist/components/kbd/index.mjs +2 -3
  158. package/dist/components/layout/index.d.mts +1 -2
  159. package/dist/components/layout/index.mjs +19 -15
  160. package/dist/components/link/index.d.mts +1 -2
  161. package/dist/components/link/index.mjs +2 -3
  162. package/dist/components/list/index.d.mts +1 -2
  163. package/dist/components/list/index.mjs +1 -2
  164. package/dist/components/listbox/index.d.mts +0 -2
  165. package/dist/components/listbox/index.mjs +3 -4
  166. package/dist/components/marquee/index.d.mts +1 -2
  167. package/dist/components/marquee/index.mjs +2 -3
  168. package/dist/components/masonry/index.d.mts +1 -2
  169. package/dist/components/masonry/index.mjs +2 -3
  170. package/dist/components/media-player/index.d.mts +1 -1
  171. package/dist/components/media-player/index.mjs +1 -2
  172. package/dist/components/mentions/index.d.mts +2 -2
  173. package/dist/components/mentions/index.mjs +1 -2
  174. package/dist/components/menu/index.d.mts +11 -4
  175. package/dist/components/menu/index.mjs +15 -10
  176. package/dist/components/menubar/index.d.mts +5 -3
  177. package/dist/components/menubar/index.mjs +14 -12
  178. package/dist/components/meter/index.d.mts +1 -3
  179. package/dist/components/meter/index.mjs +1 -2
  180. package/dist/components/navigation-menu/index.d.mts +10 -3
  181. package/dist/components/navigation-menu/index.mjs +9 -4
  182. package/dist/components/number-input/index.d.mts +1 -2
  183. package/dist/components/number-input/index.mjs +3 -4
  184. package/dist/components/order-list/index.d.mts +1 -2
  185. package/dist/components/order-list/index.mjs +4 -5
  186. package/dist/components/page-header/index.d.mts +1 -3
  187. package/dist/components/page-header/index.mjs +1 -2
  188. package/dist/components/pagination/index.d.mts +3 -4
  189. package/dist/components/pagination/index.mjs +3 -4
  190. package/dist/components/password-input/index.d.mts +1 -2
  191. package/dist/components/password-input/index.mjs +3 -4
  192. package/dist/components/pin-input/index.d.mts +1 -2
  193. package/dist/components/pin-input/index.mjs +2 -3
  194. package/dist/components/popconfirm/index.d.mts +6 -4
  195. package/dist/components/popconfirm/index.mjs +33 -31
  196. package/dist/components/popover/index.d.mts +1 -1
  197. package/dist/components/popover/index.mjs +23 -18
  198. package/dist/components/presence/index.d.mts +0 -2
  199. package/dist/components/presence/index.mjs +2 -3
  200. package/dist/components/progress/index.d.mts +1 -2
  201. package/dist/components/progress/index.mjs +2 -3
  202. package/dist/components/progress-group/index.d.mts +1 -2
  203. package/dist/components/progress-group/index.mjs +2 -3
  204. package/dist/components/qr-code/index.d.mts +1 -2
  205. package/dist/components/qr-code/index.mjs +2 -3
  206. package/dist/components/radio-group/index.d.mts +1 -2
  207. package/dist/components/radio-group/index.mjs +2 -3
  208. package/dist/components/rating-group/index.d.mts +1 -2
  209. package/dist/components/rating-group/index.mjs +3 -4
  210. package/dist/components/result/index.d.mts +1 -2
  211. package/dist/components/result/index.mjs +2 -3
  212. package/dist/components/scroll-area/index.d.mts +8 -3
  213. package/dist/components/scroll-area/index.mjs +7 -6
  214. package/dist/components/segment-group/index.d.mts +1 -2
  215. package/dist/components/segment-group/index.mjs +2 -3
  216. package/dist/components/select/index.d.mts +1 -1
  217. package/dist/components/select/index.mjs +1 -2
  218. package/dist/components/separator/index.d.mts +1 -2
  219. package/dist/components/separator/index.mjs +2 -3
  220. package/dist/components/signature-pad/index.d.mts +1 -2
  221. package/dist/components/signature-pad/index.mjs +3 -4
  222. package/dist/components/skeleton/index.d.mts +1 -2
  223. package/dist/components/skeleton/index.mjs +2 -3
  224. package/dist/components/slider/index.d.mts +1 -2
  225. package/dist/components/slider/index.mjs +2 -3
  226. package/dist/components/spinner/index.d.mts +1 -2
  227. package/dist/components/spinner/index.mjs +3 -4
  228. package/dist/components/split-button/index.d.mts +5 -3
  229. package/dist/components/split-button/index.mjs +16 -14
  230. package/dist/components/splitter/index.d.mts +1 -2
  231. package/dist/components/splitter/index.mjs +2 -3
  232. package/dist/components/spotlight/index.d.mts +1 -2
  233. package/dist/components/spotlight/index.mjs +2 -3
  234. package/dist/components/stack/index.d.mts +1 -2
  235. package/dist/components/stack/index.mjs +2 -3
  236. package/dist/components/stat/index.d.mts +1 -3
  237. package/dist/components/stat/index.mjs +1 -2
  238. package/dist/components/steps/index.d.mts +0 -2
  239. package/dist/components/steps/index.mjs +2 -3
  240. package/dist/components/swap/index.d.mts +1 -2
  241. package/dist/components/swap/index.mjs +3 -4
  242. package/dist/components/switch/index.d.mts +1 -2
  243. package/dist/components/switch/index.mjs +2 -3
  244. package/dist/components/table/index.d.mts +21 -3
  245. package/dist/components/table/index.mjs +28 -14
  246. package/dist/components/tabs/index.d.mts +9 -3
  247. package/dist/components/tabs/index.mjs +36 -8
  248. package/dist/components/tag/index.d.mts +1 -2
  249. package/dist/components/tag/index.mjs +3 -4
  250. package/dist/components/tags-input/index.d.mts +1 -2
  251. package/dist/components/tags-input/index.mjs +3 -4
  252. package/dist/components/terminal/index.d.mts +4 -3
  253. package/dist/components/terminal/index.mjs +8 -7
  254. package/dist/components/textarea/index.d.mts +1 -2
  255. package/dist/components/textarea/index.mjs +2 -3
  256. package/dist/components/timeline/index.d.mts +1 -2
  257. package/dist/components/timeline/index.mjs +1 -2
  258. package/dist/components/timer/index.d.mts +1 -2
  259. package/dist/components/timer/index.mjs +2 -3
  260. package/dist/components/toast/index.d.mts +0 -2
  261. package/dist/components/toast/index.mjs +4 -5
  262. package/dist/components/toc/index.d.mts +1 -2
  263. package/dist/components/toc/index.mjs +2 -3
  264. package/dist/components/toggle/index.d.mts +1 -2
  265. package/dist/components/toggle/index.mjs +2 -3
  266. package/dist/components/toggle-group/index.d.mts +1 -2
  267. package/dist/components/toggle-group/index.mjs +3 -4
  268. package/dist/components/toolbar/index.d.mts +1 -2
  269. package/dist/components/toolbar/index.mjs +2 -3
  270. package/dist/components/tooltip/index.d.mts +18 -5
  271. package/dist/components/tooltip/index.mjs +10 -5
  272. package/dist/components/tour/index.d.mts +20 -5
  273. package/dist/components/tour/index.mjs +18 -13
  274. package/dist/components/transfer/index.d.mts +1 -2
  275. package/dist/components/transfer/index.mjs +5 -6
  276. package/dist/components/tree-select/index.d.mts +6 -4
  277. package/dist/components/tree-select/index.mjs +43 -41
  278. package/dist/components/tree-view/index.d.mts +15 -5
  279. package/dist/components/tree-view/index.mjs +30 -12
  280. package/dist/components/typography/index.d.mts +9 -7
  281. package/dist/components/typography/index.mjs +10 -3
  282. package/dist/components/user/index.d.mts +1 -2
  283. package/dist/components/user/index.mjs +2 -3
  284. package/dist/components/virtual-list/index.d.mts +1 -2
  285. package/dist/components/virtual-list/index.mjs +2 -3
  286. package/dist/components/watermark/index.d.mts +1 -2
  287. package/dist/components/watermark/index.mjs +2 -3
  288. package/dist/{family-DE_GQeeM.mjs → family-Co1YsN4N.mjs} +1 -2
  289. package/dist/floating-BhcDRgnx.d.mts +7 -0
  290. package/dist/floating-CMR7cvmA.mjs +33 -0
  291. package/dist/generative/index.d.mts +0 -2
  292. package/dist/generative/index.mjs +28 -53
  293. package/dist/{icon-Cri0-7-x.mjs → icon-C9udWCyz.mjs} +1 -2
  294. package/dist/{id-C37UYLwJ.mjs → id-Ctic_3o8.mjs} +1 -2
  295. package/dist/{image-viewer-D4FuYrk6.mjs → image-viewer-BPTApdoP.mjs} +50 -52
  296. package/dist/index-CEYybyEQ.d.mts +163 -0
  297. package/dist/index-CjO4Ggf0.d.mts +115 -0
  298. package/dist/{index-BcRdWGY-.d.mts → index-DIZEFqJM.d.mts} +0 -8
  299. package/dist/{index-D_iKc2Uw.d.mts → index-DZ2S5rMj.d.mts} +10 -6
  300. package/dist/index-j02dTkfc.d.mts +37 -0
  301. package/dist/index-lCsvE2Vl.d.mts +37 -0
  302. package/dist/{index-Dj8S4eyJ.d.mts → index-n9VlNO7D.d.mts} +4 -5
  303. package/dist/index.d.mts +13 -13
  304. package/dist/index.mjs +10 -10
  305. package/dist/{input-BDpQ0e6G.mjs → input-YRjehBhU.mjs} +3 -5
  306. package/dist/{media-player-C0WcjVI-.mjs → media-player-DxG0EYz7.mjs} +7 -12
  307. package/dist/mentions-B59tQDPt.mjs +341 -0
  308. package/dist/{messages-1jJWtaYU.mjs → messages-B6n0lVyt.mjs} +1 -2
  309. package/dist/{select-D_soVdWK.mjs → select-BLFqfeVw.mjs} +24 -20
  310. package/package.json +17 -17
  311. package/dist/index-B4twHAQC.d.mts +0 -10456
  312. package/dist/index-Bbg4heDO.d.mts +0 -113
  313. package/dist/index-Eu-Bttta.d.mts +0 -24
  314. package/dist/mentions-BwnyvdXz.mjs +0 -213
@@ -1,4 +1,4 @@
1
- import { r as iconNode } from "../icon-Cri0-7-x.mjs";
1
+ import { r as iconNode } from "../icon-C9udWCyz.mjs";
2
2
  import { Button } from "../components/button/index.mjs";
3
3
  import { Alert } from "../components/alert/index.mjs";
4
4
  import { Avatar } from "../components/avatar/index.mjs";
@@ -7,12 +7,12 @@ import { Banner } from "../components/banner/index.mjs";
7
7
  import { Spinner } from "../components/spinner/index.mjs";
8
8
  import { Breadcrumb } from "../components/breadcrumb/index.mjs";
9
9
  import { Card } from "../components/card/index.mjs";
10
- import { t as Input } from "../input-BDpQ0e6G.mjs";
10
+ import { t as Input } from "../input-YRjehBhU.mjs";
11
11
  import { Checkbox } from "../components/checkbox/index.mjs";
12
12
  import { FloatButton } from "../components/float-button/index.mjs";
13
13
  import { Progress } from "../components/progress/index.mjs";
14
14
  import { RadioGroup } from "../components/radio-group/index.mjs";
15
- import { t as Select } from "../select-D_soVdWK.mjs";
15
+ import { t as Select } from "../select-BLFqfeVw.mjs";
16
16
  import { Separator } from "../components/separator/index.mjs";
17
17
  import { Slider } from "../components/slider/index.mjs";
18
18
  import { Stack } from "../components/stack/index.mjs";
@@ -26,7 +26,7 @@ import { z } from "zod";
26
26
  import { defineRegistry, useBoundProp } from "@json-render/react";
27
27
  import { defineCatalog } from "@json-render/core";
28
28
  import { schema } from "@json-render/react/schema";
29
- //#region \0rolldown/runtime.js
29
+ // \0rolldown/runtime.js
30
30
  var __defProp = Object.defineProperty;
31
31
  var __exportAll = (all, no_symbols) => {
32
32
  let target = {};
@@ -37,8 +37,7 @@ var __exportAll = (all, no_symbols) => {
37
37
  if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
38
38
  return target;
39
39
  };
40
- //#endregion
41
- //#region src/generative/faces.generated.ts
40
+ // src/generative/faces.generated.ts
42
41
  /** Name the faces a family contributes; the identity keeps inference
43
42
  * honest at the call site. */
44
43
  function defineFace(faces) {
@@ -351,8 +350,7 @@ const faces$1 = defineFace({
351
350
  description: "A multi-line field for prose-length answers."
352
351
  }
353
352
  });
354
- //#endregion
355
- //#region src/generative/shared.ts
353
+ // src/generative/shared.ts
356
354
  /** Name the entries a family contributes; the identity keeps inference
357
355
  * honest at the call site. */
358
356
  function defineEntry(entries) {
@@ -373,24 +371,21 @@ function useBound(value, path) {
373
371
  function labelled(label, control) {
374
372
  return label ? createElement(Stack, { gap: "xs" }, createElement(Typography.Label, null, label), control) : control;
375
373
  }
376
- //#endregion
377
- //#region src/components/alert/generative.ts
374
+ // src/components/alert/generative.ts
378
375
  var generative_exports$20 = /* @__PURE__ */ __exportAll({ default: () => generative_default$20 });
379
376
  /** A bordered notice; status picks the pigment. */
380
377
  var generative_default$20 = defineEntry({ Alert: {
381
378
  ...faces$1.Alert,
382
379
  component: ({ props }) => createElement(Alert.Root, { status: props.status ?? "ink" }, createElement(Alert.Icon), createElement(Alert.Body, null, createElement(Alert.Title, null, props.title), props.message != null ? createElement(Alert.Description, null, props.message) : null))
383
380
  } });
384
- //#endregion
385
- //#region src/components/avatar/generative.ts
381
+ // src/components/avatar/generative.ts
386
382
  var generative_exports$19 = /* @__PURE__ */ __exportAll({ default: () => generative_default$19 });
387
383
  /** A person's seal: image when given, initials as the fallback. */
388
384
  var generative_default$19 = defineEntry({ Avatar: {
389
385
  ...faces$1.Avatar,
390
386
  component: ({ props }) => createElement(Avatar, { ...props })
391
387
  } });
392
- //#endregion
393
- //#region src/components/badge/generative.ts
388
+ // src/components/badge/generative.ts
394
389
  var generative_exports$18 = /* @__PURE__ */ __exportAll({ default: () => generative_default$18 });
395
390
  /** A small status seal beside content; reads at a glance. */
396
391
  var generative_default$18 = defineEntry({ Badge: {
@@ -400,8 +395,7 @@ var generative_default$18 = defineEntry({ Badge: {
400
395
  variant: props.variant
401
396
  }, props.text)
402
397
  } });
403
- //#endregion
404
- //#region src/components/banner/generative.ts
398
+ // src/components/banner/generative.ts
405
399
  var generative_exports$17 = /* @__PURE__ */ __exportAll({ default: () => generative_default$17 });
406
400
  /** A full-width notice that speaks once across the page. */
407
401
  var generative_default$17 = defineEntry({ Banner: {
@@ -411,8 +405,7 @@ var generative_default$17 = defineEntry({ Banner: {
411
405
  dismissible: true
412
406
  })
413
407
  } });
414
- //#endregion
415
- //#region src/components/breadcrumb/generative.ts
408
+ // src/components/breadcrumb/generative.ts
416
409
  var generative_exports$16 = /* @__PURE__ */ __exportAll({ default: () => generative_default$16 });
417
410
  /** A trail of waymarks from home to the current page. */
418
411
  var generative_default$16 = defineEntry({ Breadcrumb: {
@@ -430,8 +423,7 @@ var generative_default$16 = defineEntry({ Breadcrumb: {
430
423
  return createElement(Breadcrumb, { items });
431
424
  }
432
425
  } });
433
- //#endregion
434
- //#region src/components/button/generative.ts
426
+ // src/components/button/generative.ts
435
427
  var generative_exports$15 = /* @__PURE__ */ __exportAll({ default: () => generative_default$15 });
436
428
  /** The primary action register: solid ink for the one main action, outline, ghost, or subtle for the rest. */
437
429
  var generative_default$15 = defineEntry({ Button: {
@@ -444,8 +436,7 @@ var generative_default$15 = defineEntry({ Button: {
444
436
  onClick: () => emit("press")
445
437
  }, props.label)
446
438
  } });
447
- //#endregion
448
- //#region src/components/card/generative.ts
439
+ // src/components/card/generative.ts
449
440
  var generative_exports$14 = /* @__PURE__ */ __exportAll({ default: () => generative_default$14 });
450
441
  /** Grouping vessel. Give title and description instead of hand-building a header; children render in the body; footer holds actions. */
451
442
  var generative_default$14 = defineEntry({ Card: {
@@ -456,8 +447,7 @@ var generative_default$14 = defineEntry({ Card: {
456
447
  return createElement(Card.Root, null, header ? createElement(Card.Header, null, header) : props.title != null || props.description != null ? createElement(Card.Header, null, props.title != null ? createElement(Card.Title, null, props.title) : null, props.description != null ? createElement(Card.Description, null, props.description) : null) : null, createElement(Card.Content, null, children), footer ? createElement(Card.Footer, null, footer) : null);
457
448
  }
458
449
  } });
459
- //#endregion
460
- //#region src/components/checkbox/generative.ts
450
+ // src/components/checkbox/generative.ts
461
451
  var generative_exports$13 = /* @__PURE__ */ __exportAll({ default: () => generative_default$13 });
462
452
  /** One independent box with its label. */
463
453
  var generative_default$13 = defineEntry({ Checkbox: {
@@ -474,8 +464,7 @@ var generative_default$13 = defineEntry({ Checkbox: {
474
464
  ]);
475
465
  }
476
466
  } });
477
- //#endregion
478
- //#region src/components/float-button/generative.ts
467
+ // src/components/float-button/generative.ts
479
468
  var generative_exports$12 = /* @__PURE__ */ __exportAll({ default: () => generative_default$12 });
480
469
  /** A floating action cluster; named actions fan out from one corner. */
481
470
  var generative_default$12 = defineEntry({ FloatButton: {
@@ -492,8 +481,7 @@ var generative_default$12 = defineEntry({ FloatButton: {
492
481
  });
493
482
  }
494
483
  } });
495
- //#endregion
496
- //#region src/components/input/generative.ts
484
+ // src/components/input/generative.ts
497
485
  var generative_exports$11 = /* @__PURE__ */ __exportAll({ default: () => generative_default$11 });
498
486
  /** A single-line field; rely on border, surface and the focus halo. */
499
487
  var generative_default$11 = defineEntry({ Input: {
@@ -509,8 +497,7 @@ var generative_default$11 = defineEntry({ Input: {
509
497
  }));
510
498
  }
511
499
  } });
512
- //#endregion
513
- //#region src/components/progress/generative.ts
500
+ // src/components/progress/generative.ts
514
501
  var generative_exports$10 = /* @__PURE__ */ __exportAll({ default: () => generative_default$10 });
515
502
  /** A working track that fills toward done. */
516
503
  var generative_default$10 = defineEntry({ Progress: {
@@ -520,8 +507,7 @@ var generative_default$10 = defineEntry({ Progress: {
520
507
  max: props.max
521
508
  }, props.label != null ? createElement(Progress.Label, null, props.label) : null, createElement(Progress.Track, null, createElement(Progress.Range)))
522
509
  } });
523
- //#endregion
524
- //#region src/components/radio-group/generative.ts
510
+ // src/components/radio-group/generative.ts
525
511
  var generative_exports$9 = /* @__PURE__ */ __exportAll({ default: () => generative_default$9 });
526
512
  /** Several boxes where exactly one may hold. */
527
513
  var generative_default$9 = defineEntry({ RadioGroup: {
@@ -538,8 +524,7 @@ var generative_default$9 = defineEntry({ RadioGroup: {
538
524
  }, createElement(RadioGroup.ItemControl), createElement(RadioGroup.ItemText, null, value), createElement(RadioGroup.ItemHiddenInput))))));
539
525
  }
540
526
  } });
541
- //#endregion
542
- //#region src/components/select/generative.tsx
527
+ // src/components/select/generative.tsx
543
528
  var generative_exports$8 = /* @__PURE__ */ __exportAll({ default: () => generative_default$8 });
544
529
  /** A choice field that opens a ruled list; options carry label and value. */
545
530
  var generative_default$8 = defineEntry({ Select: {
@@ -557,8 +542,7 @@ var generative_default$8 = defineEntry({ Select: {
557
542
  });
558
543
  }
559
544
  } });
560
- //#endregion
561
- //#region src/components/separator/generative.ts
545
+ // src/components/separator/generative.ts
562
546
  var generative_exports$7 = /* @__PURE__ */ __exportAll({ default: () => generative_default$7 });
563
547
  /** Hairline divider between sections. */
564
548
  var generative_default$7 = defineEntry({ Separator: {
@@ -568,8 +552,7 @@ var generative_default$7 = defineEntry({ Separator: {
568
552
  decorative: true
569
553
  })
570
554
  } });
571
- //#endregion
572
- //#region src/components/slider/generative.ts
555
+ // src/components/slider/generative.ts
573
556
  var generative_exports$6 = /* @__PURE__ */ __exportAll({ default: () => generative_default$6 });
574
557
  /** A ruled track the hand slides between bounds. */
575
558
  var generative_default$6 = defineEntry({ Slider: {
@@ -584,8 +567,7 @@ var generative_default$6 = defineEntry({ Slider: {
584
567
  key: 0
585
568
  })])]))
586
569
  } });
587
- //#endregion
588
- //#region src/components/spinner/generative.ts
570
+ // src/components/spinner/generative.ts
589
571
  var generative_exports$5 = /* @__PURE__ */ __exportAll({ default: () => generative_default$5 });
590
572
  /** A quiet wheel for work still settling. */
591
573
  var generative_default$5 = defineEntry({ Spinner: {
@@ -595,8 +577,7 @@ var generative_default$5 = defineEntry({ Spinner: {
595
577
  "aria-label": props.label
596
578
  })
597
579
  } });
598
- //#endregion
599
- //#region src/components/stack/generative.ts
580
+ // src/components/stack/generative.ts
600
581
  var generative_exports$4 = /* @__PURE__ */ __exportAll({ default: () => generative_default$4 });
601
582
  /** Flex container for layout. direction column stacks vertically, row lays side by side. gap is a named spacing step. */
602
583
  var generative_default$4 = defineEntry({ Stack: {
@@ -609,8 +590,7 @@ var generative_default$4 = defineEntry({ Stack: {
609
590
  wrap: props.wrap
610
591
  }, children)
611
592
  } });
612
- //#endregion
613
- //#region src/components/stat/generative.ts
593
+ // src/components/stat/generative.ts
614
594
  var generative_exports$3 = /* @__PURE__ */ __exportAll({ default: () => generative_default$3 });
615
595
  /** One loud figure with its quiet label and an optional delta. */
616
596
  var generative_default$3 = defineEntry({ Stat: {
@@ -621,8 +601,7 @@ var generative_default$3 = defineEntry({ Stat: {
621
601
  props.change != null ? createElement(Stat.Delta, { direction: props.direction ?? "flat" }, props.change) : null
622
602
  ])
623
603
  } });
624
- //#endregion
625
- //#region src/components/switch/generative.ts
604
+ // src/components/switch/generative.ts
626
605
  var generative_exports$2 = /* @__PURE__ */ __exportAll({ default: () => generative_default$2 });
627
606
  /** An instant on/off; label names what it switches. */
628
607
  var generative_default$2 = defineEntry({ Switch: {
@@ -640,8 +619,7 @@ var generative_default$2 = defineEntry({ Switch: {
640
619
  ]);
641
620
  }
642
621
  } });
643
- //#endregion
644
- //#region src/components/textarea/generative.ts
622
+ // src/components/textarea/generative.ts
645
623
  var generative_exports$1 = /* @__PURE__ */ __exportAll({ default: () => generative_default$1 });
646
624
  /** A multi-line field for prose-length answers. */
647
625
  var generative_default$1 = defineEntry({ Textarea: {
@@ -657,8 +635,7 @@ var generative_default$1 = defineEntry({ Textarea: {
657
635
  }));
658
636
  }
659
637
  } });
660
- //#endregion
661
- //#region src/components/typography/generative.ts
638
+ // src/components/typography/generative.ts
662
639
  var generative_exports = /* @__PURE__ */ __exportAll({ default: () => generative_default });
663
640
  /** Section heading. One per view at level 1; do not skip levels. */
664
641
  var generative_default = defineEntry({
@@ -674,8 +651,7 @@ var generative_default = defineEntry({
674
651
  }
675
652
  }
676
653
  });
677
- //#endregion
678
- //#region src/generative/index.ts
654
+ // src/generative/index.ts
679
655
  /** Every family writes its own generative face beside the component —
680
656
  * `components/<family>/generative.ts` — and this module is where they
681
657
  * meet: one glob picks the faces up, so a family that lands in the
@@ -731,5 +707,4 @@ const { registry } = defineRegistry(catalog, {
731
707
  * several names - Layout plus its parts, Bento plus its cell - and the
732
708
  * palette groups by provenance, never by guessing from the name. */
733
709
  const faceFamilies = Object.fromEntries(Object.entries(entries).map(([name, entry]) => [name, entry._from]));
734
- //#endregion
735
710
  export { catalog, faceFamilies, registry };
@@ -1,6 +1,6 @@
1
1
  import { getIcon } from "@bysages/core/icons";
2
2
  import { jsx } from "react/jsx-runtime";
3
- //#region src/internal/icon.tsx
3
+ // src/internal/icon.tsx
4
4
  /** Render a curated registry icon as a bare svg element — the components
5
5
  * own default icons. No span shell: the part rules size the svg directly.
6
6
  * Extra body appends after the icon's own body, for composed marks. */
@@ -34,5 +34,4 @@ function iconHtml(name, attrs = {}, extraBody = "") {
34
34
  };
35
35
  return `<svg${Object.entries(attributes).map(([key, value]) => ` ${key}="${value}"`).join("")}>${icon.body + extraBody}</svg>`;
36
36
  }
37
- //#endregion
38
37
  export { iconHtml as n, iconNode as r, iconBody as t };
@@ -1,5 +1,5 @@
1
1
  import { useId } from "react";
2
- //#region src/internal/id.ts
2
+ // src/internal/id.ts
3
3
  /** Zag composes owned-part ids with separators, so React's generated id
4
4
  * is narrowed to characters that survive both markup and selectors. */
5
5
  const UNSAFE_ID_CHARACTERS = /[^a-zA-Z0-9_-]/g;
@@ -9,5 +9,4 @@ function useElementId(scope, props = {}) {
9
9
  const explicit = props.id;
10
10
  return typeof explicit === "string" && explicit ? explicit : `bs-${scope}-${generated.replace(UNSAFE_ID_CHARACTERS, "-")}`;
11
11
  }
12
- //#endregion
13
12
  export { useElementId as t };
@@ -1,15 +1,16 @@
1
- import { r as iconNode } from "./icon-Cri0-7-x.mjs";
2
- import { t as useElementId } from "./id-C37UYLwJ.mjs";
3
- import { n as useComponentMessages } from "./messages-1jJWtaYU.mjs";
1
+ import { r as iconNode } from "./icon-C9udWCyz.mjs";
2
+ import { t as useElementId } from "./id-Ctic_3o8.mjs";
3
+ import { n as useComponentMessages } from "./messages-B6n0lVyt.mjs";
4
4
  import { Button } from "./components/button/index.mjs";
5
+ import { t as FloatingPortal } from "./floating-CMR7cvmA.mjs";
5
6
  import { ButtonGroup } from "./components/button-group/index.mjs";
6
7
  import { Dialog as Dialog$1 } from "./components/dialog/index.mjs";
8
+ import { createImageViewerGestures } from "@bysages/core";
7
9
  import { injectComponentStyle } from "@bysages/core/styling";
8
10
  import { jsx, jsxs } from "react/jsx-runtime";
9
- import { useEffect, useState } from "react";
10
- import { Portal } from "@ark-ui/react/portal";
11
+ import { useEffect, useRef, useState } from "react";
11
12
  import { Dialog } from "@ark-ui/react/dialog";
12
- //#region src/components/image-viewer/preview.tsx
13
+ // src/components/image-viewer/preview.tsx
13
14
  /** The default doorway is the curated preview icon; custom content keeps
14
15
  * that icon as its hover and focus affordance. */
15
16
  function ImageViewerPreview({ label, children, "data-part": dataPart, ...rest }) {
@@ -36,10 +37,7 @@ function ImageViewerPreview({ label, children, "data-part": dataPart, ...rest })
36
37
  })]
37
38
  });
38
39
  }
39
- //#endregion
40
- //#region src/components/image-viewer/index.tsx
41
- const MIN_SCALE = .5;
42
- const MAX_SCALE = 3;
40
+ // src/components/image-viewer/index.tsx
43
41
  const SCALE_STEP = .25;
44
42
  const TOOL_ICONS = {
45
43
  zoomIn: "zoom-in",
@@ -47,30 +45,28 @@ const TOOL_ICONS = {
47
45
  rotate: "rotate-cw",
48
46
  close: "x"
49
47
  };
50
- function ImageViewerImpl({ src, alt = "", open, zoomable = true, width, height, children, onOpenChange, id }) {
48
+ function ImageViewerImpl({ portal = true, src, alt = "", open, zoomable = true, width, height, children, onOpenChange, id }) {
51
49
  injectComponentStyle("image-viewer");
52
50
  const hostId = useElementId("image-viewer", { id });
53
51
  const messages = useComponentMessages();
54
52
  const [localOpen, setLocalOpen] = useState(false);
55
- const [scale, setScale] = useState(1);
56
- const [rotation, setRotation] = useState(0);
53
+ const viewportRef = useRef(null);
54
+ const gesturesRef = useRef(null);
57
55
  const isOpen = open ?? localOpen;
58
56
  const setOpen = (value) => {
59
57
  if (open === void 0) setLocalOpen(value);
60
58
  onOpenChange?.(value);
61
59
  };
62
60
  useEffect(() => {
63
- if (isOpen) {
64
- setScale(1);
65
- setRotation(0);
66
- }
67
- }, [isOpen]);
68
- function zoom(step) {
69
- setScale((current) => Math.min(MAX_SCALE, Math.max(MIN_SCALE, current + step)));
70
- }
71
- function rotate() {
72
- setRotation((current) => (current + 90) % 360);
73
- }
61
+ const node = viewportRef.current;
62
+ if (!node) return;
63
+ const gestures = createImageViewerGestures(node, { zoomable });
64
+ gesturesRef.current = gestures;
65
+ return () => {
66
+ gesturesRef.current = null;
67
+ gestures.stop();
68
+ };
69
+ }, [isOpen, zoomable]);
74
70
  function toolButton(label, icon, onClick) {
75
71
  return /* @__PURE__ */ jsx(Button, {
76
72
  variant: "ghost",
@@ -104,38 +100,40 @@ function ImageViewerImpl({ src, alt = "", open, zoomable = true, width, height,
104
100
  "data-scope": "image-viewer",
105
101
  "data-part": "trigger",
106
102
  children: children ?? /* @__PURE__ */ jsx(ImageViewerPreview, {})
107
- }), /* @__PURE__ */ jsxs(Portal, { children: [/* @__PURE__ */ jsx(Dialog.Backdrop, { className: "bs-image-viewer-backdrop" }), /* @__PURE__ */ jsx(Dialog.Positioner, {
108
- className: "bs-image-viewer-positioner",
109
- children: /* @__PURE__ */ jsxs(Dialog.Content, {
110
- className: "bs-image-viewer-content",
111
- "aria-label": alt || "Image preview",
112
- onClick: (event) => {
113
- if (event.target === event.currentTarget) setOpen(false);
114
- },
115
- children: [/* @__PURE__ */ jsx("img", {
116
- "data-scope": "image-viewer",
117
- "data-part": "viewport",
118
- src,
119
- alt,
120
- width,
121
- height,
122
- style: { "--bs-image-viewer-transform": `scale(${scale}) rotate(${rotation}deg)` }
123
- }), /* @__PURE__ */ jsx("div", {
124
- "data-scope": "image-viewer",
125
- "data-part": "toolbar",
126
- children: /* @__PURE__ */ jsxs(ButtonGroup, { children: [
127
- zoomable ? [toolButton(messages.imageViewer.zoomIn, TOOL_ICONS.zoomIn, () => zoom(SCALE_STEP)), toolButton(messages.imageViewer.zoomOut, TOOL_ICONS.zoomOut, () => zoom(-.25))] : null,
128
- toolButton(messages.imageViewer.rotate, TOOL_ICONS.rotate, rotate),
129
- closeToolButton(messages.imageViewer.close, TOOL_ICONS.close)
130
- ] })
131
- })]
132
- })
133
- })] })]
103
+ }), /* @__PURE__ */ jsxs(FloatingPortal, {
104
+ portal,
105
+ children: [/* @__PURE__ */ jsx(Dialog.Backdrop, { className: "bs-image-viewer-backdrop" }), /* @__PURE__ */ jsx(Dialog.Positioner, {
106
+ className: "bs-image-viewer-positioner",
107
+ children: /* @__PURE__ */ jsxs(Dialog.Content, {
108
+ className: "bs-image-viewer-content",
109
+ "aria-label": alt || "Image preview",
110
+ onClick: (event) => {
111
+ if (event.target === event.currentTarget) setOpen(false);
112
+ },
113
+ children: [/* @__PURE__ */ jsx("img", {
114
+ "data-scope": "image-viewer",
115
+ "data-part": "viewport",
116
+ src,
117
+ alt,
118
+ width,
119
+ height,
120
+ ref: viewportRef
121
+ }), /* @__PURE__ */ jsx("div", {
122
+ "data-scope": "image-viewer",
123
+ "data-part": "toolbar",
124
+ children: /* @__PURE__ */ jsxs(ButtonGroup, { children: [
125
+ zoomable ? [toolButton(messages.imageViewer.zoomIn, TOOL_ICONS.zoomIn, () => gesturesRef.current?.zoomBy(SCALE_STEP)), toolButton(messages.imageViewer.zoomOut, TOOL_ICONS.zoomOut, () => gesturesRef.current?.zoomBy(-.25))] : null,
126
+ toolButton(messages.imageViewer.rotate, TOOL_ICONS.rotate, () => gesturesRef.current?.rotate()),
127
+ closeToolButton(messages.imageViewer.close, TOOL_ICONS.close)
128
+ ] })
129
+ })]
130
+ })
131
+ })]
132
+ })]
134
133
  });
135
134
  }
136
135
  const ImageViewer = Object.assign(ImageViewerImpl, {
137
136
  ...Dialog$1,
138
137
  Preview: ImageViewerPreview
139
138
  });
140
- //#endregion
141
139
  export { ImageViewer as t };
@@ -0,0 +1,163 @@
1
+ import { n as FloatingPortalTarget } from "./floating-BhcDRgnx.mjs";
2
+ import { t as Popover } from "./index-j02dTkfc.mjs";
3
+ import { HTMLAttributes } from "react";
4
+ type MentionCommitKey = "Enter" | "Tab" | " ";
5
+ interface UseMentionsOptions {
6
+ /** The candidates offered once a trigger character is typed. */
7
+ items: MentionEntry[];
8
+ /** The character that summons the candidates. */
9
+ trigger?: string;
10
+ /** One or more summoning characters; the longest token closest to the
11
+ * caret wins when several triggers are active. */
12
+ triggers?: string | string[];
13
+ /** Keys that choose the highlighted candidate. */
14
+ commitKeys?: MentionCommitKey[];
15
+ }
16
+ interface UseMentionsHandlers {
17
+ /** The text the field holds right now — read at keystroke time, never
18
+ * from a controlled prop that lags a render behind the caret. */
19
+ getText: () => string;
20
+ /** Writes the field's next text: a mention inserted at the token. */
21
+ setText: (value: string) => void;
22
+ /** The absolute text offset of the field caret; a rich editor supplies this.
23
+ * A textarea is read from its own selection when omitted. */
24
+ getCaret?: () => number | undefined;
25
+ /** Called before insertion. Return `false` to record the choice without
26
+ * rewriting composer text — useful for slash commands and context chips. */
27
+ select?: (entry: MentionEntry) => boolean | void;
28
+ /** Replaces default insertion so rich editors can commit their own token. */
29
+ commit?: (entry: MentionEntry) => void;
30
+ }
31
+ /** Whatever carries a key press — a native KeyboardEvent or a React
32
+ * synthetic one; the detector only needs the key's name and the power
33
+ * to hold the key back. */
34
+ interface MentionKeyEvent {
35
+ key: string;
36
+ preventDefault: () => void;
37
+ }
38
+ /** The detection machinery behind a mention field: watch the caret,
39
+ * offer the matching candidates, and answer for the keys that drive
40
+ * them. The field element arrives as a getter because hosts wrap it
41
+ * differently (a bare textarea, a field part's ref).
42
+ *
43
+ * `onKeydown` answers whether the vessel consumed the key, so a host
44
+ * with its own Enter semantics — a composer that sends — can yield to
45
+ * the candidates first and act only when the vessel stands down. */
46
+ declare function useMentions(options: UseMentionsOptions | (() => UseMentionsOptions), textarea: () => HTMLTextAreaElement | null, handlers: UseMentionsHandlers): {
47
+ open: boolean;
48
+ matches: MentionEntry[];
49
+ active: number;
50
+ setActive: import("react").Dispatch<import("react").SetStateAction<number>>;
51
+ anchorIndex: import("react").RefObject<number>;
52
+ caretIndex: import("react").RefObject<number>;
53
+ activeTrigger: import("react").RefObject<string>;
54
+ insert: (entry: MentionEntry) => void;
55
+ close: () => void;
56
+ onInput: () => void;
57
+ onKeydown: (event: MentionKeyEvent) => boolean;
58
+ };
59
+ interface MentionEntry {
60
+ /** Stable identity for tests, popups and business handlers. */
61
+ id?: string;
62
+ /** The primary words shown in the popup and inserted by default. */
63
+ label: string;
64
+ /** The semantic value reported by the field. */
65
+ value: string;
66
+ /** One line of supporting copy under the label. */
67
+ description?: string;
68
+ /** A curated core icon name. */
69
+ icon?: string;
70
+ /** Optional section heading; entries with the same heading travel together. */
71
+ group?: string;
72
+ /** The consumer's coarse entry type, such as `file`, `agent` or `command`. */
73
+ kind?: string;
74
+ /** A visible candidate the keyboard and pointer cannot choose. */
75
+ disabled?: boolean;
76
+ /** Exact composer text to insert; it bypasses `trigger + label`. */
77
+ insertText?: string;
78
+ /** Extra consumer data carried back through `onSelect`. */
79
+ meta?: Record<string, unknown>;
80
+ }
81
+ type MentionTriggers = string | string[];
82
+ type MentionPlacement = "bottom-start" | "top-start";
83
+ interface MentionsVesselProps {
84
+ /** Portal after hydration; `false` keeps the vessel inline. */
85
+ portal?: FloatingPortalTarget;
86
+ id?: string;
87
+ /** The host field's rung, so the rows keep the field's register. */
88
+ size?: "sm" | "md" | "lg";
89
+ /** Whether the candidates are up. */
90
+ open?: boolean;
91
+ /** The candidates on offer. */
92
+ matches?: MentionEntry[];
93
+ /** The keyboard's active row. */
94
+ active?: number;
95
+ /** The rectangle the vessel points at — the host's textarea. */
96
+ anchor?: HTMLElement | null;
97
+ /** Which side of the anchor hosts the candidates. */
98
+ placement?: MentionPlacement;
99
+ /** A candidate was chosen. */
100
+ onInsert?: (entry: MentionEntry) => void;
101
+ /** The pointer moved to a row. */
102
+ onActiveChange?: (index: number) => void;
103
+ /** The vessel was dismissed. */
104
+ onOpenChange?: (open: boolean) => void;
105
+ }
106
+ /** The vessel: the candidates themselves as a floating card. The anchor
107
+ * is virtual — a live rectangle off the host's field — so a host keeps
108
+ * its own anatomy (the textarea rides where the host puts it) and the
109
+ * vessel still points at the right place. Shares the detection state
110
+ * with the host through `useMentions`. */
111
+ declare function MentionsVesselImpl({ portal, size, open, matches, active, anchor, placement, onInsert, onActiveChange, onOpenChange, id }: MentionsVesselProps): import("react").JSX.Element;
112
+ declare const MentionsVessel: typeof MentionsVesselImpl & {
113
+ Root: typeof MentionsVesselImpl;
114
+ };
115
+ /**
116
+ * Mentions: a textarea that, when the text before the caret ends with a
117
+ * trigger character followed by a token, offers matching candidates in a
118
+ * small anchored vessel. Entries may carry descriptions, icons, groups
119
+ * and consumer metadata. Selecting reports the whole entry; by default it
120
+ * also replaces the token with `trigger + label`.
121
+ *
122
+ * The field is the shared `Field.Textarea` — field wiring (label ids,
123
+ * the invalid state, autoresize) rides on it for free — and the vessel
124
+ * anchors through the popover's own `Anchor` part wrapped around the
125
+ * field, so the machine, not a local rectangle, points the popup at the
126
+ * input. Composers that keep their own field anatomy (the AI prompt
127
+ * input) skip this shell and wire `useMentions` plus `MentionsVessel`
128
+ * themselves.
129
+ */
130
+ interface MentionsProps extends Omit<HTMLAttributes<HTMLDivElement>, "onSelect"> {
131
+ /** Portal after hydration; `false` keeps the vessel inline. */
132
+ portal?: FloatingPortalTarget;
133
+ /** The candidates offered once a trigger character is typed. */
134
+ items?: MentionEntry[];
135
+ /** The text held by the field. Supply it to control the field;
136
+ * changes are reported via `onValueChange`. */
137
+ value?: string;
138
+ /** The character that summons the candidates. */
139
+ trigger?: string;
140
+ /** One or more summoning characters, such as `@` and `/`. */
141
+ triggers?: MentionTriggers;
142
+ /** Keep composer text untouched when a candidate is selected. */
143
+ insertOnSelect?: boolean;
144
+ /** Keys that choose the highlighted candidate. */
145
+ commitKeys?: MentionCommitKey[];
146
+ /** Which side of the field hosts the candidates. */
147
+ placement?: MentionPlacement;
148
+ placeholder?: string;
149
+ /** Let the field grow with its text instead of holding `rows`. */
150
+ autoresize?: boolean;
151
+ /** Standing alone, the field styles itself from this flag; inside a
152
+ * `Field.Root` the field's own invalid state takes over. */
153
+ invalid?: boolean;
154
+ /** One rung of the control-height ladder for the resting field. */
155
+ size?: "sm" | "md" | "lg";
156
+ /** Reports the field's next text. */
157
+ onValueChange?: (value: string) => void;
158
+ /** Reports the whole selected entry. */
159
+ onSelect?: (entry: MentionEntry) => void;
160
+ }
161
+ declare function MentionsImpl({ portal, items, value, trigger, triggers, insertOnSelect, commitKeys, placement, placeholder, autoresize, invalid, size, onValueChange, onSelect, children, ...rest }: MentionsProps): import("react").JSX.Element;
162
+ declare const Mentions: typeof MentionsImpl & typeof Popover;
163
+ export { MentionsProps as a, MentionCommitKey as c, useMentions as d, Mentions as i, UseMentionsHandlers as l, MentionPlacement as n, MentionsVessel as o, MentionTriggers as r, MentionsVesselProps as s, MentionEntry as t, UseMentionsOptions as u };