@hanzo/ui 8.27.11 → 8.27.13

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 (165) hide show
  1. package/LICENSE-APACHE +205 -0
  2. package/LICENSE-MIT +21 -0
  3. package/LICENSE.md +5 -18
  4. package/NOTICE +6 -0
  5. package/dist/agents/ChannelMembers.cjs +10 -2
  6. package/dist/agents/ChannelMembers.d.ts +3 -2
  7. package/dist/agents/ChannelMembers.d.ts.map +1 -1
  8. package/dist/agents/ChannelMembers.js +10 -2
  9. package/dist/agents/ChannelMembers.js.map +1 -1
  10. package/dist/agents/ChannelNotes.cjs +10 -2
  11. package/dist/agents/ChannelNotes.d.ts +1 -0
  12. package/dist/agents/ChannelNotes.d.ts.map +1 -1
  13. package/dist/agents/ChannelNotes.js +10 -2
  14. package/dist/agents/ChannelNotes.js.map +1 -1
  15. package/dist/agents/DiffViewer.cjs +19 -7
  16. package/dist/agents/DiffViewer.d.ts +1 -0
  17. package/dist/agents/DiffViewer.d.ts.map +1 -1
  18. package/dist/agents/DiffViewer.js +19 -7
  19. package/dist/agents/DiffViewer.js.map +1 -1
  20. package/dist/agents/DirectoryModal.cjs +97 -0
  21. package/dist/agents/DirectoryModal.d.ts +29 -0
  22. package/dist/agents/DirectoryModal.d.ts.map +1 -0
  23. package/dist/agents/DirectoryModal.js +94 -0
  24. package/dist/agents/DirectoryModal.js.map +1 -0
  25. package/dist/agents/DriveViewer.cjs +78 -0
  26. package/dist/agents/DriveViewer.d.ts +30 -0
  27. package/dist/agents/DriveViewer.d.ts.map +1 -0
  28. package/dist/agents/DriveViewer.js +42 -0
  29. package/dist/agents/DriveViewer.js.map +1 -0
  30. package/dist/agents/LiveVoiceCall.cjs +55 -39
  31. package/dist/agents/LiveVoiceCall.d.ts +7 -7
  32. package/dist/agents/LiveVoiceCall.d.ts.map +1 -1
  33. package/dist/agents/LiveVoiceCall.js +56 -40
  34. package/dist/agents/LiveVoiceCall.js.map +1 -1
  35. package/dist/agents/MCPHub.cjs +19 -8
  36. package/dist/agents/MCPHub.d.ts +5 -10
  37. package/dist/agents/MCPHub.d.ts.map +1 -1
  38. package/dist/agents/MCPHub.js +19 -8
  39. package/dist/agents/MCPHub.js.map +1 -1
  40. package/dist/agents/ShortcutsSheet.cjs +34 -14
  41. package/dist/agents/ShortcutsSheet.d.ts +7 -6
  42. package/dist/agents/ShortcutsSheet.d.ts.map +1 -1
  43. package/dist/agents/ShortcutsSheet.js +34 -14
  44. package/dist/agents/ShortcutsSheet.js.map +1 -1
  45. package/dist/agents/SwarmBar.cjs +34 -13
  46. package/dist/agents/SwarmBar.d.ts +7 -8
  47. package/dist/agents/SwarmBar.d.ts.map +1 -1
  48. package/dist/agents/SwarmBar.js +34 -13
  49. package/dist/agents/SwarmBar.js.map +1 -1
  50. package/dist/agents/TerminalViewer.cjs +71 -0
  51. package/dist/agents/TerminalViewer.d.ts +20 -0
  52. package/dist/agents/TerminalViewer.d.ts.map +1 -0
  53. package/dist/agents/TerminalViewer.js +68 -0
  54. package/dist/agents/TerminalViewer.js.map +1 -0
  55. package/dist/agents/ThemeCustomizer.cjs +29 -6
  56. package/dist/agents/ThemeCustomizer.d.ts +1 -0
  57. package/dist/agents/ThemeCustomizer.d.ts.map +1 -1
  58. package/dist/agents/ThemeCustomizer.js +29 -6
  59. package/dist/agents/ThemeCustomizer.js.map +1 -1
  60. package/dist/agents/index.cjs +7 -1
  61. package/dist/agents/index.d.ts +3 -0
  62. package/dist/agents/index.d.ts.map +1 -1
  63. package/dist/agents/index.js +3 -0
  64. package/dist/agents/index.js.map +1 -1
  65. package/dist/backends/gui/3d-card.d.ts +8 -8
  66. package/dist/backends/gui/3d-marquee.d.ts +7 -8
  67. package/dist/backends/gui/3d-marquee.d.ts.map +1 -1
  68. package/dist/backends/gui/3d-pin.d.ts +1 -1
  69. package/dist/backends/gui/alert.d.ts +3 -3
  70. package/dist/backends/gui/android.d.ts +1 -1
  71. package/dist/backends/gui/animated-testimonials.d.ts +1 -1
  72. package/dist/backends/gui/animated-tooltip.d.ts +1 -1
  73. package/dist/backends/gui/announcement.d.ts +1 -1
  74. package/dist/backends/gui/banner.d.ts +1 -1
  75. package/dist/backends/gui/button.d.ts +9 -1
  76. package/dist/backends/gui/button.d.ts.map +1 -1
  77. package/dist/backends/gui/button.js.map +1 -1
  78. package/dist/backends/gui/calendar.js.map +1 -1
  79. package/dist/backends/gui/card.d.ts +9 -9
  80. package/dist/backends/gui/command.d.ts +5 -5
  81. package/dist/backends/gui/command.d.ts.map +1 -1
  82. package/dist/backends/gui/context-menu.d.ts +17 -17
  83. package/dist/backends/gui/context-menu.d.ts.map +1 -1
  84. package/dist/backends/gui/context-menu.js.map +1 -1
  85. package/dist/backends/gui/credit-card.d.ts +1 -1
  86. package/dist/backends/gui/desktop.d.ts +1 -1
  87. package/dist/backends/gui/dock.d.ts +3 -3
  88. package/dist/backends/gui/dropdown-menu.cjs +2 -2
  89. package/dist/backends/gui/dropdown-menu.d.ts +19 -19
  90. package/dist/backends/gui/dropdown-menu.d.ts.map +1 -1
  91. package/dist/backends/gui/dropdown-menu.js +2 -2
  92. package/dist/backends/gui/dropdown-menu.js.map +1 -1
  93. package/dist/backends/gui/empty.d.ts +8 -8
  94. package/dist/backends/gui/field.d.ts +3 -3
  95. package/dist/backends/gui/gantt.d.ts +1 -1
  96. package/dist/backends/gui/glimpse.cjs +0 -4
  97. package/dist/backends/gui/glimpse.d.ts.map +1 -1
  98. package/dist/backends/gui/glimpse.js +0 -4
  99. package/dist/backends/gui/glimpse.js.map +1 -1
  100. package/dist/backends/gui/grid-pattern.d.ts +1 -2
  101. package/dist/backends/gui/grid-pattern.d.ts.map +1 -1
  102. package/dist/backends/gui/image-zoom.d.ts +1 -1
  103. package/dist/backends/gui/iphone-15-pro.d.ts +1 -1
  104. package/dist/backends/gui/item.d.ts +10 -10
  105. package/dist/backends/gui/list.d.ts +2 -2
  106. package/dist/backends/gui/macos-dock.d.ts +2 -2
  107. package/dist/backends/gui/magnetic.d.ts +1 -1
  108. package/dist/backends/gui/marquee.d.ts +1 -15
  109. package/dist/backends/gui/marquee.d.ts.map +1 -1
  110. package/dist/backends/gui/menu-dock.d.ts +1 -1
  111. package/dist/backends/gui/menubar.d.ts +18 -18
  112. package/dist/backends/gui/menubar.d.ts.map +1 -1
  113. package/dist/backends/gui/message-dock.d.ts +1 -1
  114. package/dist/backends/gui/motion-highlight.d.ts +1 -12
  115. package/dist/backends/gui/motion-highlight.d.ts.map +1 -1
  116. package/dist/backends/gui/order-entry.cjs +1 -10
  117. package/dist/backends/gui/order-entry.d.ts.map +1 -1
  118. package/dist/backends/gui/order-entry.js +1 -10
  119. package/dist/backends/gui/order-entry.js.map +1 -1
  120. package/dist/backends/gui/orders-history.cjs +1 -1
  121. package/dist/backends/gui/orders-history.js +1 -1
  122. package/dist/backends/gui/orders-history.js.map +1 -1
  123. package/dist/backends/gui/pagination.d.ts +4 -4
  124. package/dist/backends/gui/qr-code.d.ts +1 -2
  125. package/dist/backends/gui/qr-code.d.ts.map +1 -1
  126. package/dist/backends/gui/scroll-area.d.ts +3 -14
  127. package/dist/backends/gui/scroll-area.d.ts.map +1 -1
  128. package/dist/backends/gui/select.cjs +1 -1
  129. package/dist/backends/gui/select.d.ts +1 -1
  130. package/dist/backends/gui/select.d.ts.map +1 -1
  131. package/dist/backends/gui/select.js +1 -1
  132. package/dist/backends/gui/select.js.map +1 -1
  133. package/dist/backends/gui/sheet.d.ts +3 -3
  134. package/dist/backends/gui/sheet.d.ts.map +1 -1
  135. package/dist/backends/gui/status.d.ts +1 -1
  136. package/dist/backends/gui/table.d.ts +8 -8
  137. package/dist/backends/gui/toaster.d.ts +1 -15
  138. package/dist/backends/gui/toaster.d.ts.map +1 -1
  139. package/dist/backends/gui/toggle-group.cjs +3 -3
  140. package/dist/backends/gui/toggle-group.d.ts +1 -1
  141. package/dist/backends/gui/toggle-group.d.ts.map +1 -1
  142. package/dist/backends/gui/toggle-group.js +3 -3
  143. package/dist/backends/gui/toggle-group.js.map +1 -1
  144. package/dist/backends/gui/toggle.d.ts +1 -1
  145. package/dist/backends/gui/video-player.d.ts +1 -1
  146. package/dist/chat/Composer.cjs +10 -10
  147. package/dist/chat/Composer.d.ts +17 -16
  148. package/dist/chat/Composer.d.ts.map +1 -1
  149. package/dist/chat/Composer.js +11 -11
  150. package/dist/chat/Composer.js.map +1 -1
  151. package/dist/chat/Thread.d.ts +2 -8
  152. package/dist/chat/Thread.d.ts.map +1 -1
  153. package/dist/gallery.cjs +1 -180
  154. package/dist/gallery.d.ts.map +1 -1
  155. package/dist/gallery.html +308 -641
  156. package/dist/gallery.js +2 -181
  157. package/dist/gallery.js.map +1 -1
  158. package/dist/gui-config.cjs +5 -0
  159. package/dist/gui-config.d.ts +18 -3
  160. package/dist/gui-config.d.ts.map +1 -1
  161. package/dist/gui-config.js +5 -0
  162. package/dist/gui-config.js.map +1 -1
  163. package/dist/styles/motion.css +57 -2
  164. package/dist/styles.css +181 -482
  165. package/package.json +21 -19
@@ -1 +1 @@
1
- {"version":3,"file":"toaster.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/toaster.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAEL,KAAK,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,IAAI,eAAe,EACrC,MAAM,oBAAoB,CAAA;AAG3B,iEAAiE;AACjE,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,MAAM,CACF,OAAO,GACP,OAAO,GACP,aAAa,GACb,MAAM,GACN,cAAc,GACd,cAAc,GACd,aAAa,EACf,MAAM,CACP,CACF,CAAA;AAED,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC;IACzE,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;IACvC,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,aAAa,GAAG;QAAE,UAAU,CAAC,EAAE,iBAAiB,CAAA;KAAE,CAAA;CAClE;AAED,QAAA,MAAM,OAAO,qGAGX,CAAA;AAEF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"toaster.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/toaster.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAEL,KAAK,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,IAAI,eAAe,EACrC,MAAM,oBAAoB,CAAA;AAG3B,iEAAiE;AACjE,MAAM,MAAM,iBAAiB,GAAG,OAAO,CACrC,MAAM,CACF,OAAO,GACP,OAAO,GACP,aAAa,GACb,MAAM,GACN,cAAc,GACd,cAAc,GACd,aAAa,EACf,MAAM,CACP,CACF,CAAA;AAED,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC;IACzE,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;IACvC,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,aAAa,GAAG;QAAE,UAAU,CAAC,EAAE,iBAAiB,CAAA;KAAE,CAAA;CAClE;AAED,QAAA,MAAM,OAAO,8FAGX,CAAA;AAEF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -97,13 +97,13 @@ function ToggleGroup({ type = 'single', value, defaultValue, onValueChange, orie
97
97
  disableDeactivation,
98
98
  }, role: type === 'single' ? 'radiogroup' : 'toolbar', orientation: orientation, disabled: disabled, flexDirection: orientation === 'vertical' ? 'column' : 'row', items: "center", gap: "$1", ...props, children: (0, jsx_runtime_1.jsx)(GroupContext.Provider, { value: { type, selected, variant, size, disabled }, children: children }) }));
99
99
  }
100
- function ToggleGroupItem({ variant, size, disabled, children, ...props }) {
100
+ function ToggleGroupItem({ variant, size, disabled, children, value, ...props }) {
101
101
  const group = (0, react_1.useContext)(GroupContext);
102
102
  const v = group.variant ?? variant ?? 'default';
103
103
  const s = group.size ?? size ?? 'default';
104
- const on = group.selected.includes(props.value);
104
+ const on = group.selected.includes(value);
105
105
  const off = disabled || group.disabled;
106
- return ((0, jsx_runtime_1.jsx)(gui_1.ToggleGroup.Item, { ...(0, slot_1.slot)('toggle-group-item'), "data-variant": v, "data-size": s,
106
+ return ((0, jsx_runtime_1.jsx)(gui_1.ToggleGroup.Item, { value: value, ...(0, slot_1.slot)('toggle-group-item'), "data-variant": v, "data-size": s,
107
107
  // The two Radix semantics gui drops in `single` mode. `aria-pressed` is
108
108
  // left alone for `multiple`, where gui already sets it from the same state.
109
109
  role: group.type === 'single' ? 'radio' : undefined, "aria-checked": group.type === 'single' ? on : undefined, unstyled: true, flexDirection: "row", items: "center", justify: "center", height: HEIGHT[s], px: PAD[s], gap: "$1.5", borderWidth: 1, rounded: "$3", select: "none", disabled: off, opacity: off ? 0.5 : 1, cursor: off ? 'not-allowed' : 'pointer', focusVisibleStyle: RING, ...REST[v], activeStyle: ON[v], ...(0, gesture_1.touch)(HEIGHT[s], 44, 'y'), ...props, children: (0, ink_1.ink)(children, undefined, {
@@ -106,6 +106,6 @@ export type ToggleGroupItemProps = Omit<ComponentProps<typeof GuiToggleGroup.Ite
106
106
  variant?: ToggleGroupVariant;
107
107
  size?: ToggleGroupSize;
108
108
  };
109
- declare function ToggleGroupItem({ variant, size, disabled, children, ...props }: ToggleGroupItemProps): import("react").JSX.Element;
109
+ declare function ToggleGroupItem({ variant, size, disabled, children, value, ...props }: ToggleGroupItemProps): import("react").JSX.Element;
110
110
  export { ToggleGroup, ToggleGroupItem };
111
111
  //# sourceMappingURL=toggle-group.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,WAAW,IAAI,cAAc,EAAwB,MAAM,YAAY,CAAA;AAChF,OAAO,EAA6B,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAK1G,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,CAAA;AACtD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;AAyDrD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG;IAC/C,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC;;;;;;;;;OASG;IACH,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;CAC/C,CAAA;AAED,iBAAS,WAAW,CAAC,EACnB,IAAe,EACf,KAAK,EACL,YAAY,EACZ,aAAa,EACb,WAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAoClB;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,EAC1C,MAAM,CACP,GAAG;IACF,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,IAAI,CAAC,EAAE,eAAe,CAAA;CACvB,CAAA;AAED,iBAAS,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,+BA8C7F;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,WAAW,IAAI,cAAc,EAAwB,MAAM,YAAY,CAAA;AAChF,OAAO,EAA6B,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAK1G,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,CAAA;AACtD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;AAyDrD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG;IAC/C,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC;;;;;;;;;OASG;IACH,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;CAC/C,CAAA;AAED,iBAAS,WAAW,CAAC,EACnB,IAAe,EACf,KAAK,EACL,YAAY,EACZ,aAAa,EACb,WAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAoClB;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,EAC1C,MAAM,CACP,GAAG;IACF,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,IAAI,CAAC,EAAE,eAAe,CAAA;CACvB,CAAA;AAED,iBAAS,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,+BA+CpG;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAA"}
@@ -93,13 +93,13 @@ function ToggleGroup({ type = 'single', value, defaultValue, onValueChange, orie
93
93
  disableDeactivation,
94
94
  }, role: type === 'single' ? 'radiogroup' : 'toolbar', orientation: orientation, disabled: disabled, flexDirection: orientation === 'vertical' ? 'column' : 'row', items: "center", gap: "$1", ...props, children: _jsx(GroupContext.Provider, { value: { type, selected, variant, size, disabled }, children: children }) }));
95
95
  }
96
- function ToggleGroupItem({ variant, size, disabled, children, ...props }) {
96
+ function ToggleGroupItem({ variant, size, disabled, children, value, ...props }) {
97
97
  const group = useContext(GroupContext);
98
98
  const v = group.variant ?? variant ?? 'default';
99
99
  const s = group.size ?? size ?? 'default';
100
- const on = group.selected.includes(props.value);
100
+ const on = group.selected.includes(value);
101
101
  const off = disabled || group.disabled;
102
- return (_jsx(GuiToggleGroup.Item, { ...slot('toggle-group-item'), "data-variant": v, "data-size": s,
102
+ return (_jsx(GuiToggleGroup.Item, { value: value, ...slot('toggle-group-item'), "data-variant": v, "data-size": s,
103
103
  // The two Radix semantics gui drops in `single` mode. `aria-pressed` is
104
104
  // left alone for `multiple`, where gui already sets it from the same state.
105
105
  role: group.type === 'single' ? 'radio' : undefined, "aria-checked": group.type === 'single' ? on : undefined, unstyled: true, flexDirection: "row", items: "center", justify: "center", height: HEIGHT[s], px: PAD[s], gap: "$1.5", borderWidth: 1, rounded: "$3", select: "none", disabled: off, opacity: off ? 0.5 : 1, cursor: off ? 'not-allowed' : 'pointer', focusVisibleStyle: RING, ...REST[v], activeStyle: ON[v], ...touch(HEIGHT[s], 44, 'y'), ...props, children: ink(children, undefined, {
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { ComponentProps, MouseEventHandler, ReactNode } from 'react';
2
2
  export type ToggleVariant = 'default' | 'outline';
3
3
  export type ToggleSize = 'default' | 'sm' | 'lg';
4
- declare const ToggleFrame: import("@hanzogui/web").GuiComponent<import("@hanzogui/web").TamaDefer, import("@hanzogui/web").GuiElement, import("@hanzogui/core").RNGuiViewNonStyleProps, import("@hanzogui/web").StackStyleBase, {
4
+ declare const ToggleFrame: import("@hanzogui/web").GuiComponent<import("@hanzogui/web").TamaDefer, any, import("@hanzogui/core").RNGuiViewNonStyleProps, import("@hanzogui/web").StackStyleBase, {
5
5
  disabled?: boolean | undefined;
6
6
  elevation?: number | import("@hanzogui/web").SizeTokens | undefined;
7
7
  fullscreen?: boolean | undefined;
@@ -24,7 +24,7 @@ export type MediaSubtitleTrack = {
24
24
  default?: boolean;
25
25
  };
26
26
  export type MediaPlayerSize = 'sm' | 'md' | 'lg' | 'full';
27
- declare const Frame: import("@hanzogui/web").GuiComponent<import("@hanzogui/web").TamaDefer, import("@hanzogui/web").GuiElement, import("@hanzogui/core").RNGuiViewNonStyleProps, import("@hanzogui/web").StackStyleBase, {
27
+ declare const Frame: import("@hanzogui/web").GuiComponent<import("@hanzogui/web").TamaDefer, any, import("@hanzogui/core").RNGuiViewNonStyleProps, import("@hanzogui/web").StackStyleBase, {
28
28
  elevation?: number | import("@hanzogui/web").SizeTokens | undefined;
29
29
  fullscreen?: boolean | undefined;
30
30
  size?: "full" | "lg" | "md" | "sm" | undefined;
@@ -7,20 +7,20 @@ const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  /**
8
8
  * Composer — the one chat input for every Hanzo surface.
9
9
  *
10
- * ONE ROW: `[add] [field] [mic] [send]`. `add` and `mic` are slots a surface
11
- * fills; everything else is the same everywhere.
12
- *
13
10
  * Presentational and controlled: it owns no draft, no transport and no model
14
- * state.
11
+ * state. `children` is the toolbar slot, which is where a surface puts its
12
+ * `ModelSelector`, attachment control or mode chips — that keeps the shell the
13
+ * same everywhere while the affordances stay per-surface.
15
14
  *
16
15
  * The send control is the same button in both states: it submits, and while a
17
- * turn is in flight it stops.
16
+ * turn is in flight it stops. Two buttons in one place was the thing every
17
+ * surface got subtly different.
18
18
  *
19
19
  * Escape and ArrowUp are not bound. Dismissal belongs to whatever the composer
20
20
  * floats inside, and history recall needs a turn store this has no view of.
21
21
  *
22
- * Growth is `Textarea`'s and follows the content. `rows` is the floor,
23
- * `maxHeight` the ceiling.
22
+ * Growth is `Textarea`'s and follows the content, so a wrapped paragraph raises
23
+ * the field. `rows` is the floor, `maxHeight` the ceiling.
24
24
  */
25
25
  const gui_1 = require("@hanzo/gui");
26
26
  const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
@@ -44,7 +44,7 @@ const FLOOR = 44;
44
44
  * changes — which is what a model-named placeholder forces a surface to do.
45
45
  */
46
46
  exports.ASK = 'Ask anything';
47
- function Composer({ value, onChange, onSend, onStop, busy = false, disabled = false, placeholder = exports.ASK, rows = MIN_ROWS, maxHeight = CEILING, add, mic, label, field, send, ...props }) {
47
+ function Composer({ value, onChange, onSend, onStop, busy = false, disabled = false, placeholder = exports.ASK, rows = MIN_ROWS, maxHeight = CEILING, children, hint, label, field, send, ...props }) {
48
48
  const sendable = (0, send_1.ready)(value, busy, disabled);
49
49
  const keyed = (e) => {
50
50
  const key = e.key ?? e.nativeEvent?.key ?? '';
@@ -64,12 +64,12 @@ function Composer({ value, onChange, onSend, onStop, busy = false, disabled = fa
64
64
  if (sendable)
65
65
  onSend();
66
66
  };
67
- return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { ...(0, slot_1.slot)('composer'), width: "100%", items: "center", gap: PAD, rounded: 9999, borderWidth: 1, borderColor: "$borderColor", bg: "$background", p: PAD, ...props, children: [add, (0, jsx_runtime_1.jsx)(gui_2.Textarea, { ...(0, slot_1.slot)('composer-field'), rows: rows, placeholder: placeholder, disabled: disabled, borderWidth: 0, minH: FLOOR, flex: 1, maxH: maxHeight, "aria-label": label ?? placeholder, ...field,
67
+ return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('composer'), width: "100%", rounded: "$5", borderWidth: 1, borderColor: "$borderColor", bg: "$background", p: PAD, gap: PAD, ...props, children: [(0, jsx_runtime_1.jsx)(gui_2.Textarea, { ...(0, slot_1.slot)('composer-field'), rows: rows, placeholder: placeholder, disabled: disabled, borderWidth: 0, minH: FLOOR, maxH: maxHeight, "aria-label": label ?? placeholder, ...field,
68
68
  // After `field`: spread over, a caller's `onKeyDown` would replace the
69
69
  // Enter rule and the IME guard. Theirs runs first and can claim the key.
70
70
  value: value, onChangeText: onChange, onKeyDown: (e) => {
71
71
  field?.onKeyDown?.(e);
72
72
  if (!e?.defaultPrevented)
73
73
  keyed(e);
74
- } }), mic, send ?? ((0, jsx_runtime_1.jsx)(gui_2.Button, { ...(0, slot_1.slot)('composer-send'), size: "sm", circular: true, disabled: busy ? !onStop : !sendable, onPress: busy ? onStop : onSend, "aria-label": busy ? 'Stop' : 'Send', children: busy ? (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Square, { size: 14 }) : (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ArrowUp, { size: 16 }) }))] }));
74
+ } }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: PAD, children: [children, (0, jsx_runtime_1.jsx)(gui_1.XStack, { flex: 1 }), hint ? ((0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$1", color: "$soft", children: hint })) : null, send ?? ((0, jsx_runtime_1.jsx)(gui_2.Button, { ...(0, slot_1.slot)('composer-send'), size: "sm", disabled: busy ? !onStop : !sendable, onPress: busy ? onStop : onSend, "aria-label": busy ? 'Stop' : 'Send', children: busy ? (0, jsx_runtime_1.jsx)(lucide_icons_2_1.Square, { size: 14 }) : (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ArrowUp, { size: 16 }) }))] })] }));
75
75
  }
@@ -1,26 +1,26 @@
1
1
  /**
2
2
  * Composer — the one chat input for every Hanzo surface.
3
3
  *
4
- * ONE ROW: `[add] [field] [mic] [send]`. `add` and `mic` are slots a surface
5
- * fills; everything else is the same everywhere.
6
- *
7
4
  * Presentational and controlled: it owns no draft, no transport and no model
8
- * state.
5
+ * state. `children` is the toolbar slot, which is where a surface puts its
6
+ * `ModelSelector`, attachment control or mode chips — that keeps the shell the
7
+ * same everywhere while the affordances stay per-surface.
9
8
  *
10
9
  * The send control is the same button in both states: it submits, and while a
11
- * turn is in flight it stops.
10
+ * turn is in flight it stops. Two buttons in one place was the thing every
11
+ * surface got subtly different.
12
12
  *
13
13
  * Escape and ArrowUp are not bound. Dismissal belongs to whatever the composer
14
14
  * floats inside, and history recall needs a turn store this has no view of.
15
15
  *
16
- * Growth is `Textarea`'s and follows the content. `rows` is the floor,
17
- * `maxHeight` the ceiling.
16
+ * Growth is `Textarea`'s and follows the content, so a wrapped paragraph raises
17
+ * the field. `rows` is the floor, `maxHeight` the ceiling.
18
18
  */
19
- import { XStack } from '@hanzo/gui';
19
+ import { YStack } from '@hanzo/gui';
20
20
  import type { ComponentProps, ReactNode } from 'react';
21
21
  import { Textarea } from '../backends/gui/index.js';
22
22
  /** `onChange` is dropped: here it carries the draft, not a DOM change event. */
23
- type Row = Omit<ComponentProps<typeof XStack>, 'children' | 'onChange'>;
23
+ type Stack = Omit<ComponentProps<typeof YStack>, 'children' | 'onChange'>;
24
24
  type FieldProps = Omit<ComponentProps<typeof Textarea>, 'value' | 'onChangeText'>;
25
25
  /**
26
26
  * The resting placeholder.
@@ -31,7 +31,7 @@ type FieldProps = Omit<ComponentProps<typeof Textarea>, 'value' | 'onChangeText'
31
31
  * changes — which is what a model-named placeholder forces a surface to do.
32
32
  */
33
33
  export declare const ASK = "Ask anything";
34
- export interface ComposerProps extends Row {
34
+ export interface ComposerProps extends Stack {
35
35
  value: string;
36
36
  onChange: (value: string) => void;
37
37
  /** Called when the draft is submitted. Clearing `value` is the host's job. */
@@ -46,10 +46,10 @@ export interface ComposerProps extends Row {
46
46
  rows?: number;
47
47
  /** Ceiling for that growth, px. Past it the field scrolls instead. */
48
48
  maxHeight?: number;
49
- /** Leading slot — attachment, or whatever a surface adds from. */
50
- add?: ReactNode;
51
- /** Trailing slot, before send. Dictation belongs here. */
52
- mic?: ReactNode;
49
+ /** Toolbar slot, rendered at the start of the footer row. */
50
+ children?: ReactNode;
51
+ /** Hint shown at the end of the footer row. */
52
+ hint?: string;
53
53
  /**
54
54
  * The accessible name of the field, independent of `placeholder`.
55
55
  *
@@ -60,9 +60,10 @@ export interface ComposerProps extends Row {
60
60
  label?: string;
61
61
  /** The field's own props — a ref, a testid, focus handlers, a paste handler. */
62
62
  field?: FieldProps;
63
- /** Replaces the send control. */
63
+ /** Replaces the send control. `children` is the START of the footer row, so a
64
+ * second commit mode has nowhere else to go. */
64
65
  send?: ReactNode;
65
66
  }
66
- export declare function Composer({ value, onChange, onSend, onStop, busy, disabled, placeholder, rows, maxHeight, add, mic, label, field, send, ...props }: ComposerProps): import("react").JSX.Element;
67
+ export declare function Composer({ value, onChange, onSend, onStop, busy, disabled, placeholder, rows, maxHeight, children, hint, label, field, send, ...props }: ComposerProps): import("react").JSX.Element;
67
68
  export {};
68
69
  //# sourceMappingURL=Composer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../src/chat/Composer.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtD,OAAO,EAAU,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAIlD,gFAAgF;AAChF,KAAK,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,CAAA;AACvE,KAAK,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC,CAAA;AAajF;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,iBAAiB,CAAA;AAEjC,MAAM,WAAW,aAAc,SAAQ,GAAG;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,8EAA8E;IAC9E,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kEAAkE;IAClE,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,0DAA0D;IAC1D,GAAG,CAAC,EAAE,SAAS,CAAA;IAEf;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,iCAAiC;IACjC,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACN,IAAY,EACZ,QAAgB,EAChB,WAAiB,EACjB,IAAe,EACf,SAAmB,EACnB,GAAG,EACH,GAAG,EACH,KAAK,EACL,KAAK,EACL,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,aAAa,+BAqEf"}
1
+ {"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../src/chat/Composer.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAuB,MAAM,EAAE,MAAM,YAAY,CAAA;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtD,OAAO,EAAU,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAIlD,gFAAgF;AAChF,KAAK,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,CAAA;AACzE,KAAK,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC,CAAA;AAajF;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,iBAAiB,CAAA;AAEjC,MAAM,WAAW,aAAc,SAAQ,KAAK;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,8EAA8E;IAC9E,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB;qDACiD;IACjD,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACN,IAAY,EACZ,QAAgB,EAChB,WAAiB,EACjB,IAAe,EACf,SAAmB,EACnB,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,KAAK,EACL,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,aAAa,+BAyEf"}
@@ -3,22 +3,22 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  /**
4
4
  * Composer — the one chat input for every Hanzo surface.
5
5
  *
6
- * ONE ROW: `[add] [field] [mic] [send]`. `add` and `mic` are slots a surface
7
- * fills; everything else is the same everywhere.
8
- *
9
6
  * Presentational and controlled: it owns no draft, no transport and no model
10
- * state.
7
+ * state. `children` is the toolbar slot, which is where a surface puts its
8
+ * `ModelSelector`, attachment control or mode chips — that keeps the shell the
9
+ * same everywhere while the affordances stay per-surface.
11
10
  *
12
11
  * The send control is the same button in both states: it submits, and while a
13
- * turn is in flight it stops.
12
+ * turn is in flight it stops. Two buttons in one place was the thing every
13
+ * surface got subtly different.
14
14
  *
15
15
  * Escape and ArrowUp are not bound. Dismissal belongs to whatever the composer
16
16
  * floats inside, and history recall needs a turn store this has no view of.
17
17
  *
18
- * Growth is `Textarea`'s and follows the content. `rows` is the floor,
19
- * `maxHeight` the ceiling.
18
+ * Growth is `Textarea`'s and follows the content, so a wrapped paragraph raises
19
+ * the field. `rows` is the floor, `maxHeight` the ceiling.
20
20
  */
21
- import { XStack } from '@hanzo/gui';
21
+ import { SizableText, XStack, YStack } from '@hanzo/gui';
22
22
  import { ArrowUp, Square } from '@hanzogui/lucide-icons-2';
23
23
  import { Button, Textarea } from '../backends/gui/index.js';
24
24
  import { slot } from '../backends/gui/slot.js';
@@ -40,7 +40,7 @@ const FLOOR = 44;
40
40
  * changes — which is what a model-named placeholder forces a surface to do.
41
41
  */
42
42
  export const ASK = 'Ask anything';
43
- export function Composer({ value, onChange, onSend, onStop, busy = false, disabled = false, placeholder = ASK, rows = MIN_ROWS, maxHeight = CEILING, add, mic, label, field, send, ...props }) {
43
+ export function Composer({ value, onChange, onSend, onStop, busy = false, disabled = false, placeholder = ASK, rows = MIN_ROWS, maxHeight = CEILING, children, hint, label, field, send, ...props }) {
44
44
  const sendable = ready(value, busy, disabled);
45
45
  const keyed = (e) => {
46
46
  const key = e.key ?? e.nativeEvent?.key ?? '';
@@ -60,13 +60,13 @@ export function Composer({ value, onChange, onSend, onStop, busy = false, disabl
60
60
  if (sendable)
61
61
  onSend();
62
62
  };
63
- return (_jsxs(XStack, { ...slot('composer'), width: "100%", items: "center", gap: PAD, rounded: 9999, borderWidth: 1, borderColor: "$borderColor", bg: "$background", p: PAD, ...props, children: [add, _jsx(Textarea, { ...slot('composer-field'), rows: rows, placeholder: placeholder, disabled: disabled, borderWidth: 0, minH: FLOOR, flex: 1, maxH: maxHeight, "aria-label": label ?? placeholder, ...field,
63
+ return (_jsxs(YStack, { ...slot('composer'), width: "100%", rounded: "$5", borderWidth: 1, borderColor: "$borderColor", bg: "$background", p: PAD, gap: PAD, ...props, children: [_jsx(Textarea, { ...slot('composer-field'), rows: rows, placeholder: placeholder, disabled: disabled, borderWidth: 0, minH: FLOOR, maxH: maxHeight, "aria-label": label ?? placeholder, ...field,
64
64
  // After `field`: spread over, a caller's `onKeyDown` would replace the
65
65
  // Enter rule and the IME guard. Theirs runs first and can claim the key.
66
66
  value: value, onChangeText: onChange, onKeyDown: (e) => {
67
67
  field?.onKeyDown?.(e);
68
68
  if (!e?.defaultPrevented)
69
69
  keyed(e);
70
- } }), mic, send ?? (_jsx(Button, { ...slot('composer-send'), size: "sm", circular: true, disabled: busy ? !onStop : !sendable, onPress: busy ? onStop : onSend, "aria-label": busy ? 'Stop' : 'Send', children: busy ? _jsx(Square, { size: 14 }) : _jsx(ArrowUp, { size: 16 }) }))] }));
70
+ } }), _jsxs(XStack, { items: "center", gap: PAD, children: [children, _jsx(XStack, { flex: 1 }), hint ? (_jsx(SizableText, { size: "$1", color: "$soft", children: hint })) : null, send ?? (_jsx(Button, { ...slot('composer-send'), size: "sm", disabled: busy ? !onStop : !sendable, onPress: busy ? onStop : onSend, "aria-label": busy ? 'Stop' : 'Send', children: busy ? _jsx(Square, { size: 14 }) : _jsx(ArrowUp, { size: 16 }) }))] })] }));
71
71
  }
72
72
  //# sourceMappingURL=Composer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../src/chat/Composer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../src/chat/Composer.tsx"],"names":[],"mappings":"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"}
@@ -5,14 +5,9 @@
5
5
  * scrolls up. The decision is `pinned()`; this only wires it to the platform's
6
6
  * scroll view, so momentum and keyboard stay the host's.
7
7
  */
8
- import { ScrollView, YStack, type GetRef } from '@hanzo/gui';
8
+ import { ScrollView, YStack } from '@hanzo/gui';
9
9
  import { type ComponentProps, type ReactNode } from 'react';
10
10
  import { type Track } from './stick.js';
11
- type Scroller = GetRef<typeof ScrollView> & {
12
- scrollToEnd(o: {
13
- animated: boolean;
14
- }): void;
15
- };
16
11
  export interface ThreadProps extends Omit<ComponentProps<typeof ScrollView>, 'children' | 'onScroll'> {
17
12
  children?: ReactNode;
18
13
  /** Reading-measure cap. Pass `0` to fill the container. */
@@ -28,6 +23,5 @@ export interface ThreadProps extends Omit<ComponentProps<typeof ScrollView>, 'ch
28
23
  /** The column that holds the turns, for a surface that needs to reach it. */
29
24
  column?: Omit<ComponentProps<typeof YStack>, 'children'>;
30
25
  }
31
- export declare const Thread: import("react").ForwardRefExoticComponent<Omit<ThreadProps, "ref"> & import("react").RefAttributes<Scroller>>;
32
- export {};
26
+ export declare const Thread: import("react").ForwardRefExoticComponent<Omit<ThreadProps, "ref"> & import("react").RefAttributes<any>>;
33
27
  //# sourceMappingURL=Thread.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Thread.d.ts","sourceRoot":"","sources":["../../src/chat/Thread.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAmC,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAG5F,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAM,SAAS,CAAA;AAKnD,KAAK,QAAQ,GAAG,MAAM,CAAC,OAAO,UAAU,CAAC,GAAG;IAAE,WAAW,CAAC,CAAC,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAA;CAAE,CAAA;AAE3F,MAAM,WAAW,WACf,SAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACxE,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAA;IAC1E,6EAA6E;IAC7E,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,CAAA;CACzD;AAED,eAAO,MAAM,MAAM,+GA6DjB,CAAA"}
1
+ {"version":3,"file":"Thread.d.ts","sourceRoot":"","sources":["../../src/chat/Thread.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAe,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAmC,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAG5F,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAM,SAAS,CAAA;AAOnD,MAAM,WAAW,WACf,SAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACxE,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAA;IAC1E,6EAA6E;IAC7E,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,CAAA;CACzD;AAED,eAAO,MAAM,MAAM,0GA6DjB,CAAA"}