@bysages/solid 0.3.1 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/dist/{ai-response-slzE03wh.mjs → ai-response-CJ-uEAgj.mjs} +14 -6
  2. package/dist/chevron-BHQrYKPM.mjs +8 -0
  3. package/dist/components/accordion/index.d.mts +22 -2
  4. package/dist/components/accordion/index.mjs +69 -3
  5. package/dist/components/affix/index.d.mts +3 -1
  6. package/dist/components/affix/index.mjs +6 -5
  7. package/dist/components/ai/index.d.mts +1 -1
  8. package/dist/components/ai/index.mjs +7 -6
  9. package/dist/components/ai-action/index.d.mts +3 -1
  10. package/dist/components/ai-action/index.mjs +4 -3
  11. package/dist/components/ai-attachments/index.d.mts +8 -4
  12. package/dist/components/ai-attachments/index.mjs +39 -37
  13. package/dist/components/ai-message/index.d.mts +3 -1
  14. package/dist/components/ai-message/index.mjs +4 -3
  15. package/dist/components/ai-prompt-input/index.d.mts +3 -1
  16. package/dist/components/ai-prompt-input/index.mjs +48 -44
  17. package/dist/components/ai-reasoning/index.d.mts +3 -1
  18. package/dist/components/ai-reasoning/index.mjs +5 -4
  19. package/dist/components/ai-response/index.d.mts +3 -1
  20. package/dist/components/ai-response/index.mjs +1 -1
  21. package/dist/components/ai-source/index.d.mts +6 -2
  22. package/dist/components/ai-source/index.mjs +6 -5
  23. package/dist/components/ai-suggestion/index.d.mts +3 -1
  24. package/dist/components/ai-suggestion/index.mjs +4 -3
  25. package/dist/components/ai-tool/index.d.mts +3 -1
  26. package/dist/components/ai-tool/index.mjs +5 -4
  27. package/dist/components/alert/index.mjs +32 -35
  28. package/dist/components/angle-slider/index.d.mts +1 -1
  29. package/dist/components/angle-slider/index.mjs +14 -6
  30. package/dist/components/aspect-ratio/index.d.mts +3 -1
  31. package/dist/components/aspect-ratio/index.mjs +4 -3
  32. package/dist/components/autocomplete/index.d.mts +4 -1
  33. package/dist/components/autocomplete/index.mjs +19 -4
  34. package/dist/components/avatar/index.d.mts +1 -1
  35. package/dist/components/avatar/index.mjs +11 -2
  36. package/dist/components/avatar-group/index.d.mts +3 -1
  37. package/dist/components/avatar-group/index.mjs +4 -3
  38. package/dist/components/back-top/index.d.mts +3 -1
  39. package/dist/components/back-top/index.mjs +10 -6
  40. package/dist/components/badge/index.d.mts +3 -1
  41. package/dist/components/badge/index.mjs +4 -3
  42. package/dist/components/banner/index.mjs +7 -3
  43. package/dist/components/bento/index.mjs +1 -1
  44. package/dist/components/block-ui/index.d.mts +3 -1
  45. package/dist/components/block-ui/index.mjs +4 -3
  46. package/dist/components/breadcrumb/index.mjs +1 -1
  47. package/dist/components/browser/index.mjs +1 -1
  48. package/dist/components/button/index.d.mts +3 -1
  49. package/dist/components/button/index.mjs +4 -3
  50. package/dist/components/button-group/index.mjs +1 -1
  51. package/dist/components/calendar/index.d.mts +3 -1
  52. package/dist/components/calendar/index.mjs +30 -22
  53. package/dist/components/card/index.mjs +1 -1
  54. package/dist/components/carousel/index.d.mts +5 -1
  55. package/dist/components/carousel/index.mjs +14 -2
  56. package/dist/components/cascade-select/index.d.mts +3 -1
  57. package/dist/components/cascade-select/index.mjs +74 -73
  58. package/dist/components/checkbox/index.d.mts +1 -1
  59. package/dist/components/checkbox/index.mjs +14 -6
  60. package/dist/components/checkbox-group/index.d.mts +4 -9
  61. package/dist/components/checkbox-group/index.mjs +66 -69
  62. package/dist/components/chip/index.d.mts +3 -1
  63. package/dist/components/chip/index.mjs +4 -3
  64. package/dist/components/client-only/index.d.mts +7 -2
  65. package/dist/components/client-only/index.mjs +8 -1
  66. package/dist/components/clipboard/index.d.mts +1 -1
  67. package/dist/components/clipboard/index.mjs +14 -6
  68. package/dist/components/collapsible/index.d.mts +15 -1
  69. package/dist/components/collapsible/index.mjs +40 -3
  70. package/dist/components/color-picker/index.d.mts +13 -2
  71. package/dist/components/color-picker/index.mjs +96 -9
  72. package/dist/components/combobox/index.d.mts +24 -1
  73. package/dist/components/combobox/index.mjs +130 -9
  74. package/dist/components/command/index.d.mts +4 -1
  75. package/dist/components/command/index.mjs +14 -2
  76. package/dist/components/comment/index.d.mts +3 -1
  77. package/dist/components/comment/index.mjs +4 -3
  78. package/dist/components/config-provider/index.d.mts +3 -1
  79. package/dist/components/config-provider/index.mjs +3 -2
  80. package/dist/components/container/index.d.mts +3 -1
  81. package/dist/components/container/index.mjs +4 -3
  82. package/dist/components/data-view/index.d.mts +3 -1
  83. package/dist/components/data-view/index.mjs +6 -7
  84. package/dist/components/date-input/index.d.mts +1 -1
  85. package/dist/components/date-input/index.mjs +14 -6
  86. package/dist/components/date-picker/index.d.mts +1 -1
  87. package/dist/components/date-picker/index.mjs +14 -6
  88. package/dist/components/deferred-content/index.d.mts +3 -1
  89. package/dist/components/deferred-content/index.mjs +4 -3
  90. package/dist/components/descriptions/index.d.mts +7 -0
  91. package/dist/components/descriptions/index.mjs +22 -3
  92. package/dist/components/dialog/index.d.mts +17 -1
  93. package/dist/components/dialog/index.mjs +85 -3
  94. package/dist/components/dock/index.mjs +1 -1
  95. package/dist/components/download-trigger/index.d.mts +7 -2
  96. package/dist/components/download-trigger/index.mjs +8 -1
  97. package/dist/components/drawer/index.d.mts +17 -1
  98. package/dist/components/drawer/index.mjs +84 -3
  99. package/dist/components/dynamic-input/index.d.mts +3 -1
  100. package/dist/components/dynamic-input/index.mjs +11 -7
  101. package/dist/components/editable/index.d.mts +1 -1
  102. package/dist/components/editable/index.mjs +14 -6
  103. package/dist/components/ellipsis/index.d.mts +3 -1
  104. package/dist/components/ellipsis/index.mjs +4 -3
  105. package/dist/components/empty/index.mjs +1 -1
  106. package/dist/components/field/index.d.mts +5 -1
  107. package/dist/components/field/index.mjs +14 -2
  108. package/dist/components/fieldset/index.d.mts +5 -1
  109. package/dist/components/fieldset/index.mjs +14 -2
  110. package/dist/components/file-upload/index.d.mts +1 -7
  111. package/dist/components/file-upload/index.mjs +14 -6
  112. package/dist/components/float-button/index.mjs +1 -1
  113. package/dist/components/floating-panel/index.d.mts +5 -1
  114. package/dist/components/floating-panel/index.mjs +14 -2
  115. package/dist/components/focus-trap/index.d.mts +7 -2
  116. package/dist/components/focus-trap/index.mjs +8 -1
  117. package/dist/components/form/index.d.mts +1 -1
  118. package/dist/components/form/index.mjs +11 -5
  119. package/dist/components/frame/index.d.mts +6 -1
  120. package/dist/components/frame/index.mjs +10 -1
  121. package/dist/components/grid/index.d.mts +3 -1
  122. package/dist/components/grid/index.mjs +4 -3
  123. package/dist/components/highlight/index.d.mts +3 -1
  124. package/dist/components/highlight/index.mjs +3 -2
  125. package/dist/components/hover-card/index.d.mts +19 -1
  126. package/dist/components/hover-card/index.mjs +92 -3
  127. package/dist/components/icon/index.d.mts +8 -7
  128. package/dist/components/icon/index.mjs +5 -4
  129. package/dist/components/image/index.d.mts +4 -2
  130. package/dist/components/image/index.mjs +35 -34
  131. package/dist/components/image-cropper/index.d.mts +5 -1
  132. package/dist/components/image-cropper/index.mjs +14 -2
  133. package/dist/components/image-viewer/index.d.mts +2 -23
  134. package/dist/components/image-viewer/index.mjs +3 -159
  135. package/dist/components/input/index.d.mts +3 -1
  136. package/dist/components/input/index.mjs +1 -1
  137. package/dist/components/input-group/index.mjs +1 -1
  138. package/dist/components/json-tree-view/index.d.mts +5 -4
  139. package/dist/components/json-tree-view/index.mjs +16 -19
  140. package/dist/components/kbd/index.d.mts +3 -1
  141. package/dist/components/kbd/index.mjs +4 -3
  142. package/dist/components/layout/index.mjs +1 -1
  143. package/dist/components/link/index.d.mts +3 -1
  144. package/dist/components/link/index.mjs +4 -3
  145. package/dist/components/list/index.mjs +1 -1
  146. package/dist/components/listbox/index.d.mts +1 -1
  147. package/dist/components/listbox/index.mjs +14 -6
  148. package/dist/components/marquee/index.d.mts +5 -1
  149. package/dist/components/marquee/index.mjs +14 -2
  150. package/dist/components/masonry/index.d.mts +3 -1
  151. package/dist/components/masonry/index.mjs +4 -3
  152. package/dist/components/media-player/index.d.mts +2 -0
  153. package/dist/components/media-player/index.mjs +2 -0
  154. package/dist/components/mentions/index.d.mts +1 -1
  155. package/dist/components/mentions/index.mjs +2 -2
  156. package/dist/components/menu/index.d.mts +21 -1
  157. package/dist/components/menu/index.mjs +63 -6
  158. package/dist/components/menubar/index.d.mts +3 -1
  159. package/dist/components/menubar/index.mjs +31 -10
  160. package/dist/components/meter/index.mjs +1 -1
  161. package/dist/components/navigation-menu/index.d.mts +5 -1
  162. package/dist/components/navigation-menu/index.mjs +14 -2
  163. package/dist/components/number-input/index.d.mts +1 -1
  164. package/dist/components/number-input/index.mjs +14 -6
  165. package/dist/components/order-list/index.d.mts +3 -1
  166. package/dist/components/order-list/index.mjs +68 -64
  167. package/dist/components/page-header/index.mjs +1 -1
  168. package/dist/components/pagination/index.d.mts +1 -1
  169. package/dist/components/pagination/index.mjs +14 -6
  170. package/dist/components/password-input/index.d.mts +1 -1
  171. package/dist/components/password-input/index.mjs +14 -6
  172. package/dist/components/pin-input/index.d.mts +1 -1
  173. package/dist/components/pin-input/index.mjs +14 -6
  174. package/dist/components/popconfirm/index.d.mts +3 -1
  175. package/dist/components/popconfirm/index.mjs +17 -9
  176. package/dist/components/popover/index.d.mts +19 -1
  177. package/dist/components/popover/index.mjs +92 -3
  178. package/dist/components/presence/index.d.mts +10 -2
  179. package/dist/components/presence/index.mjs +9 -1
  180. package/dist/components/progress/index.d.mts +1 -1
  181. package/dist/components/progress/index.mjs +14 -6
  182. package/dist/components/progress-group/index.d.mts +3 -1
  183. package/dist/components/progress-group/index.mjs +5 -4
  184. package/dist/components/qr-code/index.d.mts +5 -1
  185. package/dist/components/qr-code/index.mjs +14 -2
  186. package/dist/components/radio-group/index.d.mts +1 -1
  187. package/dist/components/radio-group/index.mjs +14 -6
  188. package/dist/components/rating-group/index.d.mts +2 -2
  189. package/dist/components/rating-group/index.mjs +14 -6
  190. package/dist/components/result/index.d.mts +1 -1
  191. package/dist/components/result/index.mjs +6 -4
  192. package/dist/components/scroll-area/index.d.mts +5 -1
  193. package/dist/components/scroll-area/index.mjs +14 -2
  194. package/dist/components/segment-group/index.d.mts +1 -1
  195. package/dist/components/segment-group/index.mjs +12 -7
  196. package/dist/components/select/index.d.mts +2 -2
  197. package/dist/components/select/index.mjs +1 -1
  198. package/dist/components/separator/index.d.mts +3 -1
  199. package/dist/components/separator/index.mjs +4 -3
  200. package/dist/components/signature-pad/index.d.mts +5 -1
  201. package/dist/components/signature-pad/index.mjs +14 -2
  202. package/dist/components/skeleton/index.d.mts +3 -1
  203. package/dist/components/skeleton/index.mjs +4 -3
  204. package/dist/components/slider/index.d.mts +1 -1
  205. package/dist/components/slider/index.mjs +14 -6
  206. package/dist/components/spinner/index.d.mts +3 -1
  207. package/dist/components/spinner/index.mjs +4 -3
  208. package/dist/components/split-button/index.d.mts +3 -1
  209. package/dist/components/split-button/index.mjs +15 -4
  210. package/dist/components/splitter/index.d.mts +5 -1
  211. package/dist/components/splitter/index.mjs +14 -2
  212. package/dist/components/spotlight/index.d.mts +3 -1
  213. package/dist/components/spotlight/index.mjs +4 -3
  214. package/dist/components/stack/index.d.mts +3 -1
  215. package/dist/components/stack/index.mjs +7 -6
  216. package/dist/components/stat/index.mjs +1 -1
  217. package/dist/components/steps/index.d.mts +20 -3
  218. package/dist/components/steps/index.mjs +67 -8
  219. package/dist/components/swap/index.d.mts +5 -1
  220. package/dist/components/swap/index.mjs +14 -2
  221. package/dist/components/switch/index.d.mts +1 -1
  222. package/dist/components/switch/index.mjs +14 -6
  223. package/dist/components/table/index.d.mts +3 -1
  224. package/dist/components/table/index.mjs +191 -153
  225. package/dist/components/tabs/index.d.mts +20 -2
  226. package/dist/components/tabs/index.mjs +60 -4
  227. package/dist/components/tags-input/index.d.mts +1 -1
  228. package/dist/components/tags-input/index.mjs +14 -6
  229. package/dist/components/terminal/index.d.mts +3 -1
  230. package/dist/components/terminal/index.mjs +4 -3
  231. package/dist/components/textarea/index.d.mts +3 -1
  232. package/dist/components/textarea/index.mjs +4 -3
  233. package/dist/components/timeline/index.mjs +1 -1
  234. package/dist/components/timer/index.d.mts +5 -1
  235. package/dist/components/timer/index.mjs +14 -2
  236. package/dist/components/toast/index.d.mts +8 -2
  237. package/dist/components/toast/index.mjs +15 -3
  238. package/dist/components/toc/index.d.mts +11 -2
  239. package/dist/components/toc/index.mjs +1 -1
  240. package/dist/components/toggle/index.d.mts +5 -1
  241. package/dist/components/toggle/index.mjs +14 -2
  242. package/dist/components/toggle-group/index.d.mts +1 -1
  243. package/dist/components/toggle-group/index.mjs +14 -6
  244. package/dist/components/toolbar/index.d.mts +3 -1
  245. package/dist/components/toolbar/index.mjs +4 -3
  246. package/dist/components/tooltip/index.d.mts +16 -1
  247. package/dist/components/tooltip/index.mjs +56 -3
  248. package/dist/components/tour/index.d.mts +16 -3
  249. package/dist/components/tour/index.mjs +75 -10
  250. package/dist/components/transfer/index.d.mts +3 -1
  251. package/dist/components/transfer/index.mjs +55 -51
  252. package/dist/components/tree-select/index.d.mts +3 -1
  253. package/dist/components/tree-select/index.mjs +38 -31
  254. package/dist/components/tree-view/index.d.mts +1 -8
  255. package/dist/components/tree-view/index.mjs +17 -22
  256. package/dist/components/typography/index.mjs +1 -1
  257. package/dist/components/user/index.d.mts +3 -1
  258. package/dist/components/user/index.mjs +9 -3
  259. package/dist/components/virtual-list/index.d.mts +3 -1
  260. package/dist/components/virtual-list/index.mjs +14 -10
  261. package/dist/components/watermark/index.d.mts +3 -1
  262. package/dist/components/watermark/index.mjs +5 -4
  263. package/dist/element-dGIhOTJ6.mjs +16 -0
  264. package/dist/family-Cmd8HEyK.mjs +11 -0
  265. package/dist/icon-DTqmJCd5.mjs +48 -0
  266. package/dist/id-2ygNzPHF.mjs +12 -0
  267. package/dist/image-viewer-19s75Hz_.mjs +228 -0
  268. package/dist/{index-B1xiJ5ki.d.mts → index-B1-quIrl.d.mts} +6 -2
  269. package/dist/{index-DDX7x8aT.d.mts → index-DEArHiFI.d.mts} +16 -7
  270. package/dist/{index-IfofF-SW.d.mts → index-DVc1L_zt.d.mts} +191 -112
  271. package/dist/index-DhripUtf.d.mts +39 -0
  272. package/dist/{index-YPUiqD3n.d.mts → index-ID48LCMU.d.mts} +28 -2
  273. package/dist/index-wW28BYf1.d.mts +124 -0
  274. package/dist/index.d.mts +23 -22
  275. package/dist/index.mjs +13 -12
  276. package/dist/{input-DoFQ7RXh.mjs → input-BL3N3L8g.mjs} +4 -3
  277. package/dist/media-player-yF7KVUxM.mjs +796 -0
  278. package/dist/{mentions-f5Js_2W7.mjs → mentions-DKUG7eHt.mjs} +68 -52
  279. package/dist/select-DI7pFspF.mjs +292 -0
  280. package/dist/{toc-CZmYEaQR.mjs → toc-CqvGOp34.mjs} +13 -3
  281. package/package.json +10 -82
  282. package/dist/chevron-D5RzcayK.mjs +0 -9
  283. package/dist/index-DdsnfV4f.d.mts +0 -16
  284. package/dist/select-CX6OuQlU.mjs +0 -123
@@ -0,0 +1,48 @@
1
+ import { spread, template } from "@solidjs/web";
2
+ import { getIcon } from "@bysages/core/icons";
3
+ //#region src/internal/icon.tsx
4
+ var _tmpl$ = /* @__PURE__ */ template(`<svg>`);
5
+ function resolve(name) {
6
+ const icon = getIcon(name);
7
+ if (!icon) throw new Error(`Unknown icon "${name}" in the curated core registry`);
8
+ return icon;
9
+ }
10
+ /** Render a curated core icon as a bare svg node — the components' own
11
+ * default icons. No span shell: the part rules size the svg directly.
12
+ * Extra body appends after the icon's own body, for composed marks. */
13
+ function iconNode(name, attrs = {}, extraBody = "") {
14
+ const icon = resolve(name);
15
+ var _el$ = _tmpl$();
16
+ spread(_el$, [
17
+ {
18
+ get viewBox() {
19
+ return `0 0 ${icon.width} ${icon.height}`;
20
+ },
21
+ "aria-hidden": "true"
22
+ },
23
+ attrs,
24
+ { get innerHTML() {
25
+ return icon.body + extraBody;
26
+ } }
27
+ ], false);
28
+ return _el$;
29
+ }
30
+ /** The same curated icon as an HTML string, for enhancements that write
31
+ * innerHTML rather than mount elements. */
32
+ function iconHtml(name, attrs = {}) {
33
+ const icon = resolve(name);
34
+ const attributes = {
35
+ width: String(icon.width),
36
+ height: String(icon.height),
37
+ viewBox: `0 0 ${icon.width} ${icon.height}`,
38
+ "aria-hidden": "true",
39
+ ...attrs
40
+ };
41
+ return `<svg${Object.entries(attributes).map(([key, value]) => ` ${key}="${value}"`).join("")}>${icon.body}</svg>`;
42
+ }
43
+ /** The curated icon's drawing body, for composed marks that share one svg. */
44
+ function iconBody(name) {
45
+ return resolve(name).body;
46
+ }
47
+ //#endregion
48
+ export { iconHtml as n, iconNode as r, iconBody as t };
@@ -0,0 +1,12 @@
1
+ import { createUniqueId } from "solid-js";
2
+ //#region src/internal/id.ts
3
+ /** Generates an SSR-stable machine base id while honoring an explicit id. */
4
+ function useElementId(scope, explicit) {
5
+ const generated = createUniqueId();
6
+ return () => {
7
+ const id = explicit?.();
8
+ return typeof id === "string" && id ? id : `bs-${scope}-${generated}`;
9
+ };
10
+ }
11
+ //#endregion
12
+ export { useElementId as t };
@@ -0,0 +1,228 @@
1
+ import { t as defineFamily } from "./family-Cmd8HEyK.mjs";
2
+ import { r as iconNode } from "./icon-DTqmJCd5.mjs";
3
+ import { t as useElementId } from "./id-2ygNzPHF.mjs";
4
+ import { Button } from "./components/button/index.mjs";
5
+ import { n as useComponentMessages } from "./use-component-messages-C4SCVYjD.mjs";
6
+ import { ButtonGroup } from "./components/button-group/index.mjs";
7
+ import { Dialog as Dialog$1 } from "./components/dialog/index.mjs";
8
+ import { createComponent, effect, insert, memo, mergeProps, setAttribute, setStyleProperty, spread, template } from "@solidjs/web";
9
+ import { injectComponentStyle } from "@bysages/core/styling";
10
+ import { Show, createEffect, createSignal, splitProps } from "solid-js";
11
+ import { Portal } from "solid-js/web";
12
+ import { Dialog } from "@ark-ui/solid/dialog";
13
+ //#region src/components/image-viewer/preview.tsx
14
+ var _tmpl$$1 = /* @__PURE__ */ template(`<span data-part=preview-label>`);
15
+ var _tmpl$2$1 = /* @__PURE__ */ template(`<span data-scope=image-viewer data-part=preview-overlay aria-hidden=true><!><!>`);
16
+ var _tmpl$3 = /* @__PURE__ */ template(`<span>`);
17
+ /** The default doorway is the curated preview icon; custom content keeps
18
+ * that icon as its hover and focus affordance. */
19
+ function ImageViewerPreview(props) {
20
+ injectComponentStyle("image-viewer");
21
+ const messages = useComponentMessages();
22
+ const [own, triggerProps, rest] = splitProps(props, ["label", "children"], ["data-part"]);
23
+ const parts = [triggerProps["data-part"], "preview"].filter(Boolean).join(" ");
24
+ const isIcon = () => own.children == null;
25
+ var _el$ = _tmpl$3();
26
+ spread(_el$, [
27
+ rest,
28
+ {
29
+ "data-scope": "image-viewer",
30
+ "data-part": parts
31
+ },
32
+ () => {
33
+ return isIcon() ? {
34
+ "data-empty": "true",
35
+ "aria-label": messages().imageViewer.preview
36
+ } : {};
37
+ }
38
+ ], true);
39
+ insert(_el$, createComponent(Show, {
40
+ get when() {
41
+ return own.children;
42
+ },
43
+ get fallback() {
44
+ return iconNode("eye");
45
+ },
46
+ get children() {
47
+ return [memo(() => {
48
+ return own.children;
49
+ }), (() => {
50
+ var _el$2 = _tmpl$2$1();
51
+ var _el$3 = _el$2.firstChild;
52
+ var _el$5 = _el$3.nextSibling;
53
+ insert(_el$2, () => {
54
+ return iconNode("eye");
55
+ }, _el$3);
56
+ insert(_el$2, createComponent(Show, {
57
+ get when() {
58
+ return own.label;
59
+ },
60
+ get children() {
61
+ var _el$4 = _tmpl$$1();
62
+ insert(_el$4, () => {
63
+ return own.label;
64
+ });
65
+ return _el$4;
66
+ }
67
+ }), _el$5);
68
+ return _el$2;
69
+ })()];
70
+ }
71
+ }));
72
+ return _el$;
73
+ }
74
+ //#endregion
75
+ //#region src/components/image-viewer/index.tsx
76
+ var _tmpl$ = /* @__PURE__ */ template(`<img data-scope=image-viewer data-part=viewport>`);
77
+ var _tmpl$2 = /* @__PURE__ */ template(`<div data-scope=image-viewer data-part=toolbar>`);
78
+ const MIN_SCALE = .5;
79
+ const MAX_SCALE = 3;
80
+ const SCALE_STEP = .25;
81
+ /** The toolbar's icons, drawn from the house icon set. */
82
+ const TOOL_ICONS = {
83
+ zoomIn: () => iconNode("zoom-in"),
84
+ zoomOut: () => iconNode("zoom-out"),
85
+ rotate: () => iconNode("rotate-cw"),
86
+ close: () => iconNode("x")
87
+ };
88
+ function ImageViewerImpl(props) {
89
+ injectComponentStyle("image-viewer");
90
+ const [own] = splitProps(props, [
91
+ "src",
92
+ "alt",
93
+ "width",
94
+ "height",
95
+ "open",
96
+ "zoomable",
97
+ "onOpenChange",
98
+ "children"
99
+ ]);
100
+ const id = useElementId("image-viewer");
101
+ const messages = useComponentMessages();
102
+ const [localOpen, setLocalOpen] = createSignal(false);
103
+ const [scale, setScale] = createSignal(1);
104
+ const [rotation, setRotation] = createSignal(0);
105
+ const isOpen = () => own.open ?? localOpen();
106
+ const setOpen = (value) => {
107
+ if (own.open === void 0) setLocalOpen(value);
108
+ own.onOpenChange?.(value);
109
+ };
110
+ createEffect(() => {
111
+ if (isOpen()) {
112
+ setScale(1);
113
+ setRotation(0);
114
+ }
115
+ });
116
+ function zoom(step) {
117
+ setScale(Math.min(MAX_SCALE, Math.max(MIN_SCALE, scale() + step)));
118
+ }
119
+ function rotate() {
120
+ setRotation((rotation() + 90) % 360);
121
+ }
122
+ function toolButton(label, icon, onClick) {
123
+ return createComponent(Button, {
124
+ variant: "ghost",
125
+ square: true,
126
+ size: "lg",
127
+ "aria-label": label,
128
+ onClick,
129
+ get children() {
130
+ return icon();
131
+ }
132
+ });
133
+ }
134
+ return createComponent(Dialog.Root, {
135
+ get id() {
136
+ return id();
137
+ },
138
+ get open() {
139
+ return isOpen();
140
+ },
141
+ onOpenChange: (details) => setOpen(details.open),
142
+ lazyMount: true,
143
+ unmountOnExit: true,
144
+ get children() {
145
+ return [createComponent(Dialog.Trigger, {
146
+ asChild: () => own.children ?? createComponent(ImageViewerPreview, {}),
147
+ "data-scope": "image-viewer",
148
+ "data-part": "trigger"
149
+ }), createComponent(Portal, { get children() {
150
+ return [createComponent(Dialog.Backdrop, { class: "bs-image-viewer-backdrop" }), createComponent(Dialog.Positioner, {
151
+ class: "bs-image-viewer-positioner",
152
+ get children() {
153
+ return createComponent(Dialog.Content, {
154
+ class: "bs-image-viewer-content",
155
+ get "aria-label"() {
156
+ return own.alt || "Image preview";
157
+ },
158
+ onClick: (event) => {
159
+ if (event.target === event.currentTarget) setOpen(false);
160
+ },
161
+ get children() {
162
+ return [(() => {
163
+ var _el$ = _tmpl$();
164
+ effect(() => {
165
+ return {
166
+ e: own.src,
167
+ t: own.alt ?? "",
168
+ a: own.width,
169
+ o: own.height,
170
+ i: `scale(${scale()}) rotate(${rotation()}deg)`
171
+ };
172
+ }, ({ e, t, a, o, i }, _p$) => {
173
+ e !== _p$?.e && setAttribute(_el$, "src", e);
174
+ t !== _p$?.t && setAttribute(_el$, "alt", t);
175
+ a !== _p$?.a && setAttribute(_el$, "width", a);
176
+ o !== _p$?.o && setAttribute(_el$, "height", o);
177
+ i !== _p$?.i && setStyleProperty(_el$, "--bs-image-viewer-transform", i);
178
+ });
179
+ return _el$;
180
+ })(), (() => {
181
+ var _el$2 = _tmpl$2();
182
+ insert(_el$2, createComponent(ButtonGroup, { get children() {
183
+ return [
184
+ createComponent(Show, {
185
+ get when() {
186
+ return own.zoomable ?? true;
187
+ },
188
+ get children() {
189
+ return [memo(() => {
190
+ return toolButton(messages().imageViewer.zoomIn, TOOL_ICONS.zoomIn, () => zoom(SCALE_STEP));
191
+ }), memo(() => {
192
+ return toolButton(messages().imageViewer.zoomOut, TOOL_ICONS.zoomOut, () => zoom(-.25));
193
+ })];
194
+ }
195
+ }),
196
+ memo(() => {
197
+ return toolButton(messages().imageViewer.rotate, TOOL_ICONS.rotate, rotate);
198
+ }),
199
+ createComponent(Dialog.CloseTrigger, { asChild: (closeProps) => createComponent(Button, mergeProps(closeProps, {
200
+ variant: "ghost",
201
+ square: true,
202
+ size: "lg",
203
+ get "aria-label"() {
204
+ return messages().imageViewer.close;
205
+ },
206
+ get children() {
207
+ return TOOL_ICONS.close();
208
+ }
209
+ })) })
210
+ ];
211
+ } }));
212
+ return _el$2;
213
+ })()];
214
+ }
215
+ });
216
+ }
217
+ })];
218
+ } })];
219
+ }
220
+ });
221
+ }
222
+ const viewerParts = {
223
+ ...Dialog$1,
224
+ Preview: ImageViewerPreview
225
+ };
226
+ const ImageViewer = defineFamily(ImageViewerImpl, viewerParts);
227
+ //#endregion
228
+ export { ImageViewer as t };
@@ -1787,7 +1787,9 @@ interface AnyFormApi {
1787
1787
  interface FormProps extends JSX.FormHTMLAttributes<HTMLFormElement> {
1788
1788
  form: AnyFormApi;
1789
1789
  }
1790
- declare function Form(props: FormProps): JSX.Element;
1790
+ declare const Form: ((props: FormProps) => JSX.Element) & {
1791
+ Root: (props: FormProps) => JSX.Element;
1792
+ };
1791
1793
  /**
1792
1794
  * The named slot in the grid: label, control, hint — and the engine's
1793
1795
  * errors for this name, shown through the same parts the standalone
@@ -1806,6 +1808,8 @@ interface FormFieldProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "child
1806
1808
  disabled?: boolean;
1807
1809
  children?: JSX.Element | ((field: any) => JSX.Element);
1808
1810
  }
1809
- declare function FormField(props: FormFieldProps): JSX.Element;
1811
+ declare const FormField: ((props: FormFieldProps) => JSX.Element) & {
1812
+ Root: (props: FormFieldProps) => JSX.Element;
1813
+ };
1810
1814
  //#endregion
1811
1815
  export { SolidFormApi as a, FormApi as c, FormProps as i, FieldApi as l, FormField as n, createField as o, FormFieldProps as r, createForm as s, Form as t };
@@ -1,3 +1,4 @@
1
+ import { Popover } from "./components/popover/index.mjs";
1
2
  import { Accessor, JSX } from "solid-js";
2
3
  //#region src/components/mentions/use-mentions.d.ts
3
4
  interface UseMentionsOptions {
@@ -33,6 +34,9 @@ declare function useMentions(options: Accessor<UseMentionsOptions>, textarea: Ac
33
34
  };
34
35
  //#endregion
35
36
  //#region src/components/mentions/index.d.ts
37
+ /** The Anchor's polymorphic wiring is div-typed at the API boundary; the
38
+ * textarea host supplies the concrete element type. */
39
+ type MentionsAnchorProps = JSX.HTMLAttributes<HTMLTextAreaElement>;
36
40
  interface MentionEntry {
37
41
  label: string;
38
42
  value: string;
@@ -49,13 +53,17 @@ interface MentionsVesselProps {
49
53
  onInsert?: (entry: MentionEntry) => void;
50
54
  onActiveChange?: (index: number) => void;
51
55
  onOpenChange?: (open: boolean) => void;
56
+ /** The host's field, rendered with the popover Anchor's wiring. When
57
+ * absent, the vessel falls back to the `anchor` rectangle. */
58
+ children?: JSX.Element | ((anchorProps: MentionsAnchorProps) => JSX.Element);
52
59
  }
53
- /** The vessel: the candidates themselves as a floating card. The anchor
54
- * is virtual — a live rectangle off the host's field — so a host keeps
55
- * its own anatomy (the textarea rides where the host puts it) and the
56
- * vessel still points at the right place. Shares the detection state
57
- * with the host through `useMentions`. */
58
- declare function MentionsVessel(props: MentionsVesselProps): JSX.Element;
60
+ /** The vessel: the candidates themselves as a floating card. A host can
61
+ * render its field through the Anchor; the rectangle fallback keeps the
62
+ * textarea in the host's own anatomy. Shares the detection state with
63
+ * the host through `useMentions`. */
64
+ declare const MentionsVessel: ((props: MentionsVesselProps) => JSX.Element) & {
65
+ Root: (props: MentionsVesselProps) => JSX.Element;
66
+ };
59
67
  interface MentionsProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "onInput"> {
60
68
  /** The candidates offered once the trigger character is typed. */
61
69
  items?: MentionEntry[];
@@ -90,6 +98,7 @@ interface MentionsProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "onInpu
90
98
  * own field anatomy (the AI prompt input) skip this shell and wire
91
99
  * `useMentions` plus `MentionsVessel` themselves.
92
100
  */
93
- declare function Mentions(props: MentionsProps): JSX.Element;
101
+ declare function MentionsImpl(props: MentionsProps): JSX.Element;
102
+ declare const Mentions: typeof MentionsImpl & typeof Popover;
94
103
  //#endregion
95
104
  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 };