@hanzo/ui 8.27.9 → 8.27.11

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 (474) hide show
  1. package/dist/backends/gui/3d-card.cjs +100 -0
  2. package/dist/backends/gui/3d-card.d.ts +59 -0
  3. package/dist/backends/gui/3d-card.d.ts.map +1 -0
  4. package/dist/backends/gui/3d-card.js +92 -0
  5. package/dist/backends/gui/3d-card.js.map +1 -0
  6. package/dist/backends/gui/3d-marquee.cjs +225 -0
  7. package/dist/backends/gui/3d-marquee.d.ts +114 -0
  8. package/dist/backends/gui/3d-marquee.d.ts.map +1 -0
  9. package/dist/backends/gui/3d-marquee.js +190 -0
  10. package/dist/backends/gui/3d-marquee.js.map +1 -0
  11. package/dist/backends/gui/3d-pin.cjs +51 -0
  12. package/dist/backends/gui/3d-pin.d.ts +14 -0
  13. package/dist/backends/gui/3d-pin.d.ts.map +1 -0
  14. package/dist/backends/gui/3d-pin.js +49 -0
  15. package/dist/backends/gui/3d-pin.js.map +1 -0
  16. package/dist/backends/gui/advanced-chart.cjs +61 -0
  17. package/dist/backends/gui/advanced-chart.d.ts +38 -0
  18. package/dist/backends/gui/advanced-chart.d.ts.map +1 -0
  19. package/dist/backends/gui/advanced-chart.js +59 -0
  20. package/dist/backends/gui/advanced-chart.js.map +1 -0
  21. package/dist/backends/gui/alert.cjs +106 -0
  22. package/dist/backends/gui/alert.d.ts +39 -0
  23. package/dist/backends/gui/alert.d.ts.map +1 -0
  24. package/dist/backends/gui/alert.js +102 -0
  25. package/dist/backends/gui/alert.js.map +1 -0
  26. package/dist/backends/gui/android.cjs +52 -0
  27. package/dist/backends/gui/android.d.ts +16 -0
  28. package/dist/backends/gui/android.d.ts.map +1 -0
  29. package/dist/backends/gui/android.js +50 -0
  30. package/dist/backends/gui/android.js.map +1 -0
  31. package/dist/backends/gui/animated-beam.cjs +97 -0
  32. package/dist/backends/gui/animated-beam.d.ts +57 -0
  33. package/dist/backends/gui/animated-beam.d.ts.map +1 -0
  34. package/dist/backends/gui/animated-beam.js +62 -0
  35. package/dist/backends/gui/animated-beam.js.map +1 -0
  36. package/dist/backends/gui/animated-cursor.cjs +183 -0
  37. package/dist/backends/gui/animated-cursor.d.ts +42 -0
  38. package/dist/backends/gui/animated-cursor.d.ts.map +1 -0
  39. package/dist/backends/gui/animated-cursor.js +181 -0
  40. package/dist/backends/gui/animated-cursor.js.map +1 -0
  41. package/dist/backends/gui/animated-testimonials.cjs +109 -0
  42. package/dist/backends/gui/animated-testimonials.d.ts +23 -0
  43. package/dist/backends/gui/animated-testimonials.d.ts.map +1 -0
  44. package/dist/backends/gui/animated-testimonials.js +74 -0
  45. package/dist/backends/gui/animated-testimonials.js.map +1 -0
  46. package/dist/backends/gui/animated-tooltip.cjs +100 -0
  47. package/dist/backends/gui/animated-tooltip.d.ts +15 -0
  48. package/dist/backends/gui/animated-tooltip.d.ts.map +1 -0
  49. package/dist/backends/gui/animated-tooltip.js +65 -0
  50. package/dist/backends/gui/animated-tooltip.js.map +1 -0
  51. package/dist/backends/gui/announcement.cjs +54 -0
  52. package/dist/backends/gui/announcement.d.ts +26 -0
  53. package/dist/backends/gui/announcement.d.ts.map +1 -0
  54. package/dist/backends/gui/announcement.js +52 -0
  55. package/dist/backends/gui/announcement.js.map +1 -0
  56. package/dist/backends/gui/apple-cards-carousel.cjs +198 -0
  57. package/dist/backends/gui/apple-cards-carousel.d.ts +45 -0
  58. package/dist/backends/gui/apple-cards-carousel.d.ts.map +1 -0
  59. package/dist/backends/gui/apple-cards-carousel.js +162 -0
  60. package/dist/backends/gui/apple-cards-carousel.js.map +1 -0
  61. package/dist/backends/gui/apple-hello-effect.cjs +38 -0
  62. package/dist/backends/gui/apple-hello-effect.d.ts +9 -0
  63. package/dist/backends/gui/apple-hello-effect.d.ts.map +1 -0
  64. package/dist/backends/gui/apple-hello-effect.js +36 -0
  65. package/dist/backends/gui/apple-hello-effect.js.map +1 -0
  66. package/dist/backends/gui/banner.cjs +108 -0
  67. package/dist/backends/gui/banner.d.ts +33 -0
  68. package/dist/backends/gui/banner.d.ts.map +1 -0
  69. package/dist/backends/gui/banner.js +106 -0
  70. package/dist/backends/gui/banner.js.map +1 -0
  71. package/dist/backends/gui/calendar.cjs +152 -0
  72. package/dist/backends/gui/calendar.d.ts +41 -0
  73. package/dist/backends/gui/calendar.d.ts.map +1 -0
  74. package/dist/backends/gui/calendar.js +151 -0
  75. package/dist/backends/gui/calendar.js.map +1 -0
  76. package/dist/backends/gui/choicebox.cjs +50 -0
  77. package/dist/backends/gui/choicebox.d.ts +33 -0
  78. package/dist/backends/gui/choicebox.d.ts.map +1 -0
  79. package/dist/backends/gui/choicebox.js +49 -0
  80. package/dist/backends/gui/choicebox.js.map +1 -0
  81. package/dist/backends/gui/code-block.cjs +120 -0
  82. package/dist/backends/gui/code-block.d.ts +22 -0
  83. package/dist/backends/gui/code-block.d.ts.map +1 -0
  84. package/dist/backends/gui/code-block.js +118 -0
  85. package/dist/backends/gui/code-block.js.map +1 -0
  86. package/dist/backends/gui/code-editor.cjs +195 -0
  87. package/dist/backends/gui/code-editor.d.ts +43 -0
  88. package/dist/backends/gui/code-editor.d.ts.map +1 -0
  89. package/dist/backends/gui/code-editor.js +160 -0
  90. package/dist/backends/gui/code-editor.js.map +1 -0
  91. package/dist/backends/gui/code-tabs.cjs +21 -0
  92. package/dist/backends/gui/code-tabs.d.ts +22 -0
  93. package/dist/backends/gui/code-tabs.d.ts.map +1 -0
  94. package/dist/backends/gui/code-tabs.js +19 -0
  95. package/dist/backends/gui/code-tabs.js.map +1 -0
  96. package/dist/backends/gui/color-picker.cjs +141 -0
  97. package/dist/backends/gui/color-picker.d.ts +25 -0
  98. package/dist/backends/gui/color-picker.d.ts.map +1 -0
  99. package/dist/backends/gui/color-picker.js +139 -0
  100. package/dist/backends/gui/color-picker.js.map +1 -0
  101. package/dist/backends/gui/combobox.cjs +42 -0
  102. package/dist/backends/gui/combobox.d.ts +39 -0
  103. package/dist/backends/gui/combobox.d.ts.map +1 -0
  104. package/dist/backends/gui/combobox.js +40 -0
  105. package/dist/backends/gui/combobox.js.map +1 -0
  106. package/dist/backends/gui/company-profile.cjs +43 -0
  107. package/dist/backends/gui/company-profile.d.ts +33 -0
  108. package/dist/backends/gui/company-profile.d.ts.map +1 -0
  109. package/dist/backends/gui/company-profile.js +41 -0
  110. package/dist/backends/gui/company-profile.js.map +1 -0
  111. package/dist/backends/gui/comparison.cjs +39 -0
  112. package/dist/backends/gui/comparison.d.ts +15 -0
  113. package/dist/backends/gui/comparison.d.ts.map +1 -0
  114. package/dist/backends/gui/comparison.js +37 -0
  115. package/dist/backends/gui/comparison.js.map +1 -0
  116. package/dist/backends/gui/credit-card.cjs +80 -0
  117. package/dist/backends/gui/credit-card.d.ts +21 -0
  118. package/dist/backends/gui/credit-card.d.ts.map +1 -0
  119. package/dist/backends/gui/credit-card.js +78 -0
  120. package/dist/backends/gui/credit-card.js.map +1 -0
  121. package/dist/backends/gui/crypto-market.cjs +128 -0
  122. package/dist/backends/gui/crypto-market.d.ts +52 -0
  123. package/dist/backends/gui/crypto-market.d.ts.map +1 -0
  124. package/dist/backends/gui/crypto-market.js +126 -0
  125. package/dist/backends/gui/crypto-market.js.map +1 -0
  126. package/dist/backends/gui/crypto-screener.cjs +45 -0
  127. package/dist/backends/gui/crypto-screener.d.ts +38 -0
  128. package/dist/backends/gui/crypto-screener.d.ts.map +1 -0
  129. package/dist/backends/gui/crypto-screener.js +43 -0
  130. package/dist/backends/gui/crypto-screener.js.map +1 -0
  131. package/dist/backends/gui/cursor.cjs +37 -0
  132. package/dist/backends/gui/cursor.d.ts +17 -0
  133. package/dist/backends/gui/cursor.d.ts.map +1 -0
  134. package/dist/backends/gui/cursor.js +35 -0
  135. package/dist/backends/gui/cursor.js.map +1 -0
  136. package/dist/backends/gui/data-table.cjs +171 -0
  137. package/dist/backends/gui/data-table.d.ts +91 -0
  138. package/dist/backends/gui/data-table.d.ts.map +1 -0
  139. package/dist/backends/gui/data-table.js +169 -0
  140. package/dist/backends/gui/data-table.js.map +1 -0
  141. package/dist/backends/gui/date-picker.cjs +66 -0
  142. package/dist/backends/gui/date-picker.d.ts +29 -0
  143. package/dist/backends/gui/date-picker.d.ts.map +1 -0
  144. package/dist/backends/gui/date-picker.js +64 -0
  145. package/dist/backends/gui/date-picker.js.map +1 -0
  146. package/dist/backends/gui/desktop-spotlight.cjs +46 -0
  147. package/dist/backends/gui/desktop-spotlight.d.ts +34 -0
  148. package/dist/backends/gui/desktop-spotlight.d.ts.map +1 -0
  149. package/dist/backends/gui/desktop-spotlight.js +44 -0
  150. package/dist/backends/gui/desktop-spotlight.js.map +1 -0
  151. package/dist/backends/gui/desktop-window.cjs +180 -0
  152. package/dist/backends/gui/desktop-window.d.ts +51 -0
  153. package/dist/backends/gui/desktop-window.d.ts.map +1 -0
  154. package/dist/backends/gui/desktop-window.js +177 -0
  155. package/dist/backends/gui/desktop-window.js.map +1 -0
  156. package/dist/backends/gui/desktop.cjs +238 -0
  157. package/dist/backends/gui/desktop.d.ts +109 -0
  158. package/dist/backends/gui/desktop.d.ts.map +1 -0
  159. package/dist/backends/gui/desktop.js +199 -0
  160. package/dist/backends/gui/desktop.js.map +1 -0
  161. package/dist/backends/gui/dialog-stack.cjs +26 -0
  162. package/dist/backends/gui/dialog-stack.d.ts +23 -0
  163. package/dist/backends/gui/dialog-stack.d.ts.map +1 -0
  164. package/dist/backends/gui/dialog-stack.js +24 -0
  165. package/dist/backends/gui/dialog-stack.js.map +1 -0
  166. package/dist/backends/gui/dock.cjs +99 -0
  167. package/dist/backends/gui/dock.d.ts +41 -0
  168. package/dist/backends/gui/dock.d.ts.map +1 -0
  169. package/dist/backends/gui/dock.js +96 -0
  170. package/dist/backends/gui/dock.js.map +1 -0
  171. package/dist/backends/gui/dropzone.cjs +142 -0
  172. package/dist/backends/gui/dropzone.d.ts +12 -0
  173. package/dist/backends/gui/dropzone.d.ts.map +1 -0
  174. package/dist/backends/gui/dropzone.js +140 -0
  175. package/dist/backends/gui/dropzone.js.map +1 -0
  176. package/dist/backends/gui/editor.cjs +84 -0
  177. package/dist/backends/gui/editor.d.ts +23 -0
  178. package/dist/backends/gui/editor.d.ts.map +1 -0
  179. package/dist/backends/gui/editor.js +49 -0
  180. package/dist/backends/gui/editor.js.map +1 -0
  181. package/dist/backends/gui/empty.cjs +71 -0
  182. package/dist/backends/gui/empty.d.ts +43 -0
  183. package/dist/backends/gui/empty.d.ts.map +1 -0
  184. package/dist/backends/gui/empty.js +63 -0
  185. package/dist/backends/gui/empty.js.map +1 -0
  186. package/dist/backends/gui/field.cjs +132 -0
  187. package/dist/backends/gui/field.d.ts +74 -0
  188. package/dist/backends/gui/field.d.ts.map +1 -0
  189. package/dist/backends/gui/field.js +121 -0
  190. package/dist/backends/gui/field.js.map +1 -0
  191. package/dist/backends/gui/financials.cjs +45 -0
  192. package/dist/backends/gui/financials.d.ts +36 -0
  193. package/dist/backends/gui/financials.d.ts.map +1 -0
  194. package/dist/backends/gui/financials.js +43 -0
  195. package/dist/backends/gui/financials.js.map +1 -0
  196. package/dist/backends/gui/forex-market.cjs +21 -0
  197. package/dist/backends/gui/forex-market.d.ts +17 -0
  198. package/dist/backends/gui/forex-market.d.ts.map +1 -0
  199. package/dist/backends/gui/forex-market.js +19 -0
  200. package/dist/backends/gui/forex-market.js.map +1 -0
  201. package/dist/backends/gui/forex-screener.cjs +57 -0
  202. package/dist/backends/gui/forex-screener.d.ts +45 -0
  203. package/dist/backends/gui/forex-screener.d.ts.map +1 -0
  204. package/dist/backends/gui/forex-screener.js +55 -0
  205. package/dist/backends/gui/forex-screener.js.map +1 -0
  206. package/dist/backends/gui/gantt.cjs +48 -0
  207. package/dist/backends/gui/gantt.d.ts +18 -0
  208. package/dist/backends/gui/gantt.d.ts.map +1 -0
  209. package/dist/backends/gui/gantt.js +46 -0
  210. package/dist/backends/gui/gantt.js.map +1 -0
  211. package/dist/backends/gui/glimpse.cjs +88 -0
  212. package/dist/backends/gui/glimpse.d.ts +57 -0
  213. package/dist/backends/gui/glimpse.d.ts.map +1 -0
  214. package/dist/backends/gui/glimpse.js +81 -0
  215. package/dist/backends/gui/glimpse.js.map +1 -0
  216. package/dist/backends/gui/grid-pattern.cjs +119 -0
  217. package/dist/backends/gui/grid-pattern.d.ts +96 -0
  218. package/dist/backends/gui/grid-pattern.d.ts.map +1 -0
  219. package/dist/backends/gui/grid-pattern.js +84 -0
  220. package/dist/backends/gui/grid-pattern.js.map +1 -0
  221. package/dist/backends/gui/image-crop.cjs +35 -0
  222. package/dist/backends/gui/image-crop.d.ts +20 -0
  223. package/dist/backends/gui/image-crop.d.ts.map +1 -0
  224. package/dist/backends/gui/image-crop.js +33 -0
  225. package/dist/backends/gui/image-crop.js.map +1 -0
  226. package/dist/backends/gui/image-zoom.cjs +58 -0
  227. package/dist/backends/gui/image-zoom.d.ts +16 -0
  228. package/dist/backends/gui/image-zoom.d.ts.map +1 -0
  229. package/dist/backends/gui/image-zoom.js +56 -0
  230. package/dist/backends/gui/image-zoom.js.map +1 -0
  231. package/dist/backends/gui/index.cjs +266 -1
  232. package/dist/backends/gui/index.d.ts +90 -0
  233. package/dist/backends/gui/index.d.ts.map +1 -1
  234. package/dist/backends/gui/index.js +90 -0
  235. package/dist/backends/gui/index.js.map +1 -1
  236. package/dist/backends/gui/interactive-grid-pattern.cjs +61 -0
  237. package/dist/backends/gui/interactive-grid-pattern.d.ts +28 -0
  238. package/dist/backends/gui/interactive-grid-pattern.d.ts.map +1 -0
  239. package/dist/backends/gui/interactive-grid-pattern.js +26 -0
  240. package/dist/backends/gui/interactive-grid-pattern.js.map +1 -0
  241. package/dist/backends/gui/iphone-15-pro.cjs +83 -0
  242. package/dist/backends/gui/iphone-15-pro.d.ts +16 -0
  243. package/dist/backends/gui/iphone-15-pro.d.ts.map +1 -0
  244. package/dist/backends/gui/iphone-15-pro.js +81 -0
  245. package/dist/backends/gui/iphone-15-pro.js.map +1 -0
  246. package/dist/backends/gui/item.cjs +154 -0
  247. package/dist/backends/gui/item.d.ts +72 -0
  248. package/dist/backends/gui/item.d.ts.map +1 -0
  249. package/dist/backends/gui/item.js +143 -0
  250. package/dist/backends/gui/item.js.map +1 -0
  251. package/dist/backends/gui/kanban.cjs +247 -0
  252. package/dist/backends/gui/kanban.d.ts +37 -0
  253. package/dist/backends/gui/kanban.d.ts.map +1 -0
  254. package/dist/backends/gui/kanban.js +212 -0
  255. package/dist/backends/gui/kanban.js.map +1 -0
  256. package/dist/backends/gui/kbd.cjs +45 -0
  257. package/dist/backends/gui/kbd.d.ts +8 -0
  258. package/dist/backends/gui/kbd.d.ts.map +1 -0
  259. package/dist/backends/gui/kbd.js +42 -0
  260. package/dist/backends/gui/kbd.js.map +1 -0
  261. package/dist/backends/gui/limelight-nav.cjs +201 -0
  262. package/dist/backends/gui/limelight-nav.d.ts +20 -0
  263. package/dist/backends/gui/limelight-nav.d.ts.map +1 -0
  264. package/dist/backends/gui/limelight-nav.js +166 -0
  265. package/dist/backends/gui/limelight-nav.js.map +1 -0
  266. package/dist/backends/gui/list.cjs +26 -0
  267. package/dist/backends/gui/list.d.ts +15 -0
  268. package/dist/backends/gui/list.d.ts.map +1 -0
  269. package/dist/backends/gui/list.js +23 -0
  270. package/dist/backends/gui/list.js.map +1 -0
  271. package/dist/backends/gui/macos-dock.cjs +84 -0
  272. package/dist/backends/gui/macos-dock.d.ts +30 -0
  273. package/dist/backends/gui/macos-dock.d.ts.map +1 -0
  274. package/dist/backends/gui/macos-dock.js +82 -0
  275. package/dist/backends/gui/macos-dock.js.map +1 -0
  276. package/dist/backends/gui/magnetic.cjs +40 -0
  277. package/dist/backends/gui/magnetic.d.ts +12 -0
  278. package/dist/backends/gui/magnetic.d.ts.map +1 -0
  279. package/dist/backends/gui/magnetic.js +38 -0
  280. package/dist/backends/gui/magnetic.js.map +1 -0
  281. package/dist/backends/gui/marquee.cjs +110 -0
  282. package/dist/backends/gui/marquee.d.ts +44 -0
  283. package/dist/backends/gui/marquee.d.ts.map +1 -0
  284. package/dist/backends/gui/marquee.js +75 -0
  285. package/dist/backends/gui/marquee.js.map +1 -0
  286. package/dist/backends/gui/menu-dock.cjs +64 -0
  287. package/dist/backends/gui/menu-dock.d.ts +21 -0
  288. package/dist/backends/gui/menu-dock.d.ts.map +1 -0
  289. package/dist/backends/gui/menu-dock.js +62 -0
  290. package/dist/backends/gui/menu-dock.js.map +1 -0
  291. package/dist/backends/gui/menubar.cjs +227 -0
  292. package/dist/backends/gui/menubar.d.ts +106 -0
  293. package/dist/backends/gui/menubar.d.ts.map +1 -0
  294. package/dist/backends/gui/menubar.js +177 -0
  295. package/dist/backends/gui/menubar.js.map +1 -0
  296. package/dist/backends/gui/message-dock.cjs +111 -0
  297. package/dist/backends/gui/message-dock.d.ts +22 -0
  298. package/dist/backends/gui/message-dock.d.ts.map +1 -0
  299. package/dist/backends/gui/message-dock.js +110 -0
  300. package/dist/backends/gui/message-dock.js.map +1 -0
  301. package/dist/backends/gui/mini-calendar.cjs +25 -0
  302. package/dist/backends/gui/mini-calendar.d.ts +22 -0
  303. package/dist/backends/gui/mini-calendar.d.ts.map +1 -0
  304. package/dist/backends/gui/mini-calendar.js +24 -0
  305. package/dist/backends/gui/mini-calendar.js.map +1 -0
  306. package/dist/backends/gui/minimal-tiptap.cjs +56 -0
  307. package/dist/backends/gui/minimal-tiptap.d.ts +20 -0
  308. package/dist/backends/gui/minimal-tiptap.d.ts.map +1 -0
  309. package/dist/backends/gui/minimal-tiptap.js +21 -0
  310. package/dist/backends/gui/minimal-tiptap.js.map +1 -0
  311. package/dist/backends/gui/motion-highlight.cjs +83 -0
  312. package/dist/backends/gui/motion-highlight.d.ts +27 -0
  313. package/dist/backends/gui/motion-highlight.d.ts.map +1 -0
  314. package/dist/backends/gui/motion-highlight.js +48 -0
  315. package/dist/backends/gui/motion-highlight.js.map +1 -0
  316. package/dist/backends/gui/navigation-bar.cjs +47 -0
  317. package/dist/backends/gui/navigation-bar.d.ts +48 -0
  318. package/dist/backends/gui/navigation-bar.d.ts.map +1 -0
  319. package/dist/backends/gui/navigation-bar.js +45 -0
  320. package/dist/backends/gui/navigation-bar.js.map +1 -0
  321. package/dist/backends/gui/news-timeline.cjs +47 -0
  322. package/dist/backends/gui/news-timeline.d.ts +39 -0
  323. package/dist/backends/gui/news-timeline.d.ts.map +1 -0
  324. package/dist/backends/gui/news-timeline.js +45 -0
  325. package/dist/backends/gui/news-timeline.js.map +1 -0
  326. package/dist/backends/gui/order-entry.cjs +53 -0
  327. package/dist/backends/gui/order-entry.d.ts +21 -0
  328. package/dist/backends/gui/order-entry.d.ts.map +1 -0
  329. package/dist/backends/gui/order-entry.js +52 -0
  330. package/dist/backends/gui/order-entry.js.map +1 -0
  331. package/dist/backends/gui/orders-history.cjs +102 -0
  332. package/dist/backends/gui/orders-history.d.ts +24 -0
  333. package/dist/backends/gui/orders-history.d.ts.map +1 -0
  334. package/dist/backends/gui/orders-history.js +67 -0
  335. package/dist/backends/gui/orders-history.js.map +1 -0
  336. package/dist/backends/gui/pagination.cjs +51 -0
  337. package/dist/backends/gui/pagination.d.ts +52 -0
  338. package/dist/backends/gui/pagination.d.ts.map +1 -0
  339. package/dist/backends/gui/pagination.js +42 -0
  340. package/dist/backends/gui/pagination.js.map +1 -0
  341. package/dist/backends/gui/particles-background.cjs +135 -0
  342. package/dist/backends/gui/particles-background.d.ts +24 -0
  343. package/dist/backends/gui/particles-background.d.ts.map +1 -0
  344. package/dist/backends/gui/particles-background.js +133 -0
  345. package/dist/backends/gui/particles-background.js.map +1 -0
  346. package/dist/backends/gui/particles.cjs +145 -0
  347. package/dist/backends/gui/particles.d.ts +25 -0
  348. package/dist/backends/gui/particles.d.ts.map +1 -0
  349. package/dist/backends/gui/particles.js +143 -0
  350. package/dist/backends/gui/particles.js.map +1 -0
  351. package/dist/backends/gui/pill.cjs +82 -0
  352. package/dist/backends/gui/pill.d.ts +12 -0
  353. package/dist/backends/gui/pill.d.ts.map +1 -0
  354. package/dist/backends/gui/pill.js +78 -0
  355. package/dist/backends/gui/pill.js.map +1 -0
  356. package/dist/backends/gui/pin-list.cjs +82 -0
  357. package/dist/backends/gui/pin-list.d.ts +42 -0
  358. package/dist/backends/gui/pin-list.d.ts.map +1 -0
  359. package/dist/backends/gui/pin-list.js +80 -0
  360. package/dist/backends/gui/pin-list.js.map +1 -0
  361. package/dist/backends/gui/pixel-image.cjs +63 -0
  362. package/dist/backends/gui/pixel-image.d.ts +21 -0
  363. package/dist/backends/gui/pixel-image.d.ts.map +1 -0
  364. package/dist/backends/gui/pixel-image.js +61 -0
  365. package/dist/backends/gui/pixel-image.js.map +1 -0
  366. package/dist/backends/gui/positions-list.cjs +60 -0
  367. package/dist/backends/gui/positions-list.d.ts +14 -0
  368. package/dist/backends/gui/positions-list.d.ts.map +1 -0
  369. package/dist/backends/gui/positions-list.js +58 -0
  370. package/dist/backends/gui/positions-list.js.map +1 -0
  371. package/dist/backends/gui/qr-code.cjs +438 -0
  372. package/dist/backends/gui/qr-code.d.ts +42 -0
  373. package/dist/backends/gui/qr-code.d.ts.map +1 -0
  374. package/dist/backends/gui/qr-code.js +402 -0
  375. package/dist/backends/gui/qr-code.js.map +1 -0
  376. package/dist/backends/gui/relative-time.cjs +167 -0
  377. package/dist/backends/gui/relative-time.d.ts +10 -0
  378. package/dist/backends/gui/relative-time.d.ts.map +1 -0
  379. package/dist/backends/gui/relative-time.js +132 -0
  380. package/dist/backends/gui/relative-time.js.map +1 -0
  381. package/dist/backends/gui/safari.cjs +65 -0
  382. package/dist/backends/gui/safari.d.ts +23 -0
  383. package/dist/backends/gui/safari.d.ts.map +1 -0
  384. package/dist/backends/gui/safari.js +63 -0
  385. package/dist/backends/gui/safari.js.map +1 -0
  386. package/dist/backends/gui/snippet.cjs +144 -0
  387. package/dist/backends/gui/snippet.d.ts +38 -0
  388. package/dist/backends/gui/snippet.d.ts.map +1 -0
  389. package/dist/backends/gui/snippet.js +141 -0
  390. package/dist/backends/gui/snippet.js.map +1 -0
  391. package/dist/backends/gui/stars-scrolling-wheel.cjs +106 -0
  392. package/dist/backends/gui/stars-scrolling-wheel.d.ts +24 -0
  393. package/dist/backends/gui/stars-scrolling-wheel.d.ts.map +1 -0
  394. package/dist/backends/gui/stars-scrolling-wheel.js +104 -0
  395. package/dist/backends/gui/stars-scrolling-wheel.js.map +1 -0
  396. package/dist/backends/gui/status.cjs +79 -0
  397. package/dist/backends/gui/status.d.ts +15 -0
  398. package/dist/backends/gui/status.d.ts.map +1 -0
  399. package/dist/backends/gui/status.js +77 -0
  400. package/dist/backends/gui/status.js.map +1 -0
  401. package/dist/backends/gui/stock-market.cjs +21 -0
  402. package/dist/backends/gui/stock-market.d.ts +17 -0
  403. package/dist/backends/gui/stock-market.d.ts.map +1 -0
  404. package/dist/backends/gui/stock-market.js +19 -0
  405. package/dist/backends/gui/stock-market.js.map +1 -0
  406. package/dist/backends/gui/stock-screener.cjs +55 -0
  407. package/dist/backends/gui/stock-screener.d.ts +41 -0
  408. package/dist/backends/gui/stock-screener.d.ts.map +1 -0
  409. package/dist/backends/gui/stock-screener.js +53 -0
  410. package/dist/backends/gui/stock-screener.js.map +1 -0
  411. package/dist/backends/gui/symbol-info.cjs +46 -0
  412. package/dist/backends/gui/symbol-info.d.ts +36 -0
  413. package/dist/backends/gui/symbol-info.d.ts.map +1 -0
  414. package/dist/backends/gui/symbol-info.js +44 -0
  415. package/dist/backends/gui/symbol-info.js.map +1 -0
  416. package/dist/backends/gui/table.cjs +104 -0
  417. package/dist/backends/gui/table.d.ts +57 -0
  418. package/dist/backends/gui/table.d.ts.map +1 -0
  419. package/dist/backends/gui/table.js +95 -0
  420. package/dist/backends/gui/table.js.map +1 -0
  421. package/dist/backends/gui/tags.cjs +22 -0
  422. package/dist/backends/gui/tags.d.ts +22 -0
  423. package/dist/backends/gui/tags.d.ts.map +1 -0
  424. package/dist/backends/gui/tags.js +20 -0
  425. package/dist/backends/gui/tags.js.map +1 -0
  426. package/dist/backends/gui/technical-analysis.cjs +58 -0
  427. package/dist/backends/gui/technical-analysis.d.ts +41 -0
  428. package/dist/backends/gui/technical-analysis.d.ts.map +1 -0
  429. package/dist/backends/gui/technical-analysis.js +56 -0
  430. package/dist/backends/gui/technical-analysis.js.map +1 -0
  431. package/dist/backends/gui/terminal.cjs +266 -0
  432. package/dist/backends/gui/terminal.d.ts +38 -0
  433. package/dist/backends/gui/terminal.d.ts.map +1 -0
  434. package/dist/backends/gui/terminal.js +231 -0
  435. package/dist/backends/gui/terminal.js.map +1 -0
  436. package/dist/backends/gui/ticker.cjs +79 -0
  437. package/dist/backends/gui/ticker.d.ts +19 -0
  438. package/dist/backends/gui/ticker.d.ts.map +1 -0
  439. package/dist/backends/gui/ticker.js +44 -0
  440. package/dist/backends/gui/ticker.js.map +1 -0
  441. package/dist/backends/gui/timeline.cjs +154 -0
  442. package/dist/backends/gui/timeline.d.ts +42 -0
  443. package/dist/backends/gui/timeline.d.ts.map +1 -0
  444. package/dist/backends/gui/timeline.js +118 -0
  445. package/dist/backends/gui/timeline.js.map +1 -0
  446. package/dist/backends/gui/toggle.cjs +96 -0
  447. package/dist/backends/gui/toggle.d.ts +29 -0
  448. package/dist/backends/gui/toggle.d.ts.map +1 -0
  449. package/dist/backends/gui/toggle.js +95 -0
  450. package/dist/backends/gui/toggle.js.map +1 -0
  451. package/dist/backends/gui/video-player.cjs +383 -0
  452. package/dist/backends/gui/video-player.d.ts +54 -0
  453. package/dist/backends/gui/video-player.d.ts.map +1 -0
  454. package/dist/backends/gui/video-player.js +348 -0
  455. package/dist/backends/gui/video-player.js.map +1 -0
  456. package/dist/chat/Composer.cjs +10 -10
  457. package/dist/chat/Composer.d.ts +16 -17
  458. package/dist/chat/Composer.d.ts.map +1 -1
  459. package/dist/chat/Composer.js +11 -11
  460. package/dist/chat/Composer.js.map +1 -1
  461. package/dist/gallery.cjs +180 -1
  462. package/dist/gallery.d.ts.map +1 -1
  463. package/dist/gallery.html +391 -3
  464. package/dist/gallery.js +181 -2
  465. package/dist/gallery.js.map +1 -1
  466. package/dist/index.cjs +179 -1
  467. package/dist/index.d.ts +1 -0
  468. package/dist/index.d.ts.map +1 -1
  469. package/dist/index.js +3 -0
  470. package/dist/index.js.map +1 -1
  471. package/dist/index.node.cjs +179 -1
  472. package/dist/index.node.js +3 -0
  473. package/dist/styles.css +356 -0
  474. package/package.json +1 -1
@@ -0,0 +1,110 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.Marquee = void 0;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ /**
40
+ * Marquee — an endless horizontal or vertical ticker.
41
+ *
42
+ * `children` is laid out `repeat` times as a group, the group is rendered
43
+ * twice back to back, and one keyframe slides the pair by exactly half its own
44
+ * length, so the second copy lands where the first began and the seam never
45
+ * shows. A reader hears one copy: every other is `aria-hidden`. Duration comes
46
+ * from the rendered track's length over `speed` (px/s), so a long set of items
47
+ * moves at the same pace as a short one.
48
+ *
49
+ * The keyframes ride along as a hoisted `<style>`: React keys it by `href`, so
50
+ * any number of marquees on a page emit it once.
51
+ */
52
+ const gui_1 = require("@hanzo/gui");
53
+ const React = __importStar(require("react"));
54
+ const sx_1 = require("../../sx.cjs");
55
+ const ink_1 = require("./ink.cjs");
56
+ const slot_1 = require("./slot.cjs");
57
+ const Frame = (0, gui_1.styled)(gui_1.XStack, {
58
+ name: 'Marquee',
59
+ position: 'relative',
60
+ overflow: 'hidden',
61
+ width: '100%',
62
+ });
63
+ const KEYFRAMES = `
64
+ @keyframes marquee-x { to { transform: translateX(-50%) } }
65
+ @keyframes marquee-y { to { transform: translateY(-50%) } }
66
+ [data-slot="marquee"][data-pause-hover]:hover [data-slot="marquee-track"] { animation-play-state: paused }
67
+ @media (prefers-reduced-motion: reduce) {
68
+ [data-slot="marquee-track"] { animation: none !important }
69
+ }
70
+ `;
71
+ const UNMEASURED = { stage: 0, track: 0 };
72
+ /** The DOM box behind a ref, if there is one; a native view has none. */
73
+ const box = (el) => typeof HTMLElement !== 'undefined' && el instanceof HTMLElement ? el : null;
74
+ exports.Marquee = React.forwardRef(({ children, repeat = 2, reverse = false, pauseOnHover = false, vertical = false, speed = 50, gap = 0, className, style, ...props }, ref) => {
75
+ const Axis = vertical ? gui_1.YStack : gui_1.XStack;
76
+ const stageRef = React.useRef(null);
77
+ const trackRef = React.useRef(null);
78
+ const [span, setSpan] = React.useState(UNMEASURED);
79
+ React.useEffect(() => {
80
+ const along = (el) => {
81
+ const b = box(el);
82
+ return b ? (vertical ? b.offsetHeight : b.offsetWidth) : 0;
83
+ };
84
+ const measure = () => {
85
+ const next = { stage: along(stageRef.current), track: along(trackRef.current) };
86
+ setSpan((s) => (s.stage === next.stage && s.track === next.track ? s : next));
87
+ };
88
+ measure();
89
+ if (typeof ResizeObserver === 'undefined') {
90
+ window.addEventListener('resize', measure);
91
+ return () => window.removeEventListener('resize', measure);
92
+ }
93
+ const observer = new ResizeObserver(measure);
94
+ const b = box(trackRef.current);
95
+ if (b)
96
+ observer.observe(b);
97
+ return () => observer.disconnect();
98
+ }, [vertical, children, repeat, gap]);
99
+ const duration = span.track > 0 ? span.track / 2 / speed : 20;
100
+ const group = (hidden) => ((0, jsx_runtime_1.jsx)(Axis, { ...(0, slot_1.slot)('marquee-group'), shrink: 0, items: "center", gap: gap, ...(vertical ? { pb: gap } : { pr: gap }), children: Array.from({ length: repeat }, (_, i) => ((0, jsx_runtime_1.jsx)(Axis, { "aria-hidden": hidden || undefined, ...(0, slot_1.slot)('marquee-item'), shrink: 0, children: (0, ink_1.ink)(children) }, i))) }));
101
+ return ((0, jsx_runtime_1.jsxs)(Frame, { ref: ref, ...(0, slot_1.slot)('marquee'), "data-pause-hover": pauseOnHover || undefined, style: style, ...(0, sx_1.sx)(className), ...props, children: [(0, jsx_runtime_1.jsx)("style", { href: "marquee", precedence: "default", children: KEYFRAMES }), (0, jsx_runtime_1.jsx)(Axis, { ref: stageRef, ...(0, slot_1.slot)('marquee-stage'), width: "100%", height: "100%", children: (0, jsx_runtime_1.jsxs)(Axis, { ref: trackRef, ...(0, slot_1.slot)('marquee-track'), shrink: 0, style: {
102
+ willChange: 'transform',
103
+ animationName: `marquee-${vertical ? 'y' : 'x'}`,
104
+ animationDuration: `${duration}s`,
105
+ animationTimingFunction: 'linear',
106
+ animationIterationCount: 'infinite',
107
+ animationDirection: reverse ? 'reverse' : 'normal',
108
+ }, children: [group(false), group(true)] }) })] }));
109
+ });
110
+ exports.Marquee.displayName = 'Marquee';
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Marquee — an endless horizontal or vertical ticker.
3
+ *
4
+ * `children` is laid out `repeat` times as a group, the group is rendered
5
+ * twice back to back, and one keyframe slides the pair by exactly half its own
6
+ * length, so the second copy lands where the first began and the seam never
7
+ * shows. A reader hears one copy: every other is `aria-hidden`. Duration comes
8
+ * from the rendered track's length over `speed` (px/s), so a long set of items
9
+ * moves at the same pace as a short one.
10
+ *
11
+ * The keyframes ride along as a hoisted `<style>`: React keys it by `href`, so
12
+ * any number of marquees on a page emit it once.
13
+ */
14
+ import { type GuiElement } from '@hanzo/gui';
15
+ import * as React from 'react';
16
+ export type MarqueeProps = Omit<React.ComponentPropsWithoutRef<'div'>, 'children' | 'style'> & {
17
+ children: React.ReactNode;
18
+ /** How many times `children` is laid out per loop. */
19
+ repeat?: number;
20
+ /** Run the track backwards. */
21
+ reverse?: boolean;
22
+ pauseOnHover?: boolean;
23
+ vertical?: boolean;
24
+ /** Track travel, px/s. */
25
+ speed?: number;
26
+ /** Space between copies, px — across the loop's seam too. */
27
+ gap?: number;
28
+ style?: React.CSSProperties;
29
+ };
30
+ export declare const Marquee: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "children" | "style"> & {
31
+ children: React.ReactNode;
32
+ /** How many times `children` is laid out per loop. */
33
+ repeat?: number;
34
+ /** Run the track backwards. */
35
+ reverse?: boolean;
36
+ pauseOnHover?: boolean;
37
+ vertical?: boolean;
38
+ /** Track travel, px/s. */
39
+ speed?: number;
40
+ /** Space between copies, px — across the loop's seam too. */
41
+ gap?: number;
42
+ style?: React.CSSProperties;
43
+ } & React.RefAttributes<GuiElement>>;
44
+ //# sourceMappingURL=marquee.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marquee.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/marquee.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAqB9B,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;IAC7F,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC5B,CAAA;AASD,eAAO,MAAM,OAAO;cArBR,KAAK,CAAC,SAAS;IACzB,sDAAsD;aAC7C,MAAM;IACf,+BAA+B;cACrB,OAAO;mBACF,OAAO;eACX,OAAO;IAClB,0BAA0B;YAClB,MAAM;IACd,6DAA6D;UACvD,MAAM;YACJ,KAAK,CAAC,aAAa;oCAuG5B,CAAA"}
@@ -0,0 +1,75 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * Marquee — an endless horizontal or vertical ticker.
5
+ *
6
+ * `children` is laid out `repeat` times as a group, the group is rendered
7
+ * twice back to back, and one keyframe slides the pair by exactly half its own
8
+ * length, so the second copy lands where the first began and the seam never
9
+ * shows. A reader hears one copy: every other is `aria-hidden`. Duration comes
10
+ * from the rendered track's length over `speed` (px/s), so a long set of items
11
+ * moves at the same pace as a short one.
12
+ *
13
+ * The keyframes ride along as a hoisted `<style>`: React keys it by `href`, so
14
+ * any number of marquees on a page emit it once.
15
+ */
16
+ import { XStack, YStack, styled } from '@hanzo/gui';
17
+ import * as React from 'react';
18
+ import { sx } from '../../sx.js';
19
+ import { ink } from './ink.js';
20
+ import { slot } from './slot.js';
21
+ const Frame = styled(XStack, {
22
+ name: 'Marquee',
23
+ position: 'relative',
24
+ overflow: 'hidden',
25
+ width: '100%',
26
+ });
27
+ const KEYFRAMES = `
28
+ @keyframes marquee-x { to { transform: translateX(-50%) } }
29
+ @keyframes marquee-y { to { transform: translateY(-50%) } }
30
+ [data-slot="marquee"][data-pause-hover]:hover [data-slot="marquee-track"] { animation-play-state: paused }
31
+ @media (prefers-reduced-motion: reduce) {
32
+ [data-slot="marquee-track"] { animation: none !important }
33
+ }
34
+ `;
35
+ const UNMEASURED = { stage: 0, track: 0 };
36
+ /** The DOM box behind a ref, if there is one; a native view has none. */
37
+ const box = (el) => typeof HTMLElement !== 'undefined' && el instanceof HTMLElement ? el : null;
38
+ export const Marquee = React.forwardRef(({ children, repeat = 2, reverse = false, pauseOnHover = false, vertical = false, speed = 50, gap = 0, className, style, ...props }, ref) => {
39
+ const Axis = vertical ? YStack : XStack;
40
+ const stageRef = React.useRef(null);
41
+ const trackRef = React.useRef(null);
42
+ const [span, setSpan] = React.useState(UNMEASURED);
43
+ React.useEffect(() => {
44
+ const along = (el) => {
45
+ const b = box(el);
46
+ return b ? (vertical ? b.offsetHeight : b.offsetWidth) : 0;
47
+ };
48
+ const measure = () => {
49
+ const next = { stage: along(stageRef.current), track: along(trackRef.current) };
50
+ setSpan((s) => (s.stage === next.stage && s.track === next.track ? s : next));
51
+ };
52
+ measure();
53
+ if (typeof ResizeObserver === 'undefined') {
54
+ window.addEventListener('resize', measure);
55
+ return () => window.removeEventListener('resize', measure);
56
+ }
57
+ const observer = new ResizeObserver(measure);
58
+ const b = box(trackRef.current);
59
+ if (b)
60
+ observer.observe(b);
61
+ return () => observer.disconnect();
62
+ }, [vertical, children, repeat, gap]);
63
+ const duration = span.track > 0 ? span.track / 2 / speed : 20;
64
+ const group = (hidden) => (_jsx(Axis, { ...slot('marquee-group'), shrink: 0, items: "center", gap: gap, ...(vertical ? { pb: gap } : { pr: gap }), children: Array.from({ length: repeat }, (_, i) => (_jsx(Axis, { "aria-hidden": hidden || undefined, ...slot('marquee-item'), shrink: 0, children: ink(children) }, i))) }));
65
+ return (_jsxs(Frame, { ref: ref, ...slot('marquee'), "data-pause-hover": pauseOnHover || undefined, style: style, ...sx(className), ...props, children: [_jsx("style", { href: "marquee", precedence: "default", children: KEYFRAMES }), _jsx(Axis, { ref: stageRef, ...slot('marquee-stage'), width: "100%", height: "100%", children: _jsxs(Axis, { ref: trackRef, ...slot('marquee-track'), shrink: 0, style: {
66
+ willChange: 'transform',
67
+ animationName: `marquee-${vertical ? 'y' : 'x'}`,
68
+ animationDuration: `${duration}s`,
69
+ animationTimingFunction: 'linear',
70
+ animationIterationCount: 'infinite',
71
+ animationDirection: reverse ? 'reverse' : 'normal',
72
+ }, children: [group(false), group(true)] }) })] }));
73
+ });
74
+ Marquee.displayName = 'Marquee';
75
+ //# sourceMappingURL=marquee.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marquee.js","sourceRoot":"","sources":["../../../src/backends/gui/marquee.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.MenuDock = MenuDock;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ /**
7
+ * MenuDock — a pill of icon buttons, laid out as a row or a column, each one
8
+ * showing its label as a tooltip on hover and a filled treatment when active.
9
+ *
10
+ * Unlike `Dock`, there is no pointer-distance magnification: an item is either
11
+ * `active` or not, and the whole thing is one `items` array rather than a set
12
+ * of composed children — the shape a navigation rail or a bottom tab bar wants.
13
+ */
14
+ const gui_1 = require("@hanzo/gui");
15
+ const react_1 = require("react");
16
+ const sx_1 = require("../../sx.cjs");
17
+ const ink_1 = require("./ink.cjs");
18
+ const slot_1 = require("./slot.cjs");
19
+ const gesture_1 = require("./gesture.cjs");
20
+ const ITEM_SIZE = 44;
21
+ const Frame = (0, gui_1.styled)(gui_1.XStack, {
22
+ name: 'MenuDock',
23
+ gap: '$2',
24
+ p: '$2',
25
+ rounded: '$10',
26
+ borderWidth: 1,
27
+ borderColor: '$borderColor',
28
+ bg: '$panel',
29
+ shadowColor: '$dim',
30
+ shadowRadius: 24,
31
+ shadowOpacity: 0.25,
32
+ variants: {
33
+ orientation: {
34
+ horizontal: { flexDirection: 'row' },
35
+ vertical: { flexDirection: 'column' },
36
+ },
37
+ },
38
+ defaultVariants: { orientation: 'horizontal' },
39
+ });
40
+ const ItemFrame = (0, gui_1.styled)(gui_1.XStack, {
41
+ name: 'MenuDockItem',
42
+ items: 'center',
43
+ justify: 'center',
44
+ width: ITEM_SIZE,
45
+ height: ITEM_SIZE,
46
+ rounded: '$10',
47
+ bg: 'transparent',
48
+ cursor: 'pointer',
49
+ hoverStyle: { bg: '$hover' },
50
+ variants: {
51
+ active: {
52
+ true: { bg: '$ink', hoverStyle: { bg: '$ink' } },
53
+ },
54
+ },
55
+ });
56
+ function MenuDockButton({ item, orientation, }) {
57
+ const [hovered, setHovered] = (0, react_1.useState)(false);
58
+ return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('menu-dock-item-wrap'), position: "relative", items: "center", children: [hovered ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('menu-dock-tooltip'), position: "absolute", ...(orientation === 'vertical'
59
+ ? { l: '100%', ml: '$2', t: '50%', style: { transform: 'translateY(-50%)' } }
60
+ : { b: '100%', mb: '$2', self: 'center' }), px: "$2", py: "$1", rounded: "$3", bg: "$ink", style: { ...(orientation === 'vertical' ? { transform: 'translateY(-50%)' } : {}), whiteSpace: 'nowrap' }, children: (0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$1", color: "$sunken", children: item.label }) })) : null, (0, jsx_runtime_1.jsxs)(ItemFrame, { ...(0, slot_1.slot)('menu-dock-item'), "data-active": item.active ? 'true' : 'false', render: "button", ...{ type: 'button' }, active: item.active, onClick: item.onClick, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false), ...(0, slot_1.tip)(item.label), ...(0, gesture_1.touch)(ITEM_SIZE, 44), children: [(0, ink_1.ink)(item.icon), (0, jsx_runtime_1.jsx)(gui_1.SizableText, { ...(0, slot_1.slot)('menu-dock-item-label'), size: "$1", style: { position: 'absolute', width: 1, height: 1, overflow: 'hidden', clip: 'rect(0 0 0 0)' }, children: item.label })] })] }));
61
+ }
62
+ function MenuDock({ className, items, orientation = 'horizontal', ...props }) {
63
+ return ((0, jsx_runtime_1.jsx)(Frame, { ...(0, slot_1.slot)('menu-dock'), "data-orientation": orientation, orientation: orientation, ...(0, sx_1.sx)(className), ...props, children: items.map((item, index) => ((0, jsx_runtime_1.jsx)(react_1.Fragment, { children: (0, jsx_runtime_1.jsx)(MenuDockButton, { item: item, orientation: orientation }) }, index))) }));
64
+ }
@@ -0,0 +1,21 @@
1
+ import { type ComponentProps, type ReactNode } from 'react';
2
+ export type MenuDockOrientation = 'horizontal' | 'vertical';
3
+ export type MenuDockItem = {
4
+ icon: ReactNode;
5
+ label: string;
6
+ onClick?: () => void;
7
+ active?: boolean;
8
+ };
9
+ declare const Frame: import("@hanzogui/web").GuiComponent<import("@hanzogui/web").TamaDefer, import("@hanzogui/web").GuiElement, import("@hanzogui/core").RNGuiViewNonStyleProps, import("@hanzogui/web").StackStyleBase, {
10
+ elevation?: number | import("@hanzogui/web").SizeTokens | undefined;
11
+ fullscreen?: boolean | undefined;
12
+ orientation?: "horizontal" | "vertical" | undefined;
13
+ }, import("@hanzogui/web").StaticConfigPublic>;
14
+ export type MenuDockProps = Omit<ComponentProps<typeof Frame>, 'orientation' | 'className' | 'items'> & {
15
+ className?: string;
16
+ items: MenuDockItem[];
17
+ orientation?: MenuDockOrientation;
18
+ };
19
+ export declare function MenuDock({ className, items, orientation, ...props }: MenuDockProps): import("react").JSX.Element;
20
+ export {};
21
+ //# sourceMappingURL=menu-dock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-dock.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/menu-dock.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAA;AAM/E,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,UAAU,CAAA;AAE3D,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAID,QAAA,MAAM,KAAK;;;;8CAoBT,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,OAAO,CAAC,GAAG;IACtG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,WAAW,CAAC,EAAE,mBAAmB,CAAA;CAClC,CAAA;AAqED,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,WAA0B,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,+BAgBjG"}
@@ -0,0 +1,62 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * MenuDock — a pill of icon buttons, laid out as a row or a column, each one
5
+ * showing its label as a tooltip on hover and a filled treatment when active.
6
+ *
7
+ * Unlike `Dock`, there is no pointer-distance magnification: an item is either
8
+ * `active` or not, and the whole thing is one `items` array rather than a set
9
+ * of composed children — the shape a navigation rail or a bottom tab bar wants.
10
+ */
11
+ import { SizableText, XStack, YStack, styled } from '@hanzo/gui';
12
+ import { Fragment, useState } from 'react';
13
+ import { sx } from '../../sx.js';
14
+ import { ink } from './ink.js';
15
+ import { slot, tip } from './slot.js';
16
+ import { touch } from './gesture.js';
17
+ const ITEM_SIZE = 44;
18
+ const Frame = styled(XStack, {
19
+ name: 'MenuDock',
20
+ gap: '$2',
21
+ p: '$2',
22
+ rounded: '$10',
23
+ borderWidth: 1,
24
+ borderColor: '$borderColor',
25
+ bg: '$panel',
26
+ shadowColor: '$dim',
27
+ shadowRadius: 24,
28
+ shadowOpacity: 0.25,
29
+ variants: {
30
+ orientation: {
31
+ horizontal: { flexDirection: 'row' },
32
+ vertical: { flexDirection: 'column' },
33
+ },
34
+ },
35
+ defaultVariants: { orientation: 'horizontal' },
36
+ });
37
+ const ItemFrame = styled(XStack, {
38
+ name: 'MenuDockItem',
39
+ items: 'center',
40
+ justify: 'center',
41
+ width: ITEM_SIZE,
42
+ height: ITEM_SIZE,
43
+ rounded: '$10',
44
+ bg: 'transparent',
45
+ cursor: 'pointer',
46
+ hoverStyle: { bg: '$hover' },
47
+ variants: {
48
+ active: {
49
+ true: { bg: '$ink', hoverStyle: { bg: '$ink' } },
50
+ },
51
+ },
52
+ });
53
+ function MenuDockButton({ item, orientation, }) {
54
+ const [hovered, setHovered] = useState(false);
55
+ return (_jsxs(YStack, { ...slot('menu-dock-item-wrap'), position: "relative", items: "center", children: [hovered ? (_jsx(XStack, { ...slot('menu-dock-tooltip'), position: "absolute", ...(orientation === 'vertical'
56
+ ? { l: '100%', ml: '$2', t: '50%', style: { transform: 'translateY(-50%)' } }
57
+ : { b: '100%', mb: '$2', self: 'center' }), px: "$2", py: "$1", rounded: "$3", bg: "$ink", style: { ...(orientation === 'vertical' ? { transform: 'translateY(-50%)' } : {}), whiteSpace: 'nowrap' }, children: _jsx(SizableText, { size: "$1", color: "$sunken", children: item.label }) })) : null, _jsxs(ItemFrame, { ...slot('menu-dock-item'), "data-active": item.active ? 'true' : 'false', render: "button", ...{ type: 'button' }, active: item.active, onClick: item.onClick, onPointerEnter: () => setHovered(true), onPointerLeave: () => setHovered(false), ...tip(item.label), ...touch(ITEM_SIZE, 44), children: [ink(item.icon), _jsx(SizableText, { ...slot('menu-dock-item-label'), size: "$1", style: { position: 'absolute', width: 1, height: 1, overflow: 'hidden', clip: 'rect(0 0 0 0)' }, children: item.label })] })] }));
58
+ }
59
+ export function MenuDock({ className, items, orientation = 'horizontal', ...props }) {
60
+ return (_jsx(Frame, { ...slot('menu-dock'), "data-orientation": orientation, orientation: orientation, ...sx(className), ...props, children: items.map((item, index) => (_jsx(Fragment, { children: _jsx(MenuDockButton, { item: item, orientation: orientation }) }, index))) }));
61
+ }
62
+ //# sourceMappingURL=menu-dock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-dock.js","sourceRoot":"","sources":["../../../src/backends/gui/menu-dock.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.MenubarRadioGroup = exports.MenubarSubTrigger = exports.MenubarSubContent = exports.MenubarSub = exports.MenubarPortal = exports.MenubarGroup = exports.MenubarSeparator = exports.MenubarLabel = exports.MenubarRadioItem = exports.MenubarCheckboxItem = exports.MenubarItem = exports.MenubarContent = exports.MenubarTrigger = void 0;
38
+ exports.Menubar = Menubar;
39
+ exports.MenubarMenu = MenubarMenu;
40
+ exports.MenubarShortcut = MenubarShortcut;
41
+ const jsx_runtime_1 = require("react/jsx-runtime");
42
+ /**
43
+ * Menubar — a persistent row of pull-down menus, the kind a desktop app keeps
44
+ * across the top of its window (File, Edit, View, ...).
45
+ *
46
+ * Each `MenubarMenu` is its own `@hanzo/gui` `Menu`, so a single trigger click
47
+ * opens a real menu with the full compound surface (items, checkbox items, a
48
+ * radio group, separators, a label, a submenu) and every a11y/dismiss/typeahead
49
+ * behaviour that `Menu` already has. What THIS file adds on top, because a row
50
+ * of independent menus is not yet a menubar, is the coordination between them:
51
+ * one open menu at a time, hovering a sibling trigger while a menu is open
52
+ * switches to it instead of requiring a second click, and the arrow keys rove
53
+ * focus across the triggers (Home/End jump to the first/last). That state lives
54
+ * in one root context, read by `MenubarTrigger` and `MenubarMenu` — neither
55
+ * hand-rolls it a second time.
56
+ *
57
+ * The rows, checkbox rows, radio rows, label, separator and submenu below are
58
+ * the same 32px-row, 8px-gutter, 44px-tap design as `dropdown-menu.tsx` and
59
+ * `context-menu.tsx` — one menu design, not three. `MenubarContent` mounts its
60
+ * own `Menu.Portal` and re-applies the trigger's resolved theme inside it via
61
+ * `PortalTheme` (gui portals re-root the subtree, so React theme context does
62
+ * not otherwise flow there).
63
+ *
64
+ * Cross-platform: gui style props only — no Tailwind class strings, no Radix,
65
+ * no DOM APIs beyond the `data-slot` markers every gui backend component uses
66
+ * to publish its parts for CSS and tests.
67
+ */
68
+ const React = __importStar(require("react"));
69
+ const gui_1 = require("@hanzo/gui");
70
+ const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
71
+ const gesture_1 = require("./gesture.cjs");
72
+ const ink_1 = require("./ink.cjs");
73
+ const slot_1 = require("./slot.cjs");
74
+ const portal_theme_1 = require("../../product/menu/portal-theme.cjs");
75
+ // ── Geometry — the one menu design, restated (module-private in the siblings) ──
76
+ const ROW_H = 32;
77
+ const TAP_MIN = 44;
78
+ const ROW_PX = 8;
79
+ const MIN_W = 192;
80
+ const INSET_PL = 32;
81
+ const INDICATOR_SLOT = 14;
82
+ const ICON = 16;
83
+ const BAR_H = 40;
84
+ const panel = {
85
+ bg: '$panel',
86
+ borderColor: '$borderColor',
87
+ borderWidth: 1,
88
+ rounded: '$4',
89
+ p: 4,
90
+ minW: MIN_W,
91
+ overflow: 'hidden',
92
+ shadowColor: 'rgba(0,0,0,0.45)',
93
+ shadowRadius: 20,
94
+ shadowOffset: { width: 0, height: 10 },
95
+ };
96
+ const row = {
97
+ items: 'center',
98
+ gap: ROW_PX,
99
+ px: ROW_PX,
100
+ minH: ROW_H,
101
+ rounded: '$3',
102
+ select: 'none',
103
+ cursor: 'pointer',
104
+ ...(0, gesture_1.touch)(ROW_H, TAP_MIN, 'y'),
105
+ hoverStyle: { bg: '$raised' },
106
+ focusStyle: { bg: '$raised' },
107
+ pressStyle: { bg: '$rim' },
108
+ };
109
+ /** Row text style — free-form children go through `ink()` so a bare string renders on native. */
110
+ const label = { size: '$2', color: '$ink' };
111
+ /** Trigger text style — same type scale, medium weight to read as a menu title. */
112
+ const triggerLabel = { size: '$2', color: '$ink', fontWeight: '500' };
113
+ /** Left indicator well shared by checkbox + radio rows. */
114
+ const Indicator = ({ children }) => ((0, jsx_runtime_1.jsx)(gui_1.XStack, { position: "absolute", l: ROW_PX, width: INDICATOR_SLOT, height: INDICATOR_SLOT, items: "center", justify: "center", pointerEvents: "none", children: (0, jsx_runtime_1.jsx)(gui_1.Menu.ItemIndicator, { children: children }) }));
115
+ const MenubarContext = /* @__PURE__ */ React.createContext(null);
116
+ /** Which menu a `MenubarMenu` is, read by its `MenubarTrigger`. */
117
+ const MenubarMenuIdContext = /* @__PURE__ */ React.createContext(null);
118
+ // gui puts popper geometry (`offset`, `placement`) on the `Menu` ROOT, while the
119
+ // compound API puts `sideOffset`/`align` on `Content` — one value, one owner:
120
+ // the root holds it, Content publishes into it via these two contexts, freshly
121
+ // scoped per `MenubarMenu` instance. Same split as `dropdown-menu.tsx`.
122
+ const OffsetContext = /* @__PURE__ */ React.createContext(null);
123
+ const PlacementContext = /* @__PURE__ */ React.createContext(null);
124
+ const DEFAULT_OFFSET = 8;
125
+ function Menubar({ value, defaultValue, onValueChange, children, ...props }) {
126
+ const [uncontrolled, setUncontrolled] = React.useState(defaultValue);
127
+ const active = value !== undefined ? value : uncontrolled;
128
+ const setValue = React.useCallback((next) => {
129
+ if (value === undefined)
130
+ setUncontrolled(next);
131
+ onValueChange?.(next);
132
+ }, [value, onValueChange]);
133
+ /** Arrow/Home/End rove the triggers; a live menu follows focus onto the next one. */
134
+ const onKeyDown = (event) => {
135
+ if (!['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key))
136
+ return;
137
+ const root = event.currentTarget;
138
+ const triggers = [...root.querySelectorAll('[data-slot="menubar-trigger"]')];
139
+ const at = triggers.indexOf(document.activeElement);
140
+ if (at === -1)
141
+ return;
142
+ event.preventDefault();
143
+ const next = event.key === 'Home'
144
+ ? 0
145
+ : event.key === 'End'
146
+ ? triggers.length - 1
147
+ : event.key === 'ArrowRight'
148
+ ? (at + 1) % triggers.length
149
+ : (at - 1 + triggers.length) % triggers.length;
150
+ triggers[next]?.focus();
151
+ if (active !== undefined)
152
+ setValue(triggers[next]?.dataset.menubarValue);
153
+ };
154
+ return ((0, jsx_runtime_1.jsx)(MenubarContext.Provider, { value: { value: active, setValue }, children: (0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('menubar'), role: "menubar", items: "center", gap: 4, p: 4, minH: BAR_H, rounded: "$4", borderWidth: 1, borderColor: "$borderColor", bg: "$background", onKeyDown: onKeyDown, ...props, children: children }) }));
155
+ }
156
+ function MenubarMenu({ value, children, ...props }) {
157
+ const root = React.useContext(MenubarContext);
158
+ const auto = React.useId();
159
+ const id = value ?? auto;
160
+ const [offset, setOffset] = React.useState(DEFAULT_OFFSET);
161
+ const [placement, setPlacement] = React.useState(undefined);
162
+ return ((0, jsx_runtime_1.jsx)(MenubarMenuIdContext.Provider, { value: id, children: (0, jsx_runtime_1.jsx)(OffsetContext.Provider, { value: setOffset, children: (0, jsx_runtime_1.jsx)(PlacementContext.Provider, { value: setPlacement, children: (0, jsx_runtime_1.jsx)(gui_1.Menu, { open: root ? root.value === id : undefined, onOpenChange: (open) => root?.setValue(open ? id : undefined), offset: offset, ...(placement ? { placement } : null), ...props, children: children }) }) }) }));
163
+ }
164
+ const MenubarTrigger = /* @__PURE__ */ React.forwardRef(function MenubarTrigger({ children, onMouseEnter, ...props }, ref) {
165
+ const root = React.useContext(MenubarContext);
166
+ const id = React.useContext(MenubarMenuIdContext);
167
+ const open = root != null && id != null && root.value === id;
168
+ return ((0, jsx_runtime_1.jsx)(gui_1.Menu.Trigger, { ref: ref, ...(0, slot_1.slot)('menubar-trigger'), "data-menubar-value": id ?? undefined, "data-state": open ? 'open' : 'closed', tabIndex: 0, items: "center", select: "none", cursor: "pointer", px: 12, minH: ROW_H, rounded: "$3", bg: open ? '$raised' : 'transparent', hoverStyle: { bg: '$raised' }, focusStyle: { bg: '$raised' }, ...(0, gesture_1.touch)(ROW_H, TAP_MIN, 'y'), onMouseEnter: (event) => {
169
+ if (root?.value !== undefined && id != null)
170
+ root.setValue(id);
171
+ onMouseEnter?.(event);
172
+ }, ...props, children: (0, ink_1.ink)(children, undefined, triggerLabel) }));
173
+ });
174
+ exports.MenubarTrigger = MenubarTrigger;
175
+ /** `align`, as the suffix of the floating-ui placement string the root's `Menu` reads. */
176
+ const placementFor = (align) => align && align !== 'center' ? `bottom-${align}` : 'bottom';
177
+ const MenubarContent = /* @__PURE__ */ React.forwardRef(function MenubarContent({ sideOffset = DEFAULT_OFFSET, align = 'start', children, ...props }, ref) {
178
+ const themeName = (0, portal_theme_1.useThemeName)();
179
+ const setOffset = React.useContext(OffsetContext);
180
+ const setPlacement = React.useContext(PlacementContext);
181
+ React.useEffect(() => setOffset?.(sideOffset), [setOffset, sideOffset]);
182
+ React.useEffect(() => setPlacement?.(placementFor(align)), [setPlacement, align]);
183
+ return ((0, jsx_runtime_1.jsx)(gui_1.Menu.Portal, { children: (0, jsx_runtime_1.jsx)(portal_theme_1.PortalTheme, { name: themeName, children: (0, jsx_runtime_1.jsx)(gui_1.Menu.Content, { ref: ref, ...(0, slot_1.slot)('menubar-content'), ...panel, ...props, children: children }) }) }));
184
+ });
185
+ exports.MenubarContent = MenubarContent;
186
+ const MenubarSubContent = /* @__PURE__ */ React.forwardRef(function MenubarSubContent(props, ref) {
187
+ return (0, jsx_runtime_1.jsx)(gui_1.Menu.SubContent, { ref: ref, ...(0, slot_1.slot)('menubar-sub-content'), ...panel, ...props });
188
+ });
189
+ exports.MenubarSubContent = MenubarSubContent;
190
+ const MenubarItem = /* @__PURE__ */ React.forwardRef(function MenubarItem({ inset, variant = 'default', disabled, children, ...props }, ref) {
191
+ return ((0, jsx_runtime_1.jsx)(gui_1.Menu.Item, { ref: ref, ...(0, slot_1.slot)('menubar-item'), "data-inset": inset, "data-variant": variant, disabled: disabled, ...row, pl: inset ? INSET_PL : ROW_PX, theme: variant === 'destructive' ? 'red' : undefined, opacity: disabled ? 0.5 : 1, cursor: disabled ? 'default' : 'pointer', ...props, children: (0, ink_1.ink)(children, undefined, label) }));
192
+ });
193
+ exports.MenubarItem = MenubarItem;
194
+ const MenubarCheckboxItem = /* @__PURE__ */ React.forwardRef(function MenubarCheckboxItem({ children, checked, ...props }, ref) {
195
+ return ((0, jsx_runtime_1.jsxs)(gui_1.Menu.CheckboxItem, { ref: ref, ...(0, slot_1.slot)('menubar-checkbox-item'), checked: checked, ...row, pl: INSET_PL, ...props, children: [(0, jsx_runtime_1.jsx)(Indicator, { children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Check, { size: ICON }) }), (0, ink_1.ink)(children, undefined, label)] }));
196
+ });
197
+ exports.MenubarCheckboxItem = MenubarCheckboxItem;
198
+ const MenubarRadioItem = /* @__PURE__ */ React.forwardRef(function MenubarRadioItem({ children, value, ...props }, ref) {
199
+ return ((0, jsx_runtime_1.jsxs)(gui_1.Menu.RadioItem, { ref: ref, ...(0, slot_1.slot)('menubar-radio-item'), value: value, ...row, pl: INSET_PL, ...props, children: [(0, jsx_runtime_1.jsx)(Indicator, { children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Circle, { size: 8, fill: "currentColor" }) }), (0, ink_1.ink)(children, undefined, label)] }));
200
+ });
201
+ exports.MenubarRadioItem = MenubarRadioItem;
202
+ const MenubarSubTrigger = /* @__PURE__ */ React.forwardRef(function MenubarSubTrigger({ inset, children, ...props }, ref) {
203
+ return ((0, jsx_runtime_1.jsxs)(gui_1.Menu.SubTrigger, { ref: ref, ...(0, slot_1.slot)('menubar-sub-trigger'), "data-inset": inset, ...row, pl: inset ? INSET_PL : ROW_PX, ...props, children: [(0, ink_1.ink)(children, undefined, label), (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ChevronRight, { size: ICON, ml: "auto", opacity: 0.6 })] }));
204
+ });
205
+ exports.MenubarSubTrigger = MenubarSubTrigger;
206
+ // ── Static rows ─────────────────────────────────────────────────────────────────
207
+ const MenubarLabel = /* @__PURE__ */ React.forwardRef(function MenubarLabel({ inset, ...props }, ref) {
208
+ return ((0, jsx_runtime_1.jsx)(gui_1.Menu.Label, { ref: ref, ...(0, slot_1.slot)('menubar-label'), "data-inset": inset, px: ROW_PX, py: 4, pl: inset ? INSET_PL : ROW_PX, fontSize: "$2", fontWeight: "500", color: "$ink", select: "none", ...props }));
209
+ });
210
+ exports.MenubarLabel = MenubarLabel;
211
+ const MenubarSeparator = /* @__PURE__ */ React.forwardRef(function MenubarSeparator(props, ref) {
212
+ return ((0, jsx_runtime_1.jsx)(gui_1.Menu.Separator, { ref: ref, ...(0, slot_1.slot)('menubar-separator'), height: 1, bg: "$borderColor", mx: 4, my: 4, ...props }));
213
+ });
214
+ exports.MenubarSeparator = MenubarSeparator;
215
+ /** Right-aligned shortcut hint. gui `Text`, not a raw `<span>`, so it renders on native. */
216
+ function MenubarShortcut(props) {
217
+ return ((0, jsx_runtime_1.jsx)(gui_1.Text, { ...(0, slot_1.slot)('menubar-shortcut'), ml: "auto", fontSize: "$1", letterSpacing: 1, color: "$quiet", ...props }));
218
+ }
219
+ // ── Passthroughs — the gui part already IS the part ─────────────────────────────
220
+ const MenubarGroup = gui_1.Menu.Group;
221
+ exports.MenubarGroup = MenubarGroup;
222
+ const MenubarPortal = gui_1.Menu.Portal;
223
+ exports.MenubarPortal = MenubarPortal;
224
+ const MenubarSub = gui_1.Menu.Sub;
225
+ exports.MenubarSub = MenubarSub;
226
+ const MenubarRadioGroup = gui_1.Menu.RadioGroup;
227
+ exports.MenubarRadioGroup = MenubarRadioGroup;