@bysages/solid 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 (273) hide show
  1. package/dist/{ai-response-ClGGptX3.mjs → ai-response-D2uINBIi.mjs} +17 -7
  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 +68 -2
  5. package/dist/components/affix/index.d.mts +3 -1
  6. package/dist/components/affix/index.mjs +5 -4
  7. package/dist/components/ai/index.d.mts +1 -1
  8. package/dist/components/ai/index.mjs +14 -16
  9. package/dist/components/ai-action/index.d.mts +3 -1
  10. package/dist/components/ai-action/index.mjs +3 -2
  11. package/dist/components/ai-attachments/index.d.mts +8 -4
  12. package/dist/components/ai-attachments/index.mjs +41 -37
  13. package/dist/components/ai-message/index.d.mts +3 -1
  14. package/dist/components/ai-message/index.mjs +3 -2
  15. package/dist/components/ai-prompt-input/index.d.mts +3 -1
  16. package/dist/components/ai-prompt-input/index.mjs +59 -46
  17. package/dist/components/ai-reasoning/index.d.mts +3 -1
  18. package/dist/components/ai-reasoning/index.mjs +4 -3
  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 +5 -4
  23. package/dist/components/ai-suggestion/index.d.mts +3 -1
  24. package/dist/components/ai-suggestion/index.mjs +3 -2
  25. package/dist/components/ai-tool/index.d.mts +3 -1
  26. package/dist/components/ai-tool/index.mjs +4 -3
  27. package/dist/components/alert/index.mjs +31 -34
  28. package/dist/components/angle-slider/index.d.mts +1 -1
  29. package/dist/components/angle-slider/index.mjs +13 -5
  30. package/dist/components/aspect-ratio/index.d.mts +3 -1
  31. package/dist/components/aspect-ratio/index.mjs +3 -2
  32. package/dist/components/autocomplete/index.d.mts +4 -1
  33. package/dist/components/autocomplete/index.mjs +15 -2
  34. package/dist/components/avatar/index.d.mts +1 -1
  35. package/dist/components/avatar/index.mjs +10 -1
  36. package/dist/components/avatar-group/index.d.mts +3 -1
  37. package/dist/components/avatar-group/index.mjs +3 -2
  38. package/dist/components/back-top/index.d.mts +3 -1
  39. package/dist/components/back-top/index.mjs +9 -5
  40. package/dist/components/badge/index.d.mts +3 -1
  41. package/dist/components/badge/index.mjs +3 -2
  42. package/dist/components/banner/index.mjs +9 -3
  43. package/dist/components/block-ui/index.d.mts +3 -1
  44. package/dist/components/block-ui/index.mjs +3 -2
  45. package/dist/components/breadcrumb/index.mjs +5 -5
  46. package/dist/components/button/index.d.mts +3 -1
  47. package/dist/components/button/index.mjs +3 -2
  48. package/dist/components/calendar/index.d.mts +3 -1
  49. package/dist/components/calendar/index.mjs +29 -21
  50. package/dist/components/carousel/index.d.mts +5 -1
  51. package/dist/components/carousel/index.mjs +13 -1
  52. package/dist/components/cascade-select/index.d.mts +3 -1
  53. package/dist/components/cascade-select/index.mjs +82 -74
  54. package/dist/components/checkbox/index.d.mts +1 -1
  55. package/dist/components/checkbox/index.mjs +13 -5
  56. package/dist/components/checkbox-group/index.d.mts +4 -9
  57. package/dist/components/checkbox-group/index.mjs +65 -68
  58. package/dist/components/chip/index.d.mts +3 -1
  59. package/dist/components/chip/index.mjs +3 -2
  60. package/dist/components/client-only/index.d.mts +7 -2
  61. package/dist/components/client-only/index.mjs +8 -1
  62. package/dist/components/clipboard/index.d.mts +1 -1
  63. package/dist/components/clipboard/index.mjs +13 -5
  64. package/dist/components/collapsible/index.d.mts +15 -1
  65. package/dist/components/collapsible/index.mjs +39 -2
  66. package/dist/components/color-picker/index.d.mts +13 -2
  67. package/dist/components/color-picker/index.mjs +95 -8
  68. package/dist/components/combobox/index.d.mts +24 -1
  69. package/dist/components/combobox/index.mjs +129 -8
  70. package/dist/components/command/index.d.mts +4 -1
  71. package/dist/components/command/index.mjs +24 -4
  72. package/dist/components/comment/index.d.mts +3 -1
  73. package/dist/components/comment/index.mjs +3 -2
  74. package/dist/components/config-provider/index.d.mts +7 -2
  75. package/dist/components/config-provider/index.mjs +6 -3
  76. package/dist/components/container/index.d.mts +3 -1
  77. package/dist/components/container/index.mjs +3 -2
  78. package/dist/components/data-view/index.d.mts +3 -1
  79. package/dist/components/data-view/index.mjs +13 -8
  80. package/dist/components/date-input/index.d.mts +1 -1
  81. package/dist/components/date-input/index.mjs +13 -5
  82. package/dist/components/date-picker/index.d.mts +1 -1
  83. package/dist/components/date-picker/index.mjs +13 -5
  84. package/dist/components/deferred-content/index.d.mts +3 -1
  85. package/dist/components/deferred-content/index.mjs +3 -2
  86. package/dist/components/descriptions/index.d.mts +7 -0
  87. package/dist/components/descriptions/index.mjs +21 -2
  88. package/dist/components/dialog/index.d.mts +17 -1
  89. package/dist/components/dialog/index.mjs +84 -2
  90. package/dist/components/download-trigger/index.d.mts +7 -2
  91. package/dist/components/download-trigger/index.mjs +8 -1
  92. package/dist/components/drawer/index.d.mts +17 -1
  93. package/dist/components/drawer/index.mjs +83 -2
  94. package/dist/components/dynamic-input/index.d.mts +3 -1
  95. package/dist/components/dynamic-input/index.mjs +15 -7
  96. package/dist/components/editable/index.d.mts +1 -1
  97. package/dist/components/editable/index.mjs +13 -5
  98. package/dist/components/ellipsis/index.d.mts +3 -1
  99. package/dist/components/ellipsis/index.mjs +3 -2
  100. package/dist/components/field/index.d.mts +5 -1
  101. package/dist/components/field/index.mjs +13 -1
  102. package/dist/components/fieldset/index.d.mts +5 -1
  103. package/dist/components/fieldset/index.mjs +13 -1
  104. package/dist/components/file-upload/index.d.mts +1 -1
  105. package/dist/components/file-upload/index.mjs +24 -6
  106. package/dist/components/float-button/index.mjs +3 -1
  107. package/dist/components/floating-panel/index.d.mts +5 -1
  108. package/dist/components/floating-panel/index.mjs +13 -1
  109. package/dist/components/focus-trap/index.d.mts +7 -2
  110. package/dist/components/focus-trap/index.mjs +8 -1
  111. package/dist/components/form/index.d.mts +1 -1
  112. package/dist/components/form/index.mjs +10 -4
  113. package/dist/components/frame/index.d.mts +6 -1
  114. package/dist/components/frame/index.mjs +10 -1
  115. package/dist/components/grid/index.d.mts +3 -1
  116. package/dist/components/grid/index.mjs +3 -2
  117. package/dist/components/highlight/index.d.mts +3 -1
  118. package/dist/components/highlight/index.mjs +2 -1
  119. package/dist/components/hover-card/index.d.mts +19 -1
  120. package/dist/components/hover-card/index.mjs +91 -2
  121. package/dist/components/icon/index.d.mts +8 -7
  122. package/dist/components/icon/index.mjs +4 -3
  123. package/dist/components/image/index.d.mts +8 -2
  124. package/dist/components/image/index.mjs +40 -33
  125. package/dist/components/image-cropper/index.d.mts +5 -1
  126. package/dist/components/image-cropper/index.mjs +13 -1
  127. package/dist/components/image-viewer/index.d.mts +2 -19
  128. package/dist/components/image-viewer/index.mjs +3 -151
  129. package/dist/components/input/index.d.mts +3 -1
  130. package/dist/components/input/index.mjs +1 -1
  131. package/dist/components/json-tree-view/index.d.mts +5 -1
  132. package/dist/components/json-tree-view/index.mjs +22 -2
  133. package/dist/components/kbd/index.d.mts +3 -1
  134. package/dist/components/kbd/index.mjs +3 -2
  135. package/dist/components/layout/index.mjs +8 -4
  136. package/dist/components/link/index.d.mts +3 -1
  137. package/dist/components/link/index.mjs +3 -2
  138. package/dist/components/list/index.d.mts +2 -1
  139. package/dist/components/list/index.mjs +35 -26
  140. package/dist/components/listbox/index.d.mts +1 -1
  141. package/dist/components/listbox/index.mjs +13 -5
  142. package/dist/components/marquee/index.d.mts +5 -1
  143. package/dist/components/marquee/index.mjs +13 -1
  144. package/dist/components/masonry/index.d.mts +3 -1
  145. package/dist/components/masonry/index.mjs +3 -2
  146. package/dist/components/media-player/index.d.mts +2 -0
  147. package/dist/components/media-player/index.mjs +2 -0
  148. package/dist/components/mentions/index.d.mts +1 -1
  149. package/dist/components/mentions/index.mjs +2 -2
  150. package/dist/components/menu/index.d.mts +21 -1
  151. package/dist/components/menu/index.mjs +62 -5
  152. package/dist/components/menubar/index.d.mts +3 -1
  153. package/dist/components/menubar/index.mjs +31 -9
  154. package/dist/components/navigation-menu/index.d.mts +5 -1
  155. package/dist/components/navigation-menu/index.mjs +13 -1
  156. package/dist/components/number-input/index.d.mts +1 -1
  157. package/dist/components/number-input/index.mjs +13 -5
  158. package/dist/components/order-list/index.d.mts +3 -1
  159. package/dist/components/order-list/index.mjs +79 -67
  160. package/dist/components/pagination/index.d.mts +1 -1
  161. package/dist/components/pagination/index.mjs +13 -5
  162. package/dist/components/password-input/index.d.mts +1 -1
  163. package/dist/components/password-input/index.mjs +13 -5
  164. package/dist/components/pin-input/index.d.mts +1 -1
  165. package/dist/components/pin-input/index.mjs +13 -5
  166. package/dist/components/popconfirm/index.d.mts +3 -1
  167. package/dist/components/popconfirm/index.mjs +16 -8
  168. package/dist/components/popover/index.d.mts +19 -1
  169. package/dist/components/popover/index.mjs +91 -2
  170. package/dist/components/presence/index.d.mts +10 -2
  171. package/dist/components/presence/index.mjs +9 -1
  172. package/dist/components/progress/index.d.mts +1 -1
  173. package/dist/components/progress/index.mjs +13 -5
  174. package/dist/components/progress-group/index.d.mts +3 -1
  175. package/dist/components/progress-group/index.mjs +4 -3
  176. package/dist/components/qr-code/index.d.mts +5 -1
  177. package/dist/components/qr-code/index.mjs +13 -1
  178. package/dist/components/radio-group/index.d.mts +1 -1
  179. package/dist/components/radio-group/index.mjs +13 -5
  180. package/dist/components/rating-group/index.d.mts +2 -2
  181. package/dist/components/rating-group/index.mjs +13 -5
  182. package/dist/components/result/index.d.mts +1 -1
  183. package/dist/components/result/index.mjs +5 -3
  184. package/dist/components/scroll-area/index.d.mts +5 -1
  185. package/dist/components/scroll-area/index.mjs +13 -1
  186. package/dist/components/segment-group/index.d.mts +1 -1
  187. package/dist/components/segment-group/index.mjs +11 -6
  188. package/dist/components/select/index.d.mts +2 -2
  189. package/dist/components/select/index.mjs +1 -1
  190. package/dist/components/separator/index.d.mts +3 -1
  191. package/dist/components/separator/index.mjs +3 -2
  192. package/dist/components/signature-pad/index.d.mts +5 -1
  193. package/dist/components/signature-pad/index.mjs +13 -1
  194. package/dist/components/skeleton/index.d.mts +3 -1
  195. package/dist/components/skeleton/index.mjs +3 -2
  196. package/dist/components/slider/index.d.mts +1 -1
  197. package/dist/components/slider/index.mjs +13 -5
  198. package/dist/components/spinner/index.d.mts +3 -1
  199. package/dist/components/spinner/index.mjs +6 -3
  200. package/dist/components/split-button/index.d.mts +3 -1
  201. package/dist/components/split-button/index.mjs +19 -4
  202. package/dist/components/splitter/index.d.mts +5 -1
  203. package/dist/components/splitter/index.mjs +13 -1
  204. package/dist/components/spotlight/index.d.mts +3 -1
  205. package/dist/components/spotlight/index.mjs +3 -2
  206. package/dist/components/stack/index.d.mts +3 -1
  207. package/dist/components/stack/index.mjs +6 -5
  208. package/dist/components/steps/index.d.mts +25 -3
  209. package/dist/components/steps/index.mjs +73 -8
  210. package/dist/components/swap/index.d.mts +5 -1
  211. package/dist/components/swap/index.mjs +13 -1
  212. package/dist/components/switch/index.d.mts +1 -1
  213. package/dist/components/switch/index.mjs +13 -5
  214. package/dist/components/table/index.d.mts +3 -1
  215. package/dist/components/table/index.mjs +194 -164
  216. package/dist/components/tabs/index.d.mts +20 -2
  217. package/dist/components/tabs/index.mjs +59 -3
  218. package/dist/components/tags-input/index.d.mts +1 -1
  219. package/dist/components/tags-input/index.mjs +13 -5
  220. package/dist/components/terminal/index.d.mts +3 -1
  221. package/dist/components/terminal/index.mjs +6 -3
  222. package/dist/components/textarea/index.d.mts +3 -1
  223. package/dist/components/textarea/index.mjs +3 -2
  224. package/dist/components/timer/index.d.mts +5 -1
  225. package/dist/components/timer/index.mjs +13 -1
  226. package/dist/components/toast/index.d.mts +8 -2
  227. package/dist/components/toast/index.mjs +14 -2
  228. package/dist/components/toc/index.d.mts +5 -1
  229. package/dist/components/toc/index.mjs +1 -9
  230. package/dist/components/toggle/index.d.mts +5 -1
  231. package/dist/components/toggle/index.mjs +13 -1
  232. package/dist/components/toggle-group/index.d.mts +1 -1
  233. package/dist/components/toggle-group/index.mjs +13 -5
  234. package/dist/components/toolbar/index.d.mts +3 -1
  235. package/dist/components/toolbar/index.mjs +3 -2
  236. package/dist/components/tooltip/index.d.mts +16 -1
  237. package/dist/components/tooltip/index.mjs +55 -2
  238. package/dist/components/tour/index.d.mts +16 -3
  239. package/dist/components/tour/index.mjs +74 -9
  240. package/dist/components/transfer/index.d.mts +3 -1
  241. package/dist/components/transfer/index.mjs +68 -54
  242. package/dist/components/tree-select/index.d.mts +3 -1
  243. package/dist/components/tree-select/index.mjs +45 -35
  244. package/dist/components/tree-view/index.d.mts +1 -1
  245. package/dist/components/tree-view/index.mjs +26 -5
  246. package/dist/components/user/index.d.mts +3 -1
  247. package/dist/components/user/index.mjs +8 -2
  248. package/dist/components/virtual-list/index.d.mts +3 -1
  249. package/dist/components/virtual-list/index.mjs +14 -9
  250. package/dist/components/watermark/index.d.mts +3 -1
  251. package/dist/components/watermark/index.mjs +4 -3
  252. package/dist/element-dGIhOTJ6.mjs +16 -0
  253. package/dist/family-Cmd8HEyK.mjs +11 -0
  254. package/dist/icon-DTqmJCd5.mjs +48 -0
  255. package/dist/id-2ygNzPHF.mjs +12 -0
  256. package/dist/image-viewer-B9A5lXsk.mjs +228 -0
  257. package/dist/{index-B1xiJ5ki.d.mts → index-B1-quIrl.d.mts} +6 -2
  258. package/dist/{index-DDX7x8aT.d.mts → index-DEArHiFI.d.mts} +16 -7
  259. package/dist/index-DhripUtf.d.mts +39 -0
  260. package/dist/{index-YPUiqD3n.d.mts → index-ID48LCMU.d.mts} +28 -2
  261. package/dist/{index-IfofF-SW.d.mts → index-nFXK_8hJ.d.mts} +53 -23
  262. package/dist/index-wW28BYf1.d.mts +124 -0
  263. package/dist/index.d.mts +22 -21
  264. package/dist/index.mjs +14 -13
  265. package/dist/{input-DoFQ7RXh.mjs → input-CPAJdwDb.mjs} +3 -2
  266. package/dist/media-player-BC8D_d29.mjs +796 -0
  267. package/dist/{mentions-f5Js_2W7.mjs → mentions-CeG5u8Qm.mjs} +67 -51
  268. package/dist/select-7YjMSBGx.mjs +292 -0
  269. package/dist/toc-DYKaKQ_X.mjs +31 -0
  270. package/dist/use-component-messages-C4SCVYjD.mjs +17 -0
  271. package/package.json +3 -3
  272. package/dist/chevron-D5RzcayK.mjs +0 -9
  273. package/dist/select-CHaXbzLX.mjs +0 -115
@@ -1,7 +1,10 @@
1
- import { Textarea } from "./components/textarea/index.mjs";
1
+ import { n as withSelfRoot, t as defineFamily } from "./family-Cmd8HEyK.mjs";
2
+ import { t as useElementId } from "./id-2ygNzPHF.mjs";
3
+ import { Popover as Popover$1 } from "./components/popover/index.mjs";
2
4
  import { injectComponentStyle } from "@bysages/core";
3
- import { createComponent, delegateEvents, effect, insert, setAttribute, spread, template } from "@solidjs/web";
4
- import { For, createEffect, createSignal, splitProps } from "solid-js";
5
+ import { createComponent, delegateEvents, effect, insert, memo, mergeProps, setAttribute, spread, template } from "@solidjs/web";
6
+ import { For, createSignal, splitProps } from "solid-js";
7
+ import { Field } from "@ark-ui/solid/field";
5
8
  import { Portal } from "solid-js/web";
6
9
  import { Popover } from "@ark-ui/solid/popover";
7
10
  //#region src/components/mentions/use-mentions.ts
@@ -89,30 +92,39 @@ function useMentions(options, textarea, handlers) {
89
92
  //#endregion
90
93
  //#region src/components/mentions/index.tsx
91
94
  var _tmpl$ = /* @__PURE__ */ template(`<div>`);
92
- var _tmpl$2 = /* @__PURE__ */ template(`<div data-scope=mentions data-part=option>`);
93
- var _tmpl$3 = /* @__PURE__ */ template(`<div><!><!>`);
94
- /** The vessel: the candidates themselves as a floating card. The anchor
95
- * is virtual — a live rectangle off the host's field — so a host keeps
96
- * its own anatomy (the textarea rides where the host puts it) and the
97
- * vessel still points at the right place. Shares the detection state
98
- * with the host through `useMentions`. */
99
- function MentionsVessel(props) {
95
+ var _tmpl$2 = /* @__PURE__ */ template(`<div role=option tabindex=-1 data-scope=mentions data-part=option>`);
96
+ /** The vessel: the candidates themselves as a floating card. A host can
97
+ * render its field through the Anchor; the rectangle fallback keeps the
98
+ * textarea in the host's own anatomy. Shares the detection state with
99
+ * the host through `useMentions`. */
100
+ const MentionsVessel = withSelfRoot(function MentionsVessel(props) {
100
101
  injectComponentStyle("mentions");
102
+ const id = useElementId("mentions-vessel");
101
103
  return createComponent(Popover.Root, {
104
+ get id() {
105
+ return id();
106
+ },
102
107
  get open() {
103
108
  return props.open ?? false;
104
109
  },
105
110
  onOpenChange: (details) => props.onOpenChange?.(details.open),
106
- positioning: {
107
- placement: "bottom-start",
108
- getAnchorRect: () => props.anchor?.getBoundingClientRect() ?? null
111
+ get positioning() {
112
+ return props.children ? { placement: "bottom-start" } : {
113
+ placement: "bottom-start",
114
+ getAnchorRect: () => props.anchor?.getBoundingClientRect() ?? null
115
+ };
109
116
  },
110
117
  get children() {
111
- return createComponent(Portal, { get children() {
118
+ return [memo(() => {
119
+ return memo(() => {
120
+ return !!props.children;
121
+ })() ? createComponent(Popover.Anchor, { asChild: (anchorProps) => typeof props.children === "function" ? props.children(anchorProps()) : props.children }) : null;
122
+ }), createComponent(Portal, { get children() {
112
123
  return createComponent(Popover.Positioner, { get children() {
113
124
  return createComponent(Popover.Content, { asChild: (contentProps) => (() => {
114
125
  var _el$ = _tmpl$();
115
126
  spread(_el$, [contentProps, {
127
+ role: "listbox",
116
128
  "data-scope": "mentions",
117
129
  "data-part": "popup",
118
130
  get "data-size"() {
@@ -125,14 +137,25 @@ function MentionsVessel(props) {
125
137
  },
126
138
  children: (entry, index) => (() => {
127
139
  var _el$2 = _tmpl$2();
140
+ _el$2._$$keydown = (event) => {
141
+ if (event.key !== "Enter" && event.key !== " ") return;
142
+ event.preventDefault();
143
+ props.onInsert?.(entry);
144
+ };
128
145
  _el$2._$$click = () => props.onInsert?.(entry);
129
146
  _el$2._$$mousedown = (event) => event.preventDefault();
130
147
  _el$2.addEventListener("mouseenter", () => props.onActiveChange?.(index()));
131
148
  insert(_el$2, () => {
132
149
  return entry.label;
133
150
  });
134
- effect(() => index() === (props.active ?? 0) ? "" : void 0, (_v$) => {
135
- setAttribute(_el$2, "data-active", _v$);
151
+ effect(() => {
152
+ return {
153
+ e: index() === (props.active ?? 0),
154
+ t: index() === (props.active ?? 0) ? "" : void 0
155
+ };
156
+ }, ({ e, t }, _p$) => {
157
+ e !== _p$?.e && setAttribute(_el$2, "aria-selected", e);
158
+ t !== _p$?.t && setAttribute(_el$2, "data-active", t);
136
159
  });
137
160
  return _el$2;
138
161
  })()
@@ -140,10 +163,10 @@ function MentionsVessel(props) {
140
163
  return _el$;
141
164
  })() });
142
165
  } });
143
- } });
166
+ } })];
144
167
  }
145
168
  });
146
- }
169
+ });
147
170
  /**
148
171
  * @-mentions: a plain textarea that, when the text before the caret ends
149
172
  * with the trigger character followed by a token, offers the matching
@@ -159,7 +182,7 @@ function MentionsVessel(props) {
159
182
  * own field anatomy (the AI prompt input) skip this shell and wire
160
183
  * `useMentions` plus `MentionsVessel` themselves.
161
184
  */
162
- function Mentions(props) {
185
+ function MentionsImpl(props) {
163
186
  const [own, rest] = splitProps(props, [
164
187
  "items",
165
188
  "value",
@@ -183,13 +206,6 @@ function Mentions(props) {
183
206
  own.onValueChange?.(next);
184
207
  }
185
208
  });
186
- createEffect(() => {
187
- value();
188
- const node = fieldEl();
189
- if (!node || !(own.autoresize ?? false)) return;
190
- node.style.height = "auto";
191
- node.style.height = `${node.scrollHeight}px`;
192
- });
193
209
  const onInput = () => {
194
210
  const node = fieldEl();
195
211
  if (!node) return;
@@ -197,20 +213,13 @@ function Mentions(props) {
197
213
  own.onValueChange?.(node.value);
198
214
  mentions.onInput();
199
215
  };
200
- var _el$3 = _tmpl$3();
201
- var _el$4 = _el$3.firstChild;
202
- var _el$5 = _el$4.nextSibling;
203
- spread(_el$3, [rest, {
204
- "data-scope": "mentions",
205
- "data-part": "root",
206
- get "data-size"() {
207
- return own.size ?? "md";
208
- }
209
- }], true);
210
- insert(_el$3, createComponent(Textarea, {
216
+ const field = (anchorProps) => createComponent(Field.Textarea, mergeProps(anchorProps, {
211
217
  ref: (node) => setFieldEl(node),
212
- get invalid() {
213
- return own.invalid;
218
+ get autoresize() {
219
+ return own.autoresize ?? false;
220
+ },
221
+ get "aria-invalid"() {
222
+ return own.invalid ? "true" : void 0;
214
223
  },
215
224
  rows: 3,
216
225
  get placeholder() {
@@ -219,17 +228,21 @@ function Mentions(props) {
219
228
  get value() {
220
229
  return value();
221
230
  },
222
- onValueChange: (next) => {
223
- setInternal(next);
224
- own.onValueChange?.(next);
225
- },
226
231
  onInput,
227
232
  onKeyDown: (event) => {
228
233
  mentions.onKeydown(event);
229
234
  },
230
235
  "data-scope": "mentions",
231
236
  "data-part": "textarea"
232
- }), _el$4);
237
+ }));
238
+ var _el$3 = _tmpl$();
239
+ spread(_el$3, [rest, {
240
+ "data-scope": "mentions",
241
+ "data-part": "root",
242
+ get "data-size"() {
243
+ return own.size ?? "md";
244
+ }
245
+ }], true);
233
246
  insert(_el$3, createComponent(MentionsVessel, {
234
247
  get open() {
235
248
  return mentions.open();
@@ -243,9 +256,6 @@ function Mentions(props) {
243
256
  get size() {
244
257
  return own.size ?? "md";
245
258
  },
246
- get anchor() {
247
- return fieldEl();
248
- },
249
259
  get onInsert() {
250
260
  return mentions.insert;
251
261
  },
@@ -254,10 +264,16 @@ function Mentions(props) {
254
264
  },
255
265
  onOpenChange: (open) => {
256
266
  if (!open) mentions.close();
257
- }
258
- }), _el$5);
267
+ },
268
+ children: field
269
+ }));
259
270
  return _el$3;
260
271
  }
261
- delegateEvents(["mousedown", "click"]);
272
+ const Mentions = defineFamily(MentionsImpl, Popover$1);
273
+ delegateEvents([
274
+ "mousedown",
275
+ "click",
276
+ "keydown"
277
+ ]);
262
278
  //#endregion
263
279
  export { MentionsVessel as n, useMentions as r, Mentions as t };
@@ -0,0 +1,292 @@
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 { injectComponentStyle } from "@bysages/core";
5
+ import { createComponent, effect, insert, memo, mergeProps, ref, setAttribute, spread, template } from "@solidjs/web";
6
+ import { For, Show, createEffect, createSignal, onMount, splitProps } from "solid-js";
7
+ import { useFieldContext } from "@ark-ui/solid/field";
8
+ import { Select, createListCollection } from "@ark-ui/solid/select";
9
+ //#region src/components/select/native.tsx
10
+ var _tmpl$ = /* @__PURE__ */ template(`<option value disabled>`);
11
+ var _tmpl$2 = /* @__PURE__ */ template(`<span><select><!><!>`);
12
+ var _tmpl$3 = /* @__PURE__ */ template(`<option>`);
13
+ function NativeSelect(props) {
14
+ injectComponentStyle("select");
15
+ const field = useFieldContext();
16
+ const [own, rest] = splitProps(props, [
17
+ "value",
18
+ "options",
19
+ "size",
20
+ "invalid",
21
+ "placeholder",
22
+ "disabled",
23
+ "onValueChange",
24
+ "aria-label",
25
+ "aria-labelledby"
26
+ ]);
27
+ const [select, setSelect] = createSignal(null);
28
+ onMount(() => {
29
+ createEffect(() => {
30
+ const el = select();
31
+ if (el) el.value = own.value ?? "";
32
+ });
33
+ });
34
+ const fieldProps = field?.().getInputProps() ?? {};
35
+ const empty = () => own.value == null || own.value === "";
36
+ const off = () => own.disabled || field?.().disabled;
37
+ var _el$ = _tmpl$2();
38
+ var _el$2 = _el$.firstChild;
39
+ var _el$4 = _el$2.firstChild;
40
+ var _el$5 = _el$4.nextSibling;
41
+ spread(_el$, [rest, {
42
+ "data-scope": "select",
43
+ "data-part": "native-root",
44
+ get "data-size"() {
45
+ return own.size ?? "md";
46
+ },
47
+ get "data-invalid"() {
48
+ return own.invalid || field?.().invalid ? "" : void 0;
49
+ },
50
+ get "data-disabled"() {
51
+ return off() ? "" : void 0;
52
+ },
53
+ get "data-placeholder-shown"() {
54
+ return empty() ? "" : void 0;
55
+ }
56
+ }], true);
57
+ ref(() => {
58
+ return setSelect;
59
+ }, _el$2);
60
+ spread(_el$2, [fieldProps, {
61
+ get "aria-label"() {
62
+ return own["aria-label"];
63
+ },
64
+ get "aria-labelledby"() {
65
+ return own["aria-labelledby"];
66
+ },
67
+ "data-scope": "select",
68
+ "data-part": "native",
69
+ get disabled() {
70
+ return off() || void 0;
71
+ },
72
+ onChange: (event) => own.onValueChange?.(event.currentTarget.value)
73
+ }], true);
74
+ insert(_el$2, createComponent(Show, {
75
+ get when() {
76
+ return own.placeholder;
77
+ },
78
+ get children() {
79
+ var _el$3 = _tmpl$();
80
+ insert(_el$3, () => {
81
+ return own.placeholder;
82
+ });
83
+ effect(() => empty() ? void 0 : true, (_v$) => {
84
+ setAttribute(_el$3, "hidden", _v$);
85
+ });
86
+ return _el$3;
87
+ }
88
+ }), _el$4);
89
+ insert(_el$2, createComponent(For, {
90
+ get each() {
91
+ return own.options;
92
+ },
93
+ children: (option) => (() => {
94
+ var _el$6 = _tmpl$3();
95
+ insert(_el$6, () => {
96
+ return option.label;
97
+ });
98
+ effect(() => {
99
+ return {
100
+ e: option.value,
101
+ t: option.disabled
102
+ };
103
+ }, ({ e, t }, _p$) => {
104
+ _el$6.value = e;
105
+ t !== _p$?.t && setAttribute(_el$6, "disabled", t);
106
+ });
107
+ return _el$6;
108
+ })()
109
+ }), _el$5);
110
+ insert(_el$, () => {
111
+ return iconNode("chevron-down", {
112
+ "data-scope": "select",
113
+ "data-part": "native-icon"
114
+ });
115
+ }, null);
116
+ return _el$;
117
+ }
118
+ //#endregion
119
+ //#region src/components/select/index.tsx
120
+ function SelectRoot(props) {
121
+ const [own, rest] = splitProps(props, ["size"]);
122
+ const id = useElementId("select", () => rest.id);
123
+ return createComponent(Select.Root, mergeProps(rest, {
124
+ get id() {
125
+ return id();
126
+ },
127
+ get "data-size"() {
128
+ return own.size ?? "md";
129
+ }
130
+ }));
131
+ }
132
+ function toArkValue(value) {
133
+ return value === void 0 || value === "" ? [] : Array.isArray(value) ? value : [value];
134
+ }
135
+ function SelectFacade(props) {
136
+ injectComponentStyle("select");
137
+ const collection = createListCollection({ items: props.options });
138
+ return createComponent(SelectRoot, mergeProps({
139
+ get size() {
140
+ return props.size ?? "md";
141
+ },
142
+ get autoComplete() {
143
+ return props.autoComplete;
144
+ },
145
+ collection,
146
+ get deselectable() {
147
+ return props.deselectable;
148
+ },
149
+ get disabled() {
150
+ return props.disabled;
151
+ },
152
+ get form() {
153
+ return props.form;
154
+ },
155
+ get invalid() {
156
+ return props.invalid;
157
+ },
158
+ lazyMount: true,
159
+ get multiple() {
160
+ return props.multiple;
161
+ },
162
+ unmountOnExit: true,
163
+ get name() {
164
+ return props.name;
165
+ },
166
+ get readOnly() {
167
+ return props.readOnly;
168
+ },
169
+ get required() {
170
+ return props.required;
171
+ },
172
+ get defaultValue() {
173
+ return toArkValue(props.value ?? props.defaultValue);
174
+ }
175
+ }, () => {
176
+ return props.value === void 0 ? {} : { value: toArkValue(props.value) };
177
+ }, {
178
+ onValueChange: (details) => props.onValueChange?.(props.multiple ? details.value : details.value.at(0) ?? ""),
179
+ get children() {
180
+ return [
181
+ createComponent(Show, {
182
+ get when() {
183
+ return props.label;
184
+ },
185
+ get children() {
186
+ return createComponent(Select.Label, { get children() {
187
+ return props.label;
188
+ } });
189
+ }
190
+ }),
191
+ createComponent(Select.Control, { get children() {
192
+ return [
193
+ createComponent(Select.Trigger, {
194
+ get "aria-label"() {
195
+ return memo(() => {
196
+ return !!props.label;
197
+ })() ? void 0 : props.placeholder;
198
+ },
199
+ get children() {
200
+ return createComponent(Select.ValueText, { get placeholder() {
201
+ return props.placeholder;
202
+ } });
203
+ }
204
+ }),
205
+ createComponent(Show, {
206
+ get when() {
207
+ return props.clearable !== false;
208
+ },
209
+ get children() {
210
+ return createComponent(Select.ClearTrigger, { get children() {
211
+ return iconNode("x", {
212
+ width: "14",
213
+ height: "14"
214
+ });
215
+ } });
216
+ }
217
+ }),
218
+ createComponent(Select.Indicator, { get children() {
219
+ return iconNode("chevrons-up-down", {
220
+ width: "14",
221
+ height: "14"
222
+ });
223
+ } })
224
+ ];
225
+ } }),
226
+ createComponent(Select.Positioner, { get children() {
227
+ return createComponent(Select.Content, { get children() {
228
+ return createComponent(Show, {
229
+ get when() {
230
+ return props.groupLabel;
231
+ },
232
+ get fallback() {
233
+ return createComponent(Select.List, { get children() {
234
+ return createComponent(For, {
235
+ get each() {
236
+ return collection.items;
237
+ },
238
+ children: (item) => createComponent(Select.Item, {
239
+ item,
240
+ get children() {
241
+ return [createComponent(Select.ItemText, { get children() {
242
+ return item.label;
243
+ } }), createComponent(Select.ItemIndicator, { get children() {
244
+ return iconNode("check", {
245
+ width: "14",
246
+ height: "14"
247
+ });
248
+ } })];
249
+ }
250
+ })
251
+ });
252
+ } });
253
+ },
254
+ get children() {
255
+ return createComponent(Select.ItemGroup, { get children() {
256
+ return [createComponent(Select.ItemGroupLabel, { get children() {
257
+ return props.groupLabel;
258
+ } }), createComponent(For, {
259
+ get each() {
260
+ return collection.items;
261
+ },
262
+ children: (item) => createComponent(Select.Item, {
263
+ item,
264
+ get children() {
265
+ return [createComponent(Select.ItemText, { get children() {
266
+ return item.label;
267
+ } }), createComponent(Select.ItemIndicator, { get children() {
268
+ return iconNode("check", {
269
+ width: "14",
270
+ height: "14"
271
+ });
272
+ } })];
273
+ }
274
+ })
275
+ })];
276
+ } });
277
+ }
278
+ });
279
+ } });
280
+ } }),
281
+ createComponent(Select.HiddenSelect, {})
282
+ ];
283
+ }
284
+ }));
285
+ }
286
+ const Select$1 = defineFamily(SelectFacade, {
287
+ ...Select,
288
+ Root: SelectRoot
289
+ });
290
+ injectComponentStyle("select");
291
+ //#endregion
292
+ export { NativeSelect as n, Select$1 as t };
@@ -0,0 +1,31 @@
1
+ import { t as defineFamily } from "./family-Cmd8HEyK.mjs";
2
+ import { t as useElementId } from "./id-2ygNzPHF.mjs";
3
+ import { injectComponentStyle } from "@bysages/core";
4
+ import { createComponent, mergeProps } from "@solidjs/web";
5
+ import { createComponent as createComponent$1, mergeProps as mergeProps$1 } from "solid-js";
6
+ import { Toc } from "@ark-ui/solid/toc";
7
+ //#region src/components/toc/TocIndicator.tsx
8
+ /** The active stroke is decoration; hidden so the list reads as links
9
+ * alone. */
10
+ function TocIndicator(props) {
11
+ return createComponent(Toc.Indicator, mergeProps(props, { "aria-hidden": "true" }));
12
+ }
13
+ //#endregion
14
+ //#region src/components/toc/index.ts
15
+ /** Ark's Toc, dressed in the paper-and-ink system: a quiet rail of links
16
+ * beside the scroll, one stroke of primary ink marking where the reader
17
+ * stands. The API is Ark's own — Root, Title, List, Item, Link, Indicator. */
18
+ function TocRoot(props) {
19
+ const id = useElementId("toc", () => props.id);
20
+ return createComponent$1(Toc.Root, mergeProps$1(props, { get id() {
21
+ return id();
22
+ } }));
23
+ }
24
+ const Toc$1 = defineFamily(TocRoot, {
25
+ ...Toc,
26
+ Root: TocRoot,
27
+ Indicator: TocIndicator
28
+ });
29
+ injectComponentStyle("toc");
30
+ //#endregion
31
+ export { Toc$1 as t };
@@ -0,0 +1,17 @@
1
+ import { ConfigContextKey } from "./components/config-provider/index.mjs";
2
+ import { resolveComponentMessages } from "@bysages/core";
3
+ import { createMemo, useContext } from "solid-js";
4
+ //#region src/components/config-provider/use-component-messages.ts
5
+ /** Wrapper copy is resolved once per locale/messages change and stays
6
+ * reactive through the provider snapshot. */
7
+ function useComponentMessages() {
8
+ const config = useContext(ConfigContextKey);
9
+ return createMemo(() => resolveComponentMessages(config().locale ?? "en", config().messages));
10
+ }
11
+ /** Expand the leaf placeholders shared by core ({name}); unknown keys
12
+ * stay visible instead of silently collapsing. */
13
+ function formatComponentMessage(template, values) {
14
+ return template.replace(/\{(\w+)\}/g, (_, key) => key in values ? String(values[key]) : `{${key}}`);
15
+ }
16
+ //#endregion
17
+ export { useComponentMessages as n, formatComponentMessage as t };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bysages/solid",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "By Sages Elements components for Solid — styled by the paper-and-ink design tokens",
5
5
  "keywords": [
6
6
  "accessible",
@@ -68,6 +68,7 @@
68
68
  "./dist/components/list/index.mjs",
69
69
  "./dist/components/listbox/index.mjs",
70
70
  "./dist/components/marquee/index.mjs",
71
+ "./dist/components/media-player/index.mjs",
71
72
  "./dist/components/menu/index.mjs",
72
73
  "./dist/components/meter/index.mjs",
73
74
  "./dist/components/navigation-menu/index.mjs",
@@ -124,8 +125,7 @@
124
125
  "@tanstack/solid-virtual": "3.13.40",
125
126
  "@zag-js/cascade-select": "1.44.0",
126
127
  "@zag-js/solid": "1.44.0",
127
- "@bysages/icons": "0.3.0",
128
- "@bysages/core": "0.3.0"
128
+ "@bysages/core": "0.4.0"
129
129
  },
130
130
  "devDependencies": {
131
131
  "@json-render/core": "0.21.0",
@@ -1,9 +0,0 @@
1
- import { template } from "@solidjs/web";
2
- //#region src/components/ai/chevron.tsx
3
- var _tmpl$ = /* @__PURE__ */ template(`<svg viewBox="0 0 16 16"fill=none aria-hidden=true><path d="M6 4l4 4-4 4"stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`);
4
- /** The folding chevron the shared indicator turns. */
5
- function chevron() {
6
- return _tmpl$();
7
- }
8
- //#endregion
9
- export { chevron as t };