@bysages/react 0.3.0 → 0.4.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 (277) hide show
  1. package/dist/{ai-response-jZy-0Tvv.mjs → ai-response-B4DX7nmJ.mjs} +10 -4
  2. package/dist/chevron-a2nIZKN4.mjs +6 -0
  3. package/dist/components/accordion/index.d.mts +22 -4
  4. package/dist/components/accordion/index.mjs +31 -1
  5. package/dist/components/affix/index.d.mts +4 -1
  6. package/dist/components/affix/index.mjs +5 -3
  7. package/dist/components/ai/index.d.mts +2 -2
  8. package/dist/components/ai/index.mjs +29 -12
  9. package/dist/components/ai-action/index.d.mts +4 -1
  10. package/dist/components/ai-action/index.mjs +3 -1
  11. package/dist/components/ai-attachments/index.d.mts +10 -4
  12. package/dist/components/ai-attachments/index.mjs +19 -45
  13. package/dist/components/ai-message/index.d.mts +4 -1
  14. package/dist/components/ai-message/index.mjs +3 -1
  15. package/dist/components/ai-prompt-input/index.d.mts +5 -2
  16. package/dist/components/ai-prompt-input/index.mjs +17 -17
  17. package/dist/components/ai-reasoning/index.d.mts +4 -1
  18. package/dist/components/ai-reasoning/index.mjs +4 -2
  19. package/dist/components/ai-response/index.d.mts +8 -3
  20. package/dist/components/ai-response/index.mjs +1 -1
  21. package/dist/components/ai-source/index.d.mts +8 -2
  22. package/dist/components/ai-source/index.mjs +5 -2
  23. package/dist/components/ai-suggestion/index.d.mts +4 -1
  24. package/dist/components/ai-suggestion/index.mjs +3 -1
  25. package/dist/components/ai-tool/index.d.mts +4 -1
  26. package/dist/components/ai-tool/index.mjs +4 -2
  27. package/dist/components/alert/index.d.mts +2 -0
  28. package/dist/components/alert/index.mjs +11 -18
  29. package/dist/components/angle-slider/index.d.mts +19 -2
  30. package/dist/components/angle-slider/index.mjs +31 -8
  31. package/dist/components/aspect-ratio/index.d.mts +4 -1
  32. package/dist/components/aspect-ratio/index.mjs +3 -1
  33. package/dist/components/autocomplete/index.d.mts +3 -1
  34. package/dist/components/autocomplete/index.mjs +9 -2
  35. package/dist/components/avatar/index.d.mts +2 -2
  36. package/dist/components/avatar/index.mjs +9 -2
  37. package/dist/components/avatar-group/index.d.mts +4 -1
  38. package/dist/components/avatar-group/index.mjs +3 -1
  39. package/dist/components/back-top/index.d.mts +7 -1
  40. package/dist/components/back-top/index.mjs +12 -17
  41. package/dist/components/badge/index.d.mts +4 -1
  42. package/dist/components/badge/index.mjs +3 -1
  43. package/dist/components/banner/index.mjs +13 -18
  44. package/dist/components/block-ui/index.d.mts +4 -1
  45. package/dist/components/block-ui/index.mjs +3 -1
  46. package/dist/components/breadcrumb/index.d.mts +3 -8
  47. package/dist/components/breadcrumb/index.mjs +11 -1
  48. package/dist/components/button/index.d.mts +4 -1
  49. package/dist/components/button/index.mjs +3 -1
  50. package/dist/components/calendar/index.d.mts +3 -1
  51. package/dist/components/calendar/index.mjs +9 -10
  52. package/dist/components/carousel/index.d.mts +21 -1
  53. package/dist/components/carousel/index.mjs +43 -2
  54. package/dist/components/cascade-select/index.d.mts +6 -1
  55. package/dist/components/cascade-select/index.mjs +18 -37
  56. package/dist/components/checkbox/index.d.mts +20 -2
  57. package/dist/components/checkbox/index.mjs +28 -8
  58. package/dist/components/checkbox-group/index.d.mts +8 -6
  59. package/dist/components/checkbox-group/index.mjs +44 -48
  60. package/dist/components/chip/index.d.mts +4 -1
  61. package/dist/components/chip/index.mjs +3 -1
  62. package/dist/components/client-only/index.d.mts +7 -2
  63. package/dist/components/client-only/index.mjs +5 -1
  64. package/dist/components/clipboard/index.d.mts +17 -4
  65. package/dist/components/clipboard/index.mjs +33 -5
  66. package/dist/components/collapsible/index.d.mts +16 -4
  67. package/dist/components/collapsible/index.mjs +25 -1
  68. package/dist/components/color-picker/index.d.mts +20 -4
  69. package/dist/components/color-picker/index.mjs +56 -14
  70. package/dist/components/combobox/index.d.mts +27 -1
  71. package/dist/components/combobox/index.mjs +62 -5
  72. package/dist/components/command/index.d.mts +4 -1
  73. package/dist/components/command/index.mjs +15 -3
  74. package/dist/components/comment/index.d.mts +4 -1
  75. package/dist/components/comment/index.mjs +3 -1
  76. package/dist/components/config-provider/index.d.mts +8 -2
  77. package/dist/components/config-provider/index.mjs +5 -2
  78. package/dist/components/container/index.d.mts +4 -1
  79. package/dist/components/container/index.mjs +3 -1
  80. package/dist/components/data-view/index.d.mts +4 -1
  81. package/dist/components/data-view/index.mjs +7 -3
  82. package/dist/components/date-input/index.d.mts +19 -4
  83. package/dist/components/date-input/index.mjs +33 -9
  84. package/dist/components/date-picker/index.d.mts +21 -4
  85. package/dist/components/date-picker/index.mjs +58 -11
  86. package/dist/components/deferred-content/index.d.mts +4 -1
  87. package/dist/components/deferred-content/index.mjs +3 -1
  88. package/dist/components/descriptions/index.d.mts +10 -2
  89. package/dist/components/descriptions/index.mjs +13 -8
  90. package/dist/components/dialog/index.d.mts +18 -5
  91. package/dist/components/dialog/index.mjs +43 -1
  92. package/dist/components/download-trigger/index.d.mts +7 -2
  93. package/dist/components/download-trigger/index.mjs +5 -1
  94. package/dist/components/drawer/index.d.mts +18 -6
  95. package/dist/components/drawer/index.mjs +40 -1
  96. package/dist/components/dynamic-input/index.d.mts +4 -1
  97. package/dist/components/dynamic-input/index.mjs +13 -19
  98. package/dist/components/editable/index.d.mts +28 -7
  99. package/dist/components/editable/index.mjs +43 -4
  100. package/dist/components/ellipsis/index.d.mts +4 -1
  101. package/dist/components/ellipsis/index.mjs +3 -1
  102. package/dist/components/field/index.d.mts +30 -5
  103. package/dist/components/field/index.mjs +36 -3
  104. package/dist/components/fieldset/index.d.mts +19 -4
  105. package/dist/components/fieldset/index.mjs +28 -3
  106. package/dist/components/file-upload/index.d.mts +36 -9
  107. package/dist/components/file-upload/index.mjs +66 -11
  108. package/dist/components/float-button/index.mjs +3 -1
  109. package/dist/components/floating-panel/index.d.mts +18 -6
  110. package/dist/components/floating-panel/index.mjs +55 -1
  111. package/dist/components/focus-trap/index.d.mts +7 -2
  112. package/dist/components/focus-trap/index.mjs +5 -1
  113. package/dist/components/form/index.d.mts +1 -1
  114. package/dist/components/form/index.mjs +5 -2
  115. package/dist/components/frame/index.d.mts +4 -8
  116. package/dist/components/frame/index.mjs +13 -1
  117. package/dist/components/grid/index.d.mts +4 -1
  118. package/dist/components/grid/index.mjs +3 -1
  119. package/dist/components/highlight/index.d.mts +3 -5
  120. package/dist/components/highlight/index.mjs +6 -1
  121. package/dist/components/hover-card/index.d.mts +20 -4
  122. package/dist/components/hover-card/index.mjs +32 -1
  123. package/dist/components/icon/index.d.mts +10 -8
  124. package/dist/components/icon/index.mjs +5 -3
  125. package/dist/components/image/index.d.mts +11 -2
  126. package/dist/components/image/index.mjs +16 -29
  127. package/dist/components/image-cropper/index.d.mts +13 -2
  128. package/dist/components/image-cropper/index.mjs +34 -2
  129. package/dist/components/image-viewer/index.d.mts +2 -18
  130. package/dist/components/image-viewer/index.mjs +3 -109
  131. package/dist/components/input/index.d.mts +3 -1
  132. package/dist/components/input/index.mjs +1 -1
  133. package/dist/components/json-tree-view/index.d.mts +20 -4
  134. package/dist/components/json-tree-view/index.mjs +38 -4
  135. package/dist/components/kbd/index.d.mts +4 -1
  136. package/dist/components/kbd/index.mjs +3 -1
  137. package/dist/components/layout/index.d.mts +25 -7
  138. package/dist/components/layout/index.mjs +159 -63
  139. package/dist/components/link/index.d.mts +4 -1
  140. package/dist/components/link/index.mjs +3 -1
  141. package/dist/components/list/index.d.mts +5 -4
  142. package/dist/components/list/index.mjs +10 -1
  143. package/dist/components/listbox/index.d.mts +22 -1
  144. package/dist/components/listbox/index.mjs +36 -4
  145. package/dist/components/marquee/index.d.mts +18 -1
  146. package/dist/components/marquee/index.mjs +34 -2
  147. package/dist/components/masonry/index.d.mts +4 -1
  148. package/dist/components/masonry/index.mjs +3 -1
  149. package/dist/components/media-player/index.d.mts +2 -0
  150. package/dist/components/media-player/index.mjs +2 -0
  151. package/dist/components/mentions/index.d.mts +1 -1
  152. package/dist/components/mentions/index.mjs +1 -1
  153. package/dist/components/menu/index.d.mts +29 -11
  154. package/dist/components/menu/index.mjs +34 -12
  155. package/dist/components/menubar/index.d.mts +3 -1
  156. package/dist/components/menubar/index.mjs +7 -1
  157. package/dist/components/navigation-menu/index.d.mts +25 -1
  158. package/dist/components/navigation-menu/index.mjs +36 -1
  159. package/dist/components/number-input/index.d.mts +28 -6
  160. package/dist/components/number-input/index.mjs +33 -8
  161. package/dist/components/order-list/index.d.mts +4 -1
  162. package/dist/components/order-list/index.mjs +34 -33
  163. package/dist/components/pagination/index.d.mts +23 -3
  164. package/dist/components/pagination/index.mjs +57 -12
  165. package/dist/components/password-input/index.d.mts +24 -6
  166. package/dist/components/password-input/index.mjs +31 -8
  167. package/dist/components/pin-input/index.d.mts +23 -5
  168. package/dist/components/pin-input/index.mjs +29 -7
  169. package/dist/components/popconfirm/index.d.mts +9 -5
  170. package/dist/components/popconfirm/index.mjs +23 -18
  171. package/dist/components/popover/index.d.mts +2 -8
  172. package/dist/components/popover/index.mjs +44 -4
  173. package/dist/components/presence/index.d.mts +10 -2
  174. package/dist/components/presence/index.mjs +6 -1
  175. package/dist/components/progress/index.d.mts +18 -3
  176. package/dist/components/progress/index.mjs +34 -9
  177. package/dist/components/progress-group/index.d.mts +4 -1
  178. package/dist/components/progress-group/index.mjs +4 -2
  179. package/dist/components/qr-code/index.d.mts +14 -1
  180. package/dist/components/qr-code/index.mjs +26 -2
  181. package/dist/components/radio-group/index.d.mts +27 -2
  182. package/dist/components/radio-group/index.mjs +32 -8
  183. package/dist/components/rating-group/index.d.mts +20 -3
  184. package/dist/components/rating-group/index.mjs +26 -8
  185. package/dist/components/result/index.d.mts +1 -1
  186. package/dist/components/result/index.mjs +2 -2
  187. package/dist/components/scroll-area/index.d.mts +14 -1
  188. package/dist/components/scroll-area/index.mjs +32 -2
  189. package/dist/components/segment-group/index.d.mts +28 -2
  190. package/dist/components/segment-group/index.mjs +34 -7
  191. package/dist/components/select/index.d.mts +2 -2
  192. package/dist/components/select/index.mjs +1 -1
  193. package/dist/components/separator/index.d.mts +4 -1
  194. package/dist/components/separator/index.mjs +3 -1
  195. package/dist/components/signature-pad/index.d.mts +25 -5
  196. package/dist/components/signature-pad/index.mjs +37 -3
  197. package/dist/components/skeleton/index.d.mts +4 -1
  198. package/dist/components/skeleton/index.mjs +3 -1
  199. package/dist/components/slider/index.d.mts +21 -2
  200. package/dist/components/slider/index.mjs +31 -8
  201. package/dist/components/spinner/index.d.mts +4 -1
  202. package/dist/components/spinner/index.mjs +6 -2
  203. package/dist/components/split-button/index.d.mts +3 -1
  204. package/dist/components/split-button/index.mjs +15 -18
  205. package/dist/components/splitter/index.d.mts +17 -4
  206. package/dist/components/splitter/index.mjs +35 -1
  207. package/dist/components/spotlight/index.d.mts +4 -1
  208. package/dist/components/spotlight/index.mjs +3 -1
  209. package/dist/components/stack/index.d.mts +4 -1
  210. package/dist/components/stack/index.mjs +6 -4
  211. package/dist/components/steps/index.d.mts +27 -3
  212. package/dist/components/steps/index.mjs +36 -12
  213. package/dist/components/swap/index.d.mts +11 -5
  214. package/dist/components/swap/index.mjs +30 -3
  215. package/dist/components/switch/index.d.mts +20 -2
  216. package/dist/components/switch/index.mjs +27 -8
  217. package/dist/components/table/index.d.mts +4 -1
  218. package/dist/components/table/index.mjs +44 -70
  219. package/dist/components/tabs/index.d.mts +24 -2
  220. package/dist/components/tabs/index.mjs +25 -9
  221. package/dist/components/tags-input/index.d.mts +33 -8
  222. package/dist/components/tags-input/index.mjs +41 -9
  223. package/dist/components/terminal/index.d.mts +4 -1
  224. package/dist/components/terminal/index.mjs +8 -3
  225. package/dist/components/textarea/index.d.mts +4 -1
  226. package/dist/components/textarea/index.mjs +3 -1
  227. package/dist/components/timer/index.d.mts +18 -1
  228. package/dist/components/timer/index.mjs +51 -2
  229. package/dist/components/toast/index.d.mts +3 -6
  230. package/dist/components/toast/index.mjs +22 -2
  231. package/dist/components/toc/index.d.mts +24 -4
  232. package/dist/components/toc/index.mjs +41 -3
  233. package/dist/components/toggle/index.d.mts +11 -4
  234. package/dist/components/toggle/index.mjs +21 -1
  235. package/dist/components/toggle-group/index.d.mts +26 -2
  236. package/dist/components/toggle-group/index.mjs +31 -6
  237. package/dist/components/toolbar/index.d.mts +4 -1
  238. package/dist/components/toolbar/index.mjs +3 -1
  239. package/dist/components/tooltip/index.d.mts +17 -4
  240. package/dist/components/tooltip/index.mjs +28 -1
  241. package/dist/components/tour/index.d.mts +18 -9
  242. package/dist/components/tour/index.mjs +44 -2
  243. package/dist/components/transfer/index.d.mts +3 -1
  244. package/dist/components/transfer/index.mjs +20 -30
  245. package/dist/components/tree-select/index.d.mts +3 -1
  246. package/dist/components/tree-select/index.mjs +15 -24
  247. package/dist/components/tree-view/index.d.mts +30 -1
  248. package/dist/components/tree-view/index.mjs +69 -6
  249. package/dist/components/typography/index.d.mts +4 -0
  250. package/dist/components/typography/index.mjs +1 -0
  251. package/dist/components/user/index.d.mts +4 -1
  252. package/dist/components/user/index.mjs +3 -1
  253. package/dist/components/virtual-list/index.d.mts +4 -1
  254. package/dist/components/virtual-list/index.mjs +11 -12
  255. package/dist/components/watermark/index.d.mts +4 -1
  256. package/dist/components/watermark/index.mjs +4 -2
  257. package/dist/family-DE_GQeeM.mjs +9 -0
  258. package/dist/icon-BALgGtNK.mjs +18 -0
  259. package/dist/id-C37UYLwJ.mjs +13 -0
  260. package/dist/image-viewer-Cf6thHax.mjs +141 -0
  261. package/dist/{index-Uefyw7Im.d.mts → index-Bbg4heDO.d.mts} +12 -7
  262. package/dist/index-BcRdWGY-.d.mts +115 -0
  263. package/dist/{index-DFN9F5Zt.d.mts → index-D_iKc2Uw.d.mts} +32 -3
  264. package/dist/{index-CsfxYv6J.d.mts → index-DdNKngUQ.d.mts} +63 -39
  265. package/dist/index-Dj8S4eyJ.d.mts +41 -0
  266. package/dist/index-Eu-Bttta.d.mts +24 -0
  267. package/dist/{index-uPyYiWaL.d.mts → index-PsgGWW3m.d.mts} +8 -2
  268. package/dist/index.d.mts +36 -35
  269. package/dist/index.mjs +13 -12
  270. package/dist/{input-2oezH-dY.mjs → input-C21Zzuy6.mjs} +3 -1
  271. package/dist/media-player-gQrnxU52.mjs +554 -0
  272. package/dist/{mentions-DMIBCBOd.mjs → mentions-BuWibdci.mjs} +74 -42
  273. package/dist/messages-1jJWtaYU.mjs +16 -0
  274. package/dist/select-ozUFq0zd.mjs +121 -0
  275. package/package.json +3 -3
  276. package/dist/chevron-BeHvt46K.mjs +0 -17
  277. package/dist/select-D1xiT1oJ.mjs +0 -68
@@ -1,13 +1,17 @@
1
+ import { t as withSelfRoot } from "../../family-DE_GQeeM.mjs";
1
2
  import { injectComponentStyle } from "@bysages/core";
2
3
  import { jsx } from "react/jsx-runtime";
3
4
  import { useRef } from "react";
4
5
  import { useVirtualizer } from "@tanstack/react-virtual";
5
6
  //#region src/components/virtual-list/index.tsx
7
+ function toCssLength(length) {
8
+ return typeof length === "number" ? `${length}px` : length;
9
+ }
6
10
  /** A ledger that only mounts the rows on stage: the viewport keeps its
7
11
  * scroll length by a spacer sized from the row height, the rows
8
12
  * themselves are positioned against it — a ten-thousand-row list
9
13
  * costs the DOM a window, not the ledger. */
10
- function VirtualList({ items, itemHeight = 40, height = 320, renderItem, ...rest }) {
14
+ function VirtualListImpl({ items, itemHeight = 40, height = 320, renderItem, ...rest }) {
11
15
  injectComponentStyle("virtual-list");
12
16
  const viewport = useRef(null);
13
17
  const virtualizer = useVirtualizer({
@@ -19,34 +23,29 @@ function VirtualList({ items, itemHeight = 40, height = 320, renderItem, ...rest
19
23
  return /* @__PURE__ */ jsx("div", {
20
24
  ...rest,
21
25
  ref: viewport,
26
+ tabIndex: 0,
22
27
  "data-scope": "virtual-list",
23
28
  "data-part": "root",
24
29
  style: {
25
30
  ...rest.style,
26
- blockSize: typeof height === "number" ? `${height}px` : height
31
+ "--bs-virtual-list-height": toCssLength(height)
27
32
  },
28
33
  children: /* @__PURE__ */ jsx("div", {
29
34
  "data-scope": "virtual-list",
30
35
  "data-part": "inner",
31
- style: {
32
- blockSize: virtualizer.getTotalSize(),
33
- position: "relative"
34
- },
36
+ style: { "--bs-virtual-list-total": `${virtualizer.getTotalSize()}px` },
35
37
  children: virtualizer.getVirtualItems().map((row) => /* @__PURE__ */ jsx("div", {
36
38
  "data-scope": "virtual-list",
37
39
  "data-part": "row",
38
40
  style: {
39
- position: "absolute",
40
- top: 0,
41
- insetInlineStart: 0,
42
- inlineSize: "100%",
43
- transform: `translateY(${row.start}px)`,
44
- blockSize: row.size
41
+ "--bs-virtual-list-row-start": `${row.start}px`,
42
+ "--bs-virtual-list-row-size": `${row.size}px`
45
43
  },
46
44
  children: renderItem?.(items[row.index], row.index)
47
45
  }, String(row.key)))
48
46
  })
49
47
  });
50
48
  }
49
+ const VirtualList = withSelfRoot(VirtualListImpl);
51
50
  //#endregion
52
51
  export { VirtualList };
@@ -12,5 +12,8 @@ export interface WatermarkProps extends HTMLAttributes<HTMLDivElement> {
12
12
  * density) and the marks layer repeats it over the children. The seal
13
13
  * redraws itself when a prop turns — and it never takes a pointer.
14
14
  */
15
- export declare function Watermark({ content, opacity, rotate, fontSize, children, ...rest }: WatermarkProps): import("react").JSX.Element;
15
+ declare function WatermarkImpl({ content, opacity, rotate, fontSize, children, ...rest }: WatermarkProps): import("react").JSX.Element;
16
+ export declare const Watermark: typeof WatermarkImpl & {
17
+ Root: typeof WatermarkImpl;
18
+ };
16
19
  //#endregion
@@ -1,3 +1,4 @@
1
+ import { t as withSelfRoot } from "../../family-DE_GQeeM.mjs";
1
2
  import { injectComponentStyle } from "@bysages/core";
2
3
  import { jsx, jsxs } from "react/jsx-runtime";
3
4
  import { useEffect, useState } from "react";
@@ -17,7 +18,7 @@ function toPx(size) {
17
18
  * density) and the marks layer repeats it over the children. The seal
18
19
  * redraws itself when a prop turns — and it never takes a pointer.
19
20
  */
20
- function Watermark({ content, opacity = .06, rotate = -20, fontSize = "0.875rem", children, ...rest }) {
21
+ function WatermarkImpl({ content, opacity = .06, rotate = -20, fontSize = "0.875rem", children, ...rest }) {
21
22
  injectComponentStyle("watermark");
22
23
  const [root, setRoot] = useState(null);
23
24
  const [tile, setTile] = useState("");
@@ -72,9 +73,10 @@ function Watermark({ content, opacity = .06, rotate = -20, fontSize = "0.875rem"
72
73
  "data-scope": "watermark",
73
74
  "data-part": "marks",
74
75
  "aria-hidden": "true",
75
- style: { backgroundImage: tile }
76
+ style: { "--bs-watermark-image": tile }
76
77
  })]
77
78
  });
78
79
  }
80
+ const Watermark = withSelfRoot(WatermarkImpl);
79
81
  //#endregion
80
82
  export { Watermark };
@@ -0,0 +1,9 @@
1
+ //#region src/internal/family.ts
2
+ /** Gives a single-component family the same callable + Root surface. */
3
+ function withSelfRoot(component) {
4
+ const family = component;
5
+ family.Root = component;
6
+ return family;
7
+ }
8
+ //#endregion
9
+ export { withSelfRoot as t };
@@ -0,0 +1,18 @@
1
+ import { getIcon } from "@bysages/core/icons";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/internal/icon.tsx
4
+ /** Render a curated registry icon as a bare svg element — the components
5
+ * own default icons. No span shell: the part rules size the svg directly.
6
+ * Extra body appends after the icon's own body, for composed marks. */
7
+ function iconNode(name, attrs = {}, extraBody = "") {
8
+ const icon = getIcon(name);
9
+ if (!icon) throw new Error(`Unknown icon "${name}" in the curated core registry`);
10
+ return /* @__PURE__ */ jsx("svg", {
11
+ viewBox: `0 0 ${icon.width} ${icon.height}`,
12
+ "aria-hidden": "true",
13
+ ...attrs,
14
+ dangerouslySetInnerHTML: { __html: icon.body + extraBody }
15
+ });
16
+ }
17
+ //#endregion
18
+ export { iconNode as t };
@@ -0,0 +1,13 @@
1
+ import { useId } from "react";
2
+ //#region src/internal/id.ts
3
+ /** Zag composes owned-part ids with separators, so React's generated id
4
+ * is narrowed to characters that survive both markup and selectors. */
5
+ const UNSAFE_ID_CHARACTERS = /[^a-zA-Z0-9_-]/g;
6
+ /** Generates an SSR-stable machine base id while honoring an explicit id. */
7
+ function useElementId(scope, props = {}) {
8
+ const generated = useId();
9
+ const explicit = props.id;
10
+ return typeof explicit === "string" && explicit ? explicit : `bs-${scope}-${generated.replace(UNSAFE_ID_CHARACTERS, "-")}`;
11
+ }
12
+ //#endregion
13
+ export { useElementId as t };
@@ -0,0 +1,141 @@
1
+ import { t as iconNode } from "./icon-BALgGtNK.mjs";
2
+ import { t as useElementId } from "./id-C37UYLwJ.mjs";
3
+ import { n as useComponentMessages } from "./messages-1jJWtaYU.mjs";
4
+ import { Button } from "./components/button/index.mjs";
5
+ import { ButtonGroup } from "./components/button-group/index.mjs";
6
+ import { Dialog as Dialog$1 } from "./components/dialog/index.mjs";
7
+ import { injectComponentStyle } from "@bysages/core";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ import { useEffect, useState } from "react";
10
+ import { Portal } from "@ark-ui/react/portal";
11
+ import { Dialog } from "@ark-ui/react/dialog";
12
+ //#region src/components/image-viewer/preview.tsx
13
+ /** The default doorway is the curated preview icon; custom content keeps
14
+ * that icon as its hover and focus affordance. */
15
+ function ImageViewerPreview({ label, children, "data-part": dataPart, ...rest }) {
16
+ injectComponentStyle("image-viewer");
17
+ const messages = useComponentMessages();
18
+ const parts = [dataPart, "preview"].filter(Boolean).join(" ");
19
+ const isIcon = children == null;
20
+ return /* @__PURE__ */ jsxs("span", {
21
+ ...rest,
22
+ "data-scope": "image-viewer",
23
+ "data-part": parts,
24
+ ...isIcon ? {
25
+ "data-empty": "true",
26
+ "aria-label": messages.imageViewer.preview
27
+ } : {},
28
+ children: [children ?? iconNode("eye"), isIcon ? null : /* @__PURE__ */ jsxs("span", {
29
+ "data-scope": "image-viewer",
30
+ "data-part": "preview-overlay",
31
+ "aria-hidden": true,
32
+ children: [iconNode("eye"), label ? /* @__PURE__ */ jsx("span", {
33
+ "data-part": "preview-label",
34
+ children: label
35
+ }) : null]
36
+ })]
37
+ });
38
+ }
39
+ //#endregion
40
+ //#region src/components/image-viewer/index.tsx
41
+ const MIN_SCALE = .5;
42
+ const MAX_SCALE = 3;
43
+ const SCALE_STEP = .25;
44
+ const TOOL_ICONS = {
45
+ zoomIn: "zoom-in",
46
+ zoomOut: "zoom-out",
47
+ rotate: "rotate-cw",
48
+ close: "x"
49
+ };
50
+ function ImageViewerImpl({ src, alt = "", open, zoomable = true, width, height, children, onOpenChange, id }) {
51
+ injectComponentStyle("image-viewer");
52
+ const hostId = useElementId("image-viewer", { id });
53
+ const messages = useComponentMessages();
54
+ const [localOpen, setLocalOpen] = useState(false);
55
+ const [scale, setScale] = useState(1);
56
+ const [rotation, setRotation] = useState(0);
57
+ const isOpen = open ?? localOpen;
58
+ const setOpen = (value) => {
59
+ if (open === void 0) setLocalOpen(value);
60
+ onOpenChange?.(value);
61
+ };
62
+ 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
+ }
74
+ function toolButton(label, icon, onClick) {
75
+ return /* @__PURE__ */ jsx(Button, {
76
+ variant: "ghost",
77
+ square: true,
78
+ size: "lg",
79
+ "aria-label": label,
80
+ onClick,
81
+ children: iconNode(icon)
82
+ });
83
+ }
84
+ function closeToolButton(label, icon) {
85
+ return /* @__PURE__ */ jsx(Dialog.CloseTrigger, {
86
+ asChild: true,
87
+ children: /* @__PURE__ */ jsx(Button, {
88
+ variant: "ghost",
89
+ square: true,
90
+ size: "lg",
91
+ "aria-label": label,
92
+ children: iconNode(icon)
93
+ })
94
+ });
95
+ }
96
+ return /* @__PURE__ */ jsxs(Dialog.Root, {
97
+ id: `${hostId}:dialog`,
98
+ open: isOpen,
99
+ onOpenChange: (details) => setOpen(details.open),
100
+ lazyMount: true,
101
+ unmountOnExit: true,
102
+ children: [/* @__PURE__ */ jsx(Dialog.Trigger, {
103
+ asChild: true,
104
+ "data-scope": "image-viewer",
105
+ "data-part": "trigger",
106
+ 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
+ })] })]
134
+ });
135
+ }
136
+ const ImageViewer = Object.assign(ImageViewerImpl, {
137
+ ...Dialog$1,
138
+ Preview: ImageViewerPreview
139
+ });
140
+ //#endregion
141
+ export { ImageViewer as t };
@@ -1,3 +1,4 @@
1
+ import { t as Popover } from "./index-Eu-Bttta.mjs";
1
2
  import { HTMLAttributes } from "react";
2
3
  //#region src/components/mentions/use-mentions.d.ts
3
4
  interface UseMentionsOptions {
@@ -45,6 +46,7 @@ interface MentionEntry {
45
46
  value: string;
46
47
  }
47
48
  interface MentionsVesselProps {
49
+ id?: string;
48
50
  /** The host field's rung, so the rows keep the field's register. */
49
51
  size?: "sm" | "md" | "lg";
50
52
  /** Whether the candidates are up. */
@@ -67,7 +69,10 @@ interface MentionsVesselProps {
67
69
  * its own anatomy (the textarea rides where the host puts it) and the
68
70
  * vessel still points at the right place. Shares the detection state
69
71
  * with the host through `useMentions`. */
70
- declare function MentionsVessel({ size, open, matches, active, anchor, onInsert, onActiveChange, onOpenChange }: MentionsVesselProps): import("react").JSX.Element;
72
+ declare function MentionsVesselImpl({ size, open, matches, active, anchor, onInsert, onActiveChange, onOpenChange, id }: MentionsVesselProps): import("react").JSX.Element;
73
+ declare const MentionsVessel: typeof MentionsVesselImpl & {
74
+ Root: typeof MentionsVesselImpl;
75
+ };
71
76
  /**
72
77
  * @-mentions: a plain textarea that, when the text before the caret ends
73
78
  * with the trigger character followed by a token, offers the matching
@@ -77,11 +82,10 @@ declare function MentionsVessel({ size, open, matches, active, anchor, onInsert,
77
82
  *
78
83
  * The field is the shared `Field.Textarea` — field wiring (label ids,
79
84
  * the invalid state, autoresize) rides on it for free — and the vessel
80
- * anchors to the field as a whole (popover machinery), not to the caret
81
- * coordinates; caret-precise positioning would need a second
82
- * positioning system for no practical gain at typical field sizes.
83
- * Composers that keep their own field anatomy (the AI prompt input)
84
- * skip this shell and wire `useMentions` plus `MentionsVessel`
85
+ * anchors through the popover's own `Anchor` part wrapped around the
86
+ * field, so the machine, not a local rectangle, points the popup at the
87
+ * input. Composers that keep their own field anatomy (the AI prompt
88
+ * input) skip this shell and wire `useMentions` plus `MentionsVessel`
85
89
  * themselves.
86
90
  */
87
91
  interface MentionsProps extends HTMLAttributes<HTMLDivElement> {
@@ -103,6 +107,7 @@ interface MentionsProps extends HTMLAttributes<HTMLDivElement> {
103
107
  /** Reports the field's next text. */
104
108
  onValueChange?: (value: string) => void;
105
109
  }
106
- declare function Mentions({ items, value, trigger, placeholder, autoresize, invalid, size, onValueChange, children, ...rest }: MentionsProps): import("react").JSX.Element;
110
+ declare function MentionsImpl({ items, value, trigger, placeholder, autoresize, invalid, size, onValueChange, children, ...rest }: MentionsProps): import("react").JSX.Element;
111
+ declare const Mentions: typeof MentionsImpl & typeof Popover;
107
112
  //#endregion
108
113
  export { MentionsVesselProps as a, useMentions as c, MentionsVessel as i, Mentions as n, UseMentionsHandlers as o, MentionsProps as r, UseMentionsOptions as s, MentionEntry as t };
@@ -0,0 +1,115 @@
1
+ import { ButtonHTMLAttributes, HTMLAttributes, InputHTMLAttributes, ReactNode } from "react";
2
+ //#region src/components/media-player/parts.d.ts
3
+ type MediaPartProps = HTMLAttributes<HTMLElement>;
4
+ type ButtonPartProps = ButtonHTMLAttributes<HTMLButtonElement> & {
5
+ label?: string;
6
+ };
7
+ type InputPartProps = InputHTMLAttributes<HTMLInputElement> & {
8
+ label?: string;
9
+ };
10
+ type DivPartProps = HTMLAttributes<HTMLDivElement> & {
11
+ label?: string;
12
+ };
13
+ /** The native media element, framed by the shared shell's state machine. */
14
+ declare function Media(props: MediaPartProps): import("react").JSX.Element;
15
+ /** Play and pause share one seal-cut control: the state changes the mark,
16
+ * never the control's place in the hand. */
17
+ declare function PlayButton({ label, ...props }: ButtonPartProps): import("react").JSX.Element;
18
+ /** The elapsed and total time bracket the timeline. */
19
+ declare function Time(props: HTMLAttributes<HTMLSpanElement>): import("react").JSX.Element;
20
+ /** Seeking writes straight to currentTime; buffered ranges can later
21
+ * ride the same part as a second ink wash. */
22
+ declare function Timeline({ label, ...props }: InputPartProps): import("react").JSX.Element;
23
+ /** Muting stays at the left of the volume well, the way a hand expects. */
24
+ declare function MuteButton({ label, ...props }: ButtonPartProps): import("react").JSX.Element;
25
+ declare function Volume({ label, ...props }: InputPartProps): import("react").JSX.Element;
26
+ /** Playback rate is a real choice, not hidden behind native menus. */
27
+ declare function Rate({ label, ...props }: DivPartProps): import("react").JSX.Element;
28
+ /** Text tracks use the browser's native model; the control chooses a
29
+ * track index, while rendering stays with the media element. */
30
+ declare function Captions({ label, ...props }: DivPartProps): import("react").JSX.Element | null;
31
+ /** Picture-in-picture is video-only and capability-detected. */
32
+ declare function PipButton({ label, ...props }: ButtonPartProps): import("react").JSX.Element | null;
33
+ /** Fullscreen takes the whole vessel, not just the moving picture. */
34
+ declare function FullscreenButton({ label, ...props }: MediaPartProps & {
35
+ label?: string;
36
+ }): import("react").JSX.Element;
37
+ //#endregion
38
+ //#region src/components/media-player/use-media-controls.d.ts
39
+ /** One alternative encoding offered to the browser before playback. */
40
+ interface MediaSourceOption {
41
+ src: string;
42
+ type?: string;
43
+ }
44
+ /** A WebVTT track handed to the native text-track model. */
45
+ interface MediaTextTrackOption {
46
+ src: string;
47
+ kind?: "subtitles" | "captions" | "descriptions" | "chapters" | "metadata";
48
+ label?: string;
49
+ srcLang?: string;
50
+ default?: boolean;
51
+ }
52
+ /** A compact clock for player chrome: hours only when the media asks
53
+ * for them, stable digits so the time never jitters the controls. */
54
+ declare function formatMediaTime(seconds: number): string;
55
+ //#endregion
56
+ //#region src/components/media-player/shell.d.ts
57
+ interface MediaPlayerProps extends Omit<HTMLAttributes<HTMLDivElement>, "onPlay" | "onPause" | "onEnded" | "onTimeUpdate" | "onVolumeChange" | "onRateChange" | "onError"> {
58
+ label?: string;
59
+ src?: string;
60
+ sources?: MediaSourceOption[];
61
+ tracks?: MediaTextTrackOption[];
62
+ autoplay?: boolean;
63
+ loop?: boolean;
64
+ muted?: boolean;
65
+ preload?: "none" | "metadata" | "auto";
66
+ volume?: number;
67
+ playbackRate?: number;
68
+ playbackRates?: number[];
69
+ disabled?: boolean;
70
+ poster?: string;
71
+ playsInline?: boolean;
72
+ onPlay?: (event: Event) => void;
73
+ onPause?: (event: Event) => void;
74
+ onEnded?: (event: Event) => void;
75
+ onTimeupdate?: (event: Event) => void;
76
+ onVolumechange?: (event: Event) => void;
77
+ onRatechange?: (event: Event) => void;
78
+ onError?: (event: Event) => void;
79
+ }
80
+ //#endregion
81
+ //#region src/components/media-player/index.d.ts
82
+ /** Audio and video share one instrument: the same state, the same keys,
83
+ * and the same control rhythm, while each face keeps its native element's
84
+ * own semantics. The parts — Root, Stage, Media, Controls, PlayButton,
85
+ * Timeline, Time, MuteButton, Volume, Rate, Captions, PipButton,
86
+ * FullscreenButton. */
87
+ declare const Audio: ((props: MediaPlayerProps) => import("react").JSX.Element) & {
88
+ Root: (props: MediaPlayerProps) => import("react").JSX.Element;
89
+ Stage: (props: import("react").HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
90
+ Media: typeof Media;
91
+ Controls: (props: import("react").HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
92
+ PlayButton: typeof PlayButton;
93
+ Timeline: typeof Timeline;
94
+ Time: typeof Time;
95
+ MuteButton: typeof MuteButton;
96
+ Volume: typeof Volume;
97
+ Rate: typeof Rate;
98
+ };
99
+ declare const Video: ((props: MediaPlayerProps) => import("react").JSX.Element) & {
100
+ Root: (props: MediaPlayerProps) => import("react").JSX.Element;
101
+ Stage: (props: import("react").HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
102
+ Media: typeof Media;
103
+ Controls: (props: import("react").HTMLAttributes<HTMLDivElement>) => import("react").JSX.Element;
104
+ PlayButton: typeof PlayButton;
105
+ Timeline: typeof Timeline;
106
+ Time: typeof Time;
107
+ MuteButton: typeof MuteButton;
108
+ Volume: typeof Volume;
109
+ Rate: typeof Rate;
110
+ Captions: typeof Captions;
111
+ PipButton: typeof PipButton;
112
+ FullscreenButton: typeof FullscreenButton;
113
+ };
114
+ //#endregion
115
+ export { MediaTextTrackOption as a, MediaSourceOption as i, Video as n, formatMediaTime as o, MediaPlayerProps as r, Audio as t };
@@ -22,7 +22,7 @@ interface NativeSelectProps extends Omit<HTMLAttributes<HTMLSpanElement>, "child
22
22
  disabled?: boolean;
23
23
  onValueChange?: (value: string) => void;
24
24
  }
25
- declare function NativeSelect({ value, options, size, invalid, placeholder, disabled, onValueChange, ...rest }: NativeSelectProps): import("react").JSX.Element;
25
+ declare function NativeSelect({ value, options, size, invalid, placeholder, disabled, onValueChange, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, ...rest }: NativeSelectProps): import("react").JSX.Element;
26
26
  //#endregion
27
27
  //#region src/components/select/index.d.ts
28
28
  /** Ark's Select, dressed in the paper-and-ink system: the trigger is the
@@ -35,8 +35,37 @@ type SelectOwnProps = {
35
35
  size?: "sm" | "md" | "lg";
36
36
  };
37
37
  declare function SelectRoot<T extends CollectionItem>(props: SelectRootComponentProps<T, SelectOwnProps>): import("react").JSX.Element;
38
- declare const Select$1: Omit<typeof Select, "Root"> & {
38
+ type SelectFacadeValue = string | string[];
39
+ type SelectParts = Omit<typeof Select, "Root"> & {
39
40
  Root: typeof SelectRoot;
40
41
  };
42
+ interface SelectFacadeProps {
43
+ value?: SelectFacadeValue;
44
+ defaultValue?: SelectFacadeValue;
45
+ options: NativeSelectOption[];
46
+ multiple?: boolean;
47
+ deselectable?: boolean;
48
+ /** Show the clear-value control when the machine allows it. */
49
+ clearable?: boolean;
50
+ disabled?: boolean;
51
+ invalid?: boolean;
52
+ required?: boolean;
53
+ readOnly?: boolean;
54
+ label?: string;
55
+ /** Heading above the flat option list. */
56
+ groupLabel?: string;
57
+ placeholder?: string;
58
+ name?: string;
59
+ form?: string;
60
+ autoComplete?: string;
61
+ /** One rung of the control-height ladder for the trigger. */
62
+ size?: "sm" | "md" | "lg";
63
+ onValueChange?: (value: string | string[]) => void;
64
+ }
65
+ declare function SelectFacade({ value, defaultValue, options, multiple, deselectable, clearable, disabled, invalid, required, readOnly, label, groupLabel, placeholder, name, form, autoComplete, size, onValueChange }: SelectFacadeProps): import("react").JSX.Element;
66
+ declare namespace SelectFacade {
67
+ var displayName: string;
68
+ }
69
+ declare const Select$1: typeof SelectFacade & SelectParts;
41
70
  //#endregion
42
- export { NativeSelectProps as i, NativeSelect as n, NativeSelectOption as r, Select$1 as t };
71
+ export { NativeSelectProps as a, NativeSelectOption as i, SelectFacadeProps as n, NativeSelect as r, Select$1 as t };
@@ -1,11 +1,11 @@
1
- import { Action } from "./components/ai-action/index.mjs";
2
- import { AiMessage as Message } from "./components/ai-message/index.mjs";
3
- import { AiPromptInput as PromptInput } from "./components/ai-prompt-input/index.mjs";
4
- import { AiReasoning as Reasoning } from "./components/ai-reasoning/index.mjs";
5
- import { AiResponse as Response$1 } from "./components/ai-response/index.mjs";
6
- import { AiSource as Source$1, AiSources as Sources } from "./components/ai-source/index.mjs";
7
- import { AiSuggestion as Suggestion } from "./components/ai-suggestion/index.mjs";
8
- import { AiTool as Tool$1 } from "./components/ai-tool/index.mjs";
1
+ import { ActionProps } from "./components/ai-action/index.mjs";
2
+ import { MessageProps } from "./components/ai-message/index.mjs";
3
+ import { PromptInputProps } from "./components/ai-prompt-input/index.mjs";
4
+ import { ReasoningProps } from "./components/ai-reasoning/index.mjs";
5
+ import { ResponseProps } from "./components/ai-response/index.mjs";
6
+ import { SourceProps, SourcesProps } from "./components/ai-source/index.mjs";
7
+ import { SuggestionProps } from "./components/ai-suggestion/index.mjs";
8
+ import { ToolProps } from "./components/ai-tool/index.mjs";
9
9
  import { HTMLAttributes } from "react";
10
10
  import { JSONSchema7, JSONSchema7 as JSONSchema7$1 } from "json-schema";
11
11
  import { $ZodType } from "zod/v4/core";
@@ -10327,57 +10327,81 @@ declare global {
10327
10327
  //#region src/components/ai/index.d.ts
10328
10328
  /** The log itself: the column every stroke lands in, a landmark to
10329
10329
  * screen readers. */
10330
- declare const AiConversation: {
10331
- ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
10332
- displayName: string;
10333
- };
10330
+ declare function AiConversation({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
10334
10331
  /** The bubble's inner measure — content that belongs to neither side
10335
10332
  * specifically. */
10336
10333
  declare const AiContent: {
10337
10334
  ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
10338
10335
  displayName: string;
10336
+ } & {
10337
+ Root: {
10338
+ ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
10339
+ displayName: string;
10340
+ };
10339
10341
  };
10340
10342
  /** The quiet row under a message — copy, retry, feedback. */
10341
10343
  declare const AiActions: {
10342
10344
  ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
10343
10345
  displayName: string;
10344
- };
10345
- /** The while-it-works whisper for the in-flight turns. */
10346
- declare const AiLoader: {
10347
- ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
10348
- displayName: string;
10349
- };
10350
- /** The whole family under one handle — `Ai.Conversation`,
10351
- * `Ai.Message`, and the rest, exactly as before the split. */
10352
- declare const Ai: {
10353
- ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
10354
- displayName: string;
10355
10346
  } & {
10356
- Conversation: {
10347
+ Root: {
10357
10348
  ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
10358
10349
  displayName: string;
10359
10350
  };
10351
+ };
10352
+ /** The while-it-works whisper for the in-flight turns. */
10353
+ declare function AiLoader({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
10354
+ /** The whole family under one handle — `Ai.Conversation`,
10355
+ * `Ai.Message`, and the rest, exactly as before the split. */
10356
+ declare const Ai: typeof AiConversation & {
10357
+ Root: typeof AiConversation;
10358
+ Conversation: typeof AiConversation;
10360
10359
  MessageContent: {
10361
10360
  ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
10362
10361
  displayName: string;
10362
+ } & {
10363
+ Root: {
10364
+ ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
10365
+ displayName: string;
10366
+ };
10363
10367
  };
10364
10368
  Actions: {
10365
10369
  ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
10366
10370
  displayName: string;
10371
+ } & {
10372
+ Root: {
10373
+ ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
10374
+ displayName: string;
10375
+ };
10367
10376
  };
10368
- Loader: {
10369
- ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
10370
- displayName: string;
10377
+ Loader: typeof AiLoader;
10378
+ Message: (({ role, children, ...rest }: MessageProps) => import("react").JSX.Element) & {
10379
+ Root: ({ role, children, ...rest }: MessageProps) => import("react").JSX.Element;
10380
+ };
10381
+ Response: (({ content, highlighter, copyLabel, copiedLabel, ...rest }: ResponseProps) => import("react").JSX.Element) & {
10382
+ Root: ({ content, highlighter, copyLabel, copiedLabel, ...rest }: ResponseProps) => import("react").JSX.Element;
10383
+ };
10384
+ Reasoning: (({ label, children, ...rest }: ReasoningProps) => import("react").JSX.Element) & {
10385
+ Root: ({ label, children, ...rest }: ReasoningProps) => import("react").JSX.Element;
10371
10386
  };
10372
- Message: typeof Message;
10373
- Response: typeof Response$1;
10374
- Reasoning: typeof Reasoning;
10375
- Tool: typeof Tool$1;
10376
- Sources: typeof Sources;
10377
- Source: typeof Source$1;
10378
- Action: typeof Action;
10379
- Suggestion: typeof Suggestion;
10380
- PromptInput: typeof PromptInput;
10381
- };
10382
- //#endregion
10383
- export { AiLoader as a, ReasoningUIPart as c, StepStartUIPart as d, TextUIPart as f, UIMessagePart as h, AiConversation as i, SourceDocumentUIPart as l, UIMessage as m, AiActions as n, DataUIPart as o, ToolUIPart as p, AiContent as r, FileUIPart as s, Ai as t, SourceUrlUIPart as u };
10387
+ Tool: (({ name, label, status, input, output, ...rest }: ToolProps) => import("react").JSX.Element) & {
10388
+ Root: ({ name, label, status, input, output, ...rest }: ToolProps) => import("react").JSX.Element;
10389
+ };
10390
+ Sources: (({ children, ...rest }: SourcesProps) => import("react").JSX.Element) & {
10391
+ Root: ({ children, ...rest }: SourcesProps) => import("react").JSX.Element;
10392
+ };
10393
+ Source: (({ href, children, ...rest }: SourceProps) => import("react").JSX.Element) & {
10394
+ Root: ({ href, children, ...rest }: SourceProps) => import("react").JSX.Element;
10395
+ };
10396
+ Action: (({ label, children, ...rest }: ActionProps) => import("react").JSX.Element) & {
10397
+ Root: ({ label, children, ...rest }: ActionProps) => import("react").JSX.Element;
10398
+ };
10399
+ Suggestion: (({ prompt, onSelect, ...rest }: SuggestionProps) => import("react").JSX.Element) & {
10400
+ Root: ({ prompt, onSelect, ...rest }: SuggestionProps) => import("react").JSX.Element;
10401
+ };
10402
+ PromptInput: (({ value, onValueChange, onSubmit, onStop, placeholder, "aria-label": ariaLabel, disabled, busy, mentions, header, leading, trailing, footer, footerEnd, ...rest }: PromptInputProps) => import("react").JSX.Element) & {
10403
+ Root: ({ value, onValueChange, onSubmit, onStop, placeholder, "aria-label": ariaLabel, disabled, busy, mentions, header, leading, trailing, footer, footerEnd, ...rest }: PromptInputProps) => import("react").JSX.Element;
10404
+ };
10405
+ };
10406
+ //#endregion
10407
+ export { FileUIPart as a, SourceUrlUIPart as c, ToolUIPart as d, UIMessage as f, DataUIPart as i, StepStartUIPart as l, AiActions as n, ReasoningUIPart as o, UIMessagePart as p, AiContent as r, SourceDocumentUIPart as s, Ai as t, TextUIPart as u };