@bysages/react 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 (286) hide show
  1. package/dist/{ai-response-BfKTmtCt.mjs → ai-response-nhDOlELQ.mjs} +4 -2
  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 +32 -2
  5. package/dist/components/affix/index.d.mts +4 -1
  6. package/dist/components/affix/index.mjs +6 -4
  7. package/dist/components/ai/index.d.mts +1 -1
  8. package/dist/components/ai/index.mjs +6 -4
  9. package/dist/components/ai-action/index.d.mts +4 -1
  10. package/dist/components/ai-action/index.mjs +4 -2
  11. package/dist/components/ai-attachments/index.d.mts +10 -4
  12. package/dist/components/ai-attachments/index.mjs +17 -45
  13. package/dist/components/ai-message/index.d.mts +4 -1
  14. package/dist/components/ai-message/index.mjs +4 -2
  15. package/dist/components/ai-prompt-input/index.d.mts +5 -2
  16. package/dist/components/ai-prompt-input/index.mjs +11 -15
  17. package/dist/components/ai-reasoning/index.d.mts +4 -1
  18. package/dist/components/ai-reasoning/index.mjs +5 -3
  19. package/dist/components/ai-response/index.d.mts +4 -1
  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 +6 -3
  23. package/dist/components/ai-suggestion/index.d.mts +4 -1
  24. package/dist/components/ai-suggestion/index.mjs +4 -2
  25. package/dist/components/ai-tool/index.d.mts +4 -1
  26. package/dist/components/ai-tool/index.mjs +5 -3
  27. package/dist/components/alert/index.d.mts +2 -0
  28. package/dist/components/alert/index.mjs +12 -19
  29. package/dist/components/angle-slider/index.d.mts +19 -2
  30. package/dist/components/angle-slider/index.mjs +32 -9
  31. package/dist/components/aspect-ratio/index.d.mts +4 -1
  32. package/dist/components/aspect-ratio/index.mjs +4 -2
  33. package/dist/components/autocomplete/index.d.mts +3 -1
  34. package/dist/components/autocomplete/index.mjs +15 -3
  35. package/dist/components/avatar/index.d.mts +2 -2
  36. package/dist/components/avatar/index.mjs +10 -3
  37. package/dist/components/avatar-group/index.d.mts +4 -1
  38. package/dist/components/avatar-group/index.mjs +4 -2
  39. package/dist/components/back-top/index.d.mts +7 -1
  40. package/dist/components/back-top/index.mjs +13 -18
  41. package/dist/components/badge/index.d.mts +4 -1
  42. package/dist/components/badge/index.mjs +4 -2
  43. package/dist/components/banner/index.mjs +3 -12
  44. package/dist/components/bento/index.mjs +1 -1
  45. package/dist/components/block-ui/index.d.mts +4 -1
  46. package/dist/components/block-ui/index.mjs +4 -2
  47. package/dist/components/breadcrumb/index.mjs +1 -1
  48. package/dist/components/browser/index.mjs +1 -1
  49. package/dist/components/button/index.d.mts +4 -1
  50. package/dist/components/button/index.mjs +4 -2
  51. package/dist/components/button-group/index.mjs +1 -1
  52. package/dist/components/calendar/index.d.mts +3 -1
  53. package/dist/components/calendar/index.mjs +10 -11
  54. package/dist/components/card/index.mjs +1 -1
  55. package/dist/components/carousel/index.d.mts +21 -1
  56. package/dist/components/carousel/index.mjs +44 -3
  57. package/dist/components/cascade-select/index.d.mts +6 -1
  58. package/dist/components/cascade-select/index.mjs +13 -36
  59. package/dist/components/checkbox/index.d.mts +20 -2
  60. package/dist/components/checkbox/index.mjs +29 -9
  61. package/dist/components/checkbox-group/index.d.mts +8 -6
  62. package/dist/components/checkbox-group/index.mjs +45 -49
  63. package/dist/components/chip/index.d.mts +4 -1
  64. package/dist/components/chip/index.mjs +4 -2
  65. package/dist/components/client-only/index.d.mts +7 -2
  66. package/dist/components/client-only/index.mjs +5 -1
  67. package/dist/components/clipboard/index.d.mts +17 -4
  68. package/dist/components/clipboard/index.mjs +34 -6
  69. package/dist/components/collapsible/index.d.mts +16 -4
  70. package/dist/components/collapsible/index.mjs +26 -2
  71. package/dist/components/color-picker/index.d.mts +20 -4
  72. package/dist/components/color-picker/index.mjs +57 -15
  73. package/dist/components/combobox/index.d.mts +27 -1
  74. package/dist/components/combobox/index.mjs +63 -6
  75. package/dist/components/command/index.d.mts +4 -1
  76. package/dist/components/command/index.mjs +8 -2
  77. package/dist/components/comment/index.d.mts +4 -1
  78. package/dist/components/comment/index.mjs +4 -2
  79. package/dist/components/config-provider/index.d.mts +4 -1
  80. package/dist/components/config-provider/index.mjs +3 -1
  81. package/dist/components/container/index.d.mts +4 -1
  82. package/dist/components/container/index.mjs +4 -2
  83. package/dist/components/data-view/index.d.mts +4 -1
  84. package/dist/components/data-view/index.mjs +4 -2
  85. package/dist/components/date-input/index.d.mts +19 -4
  86. package/dist/components/date-input/index.mjs +34 -10
  87. package/dist/components/date-picker/index.d.mts +21 -4
  88. package/dist/components/date-picker/index.mjs +59 -12
  89. package/dist/components/deferred-content/index.d.mts +4 -1
  90. package/dist/components/deferred-content/index.mjs +4 -2
  91. package/dist/components/descriptions/index.d.mts +10 -2
  92. package/dist/components/descriptions/index.mjs +14 -9
  93. package/dist/components/dialog/index.d.mts +18 -5
  94. package/dist/components/dialog/index.mjs +44 -2
  95. package/dist/components/dock/index.mjs +1 -1
  96. package/dist/components/download-trigger/index.d.mts +7 -2
  97. package/dist/components/download-trigger/index.mjs +5 -1
  98. package/dist/components/drawer/index.d.mts +18 -6
  99. package/dist/components/drawer/index.mjs +41 -2
  100. package/dist/components/dynamic-input/index.d.mts +4 -1
  101. package/dist/components/dynamic-input/index.mjs +11 -19
  102. package/dist/components/editable/index.d.mts +28 -7
  103. package/dist/components/editable/index.mjs +44 -5
  104. package/dist/components/ellipsis/index.d.mts +4 -1
  105. package/dist/components/ellipsis/index.mjs +4 -2
  106. package/dist/components/empty/index.mjs +1 -1
  107. package/dist/components/field/index.d.mts +30 -5
  108. package/dist/components/field/index.mjs +37 -4
  109. package/dist/components/fieldset/index.d.mts +19 -4
  110. package/dist/components/fieldset/index.mjs +29 -4
  111. package/dist/components/file-upload/index.d.mts +29 -9
  112. package/dist/components/file-upload/index.mjs +47 -11
  113. package/dist/components/float-button/index.mjs +1 -1
  114. package/dist/components/floating-panel/index.d.mts +18 -6
  115. package/dist/components/floating-panel/index.mjs +56 -2
  116. package/dist/components/focus-trap/index.d.mts +7 -2
  117. package/dist/components/focus-trap/index.mjs +5 -1
  118. package/dist/components/form/index.d.mts +1 -1
  119. package/dist/components/form/index.mjs +6 -3
  120. package/dist/components/frame/index.d.mts +4 -8
  121. package/dist/components/frame/index.mjs +13 -1
  122. package/dist/components/grid/index.d.mts +4 -1
  123. package/dist/components/grid/index.mjs +4 -2
  124. package/dist/components/highlight/index.d.mts +3 -5
  125. package/dist/components/highlight/index.mjs +7 -2
  126. package/dist/components/hover-card/index.d.mts +20 -4
  127. package/dist/components/hover-card/index.mjs +33 -2
  128. package/dist/components/icon/index.d.mts +10 -8
  129. package/dist/components/icon/index.mjs +6 -4
  130. package/dist/components/image/index.d.mts +5 -2
  131. package/dist/components/image/index.mjs +15 -30
  132. package/dist/components/image-cropper/index.d.mts +13 -2
  133. package/dist/components/image-cropper/index.mjs +35 -3
  134. package/dist/components/image-viewer/index.d.mts +2 -24
  135. package/dist/components/image-viewer/index.mjs +3 -113
  136. package/dist/components/input/index.d.mts +3 -1
  137. package/dist/components/input/index.mjs +1 -1
  138. package/dist/components/input-group/index.mjs +1 -1
  139. package/dist/components/json-tree-view/index.d.mts +17 -1
  140. package/dist/components/json-tree-view/index.mjs +27 -6
  141. package/dist/components/kbd/index.d.mts +4 -1
  142. package/dist/components/kbd/index.mjs +4 -2
  143. package/dist/components/layout/index.d.mts +25 -7
  144. package/dist/components/layout/index.mjs +158 -64
  145. package/dist/components/link/index.d.mts +4 -1
  146. package/dist/components/link/index.mjs +4 -2
  147. package/dist/components/list/index.mjs +1 -1
  148. package/dist/components/listbox/index.d.mts +22 -1
  149. package/dist/components/listbox/index.mjs +37 -5
  150. package/dist/components/marquee/index.d.mts +18 -1
  151. package/dist/components/marquee/index.mjs +35 -3
  152. package/dist/components/masonry/index.d.mts +4 -1
  153. package/dist/components/masonry/index.mjs +4 -2
  154. package/dist/components/media-player/index.d.mts +2 -0
  155. package/dist/components/media-player/index.mjs +2 -0
  156. package/dist/components/mentions/index.d.mts +1 -1
  157. package/dist/components/mentions/index.mjs +1 -1
  158. package/dist/components/menu/index.d.mts +29 -11
  159. package/dist/components/menu/index.mjs +35 -13
  160. package/dist/components/menubar/index.d.mts +3 -1
  161. package/dist/components/menubar/index.mjs +7 -2
  162. package/dist/components/meter/index.mjs +1 -1
  163. package/dist/components/navigation-menu/index.d.mts +25 -1
  164. package/dist/components/navigation-menu/index.mjs +37 -2
  165. package/dist/components/number-input/index.d.mts +28 -6
  166. package/dist/components/number-input/index.mjs +34 -9
  167. package/dist/components/order-list/index.d.mts +4 -1
  168. package/dist/components/order-list/index.mjs +27 -25
  169. package/dist/components/page-header/index.mjs +1 -1
  170. package/dist/components/pagination/index.d.mts +23 -3
  171. package/dist/components/pagination/index.mjs +58 -13
  172. package/dist/components/password-input/index.d.mts +24 -6
  173. package/dist/components/password-input/index.mjs +32 -9
  174. package/dist/components/pin-input/index.d.mts +23 -5
  175. package/dist/components/pin-input/index.mjs +30 -8
  176. package/dist/components/popconfirm/index.d.mts +9 -5
  177. package/dist/components/popconfirm/index.mjs +24 -19
  178. package/dist/components/popover/index.d.mts +2 -8
  179. package/dist/components/popover/index.mjs +45 -5
  180. package/dist/components/presence/index.d.mts +10 -2
  181. package/dist/components/presence/index.mjs +6 -1
  182. package/dist/components/progress/index.d.mts +18 -3
  183. package/dist/components/progress/index.mjs +35 -10
  184. package/dist/components/progress-group/index.d.mts +4 -1
  185. package/dist/components/progress-group/index.mjs +5 -3
  186. package/dist/components/qr-code/index.d.mts +14 -1
  187. package/dist/components/qr-code/index.mjs +27 -3
  188. package/dist/components/radio-group/index.d.mts +27 -2
  189. package/dist/components/radio-group/index.mjs +33 -9
  190. package/dist/components/rating-group/index.d.mts +20 -3
  191. package/dist/components/rating-group/index.mjs +27 -9
  192. package/dist/components/result/index.d.mts +1 -1
  193. package/dist/components/result/index.mjs +3 -3
  194. package/dist/components/scroll-area/index.d.mts +14 -1
  195. package/dist/components/scroll-area/index.mjs +33 -3
  196. package/dist/components/segment-group/index.d.mts +28 -2
  197. package/dist/components/segment-group/index.mjs +35 -8
  198. package/dist/components/select/index.d.mts +2 -2
  199. package/dist/components/select/index.mjs +1 -1
  200. package/dist/components/separator/index.d.mts +4 -1
  201. package/dist/components/separator/index.mjs +4 -2
  202. package/dist/components/signature-pad/index.d.mts +25 -5
  203. package/dist/components/signature-pad/index.mjs +38 -4
  204. package/dist/components/skeleton/index.d.mts +4 -1
  205. package/dist/components/skeleton/index.mjs +4 -2
  206. package/dist/components/slider/index.d.mts +21 -2
  207. package/dist/components/slider/index.mjs +32 -9
  208. package/dist/components/spinner/index.d.mts +4 -1
  209. package/dist/components/spinner/index.mjs +4 -2
  210. package/dist/components/split-button/index.d.mts +3 -1
  211. package/dist/components/split-button/index.mjs +13 -18
  212. package/dist/components/splitter/index.d.mts +17 -4
  213. package/dist/components/splitter/index.mjs +36 -2
  214. package/dist/components/spotlight/index.d.mts +4 -1
  215. package/dist/components/spotlight/index.mjs +4 -2
  216. package/dist/components/stack/index.d.mts +4 -1
  217. package/dist/components/stack/index.mjs +7 -5
  218. package/dist/components/stat/index.mjs +1 -1
  219. package/dist/components/steps/index.d.mts +26 -6
  220. package/dist/components/steps/index.mjs +27 -12
  221. package/dist/components/swap/index.d.mts +11 -5
  222. package/dist/components/swap/index.mjs +31 -4
  223. package/dist/components/switch/index.d.mts +20 -2
  224. package/dist/components/switch/index.mjs +28 -9
  225. package/dist/components/table/index.d.mts +4 -1
  226. package/dist/components/table/index.mjs +38 -60
  227. package/dist/components/tabs/index.d.mts +24 -2
  228. package/dist/components/tabs/index.mjs +26 -10
  229. package/dist/components/tags-input/index.d.mts +33 -8
  230. package/dist/components/tags-input/index.mjs +42 -10
  231. package/dist/components/terminal/index.d.mts +4 -1
  232. package/dist/components/terminal/index.mjs +4 -2
  233. package/dist/components/textarea/index.d.mts +4 -1
  234. package/dist/components/textarea/index.mjs +4 -2
  235. package/dist/components/timeline/index.mjs +1 -1
  236. package/dist/components/timer/index.d.mts +18 -1
  237. package/dist/components/timer/index.mjs +52 -3
  238. package/dist/components/toast/index.d.mts +3 -6
  239. package/dist/components/toast/index.mjs +23 -3
  240. package/dist/components/toc/index.d.mts +19 -5
  241. package/dist/components/toc/index.mjs +32 -6
  242. package/dist/components/toggle/index.d.mts +11 -4
  243. package/dist/components/toggle/index.mjs +22 -2
  244. package/dist/components/toggle-group/index.d.mts +26 -2
  245. package/dist/components/toggle-group/index.mjs +32 -7
  246. package/dist/components/toolbar/index.d.mts +4 -1
  247. package/dist/components/toolbar/index.mjs +4 -2
  248. package/dist/components/tooltip/index.d.mts +17 -4
  249. package/dist/components/tooltip/index.mjs +29 -2
  250. package/dist/components/tour/index.d.mts +18 -9
  251. package/dist/components/tour/index.mjs +45 -3
  252. package/dist/components/transfer/index.d.mts +3 -1
  253. package/dist/components/transfer/index.mjs +15 -27
  254. package/dist/components/tree-select/index.d.mts +3 -1
  255. package/dist/components/tree-select/index.mjs +12 -23
  256. package/dist/components/tree-view/index.d.mts +22 -2
  257. package/dist/components/tree-view/index.mjs +51 -9
  258. package/dist/components/typography/index.d.mts +4 -0
  259. package/dist/components/typography/index.mjs +2 -1
  260. package/dist/components/user/index.d.mts +4 -1
  261. package/dist/components/user/index.mjs +4 -2
  262. package/dist/components/virtual-list/index.d.mts +4 -1
  263. package/dist/components/virtual-list/index.mjs +11 -13
  264. package/dist/components/watermark/index.d.mts +4 -1
  265. package/dist/components/watermark/index.mjs +5 -3
  266. package/dist/family-DE_GQeeM.mjs +9 -0
  267. package/dist/icon-BALgGtNK.mjs +18 -0
  268. package/dist/id-C37UYLwJ.mjs +13 -0
  269. package/dist/image-viewer-B-hKFkEw.mjs +141 -0
  270. package/dist/{index-Dn5mHf1g.d.mts → index-B4twHAQC.d.mts} +194 -106
  271. package/dist/{index-Uefyw7Im.d.mts → index-Bbg4heDO.d.mts} +12 -7
  272. package/dist/index-BcRdWGY-.d.mts +115 -0
  273. package/dist/{index-Iy8m0Qev.d.mts → index-D_iKc2Uw.d.mts} +31 -2
  274. package/dist/index-Dj8S4eyJ.d.mts +41 -0
  275. package/dist/index-Eu-Bttta.d.mts +24 -0
  276. package/dist/{index-uPyYiWaL.d.mts → index-PsgGWW3m.d.mts} +8 -2
  277. package/dist/index.d.mts +36 -35
  278. package/dist/index.mjs +11 -10
  279. package/dist/{input-2oezH-dY.mjs → input-BDpQ0e6G.mjs} +4 -2
  280. package/dist/media-player-DjVvo1_7.mjs +554 -0
  281. package/dist/{mentions-DMIBCBOd.mjs → mentions-BwnyvdXz.mjs} +75 -43
  282. package/dist/select-i9UZsQCU.mjs +121 -0
  283. package/package.json +9 -81
  284. package/dist/chevron-BeHvt46K.mjs +0 -17
  285. package/dist/glyph-VI989p8H.mjs +0 -14
  286. package/dist/select-eAHutw56.mjs +0 -70
@@ -1,20 +1,105 @@
1
1
  import { n as useComponentMessages } from "../../messages-1jJWtaYU.mjs";
2
- import { injectComponentStyle } from "@bysages/core";
2
+ import { injectComponentStyle } from "@bysages/core/styling";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
- import { createContext, useContext, useEffect, useRef, useState } from "react";
4
+ import { createContext, useContext, useEffect, useMemo, useRef, useState } from "react";
5
+ import { Splitter } from "@ark-ui/react/splitter";
5
6
  //#region src/components/layout/index.tsx
6
7
  const LAYOUT_CONTEXT = createContext(null);
8
+ /** One step of Ark's keyboard resize, converted to a splitter percentage
9
+ * at render time so the public behavior remains a 16px move. */
10
+ const RESIZE_STEP = 16;
7
11
  /**
8
12
  * The application skeleton: Root, Header, Sider, Content, Footer —
9
13
  * the admin arrangement dressed in the paper-and-ink surfaces. The
10
14
  * root is a full-height grid; a declared `sider` turns the columns
11
15
  * around to meet whichever edge the rail stands on.
12
16
  */
13
- function Root({ sider, children, ...rest }) {
17
+ function Root({ sider, children, style, ...rest }) {
18
+ const [siderState, setSiderState] = useState(null);
19
+ const [rootWidth, setRootWidth] = useState(0);
20
+ const siderStateRef = useRef(siderState);
21
+ const resizeHandlers = useRef({
22
+ start: () => {},
23
+ resize: () => {},
24
+ end: () => {}
25
+ });
26
+ siderStateRef.current = siderState;
27
+ const splitterRoot = useRef(null);
28
+ const splitterActive = !!sider;
29
+ useEffect(() => {
30
+ const element = splitterActive ? splitterRoot.current : null;
31
+ if (!element || typeof ResizeObserver === "undefined") {
32
+ if (!element) setRootWidth(0);
33
+ else setRootWidth(element.getBoundingClientRect().width);
34
+ return;
35
+ }
36
+ const observer = new ResizeObserver(() => {
37
+ setRootWidth(element.getBoundingClientRect().width);
38
+ });
39
+ observer.observe(element);
40
+ setRootWidth(element.getBoundingClientRect().width);
41
+ return () => observer.disconnect();
42
+ }, [splitterActive]);
43
+ const context = useMemo(() => ({
44
+ siderPlacement: () => sider,
45
+ getSiderState: () => siderStateRef.current,
46
+ setSiderState,
47
+ setResizeHandlers: (handlers) => {
48
+ resizeHandlers.current = handlers;
49
+ },
50
+ resizeStart: () => resizeHandlers.current.start(),
51
+ resize: (width) => resizeHandlers.current.resize(width),
52
+ resizeEnd: () => resizeHandlers.current.end()
53
+ }), [sider]);
54
+ const keyboardResizeBy = rootWidth > 0 ? RESIZE_STEP / rootWidth * 100 : RESIZE_STEP;
55
+ const panels = useMemo(() => {
56
+ if (!siderState) return [];
57
+ const rail = {
58
+ id: "sider",
59
+ minSize: siderState.minWidth,
60
+ maxSize: siderState.maxWidth
61
+ };
62
+ const flow = {
63
+ id: "flow",
64
+ minSize: "0px"
65
+ };
66
+ return sider === "end" ? [flow, rail] : [rail, flow];
67
+ }, [sider, siderState]);
68
+ const size = useMemo(() => sider === "end" ? [void 0, siderState?.width] : [siderState?.width, void 0], [sider, siderState?.width]);
69
+ const siderIndex = sider === "end" ? 1 : 0;
70
+ const callerStyle = style ?? {};
71
+ const gridStyle = {
72
+ ...callerStyle,
73
+ display: callerStyle.display ?? "grid",
74
+ width: callerStyle.width ?? "auto",
75
+ height: callerStyle.height ?? "auto",
76
+ overflow: callerStyle.overflow ?? "visible"
77
+ };
14
78
  return /* @__PURE__ */ jsx(LAYOUT_CONTEXT.Provider, {
15
- value: { siderPlacement: () => sider },
16
- children: /* @__PURE__ */ jsx("div", {
79
+ value: context,
80
+ children: splitterActive ? /* @__PURE__ */ jsx(Splitter.Root, {
81
+ ref: splitterRoot,
82
+ asChild: true,
83
+ panels,
84
+ size,
85
+ keyboardResizeBy,
86
+ onResize: (details) => {
87
+ const width = rootWidth * (details.size[siderIndex] ?? 0) / 100;
88
+ if (width > 0) context.resize(width);
89
+ },
90
+ onResizeStart: context.resizeStart,
91
+ onResizeEnd: context.resizeEnd,
92
+ children: /* @__PURE__ */ jsx("div", {
93
+ ...rest,
94
+ style: gridStyle,
95
+ "data-scope": "layout",
96
+ "data-part": "root",
97
+ "data-sider": sider,
98
+ children
99
+ })
100
+ }) : /* @__PURE__ */ jsx("div", {
17
101
  ...rest,
102
+ style: gridStyle,
18
103
  "data-scope": "layout",
19
104
  "data-part": "root",
20
105
  "data-sider": sider,
@@ -26,27 +111,59 @@ function Root({ sider, children, ...rest }) {
26
111
  * main content each land on their native element and their grid area. */
27
112
  function region(name, tag) {
28
113
  const Tag = tag;
29
- const Component = ({ children, ...rest }) => /* @__PURE__ */ jsx(Tag, {
30
- ...rest,
31
- "data-scope": "layout",
32
- "data-part": name.toLowerCase(),
33
- children
34
- });
114
+ const Component = ({ children, ...rest }) => {
115
+ const layout = useContext(LAYOUT_CONTEXT);
116
+ const splitPanel = name === "Content" && !!layout?.siderPlacement() && !!layout.getSiderState()?.resizable && !layout.getSiderState().collapsed;
117
+ return /* @__PURE__ */ jsx(Tag, {
118
+ ...rest,
119
+ "data-scope": "layout",
120
+ "data-part": name.toLowerCase(),
121
+ children: splitPanel ? /* @__PURE__ */ jsx(Splitter.Panel, {
122
+ id: "flow",
123
+ children
124
+ }) : children
125
+ });
126
+ };
35
127
  Component.displayName = "Layout" + name;
36
128
  return Component;
37
129
  }
38
130
  const Header = region("Header", "header");
39
131
  const Content = region("Content", "main");
40
132
  const Footer = region("Footer", "footer");
41
- /** One step of the arrow-key resize, in px. */
42
- const RESIZE_STEP = 16;
43
133
  function Sider({ collapsed = false, width: widthProp, collapsedWidth = "3.5rem", resizable = false, minWidth = "12rem", maxWidth = "24rem", style, onCollapsedChange, onWidthChange, children, ...rest }) {
44
134
  const layout = useContext(LAYOUT_CONTEXT);
45
135
  const messages = useComponentMessages();
46
- const rail = useRef(null);
47
136
  const [dragging, setDragging] = useState(false);
137
+ const active = resizable && !collapsed;
138
+ useEffect(() => {
139
+ if (!active) setDragging(false);
140
+ }, [active]);
48
141
  const [innerWidth, setInnerWidth] = useState(widthProp ?? "16rem");
49
142
  const width = widthProp !== void 0 ? widthProp : innerWidth;
143
+ useEffect(() => {
144
+ layout?.setSiderState((previous) => previous ? {
145
+ ...previous,
146
+ resizable,
147
+ collapsed,
148
+ width,
149
+ minWidth,
150
+ maxWidth
151
+ } : {
152
+ resizable,
153
+ collapsed,
154
+ width,
155
+ minWidth,
156
+ maxWidth
157
+ });
158
+ }, [
159
+ layout,
160
+ resizable,
161
+ collapsed,
162
+ width,
163
+ minWidth,
164
+ maxWidth
165
+ ]);
166
+ useEffect(() => () => layout?.setSiderState(null), [layout]);
50
167
  const prevCollapsed = useRef(collapsed);
51
168
  useEffect(() => {
52
169
  if (prevCollapsed.current === collapsed) return;
@@ -60,55 +177,32 @@ function Sider({ collapsed = false, width: widthProp, collapsedWidth = "3.5rem",
60
177
  setInnerWidth(widthProp);
61
178
  onWidthChange?.(widthProp);
62
179
  }, [widthProp, onWidthChange]);
63
- const applyWidth = (next) => {
64
- setInnerWidth(next);
65
- onWidthChange?.(next);
66
- };
67
- const dragStart = useRef({
68
- x: 0,
69
- width: 0
70
- });
71
- const onPointerDown = (event) => {
72
- setDragging(true);
73
- dragStart.current = {
74
- x: event.clientX,
75
- width: rail.current ? rail.current.getBoundingClientRect().width : 0
76
- };
77
- event.currentTarget.setPointerCapture(event.pointerId);
78
- };
79
- const onPointerMove = (event) => {
80
- if (!dragging) return;
81
- const towardFlow = (layout?.siderPlacement() ?? "start") === "end" ? -1 : 1;
82
- applyWidth(`${Math.round(dragStart.current.width + towardFlow * (event.clientX - dragStart.current.x))}px`);
83
- };
84
- const onPointerUp = (event) => {
85
- setDragging(false);
86
- event.currentTarget.releasePointerCapture(event.pointerId);
87
- };
88
- const onKeyDown = (event) => {
89
- if (event.key !== "ArrowLeft" && event.key !== "ArrowRight") return;
90
- event.preventDefault();
91
- const widen = (layout?.siderPlacement() ?? "start") === "end" ? event.key === "ArrowLeft" : event.key === "ArrowRight";
92
- const current = rail.current ? rail.current.getBoundingClientRect().width : 0;
93
- applyWidth(`${Math.round(current + (widen ? RESIZE_STEP : -16))}px`);
94
- };
95
- const handle = resizable && !collapsed ? /* @__PURE__ */ jsx("div", {
96
- "data-scope": "layout",
97
- "data-part": "sider-resize",
98
- "data-dragging": dragging ? "" : void 0,
99
- role: "separator",
100
- "aria-orientation": "vertical",
101
- tabIndex: 0,
102
- "aria-label": messages.sidebar.resize,
103
- "aria-valuenow": Math.round(rail.current ? rail.current.getBoundingClientRect().width : 0),
104
- onPointerDown,
105
- onPointerMove,
106
- onPointerUp,
107
- onKeyDown
108
- }) : null;
109
- return /* @__PURE__ */ jsxs("aside", {
180
+ useEffect(() => {
181
+ layout?.setResizeHandlers({
182
+ start: () => setDragging(true),
183
+ resize: (nextWidth) => {
184
+ const next = `${Math.round(nextWidth)}px`;
185
+ setInnerWidth(next);
186
+ onWidthChange?.(next);
187
+ },
188
+ end: () => setDragging(false)
189
+ });
190
+ return () => layout?.setResizeHandlers({
191
+ start: () => {},
192
+ resize: () => {},
193
+ end: () => {}
194
+ });
195
+ }, [layout, onWidthChange]);
196
+ const contents = typeof children === "function" ? children({ collapsed }) : children;
197
+ const body = active ? /* @__PURE__ */ jsxs(Splitter.Panel, {
198
+ id: "sider",
199
+ children: [contents, /* @__PURE__ */ jsx(Splitter.ResizeTrigger, {
200
+ id: layout?.siderPlacement() === "end" ? "flow:sider" : "sider:flow",
201
+ "aria-label": messages.sidebar.resize
202
+ })]
203
+ }) : contents;
204
+ return /* @__PURE__ */ jsx("aside", {
110
205
  ...rest,
111
- ref: rail,
112
206
  style: {
113
207
  ...style,
114
208
  "--bs-layout-sider-width": collapsed ? collapsedWidth : width,
@@ -119,8 +213,8 @@ function Sider({ collapsed = false, width: widthProp, collapsedWidth = "3.5rem",
119
213
  "data-part": "sider",
120
214
  "data-collapsed": collapsed ? "" : void 0,
121
215
  "data-dragging": dragging ? "" : void 0,
122
- "data-resizable": resizable ? "" : void 0,
123
- children: [typeof children === "function" ? children({ collapsed }) : children, handle]
216
+ "data-resizable": active ? "" : void 0,
217
+ children: body
124
218
  });
125
219
  }
126
220
  const Layout = Object.assign(Root, {
@@ -6,5 +6,8 @@ export interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
6
6
  /** A link is ink in the accent's voice: quiet at rest, deepening under
7
7
  * the hand, the halo at focus. The underline follows the prose —
8
8
  * always, on hover, or never. */
9
- export declare function Link({ underline, children, ...rest }: LinkProps): import("react").JSX.Element;
9
+ declare function LinkImpl({ underline, children, ...rest }: LinkProps): import("react").JSX.Element;
10
+ export declare const Link: typeof LinkImpl & {
11
+ Root: typeof LinkImpl;
12
+ };
10
13
  //#endregion
@@ -1,10 +1,11 @@
1
- import { injectComponentStyle } from "@bysages/core";
1
+ import { t as withSelfRoot } from "../../family-DE_GQeeM.mjs";
2
+ import { injectComponentStyle } from "@bysages/core/styling";
2
3
  import { jsx } from "react/jsx-runtime";
3
4
  //#region src/components/link/index.tsx
4
5
  /** A link is ink in the accent's voice: quiet at rest, deepening under
5
6
  * the hand, the halo at focus. The underline follows the prose —
6
7
  * always, on hover, or never. */
7
- function Link({ underline = "hover", children, ...rest }) {
8
+ function LinkImpl({ underline = "hover", children, ...rest }) {
8
9
  injectComponentStyle("link");
9
10
  return /* @__PURE__ */ jsx("a", {
10
11
  ...rest,
@@ -14,5 +15,6 @@ function Link({ underline = "hover", children, ...rest }) {
14
15
  children
15
16
  });
16
17
  }
18
+ const Link = withSelfRoot(LinkImpl);
17
19
  //#endregion
18
20
  export { Link };
@@ -1,4 +1,4 @@
1
- import { injectComponentStyle } from "@bysages/core";
1
+ import { injectComponentStyle } from "@bysages/core/styling";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  //#region src/components/list/index.tsx
4
4
  /** A ledger of rows: Root is the list, Item one row, Leading the mark
@@ -1,3 +1,4 @@
1
+ import { CSSProperties } from "react";
1
2
  import { CollectionItem } from "@ark-ui/react/collection";
2
3
  import { Listbox as Listbox$1, ListboxRootComponentProps, createListCollection } from "@ark-ui/react/listbox";
3
4
  //#region src/components/listbox/index.d.ts
@@ -11,7 +12,27 @@ type ListboxOwnProps = {
11
12
  size?: "sm" | "md" | "lg";
12
13
  };
13
14
  declare function ListboxRoot<T extends CollectionItem>(props: ListboxRootComponentProps<T, ListboxOwnProps>): import("react").JSX.Element;
14
- export declare const Listbox: Omit<typeof Listbox$1, "Root"> & {
15
+ type ListboxOption = {
16
+ label: string;
17
+ value: string;
18
+ };
19
+ type ListboxFacadeValue = string | string[];
20
+ type ListboxFacadeProps = {
21
+ value?: ListboxFacadeValue;
22
+ defaultValue?: ListboxFacadeValue;
23
+ options: ListboxOption[];
24
+ multiple?: boolean;
25
+ disabled?: boolean;
26
+ label?: string;
27
+ size?: "sm" | "md" | "lg";
28
+ className?: string;
29
+ style?: CSSProperties;
30
+ onValueChange?: (value?: ListboxFacadeValue) => void;
31
+ };
32
+ /** The complete listbox behind one model value: options become rows and the
33
+ * label names the quiet register. */
34
+ declare function ListboxFacade(props: ListboxFacadeProps): import("react").JSX.Element;
35
+ export declare const Listbox: typeof ListboxFacade & Omit<typeof Listbox$1, "Root"> & {
15
36
  Root: typeof ListboxRoot;
16
37
  };
17
38
  //#endregion
@@ -1,18 +1,50 @@
1
- import { injectComponentStyle } from "@bysages/core";
2
- import { jsx } from "react/jsx-runtime";
1
+ import { t as iconNode } from "../../icon-BALgGtNK.mjs";
2
+ import { t as useElementId } from "../../id-C37UYLwJ.mjs";
3
+ import { injectComponentStyle } from "@bysages/core/styling";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
3
5
  import { Listbox as Listbox$1, createListCollection } from "@ark-ui/react/listbox";
4
6
  //#region src/components/listbox/index.tsx
5
7
  function ListboxRoot(props) {
8
+ injectComponentStyle("listbox");
9
+ const id = useElementId("listbox", props);
6
10
  const { size = "md", ...rest } = props;
7
11
  return /* @__PURE__ */ jsx(Listbox$1.Root, {
8
12
  ...rest,
13
+ id,
9
14
  "data-size": size
10
15
  });
11
16
  }
12
- const Listbox = {
17
+ function toListboxValue(value) {
18
+ if (value === void 0) return void 0;
19
+ return Array.isArray(value) ? value : [value];
20
+ }
21
+ /** The complete listbox behind one model value: options become rows and the
22
+ * label names the quiet register. */
23
+ function ListboxFacade(props) {
24
+ const { value, defaultValue, options, multiple, disabled, label, size = "md", className, style, onValueChange } = props;
25
+ const collection = createListCollection({ items: options });
26
+ return /* @__PURE__ */ jsxs(ListboxRoot, {
27
+ size,
28
+ collection,
29
+ defaultValue: toListboxValue(defaultValue),
30
+ value: toListboxValue(value),
31
+ disabled,
32
+ selectionMode: multiple ? "multiple" : "single",
33
+ className,
34
+ style,
35
+ onValueChange: (event) => onValueChange?.(multiple ? event.value : event.value.at(0)),
36
+ children: [label ? /* @__PURE__ */ jsx(Listbox$1.Label, { children: label }) : null, /* @__PURE__ */ jsx(Listbox$1.Content, { children: collection.items.map((item) => /* @__PURE__ */ jsxs(Listbox$1.Item, {
37
+ item,
38
+ children: [/* @__PURE__ */ jsx(Listbox$1.ItemText, { children: item.label }), /* @__PURE__ */ jsx(Listbox$1.ItemIndicator, { children: iconNode("check", {
39
+ width: 14,
40
+ height: 14
41
+ }) })]
42
+ }, item.value)) })]
43
+ });
44
+ }
45
+ const Listbox = Object.assign(ListboxFacade, {
13
46
  ...Listbox$1,
14
47
  Root: ListboxRoot
15
- };
16
- injectComponentStyle("listbox");
48
+ });
17
49
  //#endregion
18
50
  export { Listbox, createListCollection };
@@ -1,7 +1,24 @@
1
+ import { CSSProperties, ComponentProps } from "react";
1
2
  import { Marquee as Marquee$1 } from "@ark-ui/react/marquee";
2
3
  //#region src/components/marquee/index.d.ts
3
4
  /** Ark's Marquee, dressed in the paper-and-ink system: a linear ribbon of
4
5
  * seal-cut chips that dissolves into the paper at its edges rather than
5
6
  * cutting off. The API is Ark's own — Root, Viewport, Content, Edge, Item. */
6
- export declare const Marquee: typeof Marquee$1;
7
+ declare function MarqueeRoot(props: ComponentProps<typeof Marquee$1.Root>): import("react").JSX.Element;
8
+ type MarqueeItem = string | {
9
+ label: string;
10
+ };
11
+ type MarqueeFacadeProps = {
12
+ items: MarqueeItem[];
13
+ spacing?: string;
14
+ speed?: number;
15
+ label?: string;
16
+ className?: string;
17
+ style?: CSSProperties;
18
+ };
19
+ /** The complete ribbon behind a list of short marks. */
20
+ declare function MarqueeFacade(props: MarqueeFacadeProps): import("react").JSX.Element;
21
+ export declare const Marquee: typeof MarqueeFacade & Omit<typeof Marquee$1, "Root"> & {
22
+ Root: typeof MarqueeRoot;
23
+ };
7
24
  //#endregion
@@ -1,10 +1,42 @@
1
- import { injectComponentStyle } from "@bysages/core";
1
+ import { t as useElementId } from "../../id-C37UYLwJ.mjs";
2
+ import { injectComponentStyle } from "@bysages/core/styling";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
2
4
  import { Marquee as Marquee$1 } from "@ark-ui/react/marquee";
3
5
  //#region src/components/marquee/index.tsx
4
6
  /** Ark's Marquee, dressed in the paper-and-ink system: a linear ribbon of
5
7
  * seal-cut chips that dissolves into the paper at its edges rather than
6
8
  * cutting off. The API is Ark's own — Root, Viewport, Content, Edge, Item. */
7
- const Marquee = Marquee$1;
8
- injectComponentStyle("marquee");
9
+ function MarqueeRoot(props) {
10
+ injectComponentStyle("marquee");
11
+ const id = useElementId("marquee", props);
12
+ return /* @__PURE__ */ jsx(Marquee$1.Root, {
13
+ ...props,
14
+ id
15
+ });
16
+ }
17
+ /** The complete ribbon behind a list of short marks. */
18
+ function MarqueeFacade(props) {
19
+ const { items, spacing, speed, label, className, style } = props;
20
+ const labels = items.map((item) => typeof item === "string" ? item : item.label);
21
+ return /* @__PURE__ */ jsx(MarqueeRoot, {
22
+ "aria-label": label,
23
+ spacing,
24
+ speed,
25
+ className,
26
+ style,
27
+ children: /* @__PURE__ */ jsx(Marquee$1.Viewport, { children: /* @__PURE__ */ jsx(Marquee$1.Content, { children: labels.map((item, index) => /* @__PURE__ */ jsxs(Marquee$1.Item, { children: [/* @__PURE__ */ jsx("svg", {
28
+ width: 16,
29
+ height: 16,
30
+ viewBox: "0 0 24 24",
31
+ fill: "currentColor",
32
+ "aria-hidden": "true",
33
+ children: /* @__PURE__ */ jsx("path", { d: "M12 3 3 9l9 12 9-12-9-6Z" })
34
+ }), /* @__PURE__ */ jsx("span", { children: item })] }, `${item}-${index}`)) }) })
35
+ });
36
+ }
37
+ const Marquee = Object.assign(MarqueeFacade, {
38
+ ...Marquee$1,
39
+ Root: MarqueeRoot
40
+ });
9
41
  //#endregion
10
42
  export { Marquee };
@@ -7,5 +7,8 @@ export interface MasonryProps extends HTMLAttributes<HTMLDivElement> {
7
7
  columns?: number;
8
8
  gap?: "none" | "xs" | "sm" | "md" | "lg" | "xl";
9
9
  }
10
- export declare function Masonry({ columns, gap, ...rest }: MasonryProps): import("react").JSX.Element;
10
+ declare function MasonryImpl({ columns, gap, ...rest }: MasonryProps): import("react").JSX.Element;
11
+ export declare const Masonry: typeof MasonryImpl & {
12
+ Root: typeof MasonryImpl;
13
+ };
11
14
  //#endregion
@@ -1,4 +1,5 @@
1
- import { injectComponentStyle } from "@bysages/core";
1
+ import { t as withSelfRoot } from "../../family-DE_GQeeM.mjs";
2
+ import { injectComponentStyle } from "@bysages/core/styling";
2
3
  import { jsx } from "react/jsx-runtime";
3
4
  //#region src/components/masonry/index.tsx
4
5
  /** The same named steps of the space ramp the stack uses — one
@@ -11,7 +12,7 @@ const gapVars = {
11
12
  lg: "var(--bs-gap-lg)",
12
13
  xl: "var(--bs-gap-xl)"
13
14
  };
14
- function Masonry({ columns = 3, gap = "md", ...rest }) {
15
+ function MasonryImpl({ columns = 3, gap = "md", ...rest }) {
15
16
  injectComponentStyle("masonry");
16
17
  const style = {
17
18
  ...rest.style,
@@ -25,5 +26,6 @@ function Masonry({ columns = 3, gap = "md", ...rest }) {
25
26
  "data-part": "root"
26
27
  });
27
28
  }
29
+ const Masonry = withSelfRoot(MasonryImpl);
28
30
  //#endregion
29
31
  export { Masonry };
@@ -0,0 +1,2 @@
1
+ import { a as MediaTextTrackOption, i as MediaSourceOption, n as Video, o as formatMediaTime, r as MediaPlayerProps, t as Audio } from "../../index-BcRdWGY-.mjs";
2
+ export { Audio, type MediaPlayerProps, type MediaSourceOption, type MediaTextTrackOption, Video, formatMediaTime };
@@ -0,0 +1,2 @@
1
+ import { n as Video, r as formatMediaTime, t as Audio } from "../../media-player-DjVvo1_7.mjs";
2
+ export { Audio, Video, formatMediaTime };
@@ -1,2 +1,2 @@
1
- import { a as MentionsVesselProps, c as useMentions, i as MentionsVessel, n as Mentions, o as UseMentionsHandlers, r as MentionsProps, s as UseMentionsOptions, t as MentionEntry } from "../../index-Uefyw7Im.mjs";
1
+ import { a as MentionsVesselProps, c as useMentions, i as MentionsVessel, n as Mentions, o as UseMentionsHandlers, r as MentionsProps, s as UseMentionsOptions, t as MentionEntry } from "../../index-Bbg4heDO.mjs";
2
2
  export { MentionEntry, Mentions, MentionsProps, MentionsVessel, MentionsVesselProps, type UseMentionsHandlers, type UseMentionsOptions, useMentions };
@@ -1,2 +1,2 @@
1
- import { n as MentionsVessel, r as useMentions, t as Mentions } from "../../mentions-DMIBCBOd.mjs";
1
+ import { n as MentionsVessel, r as useMentions, t as Mentions } from "../../mentions-BwnyvdXz.mjs";
2
2
  export { Mentions, MentionsVessel, useMentions };
@@ -1,20 +1,38 @@
1
+ import { ComponentProps } from "react";
1
2
  import { Menu as Menu$1 } from "@ark-ui/react/menu";
2
3
  //#region src/components/menu/index.d.ts
3
- type MenuRootProps = Parameters<typeof Menu$1.Root>[0] & {
4
+ type MenuRootProps = ComponentProps<typeof Menu$1.Root> & {
4
5
  /** One rung of the control-height ladder for the vessel's rows. */
5
6
  size?: "sm" | "md" | "lg";
6
7
  };
7
- declare function MenuRoot({ size, ...rest }: MenuRootProps): import("react").JSX.Element;
8
- declare function MenuContent(props: Parameters<typeof Menu$1.Content>[0]): import("react").JSX.Element;
9
- /** Ark's Menu, dressed in the paper-and-ink system: a quiet paper vessel on
10
- * elevation, hover as light on the row, checked items as the flat ink fill.
11
- * The parts — Root, Trigger, ContextTrigger, Indicator, Positioner,
12
- * Content, Item, ItemText, ItemIndicator, ItemGroup, ItemGroupLabel,
13
- * TriggerItem, Separator, Arrow, ArrowTip. Ark's namespace is frozen —
14
- * spread copies the members so Root and Content can be the sized
15
- * wrappers while the rest stay Ark's own parts. */
16
- export declare const Menu: Omit<typeof Menu$1, "Root" | "Content"> & {
8
+ declare function MenuRoot(props: MenuRootProps): import("react").JSX.Element;
9
+ declare function MenuContent(props: ComponentProps<typeof Menu$1.Content>): import("react").JSX.Element;
10
+ /** One plain row in the callable menu; richer checkboxes, radios, and
11
+ * nested menus stay on the anatomy. */
12
+ export interface MenuItemOption {
13
+ label: string;
14
+ value: string;
15
+ disabled?: boolean;
16
+ }
17
+ type MenuPlacement = "top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "left" | "left-start" | "left-end" | "right" | "right-start" | "right-end";
18
+ export interface MenuFacadeProps {
19
+ open?: boolean;
20
+ defaultOpen?: boolean;
21
+ trigger: string;
22
+ items: MenuItemOption[];
23
+ disabled?: boolean;
24
+ placement?: MenuPlacement;
25
+ size?: "sm" | "md" | "lg";
26
+ onSelect?: (value: string) => void;
27
+ onOpenChange?: (open: boolean) => void;
28
+ }
29
+ declare function MenuFacade({ open, defaultOpen, trigger, items, disabled, placement, size, onSelect, onOpenChange }: MenuFacadeProps): import("react").JSX.Element;
30
+ declare namespace MenuFacade {
31
+ var displayName: string;
32
+ }
33
+ type MenuParts = Omit<typeof Menu$1, "Root" | "Content"> & {
17
34
  Root: typeof MenuRoot;
18
35
  Content: typeof MenuContent;
19
36
  };
37
+ export declare const Menu: typeof MenuFacade & MenuParts;
20
38
  //#endregion
@@ -1,5 +1,7 @@
1
- import { injectComponentStyle } from "@bysages/core";
2
- import { jsx } from "react/jsx-runtime";
1
+ import { t as iconNode } from "../../icon-BALgGtNK.mjs";
2
+ import { t as useElementId } from "../../id-C37UYLwJ.mjs";
3
+ import { injectComponentStyle } from "@bysages/core/styling";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
3
5
  import { createContext, useContext } from "react";
4
6
  import { Menu as Menu$1 } from "@ark-ui/react/menu";
5
7
  //#region src/components/menu/index.tsx
@@ -7,10 +9,15 @@ import { Menu as Menu$1 } from "@ark-ui/react/menu";
7
9
  * its own — the vessel (Content) is the element the rung can land on,
8
10
  * and the Portal breaks CSS ancestry between the two. */
9
11
  const MenuSizeContext = createContext("md");
10
- function MenuRoot({ size = "md", ...rest }) {
12
+ function MenuRoot(props) {
13
+ const id = useElementId("menu", props);
14
+ const { size = "md", ...rest } = props;
11
15
  return /* @__PURE__ */ jsx(MenuSizeContext.Provider, {
12
16
  value: size,
13
- children: /* @__PURE__ */ jsx(Menu$1.Root, { ...rest })
17
+ children: /* @__PURE__ */ jsx(Menu$1.Root, {
18
+ ...rest,
19
+ id
20
+ })
14
21
  });
15
22
  }
16
23
  function MenuContent(props) {
@@ -20,18 +27,33 @@ function MenuContent(props) {
20
27
  "data-size": size
21
28
  });
22
29
  }
23
- /** Ark's Menu, dressed in the paper-and-ink system: a quiet paper vessel on
24
- * elevation, hover as light on the row, checked items as the flat ink fill.
25
- * The parts — Root, Trigger, ContextTrigger, Indicator, Positioner,
26
- * Content, Item, ItemText, ItemIndicator, ItemGroup, ItemGroupLabel,
27
- * TriggerItem, Separator, Arrow, ArrowTip. Ark's namespace is frozen —
28
- * spread copies the members so Root and Content can be the sized
29
- * wrappers while the rest stay Ark's own parts. */
30
- const Menu = {
30
+ function MenuFacade({ open, defaultOpen, trigger, items, disabled = false, placement = "bottom-start", size = "md", onSelect, onOpenChange }) {
31
+ return /* @__PURE__ */ jsxs(MenuRoot, {
32
+ size,
33
+ positioning: { placement },
34
+ ...open === void 0 ? {} : { open },
35
+ ...defaultOpen === void 0 ? {} : { defaultOpen },
36
+ onSelect: (details) => onSelect?.(details.value),
37
+ onOpenChange: (details) => onOpenChange?.(details.open),
38
+ children: [/* @__PURE__ */ jsxs(Menu$1.Trigger, {
39
+ disabled,
40
+ children: [trigger, /* @__PURE__ */ jsx(Menu$1.Indicator, { children: iconNode("chevron-down", {
41
+ width: 14,
42
+ height: 14
43
+ }) })]
44
+ }), /* @__PURE__ */ jsx(Menu$1.Positioner, { children: /* @__PURE__ */ jsx(MenuContent, { children: items.map((item) => /* @__PURE__ */ jsx(Menu$1.Item, {
45
+ value: item.value,
46
+ disabled: item.disabled,
47
+ children: item.label
48
+ }, item.value)) }) })]
49
+ });
50
+ }
51
+ MenuFacade.displayName = "SMenu";
52
+ const Menu = Object.assign(MenuFacade, {
31
53
  ...Menu$1,
32
54
  Root: MenuRoot,
33
55
  Content: MenuContent
34
- };
56
+ });
35
57
  injectComponentStyle("menu");
36
58
  //#endregion
37
59
  export { Menu };