@bysages/react 0.4.3 → 0.5.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 (310) hide show
  1. package/dist/ai-B3vbpXlK.mjs +309 -0
  2. package/dist/ai-prompt-input-k34KssHJ.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 +1 -2
  36. package/dist/components/autocomplete/index.mjs +3 -4
  37. package/dist/components/avatar/index.d.mts +13 -4
  38. package/dist/components/avatar/index.mjs +20 -6
  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 +17 -4
  46. package/dist/components/banner/index.mjs +21 -6
  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 +16 -3
  52. package/dist/components/breadcrumb/index.mjs +22 -5
  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 +1 -2
  66. package/dist/components/cascade-select/index.mjs +6 -7
  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 +3 -2
  81. package/dist/components/color-picker/index.mjs +38 -25
  82. package/dist/components/combobox/index.d.mts +1 -2
  83. package/dist/components/combobox/index.mjs +3 -4
  84. package/dist/components/command/index.d.mts +1 -2
  85. package/dist/components/command/index.mjs +3 -4
  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 +0 -2
  97. package/dist/components/date-picker/index.mjs +3 -4
  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 +31 -4
  103. package/dist/components/dialog/index.mjs +41 -10
  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 +1 -2
  109. package/dist/components/drawer/index.mjs +3 -4
  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 +4 -9
  124. package/dist/components/float-button/index.d.mts +23 -3
  125. package/dist/components/float-button/index.mjs +30 -5
  126. package/dist/components/floating-panel/index.d.mts +1 -2
  127. package/dist/components/floating-panel/index.mjs +8 -4
  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 +1 -2
  141. package/dist/components/hover-card/index.mjs +2 -3
  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 +1 -2
  175. package/dist/components/menu/index.mjs +3 -4
  176. package/dist/components/menubar/index.d.mts +1 -2
  177. package/dist/components/menubar/index.mjs +2 -3
  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 +1 -2
  181. package/dist/components/navigation-menu/index.mjs +2 -3
  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 +2 -3
  195. package/dist/components/popconfirm/index.mjs +2 -3
  196. package/dist/components/popover/index.d.mts +1 -1
  197. package/dist/components/popover/index.mjs +3 -4
  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 +1 -2
  229. package/dist/components/split-button/index.mjs +4 -5
  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 +0 -2
  245. package/dist/components/table/index.mjs +5 -6
  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 +18 -6
  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 +1 -2
  271. package/dist/components/tooltip/index.mjs +2 -3
  272. package/dist/components/tour/index.d.mts +0 -2
  273. package/dist/components/tour/index.mjs +2 -3
  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 +2 -3
  277. package/dist/components/tree-select/index.mjs +5 -6
  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 +1 -3
  281. package/dist/components/typography/index.mjs +1 -2
  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/generative/index.d.mts +0 -2
  290. package/dist/generative/index.mjs +146 -106
  291. package/dist/{icon-Cri0-7-x.mjs → icon-C9udWCyz.mjs} +1 -2
  292. package/dist/{id-C37UYLwJ.mjs → id-Ctic_3o8.mjs} +1 -2
  293. package/dist/{image-viewer-D4FuYrk6.mjs → image-viewer-BYiXpi1X.mjs} +21 -26
  294. package/dist/{index-Eu-Bttta.d.mts → index-BVdkcSSY.d.mts} +0 -2
  295. package/dist/index-CjO4Ggf0.d.mts +115 -0
  296. package/dist/{index-Dj8S4eyJ.d.mts → index-D4C52fI7.d.mts} +0 -4
  297. package/dist/{index-BcRdWGY-.d.mts → index-DIZEFqJM.d.mts} +0 -8
  298. package/dist/{index-Bbg4heDO.d.mts → index-DcpvCyt6.d.mts} +63 -18
  299. package/dist/{index-D_iKc2Uw.d.mts → index-DczfbPCg.d.mts} +0 -4
  300. package/dist/index-lCsvE2Vl.d.mts +37 -0
  301. package/dist/index.d.mts +14 -14
  302. package/dist/index.mjs +10 -10
  303. package/dist/{input-BDpQ0e6G.mjs → input-YRjehBhU.mjs} +3 -5
  304. package/dist/{media-player-C0WcjVI-.mjs → media-player-CO2Cczl-.mjs} +7 -12
  305. package/dist/mentions-De7ChJbl.mjs +335 -0
  306. package/dist/{messages-1jJWtaYU.mjs → messages-B6n0lVyt.mjs} +1 -2
  307. package/dist/{select-D_soVdWK.mjs → select-DQ5669_K.mjs} +4 -6
  308. package/package.json +17 -17
  309. package/dist/index-B4twHAQC.d.mts +0 -10456
  310. package/dist/mentions-BwnyvdXz.mjs +0 -213
@@ -1,213 +0,0 @@
1
- import { t as useElementId } from "./id-C37UYLwJ.mjs";
2
- import { t as withSelfRoot } from "./family-DE_GQeeM.mjs";
3
- import { Field } from "./components/field/index.mjs";
4
- import { Popover as Popover$1 } from "./components/popover/index.mjs";
5
- import { injectComponentStyle } from "@bysages/core/styling";
6
- import { jsx, jsxs } from "react/jsx-runtime";
7
- import { useRef, useState } from "react";
8
- import { Popover } from "@ark-ui/react/popover";
9
- import { Portal } from "@ark-ui/react/portal";
10
- //#region src/components/mentions/use-mentions.ts
11
- /** The @-detection machinery behind a mention field: watch the caret,
12
- * offer the matching candidates, and answer for the keys that drive
13
- * them. The field element arrives as a getter because hosts wrap it
14
- * differently (a bare textarea, a field part's ref).
15
- *
16
- * `onKeydown` answers whether the vessel consumed the key, so a host
17
- * with its own Enter semantics — a composer that sends — can yield to
18
- * the candidates first and act only when the vessel stands down. */
19
- function useMentions(options, textarea, handlers) {
20
- const [popupOpen, setPopupOpen] = useState(false);
21
- const [matches, setMatches] = useState([]);
22
- const [active, setActive] = useState(0);
23
- const anchorIndex = useRef(0);
24
- const caretIndex = useRef(0);
25
- const resolve = () => typeof options === "function" ? options() : options;
26
- const closePopup = () => {
27
- setPopupOpen(false);
28
- setMatches([]);
29
- };
30
- const detect = () => {
31
- const text = handlers.getText();
32
- const caret = textarea()?.selectionStart ?? text.length;
33
- caretIndex.current = caret;
34
- const head = text.slice(0, caret);
35
- const char = resolve().trigger ?? "@";
36
- const anchor = head.lastIndexOf(char);
37
- const token = anchor === -1 ? "" : head.slice(anchor + char.length);
38
- if (anchor === -1 || /\s/.test(token)) {
39
- closePopup();
40
- return;
41
- }
42
- const found = resolve().items.filter((entry) => entry.label.toLowerCase().startsWith(token.toLowerCase()));
43
- setMatches(found);
44
- setActive(0);
45
- anchorIndex.current = anchor;
46
- setPopupOpen(found.length > 0);
47
- };
48
- const insert = (entry) => {
49
- const text = handlers.getText();
50
- const char = resolve().trigger ?? "@";
51
- const next = text.slice(0, anchorIndex.current) + char + entry.label + " " + text.slice(caretIndex.current);
52
- handlers.setText(next);
53
- closePopup();
54
- setTimeout(() => {
55
- const el = textarea();
56
- if (!el) return;
57
- const caret = anchorIndex.current + char.length + entry.label.length + 1;
58
- el.focus();
59
- el.setSelectionRange(caret, caret);
60
- }, 0);
61
- };
62
- /** Feed the field's input events through here — the vessel watches
63
- * the text as it lands, from the element itself. */
64
- const onInput = () => detect();
65
- /** Arrows move, Enter inserts, Escape dismisses. Answers `true` when
66
- * the vessel consumed the key. */
67
- const onKeydown = (event) => {
68
- if (!popupOpen || matches.length === 0) return false;
69
- if (event.key === "ArrowDown") {
70
- event.preventDefault();
71
- setActive((current) => (current + 1) % matches.length);
72
- } else if (event.key === "ArrowUp") {
73
- event.preventDefault();
74
- setActive((current) => (current - 1 + matches.length) % matches.length);
75
- } else if (event.key === "Enter") {
76
- event.preventDefault();
77
- insert(matches[active]);
78
- } else if (event.key === "Escape") closePopup();
79
- else return false;
80
- return true;
81
- };
82
- return {
83
- open: popupOpen,
84
- matches,
85
- active,
86
- setActive,
87
- insert,
88
- close: closePopup,
89
- onInput,
90
- onKeydown
91
- };
92
- }
93
- //#endregion
94
- //#region src/components/mentions/index.tsx
95
- function MentionsPopup({ size, matches, active, onInsert, onActiveChange, ...rest }) {
96
- return /* @__PURE__ */ jsx("div", {
97
- ...rest,
98
- "data-scope": "mentions",
99
- "data-part": "popup",
100
- "data-size": size,
101
- role: "listbox",
102
- children: matches.map((entry, index) => /* @__PURE__ */ jsx("div", {
103
- role: "option",
104
- "aria-selected": index === active,
105
- tabIndex: -1,
106
- "data-scope": "mentions",
107
- "data-part": "option",
108
- "data-active": index === active ? "" : void 0,
109
- onMouseEnter: () => onActiveChange?.(index),
110
- onMouseDown: (event) => event.preventDefault(),
111
- onClick: () => onInsert?.(entry),
112
- onKeyDown: (event) => {
113
- if (event.key !== "Enter" && event.key !== " ") return;
114
- event.preventDefault();
115
- onInsert?.(entry);
116
- },
117
- children: entry.label
118
- }, entry.value))
119
- });
120
- }
121
- /** The vessel: the candidates themselves as a floating card. The anchor
122
- * is virtual — a live rectangle off the host's field — so a host keeps
123
- * its own anatomy (the textarea rides where the host puts it) and the
124
- * vessel still points at the right place. Shares the detection state
125
- * with the host through `useMentions`. */
126
- function MentionsVesselImpl({ size = "md", open = false, matches = [], active = 0, anchor = null, onInsert, onActiveChange, onOpenChange, id }) {
127
- injectComponentStyle("mentions");
128
- const hostId = useElementId("mentions", { id });
129
- return /* @__PURE__ */ jsx(Popover.Root, {
130
- id: `${hostId}:vessel`,
131
- open,
132
- onOpenChange: (details) => onOpenChange?.(details.open),
133
- positioning: {
134
- placement: "bottom-start",
135
- getAnchorRect: () => anchor?.getBoundingClientRect() ?? null
136
- },
137
- children: /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(Popover.Positioner, { children: /* @__PURE__ */ jsx(Popover.Content, {
138
- asChild: true,
139
- children: /* @__PURE__ */ jsx(MentionsPopup, {
140
- size,
141
- matches,
142
- active,
143
- onInsert,
144
- onActiveChange
145
- })
146
- }) }) })
147
- });
148
- }
149
- const MentionsVessel = withSelfRoot(MentionsVesselImpl);
150
- function MentionsImpl({ items = [], value, trigger = "@", placeholder, autoresize = false, invalid = false, size = "md", onValueChange, children, ...rest }) {
151
- const hostId = useElementId("mentions", rest);
152
- const [internal, setInternal] = useState("");
153
- const fieldRef = useRef(null);
154
- const el = () => fieldRef.current;
155
- const current = value ?? internal;
156
- const mentions = useMentions({
157
- items,
158
- trigger
159
- }, el, {
160
- getText: () => el()?.value ?? current,
161
- setText: (next) => {
162
- setInternal(next);
163
- onValueChange?.(next);
164
- }
165
- });
166
- const handleChange = (event) => {
167
- const node = event.currentTarget;
168
- setInternal(node.value);
169
- onValueChange?.(node.value);
170
- mentions.onInput();
171
- };
172
- return /* @__PURE__ */ jsxs("div", {
173
- ...rest,
174
- "data-scope": "mentions",
175
- "data-part": "root",
176
- "data-size": size,
177
- children: [/* @__PURE__ */ jsxs(Popover.Root, {
178
- id: `${hostId}:vessel`,
179
- open: mentions.open,
180
- onOpenChange: (details) => {
181
- if (!details.open) mentions.close();
182
- },
183
- positioning: { placement: "bottom-start" },
184
- children: [/* @__PURE__ */ jsx(Popover.Anchor, {
185
- asChild: true,
186
- children: /* @__PURE__ */ jsx(Field.Textarea, {
187
- ref: fieldRef,
188
- autoresize,
189
- rows: 3,
190
- placeholder,
191
- value: current,
192
- onChange: handleChange,
193
- onKeyDown: (event) => mentions.onKeydown(event),
194
- "data-invalid": invalid || void 0,
195
- "data-scope": "mentions",
196
- "data-part": "textarea"
197
- })
198
- }), /* @__PURE__ */ jsx(Popover.Positioner, { children: /* @__PURE__ */ jsx(Popover.Content, {
199
- asChild: true,
200
- children: /* @__PURE__ */ jsx(MentionsPopup, {
201
- size,
202
- matches: mentions.matches,
203
- active: mentions.active,
204
- onInsert: mentions.insert,
205
- onActiveChange: mentions.setActive
206
- })
207
- }) })]
208
- }), children]
209
- });
210
- }
211
- const Mentions = Object.assign(MentionsImpl, Popover$1);
212
- //#endregion
213
- export { MentionsVessel as n, useMentions as r, Mentions as t };