@nadicodeai/ui 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/AGENTS.md +12 -0
  2. package/dist/ai-elements.d.ts.map +1 -1
  3. package/dist/components/accordion.d.ts.map +1 -1
  4. package/dist/components/action-band.d.ts.map +1 -1
  5. package/dist/components/action-status.d.ts +11 -0
  6. package/dist/components/action-status.d.ts.map +1 -0
  7. package/dist/components/action-status.js +6 -0
  8. package/dist/components/agent-avatar.d.ts +7 -0
  9. package/dist/components/agent-avatar.d.ts.map +1 -0
  10. package/dist/components/agent-avatar.js +6 -0
  11. package/dist/components/agent-chat.d.ts.map +1 -1
  12. package/dist/components/agent-chat.js +2 -2
  13. package/dist/components/agent-composer.d.ts +1 -1
  14. package/dist/components/agent-composer.d.ts.map +1 -1
  15. package/dist/components/agent-composer.js +5 -9
  16. package/dist/components/agent-message.d.ts +1 -1
  17. package/dist/components/agent-message.d.ts.map +1 -1
  18. package/dist/components/agent-message.js +19 -23
  19. package/dist/components/agent-thread.d.ts +1 -1
  20. package/dist/components/agent-thread.d.ts.map +1 -1
  21. package/dist/components/agent-thread.js +5 -7
  22. package/dist/components/agent-tool-approval.d.ts +5 -10
  23. package/dist/components/agent-tool-approval.d.ts.map +1 -1
  24. package/dist/components/agent-tool-approval.js +10 -31
  25. package/dist/components/ai-elements/agent.d.ts.map +1 -1
  26. package/dist/components/ai-elements/agent.js +1 -3
  27. package/dist/components/ai-elements/artifact.d.ts.map +1 -1
  28. package/dist/components/ai-elements/artifact.js +1 -1
  29. package/dist/components/ai-elements/attachments.d.ts.map +1 -1
  30. package/dist/components/ai-elements/attachments.js +3 -3
  31. package/dist/components/ai-elements/audio-player.d.ts.map +1 -1
  32. package/dist/components/ai-elements/audio-player.js +2 -4
  33. package/dist/components/ai-elements/chain-of-thought.d.ts.map +1 -1
  34. package/dist/components/ai-elements/chain-of-thought.js +2 -2
  35. package/dist/components/ai-elements/checkpoint.d.ts.map +1 -1
  36. package/dist/components/ai-elements/checkpoint.js +2 -2
  37. package/dist/components/ai-elements/code-block.d.ts.map +1 -1
  38. package/dist/components/ai-elements/code-block.js +12 -24
  39. package/dist/components/ai-elements/commit.d.ts.map +1 -1
  40. package/dist/components/ai-elements/commit.js +2 -2
  41. package/dist/components/ai-elements/confirmation.d.ts +2 -2
  42. package/dist/components/ai-elements/confirmation.d.ts.map +1 -1
  43. package/dist/components/ai-elements/confirmation.js +4 -8
  44. package/dist/components/ai-elements/connection.d.ts.map +1 -1
  45. package/dist/components/ai-elements/connection.js +1 -1
  46. package/dist/components/ai-elements/context.d.ts.map +1 -1
  47. package/dist/components/ai-elements/context.js +4 -4
  48. package/dist/components/ai-elements/conversation.d.ts.map +1 -1
  49. package/dist/components/ai-elements/conversation.js +1 -1
  50. package/dist/components/ai-elements/edge.d.ts.map +1 -1
  51. package/dist/components/ai-elements/environment-variables.d.ts.map +1 -1
  52. package/dist/components/ai-elements/environment-variables.js +1 -3
  53. package/dist/components/ai-elements/file-tree.d.ts.map +1 -1
  54. package/dist/components/ai-elements/file-tree.js +3 -3
  55. package/dist/components/ai-elements/image.d.ts.map +1 -1
  56. package/dist/components/ai-elements/inline-citation.d.ts.map +1 -1
  57. package/dist/components/ai-elements/inline-citation.js +6 -6
  58. package/dist/components/ai-elements/jsx-preview.d.ts.map +1 -1
  59. package/dist/components/ai-elements/jsx-preview.js +2 -11
  60. package/dist/components/ai-elements/message.d.ts.map +1 -1
  61. package/dist/components/ai-elements/message.js +4 -5
  62. package/dist/components/ai-elements/mic-selector.d.ts.map +1 -1
  63. package/dist/components/ai-elements/mic-selector.js +3 -7
  64. package/dist/components/ai-elements/model-selector.d.ts.map +1 -1
  65. package/dist/components/ai-elements/model-selector.js +6 -6
  66. package/dist/components/ai-elements/node.d.ts.map +1 -1
  67. package/dist/components/ai-elements/node.js +1 -1
  68. package/dist/components/ai-elements/open-in-chat.d.ts.map +1 -1
  69. package/dist/components/ai-elements/open-in-chat.js +3 -3
  70. package/dist/components/ai-elements/package-info.d.ts.map +1 -1
  71. package/dist/components/ai-elements/package-info.js +1 -1
  72. package/dist/components/ai-elements/panel.d.ts.map +1 -1
  73. package/dist/components/ai-elements/persona.d.ts.map +1 -1
  74. package/dist/components/ai-elements/persona.js +1 -2
  75. package/dist/components/ai-elements/plan.d.ts.map +1 -1
  76. package/dist/components/ai-elements/plan.js +1 -1
  77. package/dist/components/ai-elements/prompt-input.d.ts.map +1 -1
  78. package/dist/components/ai-elements/prompt-input.js +22 -33
  79. package/dist/components/ai-elements/queue.d.ts.map +1 -1
  80. package/dist/components/ai-elements/queue.js +3 -7
  81. package/dist/components/ai-elements/reasoning.d.ts.map +1 -1
  82. package/dist/components/ai-elements/reasoning.js +2 -5
  83. package/dist/components/ai-elements/sandbox.d.ts.map +1 -1
  84. package/dist/components/ai-elements/sandbox.js +2 -2
  85. package/dist/components/ai-elements/schema-display.d.ts.map +1 -1
  86. package/dist/components/ai-elements/schema-display.js +7 -7
  87. package/dist/components/ai-elements/shimmer.d.ts.map +1 -1
  88. package/dist/components/ai-elements/snippet.d.ts.map +1 -1
  89. package/dist/components/ai-elements/snippet.js +1 -1
  90. package/dist/components/ai-elements/sources.d.ts.map +1 -1
  91. package/dist/components/ai-elements/sources.js +1 -1
  92. package/dist/components/ai-elements/speech-input.d.ts.map +1 -1
  93. package/dist/components/ai-elements/stack-trace.d.ts.map +1 -1
  94. package/dist/components/ai-elements/stack-trace.js +3 -5
  95. package/dist/components/ai-elements/suggestion.d.ts.map +1 -1
  96. package/dist/components/ai-elements/suggestion.js +1 -1
  97. package/dist/components/ai-elements/task.d.ts.map +1 -1
  98. package/dist/components/ai-elements/task.js +1 -1
  99. package/dist/components/ai-elements/terminal.d.ts.map +1 -1
  100. package/dist/components/ai-elements/test-results.d.ts.map +1 -1
  101. package/dist/components/ai-elements/test-results.js +2 -2
  102. package/dist/components/ai-elements/tool.d.ts.map +1 -1
  103. package/dist/components/ai-elements/tool.js +3 -5
  104. package/dist/components/ai-elements/toolbar.d.ts.map +1 -1
  105. package/dist/components/ai-elements/transcription.d.ts.map +1 -1
  106. package/dist/components/ai-elements/voice-selector.d.ts.map +1 -1
  107. package/dist/components/ai-elements/voice-selector.js +4 -4
  108. package/dist/components/ai-elements/web-preview.d.ts.map +1 -1
  109. package/dist/components/ai-elements/web-preview.js +3 -3
  110. package/dist/components/alert-dialog.d.ts.map +1 -1
  111. package/dist/components/alert-dialog.js +2 -2
  112. package/dist/components/alert.d.ts.map +1 -1
  113. package/dist/components/artifact-panel.d.ts +3 -4
  114. package/dist/components/artifact-panel.d.ts.map +1 -1
  115. package/dist/components/artifact-panel.js +19 -28
  116. package/dist/components/aspect-ratio.d.ts.map +1 -1
  117. package/dist/components/attachment.d.ts +24 -0
  118. package/dist/components/attachment.d.ts.map +1 -0
  119. package/dist/components/attachment.js +68 -0
  120. package/dist/components/automation-section.d.ts +1 -1
  121. package/dist/components/automation-section.d.ts.map +1 -1
  122. package/dist/components/automation-section.js +2 -2
  123. package/dist/components/avatar.d.ts +1 -1
  124. package/dist/components/avatar.d.ts.map +1 -1
  125. package/dist/components/avatar.js +1 -1
  126. package/dist/components/badge.d.ts.map +1 -1
  127. package/dist/components/benefits-bento.d.ts.map +1 -1
  128. package/dist/components/bento.d.ts.map +1 -1
  129. package/dist/components/brand.d.ts.map +1 -1
  130. package/dist/components/brand.js +1 -3
  131. package/dist/components/breadcrumb.d.ts.map +1 -1
  132. package/dist/components/breadcrumb.js +1 -1
  133. package/dist/components/bubble.d.ts +17 -0
  134. package/dist/components/bubble.d.ts.map +1 -0
  135. package/dist/components/bubble.js +59 -0
  136. package/dist/components/button-group.d.ts +1 -1
  137. package/dist/components/button-group.d.ts.map +1 -1
  138. package/dist/components/button-group.js +1 -1
  139. package/dist/components/button.d.ts.map +1 -1
  140. package/dist/components/calendar.d.ts.map +1 -1
  141. package/dist/components/calendar.js +6 -6
  142. package/dist/components/card-marketing.d.ts.map +1 -1
  143. package/dist/components/card.d.ts +1 -1
  144. package/dist/components/card.d.ts.map +1 -1
  145. package/dist/components/card.js +1 -1
  146. package/dist/components/carousel.d.ts.map +1 -1
  147. package/dist/components/chart-breakdown-table.d.ts.map +1 -1
  148. package/dist/components/chart-breakdown-table.js +1 -3
  149. package/dist/components/chart-bullet-bar.d.ts.map +1 -1
  150. package/dist/components/chart-date-range-control.d.ts.map +1 -1
  151. package/dist/components/chart-date-range-control.js +2 -4
  152. package/dist/components/chart-date-range.d.ts +1 -1
  153. package/dist/components/chart-date-range.d.ts.map +1 -1
  154. package/dist/components/chart-date-range.js +2 -4
  155. package/dist/components/chart-delta.d.ts.map +1 -1
  156. package/dist/components/chart-delta.js +1 -1
  157. package/dist/components/chart-entity-colors.d.ts +1 -1
  158. package/dist/components/chart-entity-colors.d.ts.map +1 -1
  159. package/dist/components/chart-entity-colors.js +1 -1
  160. package/dist/components/chart-kpi-stat.d.ts.map +1 -1
  161. package/dist/components/chart-sparkline.d.ts.map +1 -1
  162. package/dist/components/chart-sparkline.js +2 -7
  163. package/dist/components/chart-time-series.d.ts.map +1 -1
  164. package/dist/components/chart-time-series.js +5 -10
  165. package/dist/components/chart.d.ts.map +1 -1
  166. package/dist/components/chart.js +5 -19
  167. package/dist/components/checkbox.d.ts.map +1 -1
  168. package/dist/components/code-editor-mockup.d.ts.map +1 -1
  169. package/dist/components/code-editor-mockup.js +1 -1
  170. package/dist/components/collapsible.d.ts.map +1 -1
  171. package/dist/components/collapsible.js +2 -2
  172. package/dist/components/combobox.d.ts.map +1 -1
  173. package/dist/components/combobox.js +1 -1
  174. package/dist/components/command.d.ts.map +1 -1
  175. package/dist/components/command.js +1 -1
  176. package/dist/components/contact.d.ts.map +1 -1
  177. package/dist/components/context-menu.d.ts.map +1 -1
  178. package/dist/components/context-menu.js +4 -4
  179. package/dist/components/dashboard-shell.d.ts.map +1 -1
  180. package/dist/components/dashboard-shell.js +3 -5
  181. package/dist/components/demo-surface.d.ts.map +1 -1
  182. package/dist/components/desktop-shell.d.ts.map +1 -1
  183. package/dist/components/desktop-shell.js +2 -2
  184. package/dist/components/dialog.d.ts.map +1 -1
  185. package/dist/components/diff-count.d.ts +7 -0
  186. package/dist/components/diff-count.d.ts.map +1 -0
  187. package/dist/components/diff-count.js +18 -0
  188. package/dist/components/direction.d.ts.map +1 -1
  189. package/dist/components/disclosure-row.d.ts +12 -0
  190. package/dist/components/disclosure-row.d.ts.map +1 -0
  191. package/dist/components/disclosure-row.js +11 -0
  192. package/dist/components/drawer.d.ts.map +1 -1
  193. package/dist/components/drawer.js +1 -1
  194. package/dist/components/dropdown-menu.d.ts.map +1 -1
  195. package/dist/components/dropdown-menu.js +1 -1
  196. package/dist/components/empty.d.ts +1 -1
  197. package/dist/components/empty.d.ts.map +1 -1
  198. package/dist/components/empty.js +1 -1
  199. package/dist/components/expandable-block.d.ts +10 -0
  200. package/dist/components/expandable-block.d.ts.map +1 -0
  201. package/dist/components/expandable-block.js +22 -0
  202. package/dist/components/fact-cell.d.ts.map +1 -1
  203. package/dist/components/faq-item.d.ts.map +1 -1
  204. package/dist/components/faq.d.ts.map +1 -1
  205. package/dist/components/faq.js +1 -1
  206. package/dist/components/feedback-state.d.ts.map +1 -1
  207. package/dist/components/feedback-state.js +1 -4
  208. package/dist/components/field.d.ts.map +1 -1
  209. package/dist/components/field.js +1 -3
  210. package/dist/components/file-type-icon.d.ts +8 -0
  211. package/dist/components/file-type-icon.d.ts.map +1 -0
  212. package/dist/components/file-type-icon.js +90 -0
  213. package/dist/components/files-preview.d.ts.map +1 -1
  214. package/dist/components/files-preview.js +3 -6
  215. package/dist/components/footer.d.ts.map +1 -1
  216. package/dist/components/footer.js +1 -3
  217. package/dist/components/form.d.ts.map +1 -1
  218. package/dist/components/glyph-spinner.d.ts +10 -0
  219. package/dist/components/glyph-spinner.d.ts.map +1 -0
  220. package/dist/components/glyph-spinner.js +101 -0
  221. package/dist/components/handoff-banner.d.ts +9 -0
  222. package/dist/components/handoff-banner.d.ts.map +1 -0
  223. package/dist/components/handoff-banner.js +6 -0
  224. package/dist/components/hero-split.d.ts.map +1 -1
  225. package/dist/components/hover-card.d.ts.map +1 -1
  226. package/dist/components/hover-card.js +1 -1
  227. package/dist/components/input-group.d.ts.map +1 -1
  228. package/dist/components/input-otp.d.ts.map +1 -1
  229. package/dist/components/input.d.ts.map +1 -1
  230. package/dist/components/installer-shell.d.ts.map +1 -1
  231. package/dist/components/installer-shell.js +2 -2
  232. package/dist/components/item.d.ts.map +1 -1
  233. package/dist/components/kbd.d.ts.map +1 -1
  234. package/dist/components/label-system.d.ts +6 -2
  235. package/dist/components/label-system.d.ts.map +1 -1
  236. package/dist/components/label-system.js +4 -1
  237. package/dist/components/label.d.ts.map +1 -1
  238. package/dist/components/logo-band.d.ts.map +1 -1
  239. package/dist/components/logo-tile.d.ts.map +1 -1
  240. package/dist/components/logo-tile.js +1 -3
  241. package/dist/components/marker.d.ts +11 -0
  242. package/dist/components/marker.d.ts.map +1 -0
  243. package/dist/components/marker.js +34 -0
  244. package/dist/components/media-mount.d.ts.map +1 -1
  245. package/dist/components/media-mount.js +1 -3
  246. package/dist/components/memory-item.d.ts +9 -0
  247. package/dist/components/memory-item.d.ts.map +1 -0
  248. package/dist/components/memory-item.js +6 -0
  249. package/dist/components/menubar.d.ts.map +1 -1
  250. package/dist/components/message-scroller.d.ts +17 -0
  251. package/dist/components/message-scroller.d.ts.map +1 -0
  252. package/dist/components/message-scroller.js +29 -0
  253. package/dist/components/message.d.ts +11 -0
  254. package/dist/components/message.d.ts.map +1 -0
  255. package/dist/components/message.js +21 -0
  256. package/dist/components/native-select.d.ts.map +1 -1
  257. package/dist/components/nav-bar.d.ts.map +1 -1
  258. package/dist/components/navigation-menu.d.ts.map +1 -1
  259. package/dist/components/newsletter.d.ts.map +1 -1
  260. package/dist/components/page-frame.d.ts.map +1 -1
  261. package/dist/components/pagination.d.ts.map +1 -1
  262. package/dist/components/plugin-slot-boundary.d.ts.map +1 -1
  263. package/dist/components/plugin-slot-boundary.js +2 -2
  264. package/dist/components/popover.d.ts +1 -1
  265. package/dist/components/popover.d.ts.map +1 -1
  266. package/dist/components/popover.js +1 -1
  267. package/dist/components/pricing-card.d.ts.map +1 -1
  268. package/dist/components/pricing.d.ts.map +1 -1
  269. package/dist/components/pricing.js +3 -6
  270. package/dist/components/progress.d.ts +1 -1
  271. package/dist/components/progress.d.ts.map +1 -1
  272. package/dist/components/progress.js +1 -1
  273. package/dist/components/proof-slot.d.ts.map +1 -1
  274. package/dist/components/quote-card.d.ts +1 -1
  275. package/dist/components/quote-card.d.ts.map +1 -1
  276. package/dist/components/quote-card.js +1 -1
  277. package/dist/components/radio-group.d.ts.map +1 -1
  278. package/dist/components/resizable.d.ts.map +1 -1
  279. package/dist/components/resizable.js +1 -1
  280. package/dist/components/run-timeline.d.ts +16 -0
  281. package/dist/components/run-timeline.d.ts.map +1 -0
  282. package/dist/components/run-timeline.js +9 -0
  283. package/dist/components/scroll-area.d.ts.map +1 -1
  284. package/dist/components/seam-grid.d.ts.map +1 -1
  285. package/dist/components/section-intro.d.ts.map +1 -1
  286. package/dist/components/select.d.ts.map +1 -1
  287. package/dist/components/separator.d.ts.map +1 -1
  288. package/dist/components/settings-section.d.ts.map +1 -1
  289. package/dist/components/settings-section.js +2 -2
  290. package/dist/components/sheet.d.ts.map +1 -1
  291. package/dist/components/shift-band.d.ts.map +1 -1
  292. package/dist/components/shift-band.js +1 -1
  293. package/dist/components/sidebar.d.ts.map +1 -1
  294. package/dist/components/sidebar.js +4 -5
  295. package/dist/components/skeleton.d.ts.map +1 -1
  296. package/dist/components/slider.d.ts.map +1 -1
  297. package/dist/components/sonner.d.ts.map +1 -1
  298. package/dist/components/sonner.js +6 -6
  299. package/dist/components/spinner.d.ts.map +1 -1
  300. package/dist/components/stat-block.d.ts.map +1 -1
  301. package/dist/components/state-notice.d.ts.map +1 -1
  302. package/dist/components/state-notice.js +1 -1
  303. package/dist/components/stats-band.d.ts.map +1 -1
  304. package/dist/components/status-dot.d.ts +9 -0
  305. package/dist/components/status-dot.d.ts.map +1 -0
  306. package/dist/components/status-dot.js +12 -0
  307. package/dist/components/status-row.d.ts +18 -0
  308. package/dist/components/status-row.d.ts.map +1 -0
  309. package/dist/components/status-row.js +21 -0
  310. package/dist/components/switch.d.ts.map +1 -1
  311. package/dist/components/table.d.ts +1 -1
  312. package/dist/components/table.d.ts.map +1 -1
  313. package/dist/components/table.js +2 -2
  314. package/dist/components/tabs.d.ts.map +1 -1
  315. package/dist/components/testimonials.d.ts.map +1 -1
  316. package/dist/components/testimonials.js +1 -3
  317. package/dist/components/textarea.d.ts.map +1 -1
  318. package/dist/components/theme-mode-switcher.d.ts.map +1 -1
  319. package/dist/components/theme-mode-switcher.js +1 -1
  320. package/dist/components/toggle-group.d.ts.map +1 -1
  321. package/dist/components/toggle.d.ts.map +1 -1
  322. package/dist/components/tool-icon.d.ts +8 -0
  323. package/dist/components/tool-icon.d.ts.map +1 -0
  324. package/dist/components/tool-icon.js +23 -0
  325. package/dist/components/tooltip.d.ts.map +1 -1
  326. package/dist/components/tooltip.js +1 -1
  327. package/dist/components/usage-meter.d.ts +9 -0
  328. package/dist/components/usage-meter.d.ts.map +1 -0
  329. package/dist/components/usage-meter.js +10 -0
  330. package/dist/components/use-case-bento.d.ts.map +1 -1
  331. package/dist/components/use-case-bento.js +1 -1
  332. package/dist/components/watch-it-work-band.d.ts.map +1 -1
  333. package/dist/components/watch-it-work-band.js +2 -2
  334. package/dist/hooks/index.d.ts +3 -0
  335. package/dist/hooks/index.d.ts.map +1 -0
  336. package/dist/hooks/index.js +2 -0
  337. package/dist/hooks/use-controllable-state.d.ts +1 -1
  338. package/dist/hooks/use-controllable-state.d.ts.map +1 -1
  339. package/dist/hooks/use-controllable-state.js +2 -4
  340. package/dist/index.d.ts +26 -7
  341. package/dist/index.d.ts.map +1 -1
  342. package/dist/index.js +26 -7
  343. package/dist/lib/agent-attachment.d.ts.map +1 -1
  344. package/dist/lib/agent-contracts.d.ts +132 -0
  345. package/dist/lib/agent-contracts.d.ts.map +1 -0
  346. package/dist/lib/agent-contracts.js +6 -0
  347. package/dist/lib/agent-state.d.ts +22 -0
  348. package/dist/lib/agent-state.d.ts.map +1 -0
  349. package/dist/lib/agent-state.js +96 -0
  350. package/dist/lib/agent-work-state.d.ts.map +1 -1
  351. package/dist/lib/message-scroller-primitive/components.d.ts +17 -0
  352. package/dist/lib/message-scroller-primitive/components.d.ts.map +1 -0
  353. package/dist/lib/message-scroller-primitive/components.js +204 -0
  354. package/dist/lib/message-scroller-primitive/geometry.d.ts +55 -0
  355. package/dist/lib/message-scroller-primitive/geometry.d.ts.map +1 -0
  356. package/dist/lib/message-scroller-primitive/geometry.js +199 -0
  357. package/dist/lib/message-scroller-primitive/index.d.ts +12 -0
  358. package/dist/lib/message-scroller-primitive/index.d.ts.map +1 -0
  359. package/dist/lib/message-scroller-primitive/index.js +12 -0
  360. package/dist/lib/message-scroller-primitive/stores.d.ts +7 -0
  361. package/dist/lib/message-scroller-primitive/stores.d.ts.map +1 -0
  362. package/dist/lib/message-scroller-primitive/stores.js +53 -0
  363. package/dist/lib/message-scroller-primitive/types.d.ts +89 -0
  364. package/dist/lib/message-scroller-primitive/types.d.ts.map +1 -0
  365. package/dist/lib/message-scroller-primitive/types.js +40 -0
  366. package/dist/lib/message-scroller-primitive/use-message-scroller-commands.d.ts +19 -0
  367. package/dist/lib/message-scroller-primitive/use-message-scroller-commands.d.ts.map +1 -0
  368. package/dist/lib/message-scroller-primitive/use-message-scroller-commands.js +188 -0
  369. package/dist/lib/message-scroller-primitive/use-message-scroller-controller.d.ts +7 -0
  370. package/dist/lib/message-scroller-primitive/use-message-scroller-controller.d.ts.map +1 -0
  371. package/dist/lib/message-scroller-primitive/use-message-scroller-controller.js +506 -0
  372. package/dist/lib/message-scroller-primitive/use-message-scroller-refs.d.ts +49 -0
  373. package/dist/lib/message-scroller-primitive/use-message-scroller-refs.d.ts.map +1 -0
  374. package/dist/lib/message-scroller-primitive/use-message-scroller-refs.js +90 -0
  375. package/dist/lib/message-scroller-primitive/use-render.d.ts +22 -0
  376. package/dist/lib/message-scroller-primitive/use-render.d.ts.map +1 -0
  377. package/dist/lib/message-scroller-primitive/use-render.js +113 -0
  378. package/dist/lib/message-scroller-primitive/utils.d.ts +4 -0
  379. package/dist/lib/message-scroller-primitive/utils.d.ts.map +1 -0
  380. package/dist/lib/message-scroller-primitive/utils.js +9 -0
  381. package/dist/lib/seam.d.ts.map +1 -1
  382. package/dist/lib/theme-mode.d.ts.map +1 -1
  383. package/dist/styles/globals.css +32 -29
  384. package/docs/agent-work-surfaces.md +36 -3
  385. package/docs/consuming-cross-repo.md +72 -0
  386. package/docs/migration/ai-elements-vendoring.md +29 -0
  387. package/package.json +14 -2
@@ -0,0 +1,40 @@
1
+ // Vendored from @shadcn/react 0.2.1 (upstream github.com/shadcn-ui).
2
+ // Adapted only for repo import paths and formatting; not added as an npm dependency.
3
+ // Default scrollEdgeThreshold. Sub-pixel tolerance so edge detection does not
4
+ // flicker across engines that round scrollTop differently.
5
+ const DEFAULT_SCROLL_EDGE_THRESHOLD = 8;
6
+ // Default scrollPreviousItemPeek. Pixels of the previous item kept visible above
7
+ // a newly anchored row.
8
+ const DEFAULT_SCROLL_PREVIOUS_ITEM_PEEK = 64;
9
+ // Default scrollMargin for scrollToMessage and programmatic targets.
10
+ const DEFAULT_SCROLL_MARGIN = 0;
11
+ // Two fractional scrollTop values within this range are treated as equal, to
12
+ // absorb zoom and HiDPI rounding drift.
13
+ const SCROLL_POSITION_EPSILON = 0.5;
14
+ // How long (ms) data-autoscrolling stays set during a programmatic smooth scroll
15
+ // before clearing.
16
+ const AUTOSCROLLING_CLEAR_DELAY = 180;
17
+ // Viewport keys that count as deliberate scroll intent and release follow-bottom.
18
+ const USER_SCROLL_KEYS = new Set([
19
+ "ArrowDown",
20
+ "ArrowUp",
21
+ "End",
22
+ "Home",
23
+ "PageDown",
24
+ "PageUp",
25
+ " ", // Space key.
26
+ ]);
27
+ // Initial MessageScrollerScrollable before measurement. Stable reference for the
28
+ // server and first-render snapshot.
29
+ const EMPTY_MESSAGE_SCROLLER_SCROLLABLE = {
30
+ start: false,
31
+ end: false,
32
+ };
33
+ // Shared empty array so empty visibility snapshots stay referentially stable.
34
+ const EMPTY_VISIBLE_MESSAGE_IDS = [];
35
+ // Initial MessageScrollerVisibilityState. Nothing tracked, no current anchor.
36
+ const EMPTY_MESSAGE_SCROLLER_VISIBILITY_STATE = {
37
+ currentAnchorId: null,
38
+ visibleMessageIds: EMPTY_VISIBLE_MESSAGE_IDS,
39
+ };
40
+ export { AUTOSCROLLING_CLEAR_DELAY, DEFAULT_SCROLL_EDGE_THRESHOLD, DEFAULT_SCROLL_MARGIN, DEFAULT_SCROLL_PREVIOUS_ITEM_PEEK, EMPTY_MESSAGE_SCROLLER_SCROLLABLE, EMPTY_MESSAGE_SCROLLER_VISIBILITY_STATE, EMPTY_VISIBLE_MESSAGE_IDS, SCROLL_POSITION_EPSILON, USER_SCROLL_KEYS, };
@@ -0,0 +1,19 @@
1
+ import type { MessageScrollerScrollOptions } from "./types";
2
+ import type { MessageScrollerRefs } from "./use-message-scroller-refs";
3
+ declare function useMessageScrollerCommands({ refs, commitScrollState, scheduleStateCommit, scheduleVisibilitySync, }: {
4
+ refs: MessageScrollerRefs;
5
+ commitScrollState: () => void;
6
+ scheduleStateCommit: () => void;
7
+ scheduleVisibilitySync: () => void;
8
+ }): {
9
+ flushPendingScrollToMessage: () => boolean;
10
+ reanchorToAnchoredMessage: () => boolean;
11
+ scrollToElement: (element: HTMLElement, { align, behavior, scrollMargin, }?: MessageScrollerScrollOptions, { keepPreviousPeek, }?: {
12
+ keepPreviousPeek?: boolean;
13
+ }) => boolean;
14
+ scrollToEnd: ({ behavior }?: MessageScrollerScrollOptions) => boolean;
15
+ scrollToMessage: (messageId: string, options?: MessageScrollerScrollOptions) => boolean;
16
+ scrollToStart: ({ behavior }?: MessageScrollerScrollOptions) => boolean;
17
+ };
18
+ export { useMessageScrollerCommands };
19
+ //# sourceMappingURL=use-message-scroller-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-message-scroller-commands.d.ts","sourceRoot":"","sources":["../../../src/lib/message-scroller-primitive/use-message-scroller-commands.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAKvE,iBAAS,0BAA0B,CAAC,EAClC,IAAI,EACJ,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,GACvB,EAAE;IACD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,sBAAsB,EAAE,MAAM,IAAI,CAAC;CACpC;;;+BA8Ic,WAAW,uCAKjB,4BAA4B,0BAG5B;QACD,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B;iCAjCqB,4BAA4B;iCAkGxC,MAAM,YAAY,4BAA4B;mCAnHlC,4BAA4B;EAsLvD;AAED,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
@@ -0,0 +1,188 @@
1
+ // Vendored from @shadcn/react 0.2.1 (upstream github.com/shadcn-ui).
2
+ // Adapted only for repo import paths and formatting; not added as an npm dependency.
3
+ import * as React from "react";
4
+ import { getElementScrollTop, getElementViewportTop, getMaxScrollTop, getTailSpacerHeight, } from "./geometry.js";
5
+ import { AUTOSCROLLING_CLEAR_DELAY, SCROLL_POSITION_EPSILON } from "./types.js";
6
+ // Imperative scroll primitives, split from the controller so the move mechanics
7
+ // live apart from the policy that decides when to run them. Each command resolves
8
+ // a target scrollTop and returns false when the viewport is not mounted yet.
9
+ function useMessageScrollerCommands({ refs, commitScrollState, scheduleStateCommit, scheduleVisibilitySync, }) {
10
+ const { streamingTurnRef, autoScrollRef, autoscrollingRef, autoscrollingTimeoutRef, contentRef, defaultScrollPositionAppliedRef, itemCountRef, messageElementsRef, modeRef, pendingScrollToMessageRef, prependRestoreRef, scrollMarginRef, scrollPreviousItemPeekRef, spacerGapRef, spacerHeightRef, spacerRef, viewportRef, } = refs;
11
+ const setAutoScrolling = React.useCallback((autoscrolling) => {
12
+ if (autoscrollingTimeoutRef.current !== null) {
13
+ window.clearTimeout(autoscrollingTimeoutRef.current);
14
+ autoscrollingTimeoutRef.current = null;
15
+ }
16
+ if (autoscrollingRef.current !== autoscrolling) {
17
+ autoscrollingRef.current = autoscrolling;
18
+ commitScrollState();
19
+ }
20
+ if (autoscrolling) {
21
+ autoscrollingTimeoutRef.current = window.setTimeout(() => {
22
+ autoscrollingTimeoutRef.current = null;
23
+ autoscrollingRef.current = false;
24
+ commitScrollState();
25
+ }, AUTOSCROLLING_CLEAR_DELAY);
26
+ }
27
+ }, [commitScrollState]);
28
+ const setTailSpacerHeight = React.useCallback((height) => {
29
+ const spacer = spacerRef.current;
30
+ if (!spacer) {
31
+ return;
32
+ }
33
+ const nextHeight = Math.max(0, Math.ceil(height));
34
+ if (spacerHeightRef.current === nextHeight) {
35
+ return;
36
+ }
37
+ spacerHeightRef.current = nextHeight;
38
+ spacer.hidden = nextHeight === 0;
39
+ spacer.style.height = `${nextHeight}px`;
40
+ spacer.style.marginTop = nextHeight > 0 ? `${-spacerGapRef.current}px` : "";
41
+ }, []);
42
+ const scrollToPosition = React.useCallback((scrollTop, { behavior = "auto", autoscrolling = false, } = {}) => {
43
+ const viewport = viewportRef.current;
44
+ if (!viewport) {
45
+ return;
46
+ }
47
+ const nextScrollTop = Math.max(0, scrollTop);
48
+ if (Math.abs(viewport.scrollTop - nextScrollTop) <= SCROLL_POSITION_EPSILON) {
49
+ viewport.scrollTop = nextScrollTop;
50
+ commitScrollState();
51
+ return;
52
+ }
53
+ if (autoscrolling) {
54
+ setAutoScrolling(true);
55
+ }
56
+ viewport.scrollTo({
57
+ top: nextScrollTop,
58
+ behavior,
59
+ });
60
+ scheduleStateCommit();
61
+ }, [commitScrollState, scheduleStateCommit, setAutoScrolling]);
62
+ const scrollToStart = React.useCallback(({ behavior = "auto" } = {}) => {
63
+ if (!viewportRef.current) {
64
+ return false;
65
+ }
66
+ setTailSpacerHeight(0);
67
+ streamingTurnRef.current = null;
68
+ modeRef.current = "free-scrolling";
69
+ scrollToPosition(0, { behavior });
70
+ scheduleVisibilitySync();
71
+ return true;
72
+ }, [scheduleVisibilitySync, scrollToPosition, setTailSpacerHeight]);
73
+ const scrollToEnd = React.useCallback(({ behavior = "auto" } = {}) => {
74
+ const viewport = viewportRef.current;
75
+ if (!viewport) {
76
+ return false;
77
+ }
78
+ setTailSpacerHeight(0);
79
+ streamingTurnRef.current = null;
80
+ modeRef.current = autoScrollRef.current ? "following-bottom" : "free-scrolling";
81
+ scrollToPosition(getMaxScrollTop(viewport), {
82
+ autoscrolling: true,
83
+ behavior,
84
+ });
85
+ scheduleVisibilitySync();
86
+ return true;
87
+ }, [scheduleVisibilitySync, scrollToPosition, setTailSpacerHeight]);
88
+ const scrollToElement = React.useCallback((element, { align = "start", behavior = "auto", scrollMargin = scrollMarginRef.current, } = {}, { keepPreviousPeek = false, } = {}) => {
89
+ const content = contentRef.current;
90
+ const viewport = viewportRef.current;
91
+ if (!content || !viewport || !content.contains(element)) {
92
+ return false;
93
+ }
94
+ const scrollTop = getElementScrollTop({
95
+ align,
96
+ element,
97
+ scrollMargin: keepPreviousPeek
98
+ ? scrollMargin + scrollPreviousItemPeekRef.current
99
+ : scrollMargin,
100
+ spacer: spacerRef.current,
101
+ viewport,
102
+ });
103
+ const nextSpacerHeight = getTailSpacerHeight({
104
+ content,
105
+ scrollTop,
106
+ spacer: spacerRef.current,
107
+ viewport,
108
+ });
109
+ setTailSpacerHeight(nextSpacerHeight);
110
+ // Seed the prepend anchor with the jump target so a prepend that lands
111
+ // before this scroll settles still preserves the jumped-to row; once it
112
+ // settles, syncAfterScroll's capturePrependAnchor re-captures it from the
113
+ // first visible row.
114
+ prependRestoreRef.current = {
115
+ element,
116
+ viewportTop: getElementViewportTop(element, viewport),
117
+ };
118
+ modeRef.current = keepPreviousPeek ? "anchored-to-message" : "settling-jump";
119
+ streamingTurnRef.current = keepPreviousPeek ? element : null;
120
+ scrollToPosition(scrollTop, { behavior });
121
+ scheduleVisibilitySync();
122
+ return true;
123
+ }, [scheduleVisibilitySync, scrollToPosition, setTailSpacerHeight]);
124
+ const reanchorToAnchoredMessage = React.useCallback(() => {
125
+ const element = streamingTurnRef.current;
126
+ if (!element || !element.isConnected || modeRef.current !== "anchored-to-message") {
127
+ return false;
128
+ }
129
+ // Re-run the placement so the tail spacer is recomputed for the new content
130
+ // height and the turn is held at the reading line.
131
+ return scrollToElement(element, { align: "start" }, { keepPreviousPeek: true });
132
+ }, [scrollToElement]);
133
+ // The target row may not be mounted yet (e.g. an async-loaded transcript).
134
+ // When it is missing the request is queued in pendingScrollToMessageRef and
135
+ // flushed later — on registerMessage for that id, or on the next content
136
+ // change. An explicit jump also marks the mount default as applied, so
137
+ // defaultScrollPosition does not override it.
138
+ const scrollToMessage = React.useCallback((messageId, options) => {
139
+ const element = messageElementsRef.current.get(messageId);
140
+ if (!element) {
141
+ if (itemCountRef.current === 0) {
142
+ pendingScrollToMessageRef.current = {
143
+ messageId,
144
+ options,
145
+ };
146
+ defaultScrollPositionAppliedRef.current = true;
147
+ return true;
148
+ }
149
+ return false;
150
+ }
151
+ defaultScrollPositionAppliedRef.current = true;
152
+ if (scrollToElement(element, options)) {
153
+ pendingScrollToMessageRef.current = null;
154
+ return true;
155
+ }
156
+ pendingScrollToMessageRef.current = {
157
+ messageId,
158
+ options,
159
+ };
160
+ return true;
161
+ }, [scrollToElement]);
162
+ const flushPendingScrollToMessage = React.useCallback(() => {
163
+ const pending = pendingScrollToMessageRef.current;
164
+ if (!pending) {
165
+ return false;
166
+ }
167
+ const element = messageElementsRef.current.get(pending.messageId);
168
+ if (!element) {
169
+ return false;
170
+ }
171
+ const handled = scrollToElement(element, pending.options);
172
+ if (!handled) {
173
+ return false;
174
+ }
175
+ pendingScrollToMessageRef.current = null;
176
+ defaultScrollPositionAppliedRef.current = true;
177
+ return true;
178
+ }, [scrollToElement]);
179
+ return {
180
+ flushPendingScrollToMessage,
181
+ reanchorToAnchoredMessage,
182
+ scrollToElement,
183
+ scrollToEnd,
184
+ scrollToMessage,
185
+ scrollToStart,
186
+ };
187
+ }
188
+ export { useMessageScrollerCommands };
@@ -0,0 +1,7 @@
1
+ import type { MessageScrollerContextValue, MessageScrollerProviderProps, MessageScrollerRegisterMessage } from "./types";
2
+ declare function useMessageScrollerController({ autoScroll, defaultScrollPosition, scrollEdgeThreshold, scrollPreviousItemPeek, scrollMargin, }: MessageScrollerProviderProps): {
3
+ context: MessageScrollerContextValue;
4
+ registerMessage: MessageScrollerRegisterMessage;
5
+ };
6
+ export { useMessageScrollerController };
7
+ //# sourceMappingURL=use-message-scroller-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-message-scroller-controller.d.ts","sourceRoot":"","sources":["../../../src/lib/message-scroller-primitive/use-message-scroller-controller.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EACV,2BAA2B,EAC3B,4BAA4B,EAC5B,8BAA8B,EAE/B,MAAM,SAAS,CAAC;AAqBjB,iBAAS,4BAA4B,CAAC,EACpC,UAAkB,EAClB,qBAA6B,EAC7B,mBAAmD,EACnD,sBAA0D,EAC1D,YAAoC,GACrC,EAAE,4BAA4B;;;EA8nB9B;AAED,OAAO,EAAE,4BAA4B,EAAE,CAAC"}