@hanzo/ui 8.27.10 → 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 (303) hide show
  1. package/dist/backends/gui/comparison.cjs +17 -21
  2. package/dist/backends/gui/comparison.d.ts +4 -5
  3. package/dist/backends/gui/comparison.d.ts.map +1 -1
  4. package/dist/backends/gui/comparison.js +18 -22
  5. package/dist/backends/gui/comparison.js.map +1 -1
  6. package/dist/backends/gui/crypto-screener.cjs +21 -31
  7. package/dist/backends/gui/crypto-screener.d.ts +20 -24
  8. package/dist/backends/gui/crypto-screener.d.ts.map +1 -1
  9. package/dist/backends/gui/crypto-screener.js +21 -31
  10. package/dist/backends/gui/crypto-screener.js.map +1 -1
  11. package/dist/backends/gui/cursor.cjs +15 -18
  12. package/dist/backends/gui/cursor.d.ts +4 -3
  13. package/dist/backends/gui/cursor.d.ts.map +1 -1
  14. package/dist/backends/gui/cursor.js +15 -18
  15. package/dist/backends/gui/cursor.js.map +1 -1
  16. package/dist/backends/gui/data-table.cjs +144 -184
  17. package/dist/backends/gui/data-table.d.ts +64 -44
  18. package/dist/backends/gui/data-table.d.ts.map +1 -1
  19. package/dist/backends/gui/data-table.js +146 -152
  20. package/dist/backends/gui/data-table.js.map +1 -1
  21. package/dist/backends/gui/dock.cjs +1 -1
  22. package/dist/backends/gui/dock.d.ts.map +1 -1
  23. package/dist/backends/gui/dock.js +1 -1
  24. package/dist/backends/gui/dock.js.map +1 -1
  25. package/dist/backends/gui/editor.cjs +35 -31
  26. package/dist/backends/gui/editor.d.ts +11 -11
  27. package/dist/backends/gui/editor.d.ts.map +1 -1
  28. package/dist/backends/gui/editor.js +35 -31
  29. package/dist/backends/gui/editor.js.map +1 -1
  30. package/dist/backends/gui/field.cjs +132 -0
  31. package/dist/backends/gui/field.d.ts +74 -0
  32. package/dist/backends/gui/field.d.ts.map +1 -0
  33. package/dist/backends/gui/field.js +121 -0
  34. package/dist/backends/gui/field.js.map +1 -0
  35. package/dist/backends/gui/gantt.cjs +17 -19
  36. package/dist/backends/gui/gantt.d.ts +4 -5
  37. package/dist/backends/gui/gantt.d.ts.map +1 -1
  38. package/dist/backends/gui/gantt.js +18 -21
  39. package/dist/backends/gui/gantt.js.map +1 -1
  40. package/dist/backends/gui/glimpse.cjs +88 -0
  41. package/dist/backends/gui/glimpse.d.ts +57 -0
  42. package/dist/backends/gui/glimpse.d.ts.map +1 -0
  43. package/dist/backends/gui/glimpse.js +81 -0
  44. package/dist/backends/gui/glimpse.js.map +1 -0
  45. package/dist/backends/gui/grid-pattern.cjs +119 -0
  46. package/dist/backends/gui/grid-pattern.d.ts +96 -0
  47. package/dist/backends/gui/grid-pattern.d.ts.map +1 -0
  48. package/dist/backends/gui/grid-pattern.js +84 -0
  49. package/dist/backends/gui/grid-pattern.js.map +1 -0
  50. package/dist/backends/gui/image-crop.cjs +35 -0
  51. package/dist/backends/gui/image-crop.d.ts +20 -0
  52. package/dist/backends/gui/image-crop.d.ts.map +1 -0
  53. package/dist/backends/gui/image-crop.js +33 -0
  54. package/dist/backends/gui/image-crop.js.map +1 -0
  55. package/dist/backends/gui/image-zoom.cjs +58 -0
  56. package/dist/backends/gui/image-zoom.d.ts +16 -0
  57. package/dist/backends/gui/image-zoom.d.ts.map +1 -0
  58. package/dist/backends/gui/image-zoom.js +56 -0
  59. package/dist/backends/gui/image-zoom.js.map +1 -0
  60. package/dist/backends/gui/index.cjs +159 -1
  61. package/dist/backends/gui/index.d.ts +49 -0
  62. package/dist/backends/gui/index.d.ts.map +1 -1
  63. package/dist/backends/gui/index.js +49 -0
  64. package/dist/backends/gui/index.js.map +1 -1
  65. package/dist/backends/gui/interactive-grid-pattern.cjs +61 -0
  66. package/dist/backends/gui/interactive-grid-pattern.d.ts +28 -0
  67. package/dist/backends/gui/interactive-grid-pattern.d.ts.map +1 -0
  68. package/dist/backends/gui/interactive-grid-pattern.js +26 -0
  69. package/dist/backends/gui/interactive-grid-pattern.js.map +1 -0
  70. package/dist/backends/gui/iphone-15-pro.cjs +83 -0
  71. package/dist/backends/gui/iphone-15-pro.d.ts +16 -0
  72. package/dist/backends/gui/iphone-15-pro.d.ts.map +1 -0
  73. package/dist/backends/gui/iphone-15-pro.js +81 -0
  74. package/dist/backends/gui/iphone-15-pro.js.map +1 -0
  75. package/dist/backends/gui/item.cjs +154 -0
  76. package/dist/backends/gui/item.d.ts +72 -0
  77. package/dist/backends/gui/item.d.ts.map +1 -0
  78. package/dist/backends/gui/item.js +143 -0
  79. package/dist/backends/gui/item.js.map +1 -0
  80. package/dist/backends/gui/kanban.cjs +247 -0
  81. package/dist/backends/gui/kanban.d.ts +37 -0
  82. package/dist/backends/gui/kanban.d.ts.map +1 -0
  83. package/dist/backends/gui/kanban.js +212 -0
  84. package/dist/backends/gui/kanban.js.map +1 -0
  85. package/dist/backends/gui/kbd.cjs +45 -0
  86. package/dist/backends/gui/kbd.d.ts +8 -0
  87. package/dist/backends/gui/kbd.d.ts.map +1 -0
  88. package/dist/backends/gui/kbd.js +42 -0
  89. package/dist/backends/gui/kbd.js.map +1 -0
  90. package/dist/backends/gui/limelight-nav.cjs +201 -0
  91. package/dist/backends/gui/limelight-nav.d.ts +20 -0
  92. package/dist/backends/gui/limelight-nav.d.ts.map +1 -0
  93. package/dist/backends/gui/limelight-nav.js +166 -0
  94. package/dist/backends/gui/limelight-nav.js.map +1 -0
  95. package/dist/backends/gui/list.cjs +26 -0
  96. package/dist/backends/gui/list.d.ts +15 -0
  97. package/dist/backends/gui/list.d.ts.map +1 -0
  98. package/dist/backends/gui/list.js +23 -0
  99. package/dist/backends/gui/list.js.map +1 -0
  100. package/dist/backends/gui/macos-dock.cjs +84 -0
  101. package/dist/backends/gui/macos-dock.d.ts +30 -0
  102. package/dist/backends/gui/macos-dock.d.ts.map +1 -0
  103. package/dist/backends/gui/macos-dock.js +82 -0
  104. package/dist/backends/gui/macos-dock.js.map +1 -0
  105. package/dist/backends/gui/magnetic.cjs +40 -0
  106. package/dist/backends/gui/magnetic.d.ts +12 -0
  107. package/dist/backends/gui/magnetic.d.ts.map +1 -0
  108. package/dist/backends/gui/magnetic.js +38 -0
  109. package/dist/backends/gui/magnetic.js.map +1 -0
  110. package/dist/backends/gui/marquee.cjs +110 -0
  111. package/dist/backends/gui/marquee.d.ts +44 -0
  112. package/dist/backends/gui/marquee.d.ts.map +1 -0
  113. package/dist/backends/gui/marquee.js +75 -0
  114. package/dist/backends/gui/marquee.js.map +1 -0
  115. package/dist/backends/gui/menu-dock.cjs +64 -0
  116. package/dist/backends/gui/menu-dock.d.ts +21 -0
  117. package/dist/backends/gui/menu-dock.d.ts.map +1 -0
  118. package/dist/backends/gui/menu-dock.js +62 -0
  119. package/dist/backends/gui/menu-dock.js.map +1 -0
  120. package/dist/backends/gui/menubar.cjs +227 -0
  121. package/dist/backends/gui/menubar.d.ts +106 -0
  122. package/dist/backends/gui/menubar.d.ts.map +1 -0
  123. package/dist/backends/gui/menubar.js +177 -0
  124. package/dist/backends/gui/menubar.js.map +1 -0
  125. package/dist/backends/gui/message-dock.cjs +111 -0
  126. package/dist/backends/gui/message-dock.d.ts +22 -0
  127. package/dist/backends/gui/message-dock.d.ts.map +1 -0
  128. package/dist/backends/gui/message-dock.js +110 -0
  129. package/dist/backends/gui/message-dock.js.map +1 -0
  130. package/dist/backends/gui/mini-calendar.cjs +25 -0
  131. package/dist/backends/gui/mini-calendar.d.ts +22 -0
  132. package/dist/backends/gui/mini-calendar.d.ts.map +1 -0
  133. package/dist/backends/gui/mini-calendar.js +24 -0
  134. package/dist/backends/gui/mini-calendar.js.map +1 -0
  135. package/dist/backends/gui/minimal-tiptap.cjs +56 -0
  136. package/dist/backends/gui/minimal-tiptap.d.ts +20 -0
  137. package/dist/backends/gui/minimal-tiptap.d.ts.map +1 -0
  138. package/dist/backends/gui/minimal-tiptap.js +21 -0
  139. package/dist/backends/gui/minimal-tiptap.js.map +1 -0
  140. package/dist/backends/gui/motion-highlight.cjs +83 -0
  141. package/dist/backends/gui/motion-highlight.d.ts +27 -0
  142. package/dist/backends/gui/motion-highlight.d.ts.map +1 -0
  143. package/dist/backends/gui/motion-highlight.js +48 -0
  144. package/dist/backends/gui/motion-highlight.js.map +1 -0
  145. package/dist/backends/gui/navigation-bar.cjs +47 -0
  146. package/dist/backends/gui/navigation-bar.d.ts +48 -0
  147. package/dist/backends/gui/navigation-bar.d.ts.map +1 -0
  148. package/dist/backends/gui/navigation-bar.js +45 -0
  149. package/dist/backends/gui/navigation-bar.js.map +1 -0
  150. package/dist/backends/gui/news-timeline.cjs +47 -0
  151. package/dist/backends/gui/news-timeline.d.ts +39 -0
  152. package/dist/backends/gui/news-timeline.d.ts.map +1 -0
  153. package/dist/backends/gui/news-timeline.js +45 -0
  154. package/dist/backends/gui/news-timeline.js.map +1 -0
  155. package/dist/backends/gui/order-entry.cjs +53 -0
  156. package/dist/backends/gui/order-entry.d.ts +21 -0
  157. package/dist/backends/gui/order-entry.d.ts.map +1 -0
  158. package/dist/backends/gui/order-entry.js +52 -0
  159. package/dist/backends/gui/order-entry.js.map +1 -0
  160. package/dist/backends/gui/orders-history.cjs +102 -0
  161. package/dist/backends/gui/orders-history.d.ts +24 -0
  162. package/dist/backends/gui/orders-history.d.ts.map +1 -0
  163. package/dist/backends/gui/orders-history.js +67 -0
  164. package/dist/backends/gui/orders-history.js.map +1 -0
  165. package/dist/backends/gui/pagination.cjs +51 -0
  166. package/dist/backends/gui/pagination.d.ts +52 -0
  167. package/dist/backends/gui/pagination.d.ts.map +1 -0
  168. package/dist/backends/gui/pagination.js +42 -0
  169. package/dist/backends/gui/pagination.js.map +1 -0
  170. package/dist/backends/gui/particles-background.cjs +135 -0
  171. package/dist/backends/gui/particles-background.d.ts +24 -0
  172. package/dist/backends/gui/particles-background.d.ts.map +1 -0
  173. package/dist/backends/gui/particles-background.js +133 -0
  174. package/dist/backends/gui/particles-background.js.map +1 -0
  175. package/dist/backends/gui/particles.cjs +145 -0
  176. package/dist/backends/gui/particles.d.ts +25 -0
  177. package/dist/backends/gui/particles.d.ts.map +1 -0
  178. package/dist/backends/gui/particles.js +143 -0
  179. package/dist/backends/gui/particles.js.map +1 -0
  180. package/dist/backends/gui/pill.cjs +82 -0
  181. package/dist/backends/gui/pill.d.ts +12 -0
  182. package/dist/backends/gui/pill.d.ts.map +1 -0
  183. package/dist/backends/gui/pill.js +78 -0
  184. package/dist/backends/gui/pill.js.map +1 -0
  185. package/dist/backends/gui/pin-list.cjs +82 -0
  186. package/dist/backends/gui/pin-list.d.ts +42 -0
  187. package/dist/backends/gui/pin-list.d.ts.map +1 -0
  188. package/dist/backends/gui/pin-list.js +80 -0
  189. package/dist/backends/gui/pin-list.js.map +1 -0
  190. package/dist/backends/gui/pixel-image.cjs +63 -0
  191. package/dist/backends/gui/pixel-image.d.ts +21 -0
  192. package/dist/backends/gui/pixel-image.d.ts.map +1 -0
  193. package/dist/backends/gui/pixel-image.js +61 -0
  194. package/dist/backends/gui/pixel-image.js.map +1 -0
  195. package/dist/backends/gui/positions-list.cjs +60 -0
  196. package/dist/backends/gui/positions-list.d.ts +14 -0
  197. package/dist/backends/gui/positions-list.d.ts.map +1 -0
  198. package/dist/backends/gui/positions-list.js +58 -0
  199. package/dist/backends/gui/positions-list.js.map +1 -0
  200. package/dist/backends/gui/qr-code.cjs +438 -0
  201. package/dist/backends/gui/qr-code.d.ts +42 -0
  202. package/dist/backends/gui/qr-code.d.ts.map +1 -0
  203. package/dist/backends/gui/qr-code.js +402 -0
  204. package/dist/backends/gui/qr-code.js.map +1 -0
  205. package/dist/backends/gui/relative-time.cjs +167 -0
  206. package/dist/backends/gui/relative-time.d.ts +10 -0
  207. package/dist/backends/gui/relative-time.d.ts.map +1 -0
  208. package/dist/backends/gui/relative-time.js +132 -0
  209. package/dist/backends/gui/relative-time.js.map +1 -0
  210. package/dist/backends/gui/safari.cjs +65 -0
  211. package/dist/backends/gui/safari.d.ts +23 -0
  212. package/dist/backends/gui/safari.d.ts.map +1 -0
  213. package/dist/backends/gui/safari.js +63 -0
  214. package/dist/backends/gui/safari.js.map +1 -0
  215. package/dist/backends/gui/snippet.cjs +144 -0
  216. package/dist/backends/gui/snippet.d.ts +38 -0
  217. package/dist/backends/gui/snippet.d.ts.map +1 -0
  218. package/dist/backends/gui/snippet.js +141 -0
  219. package/dist/backends/gui/snippet.js.map +1 -0
  220. package/dist/backends/gui/stars-scrolling-wheel.cjs +106 -0
  221. package/dist/backends/gui/stars-scrolling-wheel.d.ts +24 -0
  222. package/dist/backends/gui/stars-scrolling-wheel.d.ts.map +1 -0
  223. package/dist/backends/gui/stars-scrolling-wheel.js +104 -0
  224. package/dist/backends/gui/stars-scrolling-wheel.js.map +1 -0
  225. package/dist/backends/gui/status.cjs +79 -0
  226. package/dist/backends/gui/status.d.ts +15 -0
  227. package/dist/backends/gui/status.d.ts.map +1 -0
  228. package/dist/backends/gui/status.js +77 -0
  229. package/dist/backends/gui/status.js.map +1 -0
  230. package/dist/backends/gui/stock-market.cjs +21 -0
  231. package/dist/backends/gui/stock-market.d.ts +17 -0
  232. package/dist/backends/gui/stock-market.d.ts.map +1 -0
  233. package/dist/backends/gui/stock-market.js +19 -0
  234. package/dist/backends/gui/stock-market.js.map +1 -0
  235. package/dist/backends/gui/stock-screener.cjs +55 -0
  236. package/dist/backends/gui/stock-screener.d.ts +41 -0
  237. package/dist/backends/gui/stock-screener.d.ts.map +1 -0
  238. package/dist/backends/gui/stock-screener.js +53 -0
  239. package/dist/backends/gui/stock-screener.js.map +1 -0
  240. package/dist/backends/gui/symbol-info.cjs +46 -0
  241. package/dist/backends/gui/symbol-info.d.ts +36 -0
  242. package/dist/backends/gui/symbol-info.d.ts.map +1 -0
  243. package/dist/backends/gui/symbol-info.js +44 -0
  244. package/dist/backends/gui/symbol-info.js.map +1 -0
  245. package/dist/backends/gui/table.cjs +104 -0
  246. package/dist/backends/gui/table.d.ts +57 -0
  247. package/dist/backends/gui/table.d.ts.map +1 -0
  248. package/dist/backends/gui/table.js +95 -0
  249. package/dist/backends/gui/table.js.map +1 -0
  250. package/dist/backends/gui/tags.cjs +22 -0
  251. package/dist/backends/gui/tags.d.ts +22 -0
  252. package/dist/backends/gui/tags.d.ts.map +1 -0
  253. package/dist/backends/gui/tags.js +20 -0
  254. package/dist/backends/gui/tags.js.map +1 -0
  255. package/dist/backends/gui/technical-analysis.cjs +58 -0
  256. package/dist/backends/gui/technical-analysis.d.ts +41 -0
  257. package/dist/backends/gui/technical-analysis.d.ts.map +1 -0
  258. package/dist/backends/gui/technical-analysis.js +56 -0
  259. package/dist/backends/gui/technical-analysis.js.map +1 -0
  260. package/dist/backends/gui/terminal.cjs +266 -0
  261. package/dist/backends/gui/terminal.d.ts +38 -0
  262. package/dist/backends/gui/terminal.d.ts.map +1 -0
  263. package/dist/backends/gui/terminal.js +231 -0
  264. package/dist/backends/gui/terminal.js.map +1 -0
  265. package/dist/backends/gui/ticker.cjs +79 -0
  266. package/dist/backends/gui/ticker.d.ts +19 -0
  267. package/dist/backends/gui/ticker.d.ts.map +1 -0
  268. package/dist/backends/gui/ticker.js +44 -0
  269. package/dist/backends/gui/ticker.js.map +1 -0
  270. package/dist/backends/gui/timeline.cjs +154 -0
  271. package/dist/backends/gui/timeline.d.ts +42 -0
  272. package/dist/backends/gui/timeline.d.ts.map +1 -0
  273. package/dist/backends/gui/timeline.js +118 -0
  274. package/dist/backends/gui/timeline.js.map +1 -0
  275. package/dist/backends/gui/toggle.cjs +96 -0
  276. package/dist/backends/gui/toggle.d.ts +29 -0
  277. package/dist/backends/gui/toggle.d.ts.map +1 -0
  278. package/dist/backends/gui/toggle.js +95 -0
  279. package/dist/backends/gui/toggle.js.map +1 -0
  280. package/dist/backends/gui/video-player.cjs +383 -0
  281. package/dist/backends/gui/video-player.d.ts +54 -0
  282. package/dist/backends/gui/video-player.d.ts.map +1 -0
  283. package/dist/backends/gui/video-player.js +348 -0
  284. package/dist/backends/gui/video-player.js.map +1 -0
  285. package/dist/chat/Composer.cjs +10 -10
  286. package/dist/chat/Composer.d.ts +16 -17
  287. package/dist/chat/Composer.d.ts.map +1 -1
  288. package/dist/chat/Composer.js +11 -11
  289. package/dist/chat/Composer.js.map +1 -1
  290. package/dist/gallery.cjs +180 -1
  291. package/dist/gallery.d.ts.map +1 -1
  292. package/dist/gallery.html +391 -3
  293. package/dist/gallery.js +181 -2
  294. package/dist/gallery.js.map +1 -1
  295. package/dist/index.cjs +110 -1
  296. package/dist/index.d.ts +1 -1
  297. package/dist/index.d.ts.map +1 -1
  298. package/dist/index.js +1 -1
  299. package/dist/index.js.map +1 -1
  300. package/dist/index.node.cjs +110 -1
  301. package/dist/index.node.js +1 -1
  302. package/dist/styles.css +356 -0
  303. package/package.json +1 -1
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Menubar — a persistent row of pull-down menus, the kind a desktop app keeps
3
+ * across the top of its window (File, Edit, View, ...).
4
+ *
5
+ * Each `MenubarMenu` is its own `@hanzo/gui` `Menu`, so a single trigger click
6
+ * opens a real menu with the full compound surface (items, checkbox items, a
7
+ * radio group, separators, a label, a submenu) and every a11y/dismiss/typeahead
8
+ * behaviour that `Menu` already has. What THIS file adds on top, because a row
9
+ * of independent menus is not yet a menubar, is the coordination between them:
10
+ * one open menu at a time, hovering a sibling trigger while a menu is open
11
+ * switches to it instead of requiring a second click, and the arrow keys rove
12
+ * focus across the triggers (Home/End jump to the first/last). That state lives
13
+ * in one root context, read by `MenubarTrigger` and `MenubarMenu` — neither
14
+ * hand-rolls it a second time.
15
+ *
16
+ * The rows, checkbox rows, radio rows, label, separator and submenu below are
17
+ * the same 32px-row, 8px-gutter, 44px-tap design as `dropdown-menu.tsx` and
18
+ * `context-menu.tsx` — one menu design, not three. `MenubarContent` mounts its
19
+ * own `Menu.Portal` and re-applies the trigger's resolved theme inside it via
20
+ * `PortalTheme` (gui portals re-root the subtree, so React theme context does
21
+ * not otherwise flow there).
22
+ *
23
+ * Cross-platform: gui style props only — no Tailwind class strings, no Radix,
24
+ * no DOM APIs beyond the `data-slot` markers every gui backend component uses
25
+ * to publish its parts for CSS and tests.
26
+ */
27
+ import * as React from 'react';
28
+ import { Menu, Text, XStack, type GuiElement } from '@hanzo/gui';
29
+ export type MenubarProps = Omit<React.ComponentProps<typeof XStack>, 'onValueChange'> & {
30
+ /** Which menu is open, by its `MenubarMenu`'s `value`. Controlled. */
31
+ value?: string;
32
+ defaultValue?: string;
33
+ onValueChange?: (value: string | undefined) => void;
34
+ };
35
+ declare function Menubar({ value, defaultValue, onValueChange, children, ...props }: MenubarProps): React.JSX.Element;
36
+ export type MenubarMenuProps = React.ComponentProps<typeof Menu> & {
37
+ /** Identifies this menu to the root's `value`/`onValueChange`. Auto-generated if omitted. */
38
+ value?: string;
39
+ };
40
+ declare function MenubarMenu({ value, children, ...props }: MenubarMenuProps): React.JSX.Element;
41
+ export type MenubarTriggerProps = React.ComponentProps<typeof Menu.Trigger>;
42
+ declare const MenubarTrigger: React.ForwardRefExoticComponent<MenubarTriggerProps & React.RefAttributes<GuiElement>>;
43
+ export type MenubarContentProps = React.ComponentProps<typeof Menu.Content> & {
44
+ sideOffset?: number;
45
+ align?: 'start' | 'center' | 'end';
46
+ };
47
+ declare const MenubarContent: React.ForwardRefExoticComponent<Omit<MenubarContentProps, "ref"> & React.RefAttributes<GuiElement>>;
48
+ declare const MenubarSubContent: React.ForwardRefExoticComponent<Omit<import("@hanzo/gui").MenuSubContentProps & {
49
+ scope?: string;
50
+ } & React.RefAttributes<GuiElement> & Partial<Omit<import("@hanzo/gui").NativeMenuSubContentProps, keyof import("@hanzo/gui").MenuSubContentProps | keyof React.RefAttributes<GuiElement>>>, "ref"> & React.RefAttributes<GuiElement>>;
51
+ export type MenubarItemProps = Omit<React.ComponentProps<typeof Menu.Item>, 'inset' | 'variant'> & {
52
+ inset?: boolean;
53
+ variant?: 'default' | 'destructive';
54
+ };
55
+ declare const MenubarItem: React.ForwardRefExoticComponent<Omit<MenubarItemProps, "ref"> & React.RefAttributes<GuiElement>>;
56
+ declare const MenubarCheckboxItem: React.ForwardRefExoticComponent<Omit<Omit<import("@hanzogui/web").GetFinalProps<import("@hanzogui/web").StackNonStyleProps, import("@hanzogui/web").StackStyleBase, {
57
+ unstyled?: boolean | undefined;
58
+ }>, "scope" | keyof import("@hanzo/gui").MenuCheckboxItemProps> & import("@hanzo/gui").MenuCheckboxItemProps & {
59
+ scope?: string;
60
+ } & React.RefAttributes<GuiElement> & Partial<Omit<Omit<import("@hanzo/gui").NativeMenuItemProps, "onSelect"> & {
61
+ checked?: boolean;
62
+ onCheckedChange?: (checked: boolean) => void;
63
+ value?: "mixed" | "on" | "off" | boolean;
64
+ onValueChange?: (state: "mixed" | "on" | "off", prevState: "mixed" | "on" | "off") => void;
65
+ key: string;
66
+ }, "scope" | keyof import("@hanzo/gui").MenuCheckboxItemProps | keyof React.RefAttributes<GuiElement>>>, "ref"> & React.RefAttributes<GuiElement>>;
67
+ declare const MenubarRadioItem: React.ForwardRefExoticComponent<Omit<Omit<import("@hanzogui/web").GetFinalProps<import("@hanzogui/web").StackNonStyleProps, import("@hanzogui/web").StackStyleBase, {
68
+ unstyled?: boolean | undefined;
69
+ }>, "scope" | keyof import("@hanzo/gui").MenuRadioItemProps> & import("@hanzo/gui").MenuRadioItemProps & {
70
+ scope?: string;
71
+ } & React.RefAttributes<GuiElement> & Partial<Omit<{
72
+ children: React.ReactNode;
73
+ }, "scope" | keyof import("@hanzo/gui").MenuRadioItemProps | keyof React.RefAttributes<GuiElement>>>, "ref"> & React.RefAttributes<GuiElement>>;
74
+ declare const MenubarSubTrigger: React.ForwardRefExoticComponent<Omit<Omit<import("@hanzo/gui").MenuSubTriggerProps & {
75
+ scope?: string;
76
+ } & React.RefAttributes<GuiElement> & Partial<Omit<{
77
+ children: React.ReactNode;
78
+ textValue?: string;
79
+ onSelect?: (event?: Event) => void;
80
+ } & {
81
+ disabled?: boolean;
82
+ hidden?: boolean;
83
+ destructive?: boolean;
84
+ key: string;
85
+ } & {
86
+ key: string;
87
+ }, "scope" | keyof import("@hanzo/gui").MenuSubTriggerProps | keyof React.RefAttributes<GuiElement>>>, "inset"> & {
88
+ inset?: boolean;
89
+ }, "ref"> & React.RefAttributes<GuiElement>>;
90
+ declare const MenubarLabel: React.ForwardRefExoticComponent<Omit<Omit<Omit<import("@hanzogui/web").GetFinalProps<import("@hanzogui/web").TextNonStyleProps, import("@hanzogui/web").TextStylePropsBase, {
91
+ unstyled?: boolean | undefined;
92
+ size?: import("@hanzogui/web").FontSizeTokens | undefined;
93
+ }>, keyof import("@hanzo/gui").MenuLabelProps> & import("@hanzo/gui").MenuLabelProps & React.RefAttributes<import("@hanzogui/web").GuiTextElement> & Partial<Omit<import("@hanzo/gui").NativeMenuLabelProps, "adjustsFontSizeToFit" | "allowFontScaling" | "android_hyphenationFrequency" | "color" | "dataDetectorType" | "dynamicTypeRamp" | "elevation" | "ellipsis" | "ellipsizeMode" | "fontFamily" | "fontSize" | "fontStyle" | "fontVariant" | "fontWeight" | "includeFontPadding" | "letterSpacing" | "lineBreakMode" | "lineBreakStrategyIOS" | "lineHeight" | "maxFontSizeMultiplier" | "minimumFontScale" | "numberOfLines" | "pressRetentionOffset" | "selectable" | "selectionColor" | "size" | "suppressHighlighting" | "textAlign" | "textAlignVertical" | "textBreakStrategy" | "textDecorationColor" | "textDecorationDistance" | "textDecorationLine" | "textDecorationStyle" | "textOverflow" | "textShadow" | "textShadowColor" | "textShadowOffset" | "textShadowRadius" | "textTransform" | "whiteSpace" | "wordWrap" | "writingDirection" | keyof import("@hanzo/gui").MenuLabelProps | keyof React.RefAttributes<import("@hanzogui/web").GuiTextElement>>>, "inset"> & {
94
+ inset?: boolean;
95
+ }, "ref"> & React.RefAttributes<GuiElement>>;
96
+ declare const MenubarSeparator: React.ForwardRefExoticComponent<Omit<Omit<import("@hanzogui/web").GetFinalProps<import("@hanzogui/web").StackNonStyleProps, import("@hanzogui/web").StackStyleBase, {
97
+ unstyled?: boolean | undefined;
98
+ }>, keyof import("@hanzo/gui").MenuSeparatorProps> & import("@hanzo/gui").MenuSeparatorProps & React.RefAttributes<GuiElement> & Partial<Omit<import("@hanzo/gui").NativeMenuSeparatorProps, keyof import("@hanzo/gui").MenuSeparatorProps | keyof React.RefAttributes<GuiElement>>>, "ref"> & React.RefAttributes<GuiElement>>;
99
+ /** Right-aligned shortcut hint. gui `Text`, not a raw `<span>`, so it renders on native. */
100
+ declare function MenubarShortcut(props: React.ComponentProps<typeof Text>): React.JSX.Element;
101
+ declare const MenubarGroup: typeof Menu.Group;
102
+ declare const MenubarPortal: typeof Menu.Portal;
103
+ declare const MenubarSub: typeof Menu.Sub;
104
+ declare const MenubarRadioGroup: typeof Menu.RadioGroup;
105
+ export { Menubar, MenubarMenu, MenubarTrigger, MenubarContent, MenubarItem, MenubarCheckboxItem, MenubarRadioItem, MenubarLabel, MenubarSeparator, MenubarShortcut, MenubarGroup, MenubarPortal, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarRadioGroup, };
106
+ //# sourceMappingURL=menubar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menubar.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/menubar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * Menubar — a persistent row of pull-down menus, the kind a desktop app keeps
5
+ * across the top of its window (File, Edit, View, ...).
6
+ *
7
+ * Each `MenubarMenu` is its own `@hanzo/gui` `Menu`, so a single trigger click
8
+ * opens a real menu with the full compound surface (items, checkbox items, a
9
+ * radio group, separators, a label, a submenu) and every a11y/dismiss/typeahead
10
+ * behaviour that `Menu` already has. What THIS file adds on top, because a row
11
+ * of independent menus is not yet a menubar, is the coordination between them:
12
+ * one open menu at a time, hovering a sibling trigger while a menu is open
13
+ * switches to it instead of requiring a second click, and the arrow keys rove
14
+ * focus across the triggers (Home/End jump to the first/last). That state lives
15
+ * in one root context, read by `MenubarTrigger` and `MenubarMenu` — neither
16
+ * hand-rolls it a second time.
17
+ *
18
+ * The rows, checkbox rows, radio rows, label, separator and submenu below are
19
+ * the same 32px-row, 8px-gutter, 44px-tap design as `dropdown-menu.tsx` and
20
+ * `context-menu.tsx` — one menu design, not three. `MenubarContent` mounts its
21
+ * own `Menu.Portal` and re-applies the trigger's resolved theme inside it via
22
+ * `PortalTheme` (gui portals re-root the subtree, so React theme context does
23
+ * not otherwise flow there).
24
+ *
25
+ * Cross-platform: gui style props only — no Tailwind class strings, no Radix,
26
+ * no DOM APIs beyond the `data-slot` markers every gui backend component uses
27
+ * to publish its parts for CSS and tests.
28
+ */
29
+ import * as React from 'react';
30
+ import { Menu, Text, XStack } from '@hanzo/gui';
31
+ import { Check, ChevronRight, Circle } from '@hanzogui/lucide-icons-2';
32
+ import { touch } from './gesture.js';
33
+ import { ink } from './ink.js';
34
+ import { slot } from './slot.js';
35
+ import { PortalTheme, useThemeName } from '../../product/menu/portal-theme.js';
36
+ // ── Geometry — the one menu design, restated (module-private in the siblings) ──
37
+ const ROW_H = 32;
38
+ const TAP_MIN = 44;
39
+ const ROW_PX = 8;
40
+ const MIN_W = 192;
41
+ const INSET_PL = 32;
42
+ const INDICATOR_SLOT = 14;
43
+ const ICON = 16;
44
+ const BAR_H = 40;
45
+ const panel = {
46
+ bg: '$panel',
47
+ borderColor: '$borderColor',
48
+ borderWidth: 1,
49
+ rounded: '$4',
50
+ p: 4,
51
+ minW: MIN_W,
52
+ overflow: 'hidden',
53
+ shadowColor: 'rgba(0,0,0,0.45)',
54
+ shadowRadius: 20,
55
+ shadowOffset: { width: 0, height: 10 },
56
+ };
57
+ const row = {
58
+ items: 'center',
59
+ gap: ROW_PX,
60
+ px: ROW_PX,
61
+ minH: ROW_H,
62
+ rounded: '$3',
63
+ select: 'none',
64
+ cursor: 'pointer',
65
+ ...touch(ROW_H, TAP_MIN, 'y'),
66
+ hoverStyle: { bg: '$raised' },
67
+ focusStyle: { bg: '$raised' },
68
+ pressStyle: { bg: '$rim' },
69
+ };
70
+ /** Row text style — free-form children go through `ink()` so a bare string renders on native. */
71
+ const label = { size: '$2', color: '$ink' };
72
+ /** Trigger text style — same type scale, medium weight to read as a menu title. */
73
+ const triggerLabel = { size: '$2', color: '$ink', fontWeight: '500' };
74
+ /** Left indicator well shared by checkbox + radio rows. */
75
+ const Indicator = ({ children }) => (_jsx(XStack, { position: "absolute", l: ROW_PX, width: INDICATOR_SLOT, height: INDICATOR_SLOT, items: "center", justify: "center", pointerEvents: "none", children: _jsx(Menu.ItemIndicator, { children: children }) }));
76
+ const MenubarContext = /* @__PURE__ */ React.createContext(null);
77
+ /** Which menu a `MenubarMenu` is, read by its `MenubarTrigger`. */
78
+ const MenubarMenuIdContext = /* @__PURE__ */ React.createContext(null);
79
+ // gui puts popper geometry (`offset`, `placement`) on the `Menu` ROOT, while the
80
+ // compound API puts `sideOffset`/`align` on `Content` — one value, one owner:
81
+ // the root holds it, Content publishes into it via these two contexts, freshly
82
+ // scoped per `MenubarMenu` instance. Same split as `dropdown-menu.tsx`.
83
+ const OffsetContext = /* @__PURE__ */ React.createContext(null);
84
+ const PlacementContext = /* @__PURE__ */ React.createContext(null);
85
+ const DEFAULT_OFFSET = 8;
86
+ function Menubar({ value, defaultValue, onValueChange, children, ...props }) {
87
+ const [uncontrolled, setUncontrolled] = React.useState(defaultValue);
88
+ const active = value !== undefined ? value : uncontrolled;
89
+ const setValue = React.useCallback((next) => {
90
+ if (value === undefined)
91
+ setUncontrolled(next);
92
+ onValueChange?.(next);
93
+ }, [value, onValueChange]);
94
+ /** Arrow/Home/End rove the triggers; a live menu follows focus onto the next one. */
95
+ const onKeyDown = (event) => {
96
+ if (!['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key))
97
+ return;
98
+ const root = event.currentTarget;
99
+ const triggers = [...root.querySelectorAll('[data-slot="menubar-trigger"]')];
100
+ const at = triggers.indexOf(document.activeElement);
101
+ if (at === -1)
102
+ return;
103
+ event.preventDefault();
104
+ const next = event.key === 'Home'
105
+ ? 0
106
+ : event.key === 'End'
107
+ ? triggers.length - 1
108
+ : event.key === 'ArrowRight'
109
+ ? (at + 1) % triggers.length
110
+ : (at - 1 + triggers.length) % triggers.length;
111
+ triggers[next]?.focus();
112
+ if (active !== undefined)
113
+ setValue(triggers[next]?.dataset.menubarValue);
114
+ };
115
+ return (_jsx(MenubarContext.Provider, { value: { value: active, setValue }, children: _jsx(XStack, { ...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 }) }));
116
+ }
117
+ function MenubarMenu({ value, children, ...props }) {
118
+ const root = React.useContext(MenubarContext);
119
+ const auto = React.useId();
120
+ const id = value ?? auto;
121
+ const [offset, setOffset] = React.useState(DEFAULT_OFFSET);
122
+ const [placement, setPlacement] = React.useState(undefined);
123
+ return (_jsx(MenubarMenuIdContext.Provider, { value: id, children: _jsx(OffsetContext.Provider, { value: setOffset, children: _jsx(PlacementContext.Provider, { value: setPlacement, children: _jsx(Menu, { open: root ? root.value === id : undefined, onOpenChange: (open) => root?.setValue(open ? id : undefined), offset: offset, ...(placement ? { placement } : null), ...props, children: children }) }) }) }));
124
+ }
125
+ const MenubarTrigger = /* @__PURE__ */ React.forwardRef(function MenubarTrigger({ children, onMouseEnter, ...props }, ref) {
126
+ const root = React.useContext(MenubarContext);
127
+ const id = React.useContext(MenubarMenuIdContext);
128
+ const open = root != null && id != null && root.value === id;
129
+ return (_jsx(Menu.Trigger, { ref: ref, ...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' }, ...touch(ROW_H, TAP_MIN, 'y'), onMouseEnter: (event) => {
130
+ if (root?.value !== undefined && id != null)
131
+ root.setValue(id);
132
+ onMouseEnter?.(event);
133
+ }, ...props, children: ink(children, undefined, triggerLabel) }));
134
+ });
135
+ /** `align`, as the suffix of the floating-ui placement string the root's `Menu` reads. */
136
+ const placementFor = (align) => align && align !== 'center' ? `bottom-${align}` : 'bottom';
137
+ const MenubarContent = /* @__PURE__ */ React.forwardRef(function MenubarContent({ sideOffset = DEFAULT_OFFSET, align = 'start', children, ...props }, ref) {
138
+ const themeName = useThemeName();
139
+ const setOffset = React.useContext(OffsetContext);
140
+ const setPlacement = React.useContext(PlacementContext);
141
+ React.useEffect(() => setOffset?.(sideOffset), [setOffset, sideOffset]);
142
+ React.useEffect(() => setPlacement?.(placementFor(align)), [setPlacement, align]);
143
+ return (_jsx(Menu.Portal, { children: _jsx(PortalTheme, { name: themeName, children: _jsx(Menu.Content, { ref: ref, ...slot('menubar-content'), ...panel, ...props, children: children }) }) }));
144
+ });
145
+ const MenubarSubContent = /* @__PURE__ */ React.forwardRef(function MenubarSubContent(props, ref) {
146
+ return _jsx(Menu.SubContent, { ref: ref, ...slot('menubar-sub-content'), ...panel, ...props });
147
+ });
148
+ const MenubarItem = /* @__PURE__ */ React.forwardRef(function MenubarItem({ inset, variant = 'default', disabled, children, ...props }, ref) {
149
+ return (_jsx(Menu.Item, { ref: ref, ...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: ink(children, undefined, label) }));
150
+ });
151
+ const MenubarCheckboxItem = /* @__PURE__ */ React.forwardRef(function MenubarCheckboxItem({ children, checked, ...props }, ref) {
152
+ return (_jsxs(Menu.CheckboxItem, { ref: ref, ...slot('menubar-checkbox-item'), checked: checked, ...row, pl: INSET_PL, ...props, children: [_jsx(Indicator, { children: _jsx(Check, { size: ICON }) }), ink(children, undefined, label)] }));
153
+ });
154
+ const MenubarRadioItem = /* @__PURE__ */ React.forwardRef(function MenubarRadioItem({ children, value, ...props }, ref) {
155
+ return (_jsxs(Menu.RadioItem, { ref: ref, ...slot('menubar-radio-item'), value: value, ...row, pl: INSET_PL, ...props, children: [_jsx(Indicator, { children: _jsx(Circle, { size: 8, fill: "currentColor" }) }), ink(children, undefined, label)] }));
156
+ });
157
+ const MenubarSubTrigger = /* @__PURE__ */ React.forwardRef(function MenubarSubTrigger({ inset, children, ...props }, ref) {
158
+ return (_jsxs(Menu.SubTrigger, { ref: ref, ...slot('menubar-sub-trigger'), "data-inset": inset, ...row, pl: inset ? INSET_PL : ROW_PX, ...props, children: [ink(children, undefined, label), _jsx(ChevronRight, { size: ICON, ml: "auto", opacity: 0.6 })] }));
159
+ });
160
+ // ── Static rows ─────────────────────────────────────────────────────────────────
161
+ const MenubarLabel = /* @__PURE__ */ React.forwardRef(function MenubarLabel({ inset, ...props }, ref) {
162
+ return (_jsx(Menu.Label, { ref: ref, ...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 }));
163
+ });
164
+ const MenubarSeparator = /* @__PURE__ */ React.forwardRef(function MenubarSeparator(props, ref) {
165
+ return (_jsx(Menu.Separator, { ref: ref, ...slot('menubar-separator'), height: 1, bg: "$borderColor", mx: 4, my: 4, ...props }));
166
+ });
167
+ /** Right-aligned shortcut hint. gui `Text`, not a raw `<span>`, so it renders on native. */
168
+ function MenubarShortcut(props) {
169
+ return (_jsx(Text, { ...slot('menubar-shortcut'), ml: "auto", fontSize: "$1", letterSpacing: 1, color: "$quiet", ...props }));
170
+ }
171
+ // ── Passthroughs — the gui part already IS the part ─────────────────────────────
172
+ const MenubarGroup = Menu.Group;
173
+ const MenubarPortal = Menu.Portal;
174
+ const MenubarSub = Menu.Sub;
175
+ const MenubarRadioGroup = Menu.RadioGroup;
176
+ export { Menubar, MenubarMenu, MenubarTrigger, MenubarContent, MenubarItem, MenubarCheckboxItem, MenubarRadioItem, MenubarLabel, MenubarSeparator, MenubarShortcut, MenubarGroup, MenubarPortal, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarRadioGroup, };
177
+ //# sourceMappingURL=menubar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menubar.js","sourceRoot":"","sources":["../../../src/backends/gui/menubar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.MessageDock = MessageDock;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ /**
7
+ * MessageDock — a fixed stack of dismissable status cards, anchored to a
8
+ * corner or edge of the viewport (`top`, `bottom`, `top-right`, `bottom-right`).
9
+ *
10
+ * Unlike `Toaster` (a queue driven through an imperative `toast()` call), a
11
+ * dock is fully controlled: the caller owns the `messages` array and decides
12
+ * what survives a close. Each card carries a `type` — `info`, `success`,
13
+ * `warning` or `error` — that tints its border and background the way
14
+ * `Banner`'s variant ladder does; an untyped message renders on the plain
15
+ * surface tokens. `onClose` only reports which id was dismissed, the same
16
+ * contract `Banner.onClose` uses — the dock itself holds no visibility state.
17
+ */
18
+ const gui_1 = require("@hanzo/gui");
19
+ const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
20
+ const ink_1 = require("./ink.cjs");
21
+ const slot_1 = require("./slot.cjs");
22
+ const gesture_1 = require("./gesture.cjs");
23
+ const button_1 = require("./button.cjs");
24
+ const CLOSE = 24;
25
+ const CARD_MIN_WIDTH = 300;
26
+ const CardContext = /* @__PURE__ */ (0, gui_1.createStyledContext)({
27
+ type: 'default',
28
+ });
29
+ const DockFrame = (0, gui_1.styled)(gui_1.YStack, {
30
+ name: 'MessageDock',
31
+ position: 'fixed',
32
+ gap: '$2',
33
+ z: 50,
34
+ // Named `anchor`, not `position`: gui's own `position` prop is the CSS
35
+ // property (`fixed` above), and a variant sharing that name would fight it —
36
+ // the same reason `dock.tsx` calls its edge variant `edge`.
37
+ variants: {
38
+ anchor: {
39
+ top: { t: '$4', l: '50%', style: { transform: 'translateX(-50%)' } },
40
+ bottom: { b: '$4', l: '50%', style: { transform: 'translateX(-50%)' } },
41
+ 'top-right': { t: '$4', r: '$4' },
42
+ 'bottom-right': { b: '$4', r: '$4' },
43
+ },
44
+ },
45
+ defaultVariants: { anchor: 'bottom-right' },
46
+ });
47
+ const CardFrame = (0, gui_1.styled)(gui_1.YStack, {
48
+ name: 'MessageDockCard',
49
+ context: CardContext,
50
+ position: 'relative',
51
+ minW: CARD_MIN_WIDTH,
52
+ rounded: '$4',
53
+ borderWidth: 1,
54
+ borderColor: '$borderColor',
55
+ bg: '$background',
56
+ p: '$4',
57
+ shadowColor: '$dim',
58
+ shadowRadius: 16,
59
+ shadowOpacity: 0.2,
60
+ variants: {
61
+ type: {
62
+ default: {},
63
+ info: { borderColor: '$blue9', bg: '$blue2' },
64
+ success: { borderColor: '$green9', bg: '$green2' },
65
+ warning: { borderColor: '$yellow9', bg: '$yellow2' },
66
+ error: { borderColor: '$red9', bg: '$red2' },
67
+ },
68
+ },
69
+ defaultVariants: { type: 'default' },
70
+ });
71
+ const CardTitle = (0, gui_1.styled)(gui_1.SizableText, {
72
+ name: 'MessageDockCardTitle',
73
+ context: CardContext,
74
+ render: 'h4',
75
+ size: '$3',
76
+ fontWeight: '500',
77
+ color: '$ink',
78
+ variants: {
79
+ type: {
80
+ default: {},
81
+ info: { color: '$blue12' },
82
+ success: { color: '$green12' },
83
+ warning: { color: '$yellow12' },
84
+ error: { color: '$red12' },
85
+ },
86
+ },
87
+ });
88
+ const CardDescription = (0, gui_1.styled)(gui_1.SizableText, {
89
+ name: 'MessageDockCardDescription',
90
+ context: CardContext,
91
+ render: 'div',
92
+ size: '$2',
93
+ mt: '$1',
94
+ color: '$quiet',
95
+ variants: {
96
+ type: {
97
+ default: {},
98
+ info: { color: '$blue11' },
99
+ success: { color: '$green11' },
100
+ warning: { color: '$yellow11' },
101
+ error: { color: '$red11' },
102
+ },
103
+ },
104
+ });
105
+ function MessageDock({ messages, onClose, position = 'bottom-right', ...props }) {
106
+ const resolved = position ?? 'bottom-right';
107
+ return ((0, jsx_runtime_1.jsx)(DockFrame, { ...(0, slot_1.slot)('message-dock'), "data-position": resolved, anchor: resolved, ...props, children: messages.map((message) => {
108
+ const type = message.type ?? 'default';
109
+ return ((0, jsx_runtime_1.jsx)(CardFrame, { ...(0, slot_1.slot)('message-dock-card'), "data-message-id": message.id, "data-type": type, type: type, role: "status", children: (0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "flex-start", justify: "space-between", gap: "$4", children: [(0, jsx_runtime_1.jsxs)(gui_1.YStack, { flex: 1, pr: onClose ? CLOSE : 0, children: [(0, jsx_runtime_1.jsx)(CardTitle, { type: type, ...(0, slot_1.slot)('message-dock-card-title'), children: (0, ink_1.ink)(message.title) }), message.description ? ((0, jsx_runtime_1.jsx)(CardDescription, { type: type, ...(0, slot_1.slot)('message-dock-card-description'), children: (0, ink_1.ink)(message.description) })) : null] }), onClose ? ((0, jsx_runtime_1.jsx)(button_1.Button, { ...(0, slot_1.slot)('message-dock-card-close'), variant: "ghost", size: "icon", minH: CLOSE, minW: CLOSE, ...(0, gesture_1.touch)(CLOSE), position: "absolute", t: "$3", r: "$3", "aria-label": "Close", onPress: () => onClose(message.id), children: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.X, { size: 16 }) })) : null] }) }, message.id));
110
+ }) }));
111
+ }
@@ -0,0 +1,22 @@
1
+ import type { ComponentProps } from 'react';
2
+ export type MessageDockMessageType = 'info' | 'success' | 'warning' | 'error';
3
+ export type MessageDockMessage = {
4
+ id: string;
5
+ type?: MessageDockMessageType;
6
+ title: string;
7
+ description?: string;
8
+ };
9
+ export type MessageDockPosition = 'top' | 'bottom' | 'top-right' | 'bottom-right';
10
+ declare const DockFrame: import("@hanzogui/web").GuiComponent<import("@hanzogui/web").TamaDefer, import("@hanzogui/web").GuiElement, import("@hanzogui/core").RNGuiViewNonStyleProps, import("@hanzogui/web").StackStyleBase, {
11
+ anchor?: "bottom" | "bottom-right" | "top" | "top-right" | undefined;
12
+ elevation?: number | import("@hanzogui/web").SizeTokens | undefined;
13
+ fullscreen?: boolean | undefined;
14
+ }, import("@hanzogui/web").StaticConfigPublic>;
15
+ export type MessageDockProps = Omit<ComponentProps<typeof DockFrame>, 'anchor' | 'position' | 'children'> & {
16
+ messages: MessageDockMessage[];
17
+ onClose?: (id: string) => void;
18
+ position?: MessageDockPosition | null;
19
+ };
20
+ declare function MessageDock({ messages, onClose, position, ...props }: MessageDockProps): import("react").JSX.Element;
21
+ export { MessageDock };
22
+ //# sourceMappingURL=message-dock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-dock.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/message-dock.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAM3C,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AAE7E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,sBAAsB,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,GAAG,cAAc,CAAA;AASjF,QAAA,MAAM,SAAS;;;;8CAmBb,CAAA;AAuEF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG;IAC1G,QAAQ,EAAE,kBAAkB,EAAE,CAAA;IAC9B,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,QAAQ,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAA;CACtC,CAAA;AAED,iBAAS,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAyB,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,+BAiDhG;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,110 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * MessageDock — a fixed stack of dismissable status cards, anchored to a
5
+ * corner or edge of the viewport (`top`, `bottom`, `top-right`, `bottom-right`).
6
+ *
7
+ * Unlike `Toaster` (a queue driven through an imperative `toast()` call), a
8
+ * dock is fully controlled: the caller owns the `messages` array and decides
9
+ * what survives a close. Each card carries a `type` — `info`, `success`,
10
+ * `warning` or `error` — that tints its border and background the way
11
+ * `Banner`'s variant ladder does; an untyped message renders on the plain
12
+ * surface tokens. `onClose` only reports which id was dismissed, the same
13
+ * contract `Banner.onClose` uses — the dock itself holds no visibility state.
14
+ */
15
+ import { XStack, YStack, SizableText, createStyledContext, styled } from '@hanzo/gui';
16
+ import { X } from '@hanzogui/lucide-icons-2';
17
+ import { ink } from './ink.js';
18
+ import { slot } from './slot.js';
19
+ import { touch } from './gesture.js';
20
+ import { Button } from './button.js';
21
+ const CLOSE = 24;
22
+ const CARD_MIN_WIDTH = 300;
23
+ const CardContext = /* @__PURE__ */ createStyledContext({
24
+ type: 'default',
25
+ });
26
+ const DockFrame = styled(YStack, {
27
+ name: 'MessageDock',
28
+ position: 'fixed',
29
+ gap: '$2',
30
+ z: 50,
31
+ // Named `anchor`, not `position`: gui's own `position` prop is the CSS
32
+ // property (`fixed` above), and a variant sharing that name would fight it —
33
+ // the same reason `dock.tsx` calls its edge variant `edge`.
34
+ variants: {
35
+ anchor: {
36
+ top: { t: '$4', l: '50%', style: { transform: 'translateX(-50%)' } },
37
+ bottom: { b: '$4', l: '50%', style: { transform: 'translateX(-50%)' } },
38
+ 'top-right': { t: '$4', r: '$4' },
39
+ 'bottom-right': { b: '$4', r: '$4' },
40
+ },
41
+ },
42
+ defaultVariants: { anchor: 'bottom-right' },
43
+ });
44
+ const CardFrame = styled(YStack, {
45
+ name: 'MessageDockCard',
46
+ context: CardContext,
47
+ position: 'relative',
48
+ minW: CARD_MIN_WIDTH,
49
+ rounded: '$4',
50
+ borderWidth: 1,
51
+ borderColor: '$borderColor',
52
+ bg: '$background',
53
+ p: '$4',
54
+ shadowColor: '$dim',
55
+ shadowRadius: 16,
56
+ shadowOpacity: 0.2,
57
+ variants: {
58
+ type: {
59
+ default: {},
60
+ info: { borderColor: '$blue9', bg: '$blue2' },
61
+ success: { borderColor: '$green9', bg: '$green2' },
62
+ warning: { borderColor: '$yellow9', bg: '$yellow2' },
63
+ error: { borderColor: '$red9', bg: '$red2' },
64
+ },
65
+ },
66
+ defaultVariants: { type: 'default' },
67
+ });
68
+ const CardTitle = styled(SizableText, {
69
+ name: 'MessageDockCardTitle',
70
+ context: CardContext,
71
+ render: 'h4',
72
+ size: '$3',
73
+ fontWeight: '500',
74
+ color: '$ink',
75
+ variants: {
76
+ type: {
77
+ default: {},
78
+ info: { color: '$blue12' },
79
+ success: { color: '$green12' },
80
+ warning: { color: '$yellow12' },
81
+ error: { color: '$red12' },
82
+ },
83
+ },
84
+ });
85
+ const CardDescription = styled(SizableText, {
86
+ name: 'MessageDockCardDescription',
87
+ context: CardContext,
88
+ render: 'div',
89
+ size: '$2',
90
+ mt: '$1',
91
+ color: '$quiet',
92
+ variants: {
93
+ type: {
94
+ default: {},
95
+ info: { color: '$blue11' },
96
+ success: { color: '$green11' },
97
+ warning: { color: '$yellow11' },
98
+ error: { color: '$red11' },
99
+ },
100
+ },
101
+ });
102
+ function MessageDock({ messages, onClose, position = 'bottom-right', ...props }) {
103
+ const resolved = position ?? 'bottom-right';
104
+ return (_jsx(DockFrame, { ...slot('message-dock'), "data-position": resolved, anchor: resolved, ...props, children: messages.map((message) => {
105
+ const type = message.type ?? 'default';
106
+ return (_jsx(CardFrame, { ...slot('message-dock-card'), "data-message-id": message.id, "data-type": type, type: type, role: "status", children: _jsxs(XStack, { items: "flex-start", justify: "space-between", gap: "$4", children: [_jsxs(YStack, { flex: 1, pr: onClose ? CLOSE : 0, children: [_jsx(CardTitle, { type: type, ...slot('message-dock-card-title'), children: ink(message.title) }), message.description ? (_jsx(CardDescription, { type: type, ...slot('message-dock-card-description'), children: ink(message.description) })) : null] }), onClose ? (_jsx(Button, { ...slot('message-dock-card-close'), variant: "ghost", size: "icon", minH: CLOSE, minW: CLOSE, ...touch(CLOSE), position: "absolute", t: "$3", r: "$3", "aria-label": "Close", onPress: () => onClose(message.id), children: _jsx(X, { size: 16 }) })) : null] }) }, message.id));
107
+ }) }));
108
+ }
109
+ export { MessageDock };
110
+ //# sourceMappingURL=message-dock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-dock.js","sourceRoot":"","sources":["../../../src/backends/gui/message-dock.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.MiniCalendar = MiniCalendar;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ /**
7
+ * MiniCalendar — a single compact month, framed, for picking one day.
8
+ *
9
+ * A thin shell around `Calendar` (`mode="single"`, one month, no outside days):
10
+ * the month arithmetic, the day grid, and the keyboard already live there, so
11
+ * this only fixes the shape a small inline picker needs — a 256px bordered
12
+ * frame — and narrows the props to the one date a caller actually gets back.
13
+ * `month`/`onMonthChange` pass straight through for a caller that pages the
14
+ * view without changing the pick.
15
+ */
16
+ const gui_1 = require("@hanzo/gui");
17
+ const sx_1 = require("../../sx.cjs");
18
+ const calendar_1 = require("./calendar.cjs");
19
+ const slot_1 = require("./slot.cjs");
20
+ function MiniCalendar({ className, selected, onSelect, month, onMonthChange, ...props }) {
21
+ return ((0, jsx_runtime_1.jsx)(gui_1.YStack, { ...(0, slot_1.slot)('mini-calendar'), width: 256, borderWidth: 1, borderColor: "$borderColor", rounded: "$4", ...(0, sx_1.sx)(className), ...props, children: (0, jsx_runtime_1.jsx)(calendar_1.Calendar, { mode: "single", showOutsideDays: false, selected: selected,
22
+ // A pick always hands back a day; re-pressing the selected day is a
23
+ // no-op rather than the full Calendar's clear-on-repeat.
24
+ onSelect: (date) => date && onSelect?.(date), month: month, onMonthChange: onMonthChange }) }));
25
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * MiniCalendar — a single compact month, framed, for picking one day.
3
+ *
4
+ * A thin shell around `Calendar` (`mode="single"`, one month, no outside days):
5
+ * the month arithmetic, the day grid, and the keyboard already live there, so
6
+ * this only fixes the shape a small inline picker needs — a 256px bordered
7
+ * frame — and narrows the props to the one date a caller actually gets back.
8
+ * `month`/`onMonthChange` pass straight through for a caller that pages the
9
+ * view without changing the pick.
10
+ */
11
+ import { type YStackProps } from '@hanzo/gui';
12
+ export interface MiniCalendarProps extends Omit<YStackProps, 'onSelect'> {
13
+ /** The picked day. */
14
+ selected?: Date;
15
+ onSelect?: (date: Date) => void;
16
+ /** The month shown, controlled. Uncontrolled starts at today's. */
17
+ month?: Date;
18
+ onMonthChange?: (month: Date) => void;
19
+ }
20
+ declare function MiniCalendar({ className, selected, onSelect, month, onMonthChange, ...props }: MiniCalendarProps): import("react").JSX.Element;
21
+ export { MiniCalendar };
22
+ //# sourceMappingURL=mini-calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mini-calendar.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/mini-calendar.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAMrD,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;IACtE,sBAAsB;IACtB,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC/B,mEAAmE;IACnE,KAAK,CAAC,EAAE,IAAI,CAAA;IACZ,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAA;CACtC;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,+BAuBzG;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}