@flamingo-stack/openframe-frontend-core 0.0.213 → 0.0.214-snapshot.20260528192313

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 (746) hide show
  1. package/dist/{chunk-35XIT2CF.cjs → chunk-2G3NXF6J.cjs} +17 -17
  2. package/dist/{chunk-35XIT2CF.cjs.map → chunk-2G3NXF6J.cjs.map} +1 -1
  3. package/dist/{chunk-IK2X5YJU.js → chunk-7PCP7YQR.js} +2 -2
  4. package/dist/{chunk-ZDF6F7ED.cjs → chunk-D4MNFY67.cjs} +4 -3
  5. package/dist/chunk-D4MNFY67.cjs.map +1 -0
  6. package/dist/{chunk-OTKJASSX.cjs → chunk-NGFP4RVL.cjs} +24 -24
  7. package/dist/{chunk-OTKJASSX.cjs.map → chunk-NGFP4RVL.cjs.map} +1 -1
  8. package/dist/{chunk-3JWIJJ44.js → chunk-R6MLPU4A.js} +2 -2
  9. package/dist/{chunk-ZTJVRSN5.js → chunk-WQZP3JIZ.js} +4 -3
  10. package/dist/chunk-WQZP3JIZ.js.map +1 -0
  11. package/dist/components/chat/index.cjs +2 -2
  12. package/dist/components/chat/index.js +1 -1
  13. package/dist/components/contact/index.cjs +3 -3
  14. package/dist/components/contact/index.js +2 -2
  15. package/dist/components/features/index.cjs +2 -2
  16. package/dist/components/features/index.js +1 -1
  17. package/dist/components/index.cjs +49 -49
  18. package/dist/components/index.js +2 -2
  19. package/dist/components/navigation/index.cjs +2 -2
  20. package/dist/components/navigation/index.js +1 -1
  21. package/dist/components/tickets/index.cjs +61 -61
  22. package/dist/components/tickets/index.js +3 -3
  23. package/dist/components/ui/index.cjs +2 -2
  24. package/dist/components/ui/index.js +1 -1
  25. package/dist/index.cjs +2 -2
  26. package/dist/index.js +1 -1
  27. package/package.json +1 -1
  28. package/src/.index.md +36 -34
  29. package/src/components/.alert-dialog.md +27 -23
  30. package/src/components/.announcement-bar.md +26 -21
  31. package/src/components/.breadcrumb.md +19 -15
  32. package/src/components/.calendar.md +24 -19
  33. package/src/components/.categories-cart.md +29 -24
  34. package/src/components/.checkbox.md +23 -25
  35. package/src/components/.chevron-button.md +37 -32
  36. package/src/components/.comment-card.md +32 -62
  37. package/src/components/.dialog.md +26 -26
  38. package/src/components/.dynamic-skeleton.md +54 -57
  39. package/src/components/.empty-state.md +42 -51
  40. package/src/components/.faq-accordion.md +27 -21
  41. package/src/components/.filter-chip.md +41 -24
  42. package/src/components/.flamingo-logo.md +20 -23
  43. package/src/components/.footer-waitlist-button.md +29 -22
  44. package/src/components/.footer.md +32 -32
  45. package/src/components/.icons-block.md +27 -17
  46. package/src/components/.image-cropper.md +41 -32
  47. package/src/components/.index.md +33 -39
  48. package/src/components/.input.md +31 -35
  49. package/src/components/.logs-list.md +31 -20
  50. package/src/components/.media-carousel.md +35 -36
  51. package/src/components/.open-source-features.md +33 -16
  52. package/src/components/.pagination.md +52 -51
  53. package/src/components/.provider-button.md +21 -23
  54. package/src/components/.select.md +31 -20
  55. package/src/components/.sidebar.md +34 -24
  56. package/src/components/.smooth-accordion.md +29 -24
  57. package/src/components/.social-icon-row.md +36 -32
  58. package/src/components/.textarea.md +25 -31
  59. package/src/components/.tool-icon.md +24 -26
  60. package/src/components/.unified-filter-logic.md +37 -30
  61. package/src/components/.unified-pagination.md +23 -22
  62. package/src/components/.user-summary-stub.md +38 -22
  63. package/src/components/.vendor-display-button.md +25 -25
  64. package/src/components/.vendor-icon.md +33 -25
  65. package/src/components/.why-it-matters.md +28 -25
  66. package/src/components/chat/.approval-batch-message.md +51 -0
  67. package/src/components/chat/.approval-request-message.md +35 -34
  68. package/src/components/chat/.chat-attachment-bar.md +64 -0
  69. package/src/components/chat/.chat-container.md +36 -18
  70. package/src/components/chat/.chat-input.md +37 -20
  71. package/src/components/chat/.chat-message-enhanced.md +30 -49
  72. package/src/components/chat/.chat-message-list.md +45 -32
  73. package/src/components/chat/.chat-message-skeleton.md +26 -22
  74. package/src/components/chat/.chat-panel-context.md +52 -0
  75. package/src/components/chat/.chat-ref.types.md +42 -0
  76. package/src/components/chat/.chat-sidebar-skeleton.md +34 -25
  77. package/src/components/chat/.chat-sidebar.md +31 -26
  78. package/src/components/chat/.chat-ticket-list.md +39 -0
  79. package/src/components/chat/.context-compaction-display.md +36 -0
  80. package/src/components/chat/.cycling-phrase.md +52 -0
  81. package/src/components/chat/.embeddable-chat.md +48 -0
  82. package/src/components/chat/.expand-chevron.md +24 -0
  83. package/src/components/chat/.index.md +31 -35
  84. package/src/components/chat/.mingo-onboarding-card-skeleton.md +44 -0
  85. package/src/components/chat/.mingo-onboarding-card.md +62 -0
  86. package/src/components/chat/.model-display.md +32 -30
  87. package/src/components/chat/.nav-link-anchor-via-runtime.md +40 -0
  88. package/src/components/chat/.remark-card-links.md +38 -0
  89. package/src/components/chat/.slash-command-suggestions.md +47 -0
  90. package/src/components/chat/.source-action-button.md +48 -0
  91. package/src/components/chat/.thinking-display.md +42 -0
  92. package/src/components/chat/.tool-call-blocks.md +45 -0
  93. package/src/components/chat/.tool-execution-display.md +44 -36
  94. package/src/components/chat/chat-container.tsx +1 -1
  95. package/src/components/chat/entity-cards/.admin-content-card.md +43 -0
  96. package/src/components/chat/entity-cards/.block-card.md +47 -0
  97. package/src/components/chat/entity-cards/.blog-card.md +52 -0
  98. package/src/components/chat/entity-cards/.blog-image-placeholder.md +39 -0
  99. package/src/components/chat/entity-cards/.campaign-card-admin.md +47 -0
  100. package/src/components/chat/entity-cards/.case-study-card.md +58 -0
  101. package/src/components/chat/entity-cards/.chat-ticket-item.md +40 -0
  102. package/src/components/chat/entity-cards/.chat-video-entity-card.md +43 -0
  103. package/src/components/chat/entity-cards/.customer-interview-card.md +53 -0
  104. package/src/components/chat/entity-cards/.data-room-doc-card.md +47 -0
  105. package/src/components/chat/entity-cards/.dispatch.md +39 -0
  106. package/src/components/chat/entity-cards/.entity-author-card.md +51 -0
  107. package/src/components/chat/entity-cards/.generic-entity-card.md +62 -0
  108. package/src/components/chat/entity-cards/.github-activity-card.md +61 -0
  109. package/src/components/chat/entity-cards/.hubspot-ticket-card.md +53 -0
  110. package/src/components/chat/entity-cards/.index.md +66 -0
  111. package/src/components/chat/entity-cards/.investor-update-card.md +47 -0
  112. package/src/components/chat/entity-cards/.onboarding-guide-card.md +58 -0
  113. package/src/components/chat/entity-cards/.product-release-card-defaults.md +31 -0
  114. package/src/components/chat/entity-cards/.product-release-card.md +29 -0
  115. package/src/components/chat/entity-cards/.program-card-defaults.md +41 -0
  116. package/src/components/chat/entity-cards/.program-card.md +59 -0
  117. package/src/components/chat/entity-cards/.roadmap-card.md +46 -0
  118. package/src/components/chat/entity-cards/.roadmap-vote-button.md +52 -0
  119. package/src/components/chat/entity-cards/.slack-message-card.md +48 -0
  120. package/src/components/chat/entity-cards/.task-type-icon.md +47 -0
  121. package/src/components/chat/hooks/.index.md +36 -21
  122. package/src/components/chat/hooks/.use-chat-attachment-image-gallery.md +51 -0
  123. package/src/components/chat/hooks/.use-chat-attachments.md +48 -0
  124. package/src/components/chat/hooks/.use-chat-card-item.md +39 -0
  125. package/src/components/chat/hooks/.use-chat-identity.md +45 -0
  126. package/src/components/chat/hooks/.use-chat.md +58 -0
  127. package/src/components/chat/hooks/.use-chunk-catchup.md +46 -48
  128. package/src/components/chat/hooks/.use-close-on-navigation.md +44 -0
  129. package/src/components/chat/hooks/.use-collapsible.md +48 -0
  130. package/src/components/chat/hooks/.use-embedded-chat.md +32 -0
  131. package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +40 -0
  132. package/src/components/chat/hooks/.use-nats-chat-adapter.md +52 -0
  133. package/src/components/chat/hooks/.use-nats-dialog-subscription.md +49 -30
  134. package/src/components/chat/hooks/.use-proxied-image-url.md +40 -0
  135. package/src/components/chat/hooks/.use-realtime-chunk-processor.md +43 -40
  136. package/src/components/chat/hooks/.use-slash-commands.md +46 -0
  137. package/src/components/chat/hooks/.use-sse-chat-adapter.md +34 -0
  138. package/src/components/chat/hooks/.use-sse.md +60 -0
  139. package/src/components/chat/hooks/.use-unified-chat.md +57 -0
  140. package/src/components/chat/types/.api.types.md +52 -38
  141. package/src/components/chat/types/.chat.types.md +43 -34
  142. package/src/components/chat/types/.component.types.md +47 -48
  143. package/src/components/chat/types/.index.md +20 -27
  144. package/src/components/chat/types/.message.types.md +58 -48
  145. package/src/components/chat/types/.network.types.md +57 -31
  146. package/src/components/chat/types/.processing.types.md +49 -31
  147. package/src/components/chat/types/.unified-chat-state.types.md +41 -0
  148. package/src/components/chat/types/entities/.blog.md +43 -0
  149. package/src/components/chat/types/entities/.case-study.md +26 -0
  150. package/src/components/chat/types/entities/.content-ref.md +41 -0
  151. package/src/components/chat/types/entities/.customer-interview.md +28 -0
  152. package/src/components/chat/types/entities/.data-room-doc.md +36 -0
  153. package/src/components/chat/types/entities/.github-activity.md +43 -0
  154. package/src/components/chat/types/entities/.hubspot-ticket.md +53 -0
  155. package/src/components/chat/types/entities/.index.md +42 -0
  156. package/src/components/chat/types/entities/.investor-update.md +45 -0
  157. package/src/components/chat/types/entities/.onboarding-guide.md +50 -0
  158. package/src/components/chat/types/entities/.program-types.md +57 -0
  159. package/src/components/chat/types/entities/.roadmap-item.md +58 -0
  160. package/src/components/chat/types/entities/.slack-message.md +35 -0
  161. package/src/components/chat/utils/.agent-status-message.md +45 -0
  162. package/src/components/chat/utils/.auto-continuation-directive.md +58 -0
  163. package/src/components/chat/utils/.chat-attachment-markdown.md +54 -0
  164. package/src/components/chat/utils/.chat-authed-fetch.md +25 -0
  165. package/src/components/chat/utils/.chat-nav-resolution.md +46 -0
  166. package/src/components/chat/utils/.chat-proxy-auth-storage.md +38 -0
  167. package/src/components/chat/utils/.chip-action-class.md +34 -0
  168. package/src/components/chat/utils/.chip-styles.md +46 -0
  169. package/src/components/chat/utils/.chunk-parser.md +38 -28
  170. package/src/components/chat/utils/.clickup-task-type-utils.md +48 -0
  171. package/src/components/chat/utils/.compact-card-classes.md +62 -0
  172. package/src/components/chat/utils/.decide-new-tab.md +51 -0
  173. package/src/components/chat/utils/.external-app-urls.md +29 -0
  174. package/src/components/chat/utils/.extract-incomplete-message-state.md +25 -29
  175. package/src/components/chat/utils/.flatten-assistant-content.md +34 -0
  176. package/src/components/chat/utils/.icon-registry.md +46 -0
  177. package/src/components/chat/utils/.index.md +37 -32
  178. package/src/components/chat/utils/.is-cross-origin-url.md +35 -0
  179. package/src/components/chat/utils/.message-segment-accumulator.md +25 -34
  180. package/src/components/chat/utils/.nav-anchor-props.md +44 -0
  181. package/src/components/chat/utils/.nav-click-handler.md +47 -0
  182. package/src/components/chat/utils/.onboarding-icons.md +28 -0
  183. package/src/components/chat/utils/.process-historical-messages.md +46 -35
  184. package/src/components/chat/utils/.scroll-anchor.md +40 -0
  185. package/src/components/chat/utils/.slash-dispatch-utils.md +44 -0
  186. package/src/components/chat/utils/.source-icons.md +35 -0
  187. package/src/components/chat/utils/.source-row-cta.md +54 -0
  188. package/src/components/chat/utils/.tool-call-helpers.md +42 -0
  189. package/src/components/contact/.contact-form.md +43 -0
  190. package/src/components/contact/.index.md +27 -0
  191. package/src/components/features/.array-entry-manager.md +36 -45
  192. package/src/components/features/.changelog-manager.md +47 -21
  193. package/src/components/features/.changelog-sections-manager.md +21 -26
  194. package/src/components/features/.command-box.md +31 -28
  195. package/src/components/features/.entity-summary-editor.md +46 -0
  196. package/src/components/features/.entity-video-section.md +51 -0
  197. package/src/components/features/.figma-prototype-viewer.md +48 -29
  198. package/src/components/features/.filters-dropdown.md +33 -46
  199. package/src/components/features/.highlight-config-section.md +42 -0
  200. package/src/components/features/.highlight-generation-section.md +46 -0
  201. package/src/components/features/.highlight-video-combined-section.md +47 -0
  202. package/src/components/features/.highlight-video-preview.md +44 -0
  203. package/src/components/features/.highlight-video-section.md +47 -0
  204. package/src/components/features/.index.md +40 -66
  205. package/src/components/features/.media-gallery-manager.md +48 -38
  206. package/src/components/features/.more-about-button.md +22 -19
  207. package/src/components/features/.og-editor-preview.md +40 -36
  208. package/src/components/features/.parallax-image-showcase.md +33 -26
  209. package/src/components/features/.paths-display.md +42 -43
  210. package/src/components/features/.platform-badge.md +37 -36
  211. package/src/components/features/.platform-filter.md +23 -16
  212. package/src/components/features/.policy-configuration-panel.md +48 -56
  213. package/src/components/features/.provider-button.md +33 -36
  214. package/src/components/features/.push-button-selector.md +40 -29
  215. package/src/components/features/.release-media-manager.md +46 -31
  216. package/src/components/features/.section-selector.md +26 -31
  217. package/src/components/features/.select-button.md +35 -25
  218. package/src/components/features/.seo-editor-preview.md +41 -44
  219. package/src/components/features/.social-links-manager.md +25 -19
  220. package/src/components/features/.start-with-openframe-button.md +37 -29
  221. package/src/components/features/.status-filter-component.md +36 -20
  222. package/src/components/features/.tags-selector.md +40 -24
  223. package/src/components/features/.transcribe-and-summarize-combined-section.md +45 -0
  224. package/src/components/features/.transcribe-summarize-section.md +48 -0
  225. package/src/components/features/.transcript-summary-editor.md +53 -0
  226. package/src/components/features/.video-bites-display.md +46 -0
  227. package/src/components/features/.video-clips-section.md +41 -0
  228. package/src/components/features/.video-ratio-tabs.md +56 -0
  229. package/src/components/features/.video-source-selector.md +60 -0
  230. package/src/components/features/.video.md +44 -0
  231. package/src/components/features/.waitlist-form.md +60 -0
  232. package/src/components/features/ai-enrich/.AIEnrichButton.md +30 -27
  233. package/src/components/features/ai-enrich/.AIEnrichSection.md +46 -42
  234. package/src/components/features/board/.board-column-header.md +38 -0
  235. package/src/components/features/board/.board-column.md +43 -0
  236. package/src/components/features/board/.board.md +51 -0
  237. package/src/components/features/board/.color-utils.md +26 -0
  238. package/src/components/features/board/.index.md +56 -0
  239. package/src/components/features/board/.ticket-card-skeleton.md +38 -0
  240. package/src/components/features/board/.ticket-card.md +47 -0
  241. package/src/components/features/board/.types.md +45 -0
  242. package/src/components/features/board/.use-board-collapse.md +34 -0
  243. package/src/components/features/notifications/.index.md +57 -0
  244. package/src/components/features/notifications/.notification-drawer.md +34 -0
  245. package/src/components/features/notifications/.notification-tile.md +39 -0
  246. package/src/components/features/notifications/.notifications-context.md +73 -0
  247. package/src/components/features/notifications/.types.md +45 -0
  248. package/src/components/icons/.about-icon.md +20 -28
  249. package/src/components/icons/.ai-robot-icon.md +15 -17
  250. package/src/components/icons/.bash-icon.md +16 -23
  251. package/src/components/icons/.buildings-icon.md +10 -24
  252. package/src/components/icons/.capterra-icon.md +30 -26
  253. package/src/components/icons/.carta-icon.md +29 -0
  254. package/src/components/icons/.clickup-icon.md +26 -0
  255. package/src/components/icons/.cmd-icon.md +15 -22
  256. package/src/components/icons/.coins-icon.md +17 -25
  257. package/src/components/icons/.community-hub-icon.md +19 -25
  258. package/src/components/icons/.community-icon.md +24 -21
  259. package/src/components/icons/.compare-icon.md +32 -19
  260. package/src/components/icons/.copy-icon.md +29 -15
  261. package/src/components/icons/.custom-external-link-icon.md +19 -17
  262. package/src/components/icons/.custom-fork-icon.md +32 -21
  263. package/src/components/icons/.custom-license-icon.md +29 -25
  264. package/src/components/icons/.custom-star-icon.md +20 -28
  265. package/src/components/icons/.custom-time-icon.md +21 -22
  266. package/src/components/icons/.cut-vendor-costs-icon.md +6 -19
  267. package/src/components/icons/.dashboard-icon.md +13 -18
  268. package/src/components/icons/.deno-icon.md +16 -23
  269. package/src/components/icons/.donut-icon.md +12 -23
  270. package/src/components/icons/.double-chevron-icon.md +28 -36
  271. package/src/components/icons/.elestio-logo.md +13 -23
  272. package/src/components/icons/.empty-vendor-icon.md +16 -18
  273. package/src/components/icons/.explore-categories-icon.md +18 -29
  274. package/src/components/icons/.eye-icon.md +16 -26
  275. package/src/components/icons/.facebook-icon.md +9 -20
  276. package/src/components/icons/.figma-icon.md +8 -17
  277. package/src/components/icons/.filter-icon.md +15 -17
  278. package/src/components/icons/.flamingo-logo.md +28 -27
  279. package/src/components/icons/.folder-shield-icon.md +28 -19
  280. package/src/components/icons/.g2-icon.md +22 -21
  281. package/src/components/icons/.getapp-icon.md +25 -21
  282. package/src/components/icons/.github-icon.md +13 -25
  283. package/src/components/icons/.globe-icon.md +14 -19
  284. package/src/components/icons/.google-gemini-icon.md +16 -19
  285. package/src/components/icons/.google-logo.md +15 -21
  286. package/src/components/icons/.grid-view-icon.md +30 -19
  287. package/src/components/icons/.hamburger-icon.md +22 -20
  288. package/src/components/icons/.hand-dollar-icon.md +24 -34
  289. package/src/components/icons/.hotel-icon.md +27 -21
  290. package/src/components/icons/.icon-utils.md +28 -29
  291. package/src/components/icons/.image-icon.md +15 -22
  292. package/src/components/icons/.index.md +25 -28
  293. package/src/components/icons/.info-circle-icon.md +29 -30
  294. package/src/components/icons/.instagram-icon.md +10 -24
  295. package/src/components/icons/.jump-in-icon.md +18 -18
  296. package/src/components/icons/.linux-icon.md +18 -18
  297. package/src/components/icons/.log-out-icon.md +15 -23
  298. package/src/components/icons/.logs-icon.md +14 -23
  299. package/src/components/icons/.margin-crisis-icon.md +21 -20
  300. package/src/components/icons/.menu-icon.md +18 -19
  301. package/src/components/icons/.miami-cyber-gang-logo-face-only.md +18 -21
  302. package/src/components/icons/.miami-cyber-gang-logo.md +22 -14
  303. package/src/components/icons/.mlg-logo.md +18 -16
  304. package/src/components/icons/.moon-icon.md +32 -22
  305. package/src/components/icons/.ms-icon.md +30 -19
  306. package/src/components/icons/.nushell-icon.md +7 -21
  307. package/src/components/icons/.open-source-icon.md +19 -23
  308. package/src/components/icons/.openai-icon.md +9 -24
  309. package/src/components/icons/.openframe-ai-icons.md +25 -26
  310. package/src/components/icons/.openframe-logo.md +28 -22
  311. package/src/components/icons/.openframe-text.md +24 -27
  312. package/src/components/icons/.openmsp-logo.md +26 -23
  313. package/src/components/icons/.pilot-icon.md +23 -0
  314. package/src/components/icons/.powershell-icon.md +17 -22
  315. package/src/components/icons/.python-icon.md +16 -23
  316. package/src/components/icons/.queries-icon.md +13 -21
  317. package/src/components/icons/.reddit-icon.md +28 -24
  318. package/src/components/icons/.remote-control-icon.md +13 -17
  319. package/src/components/icons/.script-icon.md +27 -19
  320. package/src/components/icons/.search-icon.md +21 -21
  321. package/src/components/icons/.send-icon.md +14 -16
  322. package/src/components/icons/.settings-icon.md +30 -19
  323. package/src/components/icons/.shape-circle-dash-icon.md +16 -21
  324. package/src/components/icons/.shell-icon.md +15 -19
  325. package/src/components/icons/.shield-check-icon.md +18 -31
  326. package/src/components/icons/.shield-key-icon.md +25 -25
  327. package/src/components/icons/.shield-lock-icon.md +8 -18
  328. package/src/components/icons/.slack-icon.md +28 -32
  329. package/src/components/icons/.sparkles-icon.md +18 -23
  330. package/src/components/icons/.sso-configuration-icon.md +29 -16
  331. package/src/components/icons/.sun-icon.md +20 -18
  332. package/src/components/icons/.table-view-icon.md +17 -19
  333. package/src/components/icons/.telegram-icon.md +8 -22
  334. package/src/components/icons/.thumbs-down-icon.md +10 -19
  335. package/src/components/icons/.thumbs-up-icon.md +8 -17
  336. package/src/components/icons/.tool-directory-icons.md +24 -28
  337. package/src/components/icons/.trustpilot-icon.md +25 -22
  338. package/src/components/icons/.user-icon.md +26 -28
  339. package/src/components/icons/.users-group-icon.md +28 -24
  340. package/src/components/icons/.vendor-showcase-icons.md +21 -29
  341. package/src/components/icons/.vendors-icon.md +18 -22
  342. package/src/components/icons/.whatsapp-icon.md +30 -14
  343. package/src/components/icons/.x-icon.md +18 -23
  344. package/src/components/icons/.x-logo.md +13 -38
  345. package/src/components/icons/.youtube-icon.md +8 -19
  346. package/src/components/icons/device-type-icons/.get-device-type-icon.md +26 -34
  347. package/src/components/icons-v2-generated/.index.md +52 -0
  348. package/src/components/icons-v2-generated/alphabet/.index.md +33 -0
  349. package/src/components/icons-v2-generated/arrows/.index.md +39 -0
  350. package/src/components/icons-v2-generated/audio-and-visual/.index.md +40 -0
  351. package/src/components/icons-v2-generated/brand-logos/.elestio-logo-icon.md +40 -0
  352. package/src/components/icons-v2-generated/brand-logos/.gemini-logo-icon.md +37 -0
  353. package/src/components/icons-v2-generated/brand-logos/.google-gemini-logo-icon.md +33 -0
  354. package/src/components/icons-v2-generated/brand-logos/.index.md +38 -0
  355. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-grey-icon.md +35 -0
  356. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-icon.md +36 -0
  357. package/src/components/icons-v2-generated/buildings/.index.md +48 -0
  358. package/src/components/icons-v2-generated/charts/.index.md +40 -0
  359. package/src/components/icons-v2-generated/clothes/.index.md +48 -0
  360. package/src/components/icons-v2-generated/coding/.index.md +42 -0
  361. package/src/components/icons-v2-generated/communication/.index.md +39 -0
  362. package/src/components/icons-v2-generated/date-and-time/.index.md +29 -0
  363. package/src/components/icons-v2-generated/design/.index.md +39 -0
  364. package/src/components/icons-v2-generated/devices/.index.md +38 -0
  365. package/src/components/icons-v2-generated/documents/.index.md +38 -0
  366. package/src/components/icons-v2-generated/finance/.index.md +34 -0
  367. package/src/components/icons-v2-generated/food-and-drinks/.index.md +34 -0
  368. package/src/components/icons-v2-generated/food-and-drinks/.leafy-green-icon.md +36 -0
  369. package/src/components/icons-v2-generated/food-and-drinks/.strawberry-icon.md +39 -0
  370. package/src/components/icons-v2-generated/health/.index.md +40 -0
  371. package/src/components/icons-v2-generated/household/.index.md +45 -0
  372. package/src/components/icons-v2-generated/interface/.index.md +36 -0
  373. package/src/components/icons-v2-generated/map-and-travel/.index.md +41 -0
  374. package/src/components/icons-v2-generated/media-playback/.index.md +51 -0
  375. package/src/components/icons-v2-generated/number/.index.md +41 -0
  376. package/src/components/icons-v2-generated/school/.index.md +37 -0
  377. package/src/components/icons-v2-generated/security/.fingerprint-icon.md +38 -0
  378. package/src/components/icons-v2-generated/security/.index.md +39 -0
  379. package/src/components/icons-v2-generated/shopping/.index.md +42 -0
  380. package/src/components/icons-v2-generated/signs-and-symbols/.index.md +32 -0
  381. package/src/components/icons-v2-generated/sort-and-filter/.index.md +35 -0
  382. package/src/components/icons-v2-generated/sport/.index.md +41 -0
  383. package/src/components/icons-v2-generated/text-editor/.index.md +44 -0
  384. package/src/components/icons-v2-generated/users/.index.md +45 -0
  385. package/src/components/icons-v2-generated/vehicles-and-delivery/.index.md +36 -0
  386. package/src/components/icons-v2-generated/weather-and-nature/.flower-sakura-icon.md +36 -0
  387. package/src/components/icons-v2-generated/weather-and-nature/.index.md +34 -0
  388. package/src/components/layout/.article-detail-layout.md +43 -0
  389. package/src/components/layout/.back-button.md +40 -0
  390. package/src/components/layout/.list-page-layout.md +35 -26
  391. package/src/components/layout/.page-container.md +27 -38
  392. package/src/components/layout/.page-layout.md +50 -0
  393. package/src/components/layout/.title-block.md +42 -0
  394. package/src/components/loading/.card-skeleton.md +38 -29
  395. package/src/components/loading/.device-card-skeleton.md +29 -25
  396. package/src/components/loading/.index.md +39 -46
  397. package/src/components/loading/.margin-report-skeleton.md +45 -34
  398. package/src/components/loading/.organization-card-skeleton.md +39 -44
  399. package/src/components/loading/.page-layout-skeleton.md +34 -45
  400. package/src/components/loading/.unified-skeleton.md +62 -36
  401. package/src/components/navigation/.app-header.md +40 -29
  402. package/src/components/navigation/.app-layout.md +25 -26
  403. package/src/components/navigation/.header-global-search.md +34 -37
  404. package/src/components/navigation/.header-organization-filter.md +23 -22
  405. package/src/components/navigation/.header.md +31 -35
  406. package/src/components/navigation/.mobile-burger-menu.md +39 -47
  407. package/src/components/navigation/.mobile-nav-panel.md +51 -32
  408. package/src/components/navigation/.navigation-sidebar-header.md +36 -0
  409. package/src/components/navigation/.navigation-sidebar-item.md +45 -0
  410. package/src/components/navigation/.navigation-sidebar-toggle.md +38 -0
  411. package/src/components/navigation/.navigation-sidebar.md +33 -34
  412. package/src/components/navigation/.sliding-sidebar.md +52 -41
  413. package/src/components/navigation/.sticky-section-nav.md +56 -48
  414. package/src/components/platform/.ScriptArguments.md +39 -25
  415. package/src/components/platform/.ScriptInfoSection.md +30 -26
  416. package/src/components/platform/.ShellTypeBadge.md +18 -13
  417. package/src/components/platform/.SoftwareInfo.md +23 -27
  418. package/src/components/platform/.SoftwareSourceBadge.md +28 -19
  419. package/src/components/platform/.ToolBadge.md +25 -26
  420. package/src/components/platform/ShellTypeBadge.tsx +2 -2
  421. package/src/components/providers/.theme-provider.md +52 -0
  422. package/src/components/shared/delivery/.delivery-lists.md +39 -0
  423. package/src/components/shared/delivery/.delivery-row.md +41 -0
  424. package/src/components/shared/delivery/.delivery-table.md +41 -0
  425. package/src/components/shared/delivery/.index.md +38 -0
  426. package/src/components/shared/dev-section/.dev-card-row.md +60 -0
  427. package/src/components/shared/dev-section/.dev-section-page.md +48 -0
  428. package/src/components/shared/dev-section/.dev-section-view.md +43 -0
  429. package/src/components/shared/dev-section/.index.md +38 -0
  430. package/src/components/shared/legal-document/.index.md +40 -0
  431. package/src/components/shared/legal-document/.legal-document-page.md +50 -0
  432. package/src/components/shared/legal-document/.use-legal-docs.md +42 -0
  433. package/src/components/shared/onboarding/.onboarding-step-card.md +32 -31
  434. package/src/components/shared/onboarding/.onboarding-walkthrough.md +39 -43
  435. package/src/components/shared/product-release/.index.md +28 -30
  436. package/src/components/shared/product-release/.product-release-card-skeleton.md +28 -28
  437. package/src/components/shared/product-release/.product-release-card.md +45 -27
  438. package/src/components/shared/product-release/.release-detail-page.md +23 -24
  439. package/src/components/shared/roadmap/.index.md +37 -0
  440. package/src/components/shared/roadmap/.roadmap-grid-skeleton.md +39 -0
  441. package/src/components/shared/roadmap/.roadmap-grid.md +66 -0
  442. package/src/components/shared/roadmap/.use-roadmap-voting.md +68 -0
  443. package/src/components/tickets/.help-center-card.md +51 -0
  444. package/src/components/tickets/.help-center-create-form.md +38 -0
  445. package/src/components/tickets/.help-center-list.md +40 -0
  446. package/src/components/tickets/.index.md +65 -0
  447. package/src/components/tickets/.ticket-center.md +51 -0
  448. package/src/components/tickets/.ticket-detail-drawer.md +48 -0
  449. package/src/components/tickets/.ticket-linked-delivery-card.md +36 -0
  450. package/src/components/tickets/.ticket-open-form.md +50 -0
  451. package/src/components/tickets/.ticket-row.md +30 -0
  452. package/src/components/tickets/.types.md +57 -0
  453. package/src/components/tickets/hooks/.use-ticket-actions.md +77 -0
  454. package/src/components/tickets/hooks/.use-ticket-engagements.md +42 -0
  455. package/src/components/tickets/hooks/.use-tickets-list.md +54 -0
  456. package/src/components/ui/.actions-menu.md +66 -41
  457. package/src/components/ui/.alert-dialog.md +29 -26
  458. package/src/components/ui/.allowed-domains-input.md +29 -21
  459. package/src/components/ui/.assignee-dropdown.md +45 -0
  460. package/src/components/ui/.autocomplete.md +47 -41
  461. package/src/components/ui/.benefit-card.md +51 -36
  462. package/src/components/ui/.brand-association-card.md +30 -27
  463. package/src/components/ui/.breadcrumb.md +17 -15
  464. package/src/components/ui/.checkbox-block.md +39 -35
  465. package/src/components/ui/.checkbox-with-description.md +23 -16
  466. package/src/components/ui/.checkbox.md +31 -23
  467. package/src/components/ui/.circular-progress.md +49 -19
  468. package/src/components/ui/.content-loader.md +32 -20
  469. package/src/components/ui/.cursor-pagination.md +41 -52
  470. package/src/components/ui/.dashboard-info-card.md +33 -26
  471. package/src/components/ui/.date-picker.md +27 -25
  472. package/src/components/ui/.device-card-compact.md +28 -29
  473. package/src/components/ui/.device-card.md +27 -27
  474. package/src/components/ui/.dialog.md +25 -16
  475. package/src/components/ui/.drawer.md +86 -0
  476. package/src/components/ui/.dropdown-button.md +45 -0
  477. package/src/components/ui/.entity-image.md +46 -0
  478. package/src/components/ui/.error-state.md +41 -28
  479. package/src/components/ui/.feature-card.md +35 -31
  480. package/src/components/ui/.feature-list.md +48 -0
  481. package/src/components/ui/.field-wrapper.md +47 -0
  482. package/src/components/ui/.file-upload.md +42 -0
  483. package/src/components/ui/.filter-checkbox-item.md +43 -0
  484. package/src/components/ui/.filter-list.md +57 -0
  485. package/src/components/ui/.filter-modal.md +59 -0
  486. package/src/components/ui/.floating-tooltip.md +43 -26
  487. package/src/components/ui/.hidden-tags-popup.md +49 -0
  488. package/src/components/ui/.hover-dropdown.md +54 -0
  489. package/src/components/ui/.image-gallery-modal.md +41 -34
  490. package/src/components/ui/.image-uploader.md +53 -0
  491. package/src/components/ui/.index.md +40 -34
  492. package/src/components/ui/.info-card.md +31 -31
  493. package/src/components/ui/.info-row.md +31 -27
  494. package/src/components/ui/.input-trigger.md +44 -0
  495. package/src/components/ui/.input.md +37 -31
  496. package/src/components/ui/.markdown-editor.md +57 -0
  497. package/src/components/ui/.modal-v2.md +51 -0
  498. package/src/components/ui/.modal.md +32 -31
  499. package/src/components/ui/.more-actions-menu.md +45 -38
  500. package/src/components/ui/.organization-card.md +31 -37
  501. package/src/components/ui/.page-actions.md +44 -54
  502. package/src/components/ui/.phone-input.md +54 -0
  503. package/src/components/ui/.progress-bar.md +35 -27
  504. package/src/components/ui/.radio-group.md +39 -27
  505. package/src/components/ui/.release-changelog-section.md +34 -34
  506. package/src/components/ui/.search-input.md +48 -0
  507. package/src/components/ui/.select.md +54 -34
  508. package/src/components/ui/.service-card.md +42 -40
  509. package/src/components/ui/.sheet.md +27 -18
  510. package/src/components/ui/.simple-markdown-renderer.md +29 -31
  511. package/src/components/ui/.sort-column-item.md +42 -0
  512. package/src/components/ui/.square-avatar.md +34 -24
  513. package/src/components/ui/.status-badge.md +26 -38
  514. package/src/components/ui/.switch.md +22 -35
  515. package/src/components/ui/.tab-navigation.md +56 -53
  516. package/src/components/ui/.tab-selector.md +40 -0
  517. package/src/components/ui/.tag-key-value-filter.md +56 -0
  518. package/src/components/ui/.tag-search-input.md +53 -0
  519. package/src/components/ui/.tag.md +49 -31
  520. package/src/components/ui/.tags-manager.md +60 -0
  521. package/src/components/ui/.textarea.md +44 -34
  522. package/src/components/ui/.ticket-attachments-list.md +45 -0
  523. package/src/components/ui/.ticket-detail-section.md +29 -0
  524. package/src/components/ui/.ticket-info-section.md +56 -0
  525. package/src/components/ui/.ticket-note-card.md +53 -0
  526. package/src/components/ui/.ticket-notes-section.md +54 -0
  527. package/src/components/ui/.ticket-status-tag.md +49 -0
  528. package/src/components/ui/.title-content-block.md +25 -26
  529. package/src/components/ui/.toaster.md +40 -28
  530. package/src/components/ui/.tooltip.md +22 -11
  531. package/src/components/ui/.truncate-text.md +39 -0
  532. package/src/components/ui/button/.button-styles.md +35 -0
  533. package/src/components/ui/button/.button.md +53 -0
  534. package/src/components/ui/button/.split-button.md +48 -0
  535. package/src/components/ui/data-table/.data-table-body.md +48 -0
  536. package/src/components/ui/data-table/.data-table-column-filter.md +45 -0
  537. package/src/components/ui/data-table/.data-table-cursor-footer.md +45 -0
  538. package/src/components/ui/data-table/.data-table-empty.md +43 -0
  539. package/src/components/ui/data-table/.data-table-header.md +55 -0
  540. package/src/components/ui/data-table/.data-table-infinite-footer.md +44 -0
  541. package/src/components/ui/data-table/.data-table-row-count.md +43 -0
  542. package/src/components/ui/data-table/.data-table-row.md +47 -0
  543. package/src/components/ui/data-table/.data-table-skeleton.md +42 -0
  544. package/src/components/ui/data-table/.data-table.md +47 -0
  545. package/src/components/ui/data-table/.index.md +55 -0
  546. package/src/components/ui/data-table/.types.md +54 -0
  547. package/src/components/ui/data-table/.use-data-table.md +45 -0
  548. package/src/components/ui/data-table/.utils.md +38 -0
  549. package/src/components/ui/file-manager/.file-manager-action-bar.md +39 -30
  550. package/src/components/ui/file-manager/.file-manager-breadcrumb.md +29 -27
  551. package/src/components/ui/file-manager/.file-manager-context-menu.md +38 -42
  552. package/src/components/ui/file-manager/.file-manager-empty.md +26 -39
  553. package/src/components/ui/file-manager/.file-manager-table-row.md +33 -41
  554. package/src/components/ui/file-manager/.file-manager.md +35 -31
  555. package/src/components/ui/query-report-table/.index.md +43 -0
  556. package/src/components/ui/query-report-table/.query-report-table-header.md +36 -0
  557. package/src/components/ui/query-report-table/.query-report-table-row.md +40 -0
  558. package/src/components/ui/query-report-table/.query-report-table-skeleton.md +44 -0
  559. package/src/components/ui/query-report-table/.query-report-table.md +47 -0
  560. package/src/components/ui/query-report-table/.types.md +41 -0
  561. package/src/components/ui/query-report-table/.utils.md +35 -0
  562. package/src/components/ui/table/.index.md +27 -48
  563. package/src/components/ui/table/.table-cell.md +18 -27
  564. package/src/components/ui/table/.table-column-filter-dropdown.md +40 -0
  565. package/src/components/ui/table/.table-description-cell.md +24 -14
  566. package/src/components/ui/table/.table-empty-state.md +21 -22
  567. package/src/components/ui/table/.table-header.md +25 -40
  568. package/src/components/ui/table/.table-row.md +22 -40
  569. package/src/components/ui/table/.table-skeleton.md +33 -26
  570. package/src/components/ui/table/.table-timestamp-cell.md +26 -16
  571. package/src/components/ui/table/.table.md +39 -59
  572. package/src/components/ui/table/.types.md +44 -36
  573. package/src/components/ui/table/.utils.md +18 -20
  574. package/src/contexts/.chat-runtime-context.md +54 -0
  575. package/src/contexts/.endpoints-runtime-context.md +58 -0
  576. package/src/contexts/.index.md +53 -0
  577. package/src/contexts/.use-outer-or-default.md +36 -0
  578. package/src/embed-shims/.index.md +45 -0
  579. package/src/embed-shims/.next-dynamic.md +43 -0
  580. package/src/embed-shims/.next-image.md +45 -0
  581. package/src/embed-shims/.next-link.md +59 -0
  582. package/src/embed-shims/.next-navigation.md +59 -0
  583. package/src/hooks/.index.md +34 -29
  584. package/src/hooks/.use-access-code-integration.md +49 -0
  585. package/src/hooks/.use-contact-submission.md +37 -26
  586. package/src/hooks/.use-copy-to-clipboard.md +42 -0
  587. package/src/hooks/.use-near-viewport.md +44 -0
  588. package/src/hooks/.use-og-placeholder.md +51 -0
  589. package/src/hooks/.use-toast.md +36 -35
  590. package/src/hooks/state/.use-api-params.md +29 -46
  591. package/src/hooks/state/.use-query-params.md +37 -33
  592. package/src/hooks/ui/.index.md +33 -32
  593. package/src/hooks/ui/.use-auto-limit-tags.md +54 -0
  594. package/src/hooks/ui/.use-horizontal-scrollbar.md +74 -0
  595. package/src/hooks/ui/.use-image-edge-color.md +42 -0
  596. package/src/hooks/ui/.use-media-query.md +33 -25
  597. package/src/hooks/ui/.use-search.md +51 -0
  598. package/src/nats/.nats.md +49 -28
  599. package/src/schemas/.contact-schema.md +45 -0
  600. package/src/stories/.AnnouncementBar.stories.md +45 -0
  601. package/src/stories/.AppLayout.stories.md +20 -21
  602. package/src/stories/.Autocomplete.stories.md +48 -34
  603. package/src/stories/.Board.stories.md +35 -0
  604. package/src/stories/.Button.stories.md +36 -33
  605. package/src/stories/.ChatTicketList.stories.md +33 -0
  606. package/src/stories/.CheckboxBlock.stories.md +40 -28
  607. package/src/stories/.ContentLoader.stories.md +47 -0
  608. package/src/stories/.DashboardInfoCard.stories.md +57 -0
  609. package/src/stories/.DataTable.stories.md +41 -0
  610. package/src/stories/.DatePicker.stories.md +66 -52
  611. package/src/stories/.DeviceCard.stories.md +41 -40
  612. package/src/stories/.DeviceCardCompact.stories.md +41 -0
  613. package/src/stories/.DotsLoaderIcon.stories.md +36 -0
  614. package/src/stories/.Drawer.stories.md +58 -0
  615. package/src/stories/.EmbeddableChat.stories.md +41 -0
  616. package/src/stories/.FileManager.stories.md +41 -0
  617. package/src/stories/.FileManagerActionBar.stories.md +38 -0
  618. package/src/stories/.FileUpload.stories.md +53 -0
  619. package/src/stories/.FilterList.stories.md +54 -0
  620. package/src/stories/.FilterModal.stories.md +72 -0
  621. package/src/stories/.FiltersDropdown.stories.md +57 -0
  622. package/src/stories/.Header.stories.md +48 -0
  623. package/src/stories/.ImageUploader.stories.md +49 -0
  624. package/src/stories/.InfoCard.stories.md +54 -0
  625. package/src/stories/.Input.stories.md +48 -30
  626. package/src/stories/.ListPageLayout.stories.md +56 -43
  627. package/src/stories/.MingoOnboardingCard.stories.md +42 -0
  628. package/src/stories/.MingoOnboardingCardSkeleton.stories.md +35 -0
  629. package/src/stories/.Modal.stories.md +40 -31
  630. package/src/stories/.NotificationDrawer.stories.md +55 -0
  631. package/src/stories/.OnboardingStepCard.stories.md +41 -0
  632. package/src/stories/.OrganizationCard.stories.md +61 -0
  633. package/src/stories/.PageActions.stories.md +52 -49
  634. package/src/stories/.PageContainer.stories.md +41 -35
  635. package/src/stories/.PageLayout.stories.md +60 -0
  636. package/src/stories/.ParallaxImageShowcase.stories.md +49 -0
  637. package/src/stories/.PhoneInput.stories.md +53 -0
  638. package/src/stories/.QueryReportTable.stories.md +44 -0
  639. package/src/stories/.RadioGroup.stories.md +46 -0
  640. package/src/stories/.RadioGroupBlock.stories.md +45 -0
  641. package/src/stories/.Select.stories.md +29 -15
  642. package/src/stories/.SlashCommandSuggestions.stories.md +41 -0
  643. package/src/stories/.SplitButton.stories.md +62 -0
  644. package/src/stories/.TabNavigation.stories.md +47 -38
  645. package/src/stories/.TabSelector.stories.md +65 -0
  646. package/src/stories/.Table.stories.md +38 -46
  647. package/src/stories/.TableColumnFilterDropdown.stories.md +46 -0
  648. package/src/stories/.Tag.stories.md +43 -32
  649. package/src/stories/.TagKeyValueFilter.stories.md +44 -0
  650. package/src/stories/.TagSearchInput.stories.md +61 -0
  651. package/src/stories/.Textarea.stories.md +49 -26
  652. package/src/stories/.Theme.stories.md +41 -0
  653. package/src/stories/.TicketAttachmentsList.stories.md +39 -0
  654. package/src/stories/.TicketDescriptionViewer.stories.md +39 -0
  655. package/src/stories/.TicketInfoSection.stories.md +40 -0
  656. package/src/stories/.TicketKnowledgeBaseList.stories.md +36 -0
  657. package/src/stories/.TicketNotesSection.stories.md +50 -0
  658. package/src/stories/.Toaster.stories.md +40 -0
  659. package/src/stories/.ToolExecutionDisplay.stories.md +41 -0
  660. package/src/stories/.Tooltip.stories.md +41 -0
  661. package/src/stories/.UserSummary.stories.md +41 -0
  662. package/src/stories/.WaitlistForm.stories.md +42 -0
  663. package/src/stories/BlogCard.stories.tsx +61 -0
  664. package/src/stories/CampaignCardAdmin.stories.tsx +52 -0
  665. package/src/stories/CaseStudyCard.stories.tsx +42 -0
  666. package/src/stories/ChatContainer.stories.tsx +186 -0
  667. package/src/stories/ChatInlineVideoPill.stories.tsx +63 -0
  668. package/src/stories/CustomerInterviewCard.stories.tsx +42 -0
  669. package/src/stories/DataRoomDocCard.stories.tsx +52 -0
  670. package/src/stories/GenericEntityCard.stories.tsx +66 -0
  671. package/src/stories/GitHubActivityCard.stories.tsx +61 -0
  672. package/src/stories/HubspotTicketCard.stories.tsx +98 -0
  673. package/src/stories/InvestorUpdateCard.stories.tsx +42 -0
  674. package/src/stories/OnboardingGuideCard.stories.tsx +52 -0
  675. package/src/stories/ProductReleaseCard.stories.tsx +61 -0
  676. package/src/stories/ProgramCard.stories.tsx +79 -0
  677. package/src/stories/RoadmapCard.stories.tsx +75 -0
  678. package/src/stories/SlackMessageCard.stories.tsx +41 -0
  679. package/src/stories/__fixtures__/chat-cards.ts +604 -0
  680. package/src/types/.blog.md +53 -29
  681. package/src/types/.case-study.md +44 -27
  682. package/src/types/.customer-interview.md +66 -44
  683. package/src/types/.delivery.md +40 -0
  684. package/src/types/.employee.md +24 -30
  685. package/src/types/.index.md +33 -47
  686. package/src/types/.marketing.md +49 -44
  687. package/src/types/.navigation.md +33 -25
  688. package/src/types/.os.types.md +32 -27
  689. package/src/types/.platform.md +31 -28
  690. package/src/types/.product-release.md +65 -38
  691. package/src/types/.supabase.md +37 -29
  692. package/src/types/.team.md +41 -33
  693. package/src/types/.video-processing.md +54 -0
  694. package/src/types/.waitlist.md +40 -36
  695. package/src/utils/.access-code-client.md +37 -36
  696. package/src/utils/.cn.md +31 -23
  697. package/src/utils/.color-analysis.md +35 -0
  698. package/src/utils/.country-phone-utils.md +39 -0
  699. package/src/utils/.date-formatters.md +19 -18
  700. package/src/utils/.embed-authed-fetch.md +39 -0
  701. package/src/utils/.embed-proxy-auth-storage.md +38 -0
  702. package/src/utils/.fetch-priority.md +41 -0
  703. package/src/utils/.format.md +74 -25
  704. package/src/utils/.generic-domain-utils.md +42 -0
  705. package/src/utils/.image-proxy.md +59 -23
  706. package/src/utils/.index.md +42 -49
  707. package/src/utils/.local-storage-adapter.md +50 -0
  708. package/src/utils/.ods-color-utils.md +55 -38
  709. package/src/utils/.platform-config.md +45 -25
  710. package/src/utils/.scroll-into-view.md +40 -0
  711. package/src/utils/.source-icons.md +53 -0
  712. package/src/utils/.sse-decision-frame.md +46 -0
  713. package/src/utils/dev-sections/.index.md +34 -0
  714. package/src/utils/dev-sections/.openframe-dev-sections.md +49 -0
  715. package/dist/chunk-ZDF6F7ED.cjs.map +0 -1
  716. package/dist/chunk-ZTJVRSN5.js.map +0 -1
  717. package/src/components/.card.md +0 -42
  718. package/src/components/.contact-button.md +0 -30
  719. package/src/components/.drawer.md +0 -46
  720. package/src/components/.fixed-layout-container.md +0 -47
  721. package/src/components/.footer-waitlist-card.md +0 -29
  722. package/src/components/.join-waitlist-cta.md +0 -29
  723. package/src/components/.sheet.md +0 -47
  724. package/src/components/.sliding-panel.md +0 -48
  725. package/src/components/.tooltip.md +0 -48
  726. package/src/components/.use-mobile.md +0 -42
  727. package/src/components/.vendor-compact-card.md +0 -66
  728. package/src/components/.x-button.md +0 -42
  729. package/src/components/features/.github-repo-button.md +0 -40
  730. package/src/components/features/.organization-icon.md +0 -47
  731. package/src/components/features/.organization-selector.md +0 -45
  732. package/src/components/icons/.fleet-icon.md +0 -39
  733. package/src/components/icons/.meshcentral-icon.md +0 -35
  734. package/src/components/icons/.refresh-icon.md +0 -34
  735. package/src/components/icons/.tactical-icon.md +0 -35
  736. package/src/components/ui/.button.md +0 -69
  737. package/src/components/ui/.log-table-row.md +0 -47
  738. package/src/components/ui/.selectable-device-card.md +0 -46
  739. package/src/hooks/.api-hooks-stub.md +0 -45
  740. package/src/hooks/api/.use-product-releases.md +0 -53
  741. package/src/stories/.OrganizationSelector.stories.md +0 -42
  742. package/src/stories/.SelectableDeviceCard.stories.md +0 -30
  743. package/src/utils/.lite-youtube-embed-stub.md +0 -37
  744. package/src/utils/.lite-youtube-embed.md +0 -33
  745. /package/dist/{chunk-IK2X5YJU.js.map → chunk-7PCP7YQR.js.map} +0 -0
  746. /package/dist/{chunk-3JWIJJ44.js.map → chunk-R6MLPU4A.js.map} +0 -0
@@ -1,55 +1,53 @@
1
- <!-- source-hash: 9776b4038d8695da9d5a33a4dc05d48b -->
2
- A React hook for managing chunk synchronization during real-time chat dialog loading, handling buffering, deduplication, and proper ordering of message chunks from both NATS streams and API catchup.
1
+ <!-- source-hash: a64b1bda14e5000a8167e43f4d2c233d -->
2
+ Manages NATS message chunk buffering and catchup for dialog loading, ensuring chunks arriving during initial fetch are buffered, deduplicated, ordered by sequence ID, and processed without gaps or duplicates.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **useChunkCatchup**: Main hook that orchestrates chunk catchup during dialog loading
7
- - **processChunk**: Processes individual chunks with optional buffering during catchup
8
- - **catchUpChunks**: Fetches historical chunks from API and merges with buffered realtime chunks
9
- - **flushBufferedRealtimeChunks**: Processes buffered chunks after catchup completion
10
- - **resetChunkTracking**: Resets all internal state for new dialog sessions
11
- - **startInitialBuffering**: Enables buffering mode for initial catchup phase
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `useChunkCatchup` | Hook | Main hook orchestrating chunk buffering, catchup fetching, deduplication, and ordered processing |
9
+ | `makeSeqKey` | Helper | Generates a unique tracking key from `messageType`, `chunkType`, and `sequenceId` |
10
+ | `makeBatchDedupKey` | Helper | Generates a composite deduplication key covering all relevant chunk fields |
11
+ | `getChatTypeMessageType` | Helper | Maps a `ChatType` to its corresponding `NatsMessageType` |
12
+
13
+ ### Hook Return API (`UseChunkCatchupReturn`)
14
+
15
+ | Method | Description |
16
+ |--------|-------------|
17
+ | `catchUpChunks(fromSequenceId?)` | Fetches historical chunks from the API and merges with buffered NATS chunks |
18
+ | `processChunk(chunk, messageType, forceProcess?)` | Processes a single chunk, buffering it if catchup is still in progress |
19
+ | `startInitialBuffering()` | Activates the buffer so live NATS chunks are held during initial fetch |
20
+ | `isBufferingActive()` | Returns `true` if buffering is currently active |
21
+ | `resetChunkTracking()` | Clears all sequence tracking and buffer state |
22
+ | `resetAndCatchUp()` | Resets guards and re-fetches from the last known sequence — use after reconnection |
23
+ | `processedCount` | Number of successfully processed sequence keys |
12
24
 
13
25
  ## Usage Example
14
26
 
15
27
  ```typescript
16
- import { useChunkCatchup } from './use-chunk-catchup'
17
- import { CHAT_TYPE } from '../types'
18
-
19
- function ChatDialog({ dialogId, fetchChunks }) {
20
- const {
21
- catchUpChunks,
22
- processChunk,
23
- resetChunkTracking,
24
- startInitialBuffering,
25
- isBufferingActive
26
- } = useChunkCatchup({
27
- dialogId,
28
- onChunkReceived: (chunk, messageType) => {
29
- console.log('Processing chunk:', chunk)
30
- // Handle the chunk in your UI
31
- },
32
- chatTypes: [CHAT_TYPE.CLIENT, CHAT_TYPE.ADMIN],
33
- fetchChunks: async (dialogId, chatType, fromSeqId) => {
34
- return await api.fetchDialogChunks(dialogId, chatType, fromSeqId)
35
- }
36
- })
37
-
38
- // Start catchup when dialog loads
39
- useEffect(() => {
40
- if (dialogId) {
41
- startInitialBuffering()
42
- catchUpChunks()
43
- }
44
- }, [dialogId])
45
-
46
- // Process realtime chunks from NATS
47
- const handleNatsChunk = useCallback((chunk, messageType) => {
48
- processChunk(chunk, messageType)
49
- }, [processChunk])
50
-
51
- return <div>Chat content...</div>
52
- }
53
- ```
54
-
55
- The hook handles complex scenarios like preventing duplicate chunks, maintaining sequence order, buffering realtime chunks during catchup, and finding complete message boundaries to ensure proper synchronization.
28
+ const {
29
+ catchUpChunks,
30
+ processChunk,
31
+ startInitialBuffering,
32
+ resetAndCatchUp,
33
+ } = useChunkCatchup({
34
+ dialogId: 'dialog-123',
35
+ chatTypes: [CHAT_TYPE.CLIENT, CHAT_TYPE.ADMIN],
36
+ fetchChunks: async (dialogId, chatType, fromSequenceId) => {
37
+ return await api.getChunks(dialogId, chatType, fromSequenceId)
38
+ },
39
+ onChunkReceived: (chunk, messageType) => {
40
+ dispatch(appendChunk({ chunk, messageType }))
41
+ },
42
+ })
43
+
44
+ // On dialog open: buffer live chunks while fetching history
45
+ startInitialBuffering()
46
+ await catchUpChunks()
47
+
48
+ // On NATS message received:
49
+ processChunk(incomingChunk, 'message')
50
+
51
+ // On reconnect: re-fetch missed chunks from last known position
52
+ await resetAndCatchUp()
53
+ ```
@@ -0,0 +1,44 @@
1
+ <!-- source-hash: a2a5f2990aca87eef1bd65cbfd43d85e -->
2
+ Closes a layout-mounted overlay (modal, drawer, dropdown, side panel) automatically when the URL pathname changes, preventing stale body-level scroll/pointer-event locks on the new page.
3
+
4
+ ## Key Components
5
+
6
+ ### `useCloseOnNavigation(close, pathname)`
7
+
8
+ | Parameter | Type | Description |
9
+ |-----------|------|-------------|
10
+ | `close` | `() => void` | Stable callback that triggers the overlay's close flow |
11
+ | `pathname` | `string \| null` | Current route pathname; threading this makes the hook router-agnostic |
12
+
13
+ **Behaviour:**
14
+ - **Skip-first-render** — uses `initializedRef` to record the initial pathname without firing `close()`, preventing a spurious close on mount
15
+ - **Real change only** — compares against `prevPathnameRef` and calls `close()` only when the pathname actually changes
16
+ - `close` is intentionally excluded from the `useEffect` dependency array; callers must pass a stable (memoized or ref-stable) callback
17
+
18
+ ## Usage Example
19
+
20
+ ```typescript
21
+ // Lib (router-agnostic, direct usage):
22
+ import { useCloseOnNavigation } from '@/lib/hooks/use-close-on-navigation'
23
+
24
+ function MyDrawer() {
25
+ const [isOpen, setIsOpen] = useState(false)
26
+ const pathname = usePathname() // or useLocation(), window.location.pathname, etc.
27
+
28
+ useCloseOnNavigation(() => setIsOpen(false), pathname)
29
+
30
+ return <Drawer open={isOpen} onClose={() => setIsOpen(false)} />
31
+ }
32
+ ```
33
+
34
+ ```typescript
35
+ // Hub wrapper (binds Next.js router once, re-exports a cleaner API):
36
+ import { usePathname } from 'next/navigation'
37
+ import { useCloseOnNavigation as libUseCloseOnNavigation } from '@lib/hooks/use-close-on-navigation'
38
+
39
+ export function useCloseOnNavigation(close: () => void) {
40
+ return libUseCloseOnNavigation(close, usePathname())
41
+ }
42
+ ```
43
+
44
+ > **Layout-shell only** — do not call this from page-level components. Pages unmount on navigation naturally; this hook exists solely for overlays that persist in the root layout across route changes.
@@ -0,0 +1,48 @@
1
+ <!-- source-hash: 24f090768a3d572fe819879e60f540e1 -->
2
+ Provides animated expand/collapse behavior for a container element by measuring content height and toggling `max-height` with a CSS transition.
3
+
4
+ ## Key Components
5
+
6
+ ### `UseCollapsibleOptions`
7
+ Configuration interface for the hook:
8
+ - `expanded` — controls whether the content is expanded or collapsed
9
+ - `collapsedHeight` — collapsed height in pixels or `"1lh"` (one line-height); defaults to `0`
10
+ - `disableTransition` — skips the CSS transition when `true`; defaults to `false`
11
+ - `durationMs` — transition duration in milliseconds; defaults to `200`
12
+
13
+ ### `useCollapsible(options)`
14
+ Main hook that returns:
15
+ - `innerRef` — ref callback to attach to the collapsible content `div`
16
+ - `isOverflowing` — `true` when content height exceeds the collapsed height (useful for showing "show more" triggers)
17
+ - `containerStyle` — computed `CSSProperties` object with `overflow`, `max-height`, and `transition` to spread onto the wrapper element
18
+
19
+ **`"1lh"` handling:** When `collapsedHeight` is `"1lh"`, the hook measures the inner element's `lineHeight` via `getComputedStyle` and uses the resolved pixel value instead of the raw CSS unit. This prevents the outer element's line-height from leaking adjacent content past the clip boundary.
20
+
21
+ A `ResizeObserver` watches the inner element and re-measures on size changes, keeping `contentHeight` accurate.
22
+
23
+ ## Usage Example
24
+
25
+ ```typescript
26
+ function CollapsibleText({ text }: { text: string }) {
27
+ const [expanded, setExpanded] = useState(false)
28
+
29
+ const { innerRef, containerStyle, isOverflowing } = useCollapsible({
30
+ expanded,
31
+ collapsedHeight: "1lh",
32
+ durationMs: 300,
33
+ })
34
+
35
+ return (
36
+ <div>
37
+ <div style={containerStyle}>
38
+ <div ref={innerRef}>{text}</div>
39
+ </div>
40
+ {isOverflowing && (
41
+ <button onClick={() => setExpanded(!expanded)}>
42
+ {expanded ? "Show less" : "Show more"}
43
+ </button>
44
+ )}
45
+ </div>
46
+ )
47
+ }
48
+ ```
@@ -0,0 +1,32 @@
1
+ <!-- source-hash: 01d63c5d1bf9f446d2f4c5d33842b562 -->
2
+ Backward-compatibility shim that re-exports `useSseChatAdapter` under the legacy `useEmbeddedChat` name, preserving external consumer compatibility during the migration to the unified `useChat` API.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Alias / Origin | Description |
7
+ |--------|---------------|-------------|
8
+ | `useEmbeddedChat` | `useSseChatAdapter` | Legacy hook name for the SSE/Guide-mode chat adapter |
9
+ | `UseEmbeddedChatOptions` | `UseSseChatAdapterOptions` | Legacy options type alias |
10
+ | `ChatSource` | `./use-sse-chat-adapter` | Chat source type |
11
+ | `DocChatMessage` | `./use-sse-chat-adapter` | Document chat message type |
12
+ | `DocSource` | `./use-sse-chat-adapter` | Document source type |
13
+ | `ChatTurnMeta` | `./use-sse-chat-adapter` | Chat turn metadata type |
14
+ | `StreamingPhase` | `./use-sse-chat-adapter` | Streaming phase enum/type |
15
+
16
+ ## Usage Example
17
+
18
+ ```typescript
19
+ // ⚠️ Legacy import — works but will be removed after migration
20
+ import { useEmbeddedChat, UseEmbeddedChatOptions } from './use-embedded-chat'
21
+
22
+ // ✅ Preferred — import directly from the canonical module
23
+ import { useSseChatAdapter } from './use-sse-chat-adapter'
24
+
25
+ // ✅ Future — use the unified entry point
26
+ import { useChat } from './use-chat'
27
+ const chat = useChat({ mode: 'sse' })
28
+ ```
29
+
30
+ ## Migration Notes
31
+
32
+ > **Deprecation notice:** Internal library code should import directly from `./use-sse-chat-adapter`. This shim will be removed once all consumers migrate to the unified `useChat({ mode })` entry point.
@@ -0,0 +1,40 @@
1
+ <!-- source-hash: dcf2e60dac262a108cfeb8aa720addd1 -->
2
+ Subscribes a React component to a NATS JetStream ephemeral ordered consumer for a specific chat dialog, managing connection lifecycle, reconnection backoff, and sequence-aware resumption.
3
+
4
+ ## Key Components
5
+
6
+ - **`useJetStreamDialogSubscription`** — Primary hook export. Manages a shared NATS WebSocket connection (ref-counted singleton) and an ephemeral JetStream `OrderedConsumer` scoped to `chat.{dialogId}.{topic}`.
7
+ - **`SharedConnection`** — Module-level singleton tracking the active NATS client, ref count, and deferred close/retry timers to avoid redundant reconnects across component instances.
8
+ - **`acquireClient`** — Increments the shared connection ref count (or creates a new client if the URL changed), cancelling any pending close timer.
9
+ - **`releaseClient`** — Decrements the ref count and schedules a deferred close (`SHARED_CLOSE_DELAY_MS`) when the last consumer releases the connection.
10
+ - **Connection effect** — Drives `connect()` / status-listener lifecycle; implements jittered exponential backoff with optional fast-retry leading attempts via `reconnectionBackoff`.
11
+ - **Subscription effect** — Recreates the ephemeral consumer on each `isConnected` transition, resuming from `highestStreamSeq + 1` to avoid replaying or skipping chunks.
12
+
13
+ ## Usage Example
14
+
15
+ ```typescript
16
+ const { isConnected, isSubscribed, reconnectionCount, currentStreamSeq } =
17
+ useJetStreamDialogSubscription({
18
+ enabled: true,
19
+ dialogId: 'dialog-abc123',
20
+ topic: 'events',
21
+ optStartSeq: lastKnownSeq, // null → live-tail (DeliverPolicy.New)
22
+ getNatsWsUrl: () => 'wss://nats.example.com',
23
+ onEvent: (data) => console.log('chunk received', data),
24
+ onConnect: () => console.log('connected'),
25
+ onDisconnect: () => console.log('disconnected'),
26
+ reconnectionBackoff: {
27
+ fastRetries: 3,
28
+ fastRetryDelayMs: 200,
29
+ initialDelayMs: 500,
30
+ maxDelayMs: 30_000,
31
+ multiplier: 2,
32
+ },
33
+ inactiveThresholdMs: 5 * 60_000,
34
+ })
35
+ ```
36
+
37
+ ## Notes
38
+
39
+ - Protocol-level `-ERR` events (e.g. ACL violations) are logged as warnings but do **not** trigger reconnect, preventing auth-refresh loops.
40
+ - The shared connection singleton is module-scoped, so multiple hook instances sharing the same WebSocket URL reuse one NATS client.
@@ -0,0 +1,52 @@
1
+ <!-- source-hash: 6c5780e92306ea381bac35aaf97c435f -->
2
+ Provides the NATS/Mingo-mode transport adapter for the unified chat surface, implementing the `UnifiedChatState` contract so the `useChat({ mode })` dispatcher can switch between NATS and SSE adapters without shell-side branching.
3
+
4
+ ## Key Components
5
+
6
+ ### `UseNatsChatAdapterConfig`
7
+ Consumer-supplied configuration interface covering:
8
+ - `dialogId` — active conversation identifier
9
+ - `getNatsWsUrl` — factory returning the NATS WebSocket URL
10
+ - `publishUserMessage` — consumer-owned send callback (HTTP POST or NATS publish)
11
+ - `fetchChunks` — optional historical chunk fetcher for catchup
12
+ - `clientConfig` — optional NATS auth credentials
13
+ - `enableThinking` / `batchApprovalsEnabled` — processor feature flags
14
+
15
+ ### `UseNatsChatAdapterOptions`
16
+ - `active` — gates the live subscription; keeps message state alive while the mode is hidden
17
+
18
+ ### `useNatsChatAdapter(config, options)`
19
+ Main hook. Composes three internal hooks:
20
+
21
+ ```text
22
+ useNatsDialogSubscription → live NATS event tail
23
+
24
+ useRealtimeChunkProcessor → chunk → MessageSegment[]
25
+
26
+ useChunkCatchup → back-fills missed chunks on reconnect/activation
27
+ ```
28
+
29
+ Returns a full `UnifiedChatState` object including `messages`, `isLoading`, `streamingPhase`, `sendMessage`, `stopMessage`, and `clearMessages`.
30
+
31
+ ## Usage Example
32
+
33
+ ```typescript
34
+ const chatState = useNatsChatAdapter(
35
+ {
36
+ dialogId: 'dialog-abc123',
37
+ getNatsWsUrl: () => `wss://nats.example.com`,
38
+ publishUserMessage: async (text, { dialogId }) => {
39
+ await fetch('/api/chat', {
40
+ method: 'POST',
41
+ body: JSON.stringify({ text, dialogId }),
42
+ })
43
+ },
44
+ fetchChunks: ({ dialogId, after }) =>
45
+ fetch(`/api/chunks?dialogId=${dialogId}&after=${after}`).then(r => r.json()),
46
+ batchApprovalsEnabled: true,
47
+ },
48
+ { active: isNatsModeVisible },
49
+ )
50
+ ```
51
+
52
+ > **Note:** `publishUserMessage` is intentionally consumer-owned — the adapter only handles optimistic UI updates and phase transitions; the actual transport is wired externally.
@@ -1,46 +1,65 @@
1
- <!-- source-hash: d26d0ac33fd6e63fb5ae010dfb6982cf -->
2
- A React hook for managing NATS WebSocket connections and subscriptions to real-time dialog events. Provides shared connection pooling, automatic reconnection, and subscription lifecycle management.
1
+ <!-- source-hash: 9e073aef3e517df1b4ab46b93212f4cb -->
2
+ Provides a React hook for managing NATS WebSocket dialog subscriptions with shared connection pooling, automatic reconnection with exponential backoff, and multi-topic support.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`useNatsDialogSubscription`** - Main hook for subscribing to NATS dialog topics
7
- - **`buildNatsWsUrl`** - Utility function for constructing NATS WebSocket URLs
8
- - **Shared Connection Management** - Automatic connection pooling with reference counting
9
- - **Subscription Handlers** - Message processing for dialog events and admin messages
6
+ ### `useNatsDialogSubscription(options)`
7
+ The primary exported hook that manages the full lifecycle of a NATS dialog subscription.
8
+
9
+ **Parameters (`UseNatsDialogSubscriptionOptions`):**
10
+
11
+ | Option | Description |
12
+ |--------|-------------|
13
+ | `enabled` | Toggles the connection/subscription on or off |
14
+ | `dialogId` | The dialog ID to subscribe to (e.g., `chat.<dialogId>.<topic>`) |
15
+ | `topics` | Array of `NatsMessageType` values to subscribe to (default: `['message']`) |
16
+ | `onEvent` | Callback fired when a NATS message is received |
17
+ | `onConnect` / `onDisconnect` | Lifecycle callbacks for connection state changes |
18
+ | `onSubscribed` | Fired when subscriptions are successfully established |
19
+ | `onBeforeReconnect` | Async hook called before each reconnection attempt (e.g., token refresh) |
20
+ | `getNatsWsUrl` | Factory function returning the WebSocket URL |
21
+ | `clientConfig` | Optional NATS client config overrides (`name`, `user`, `pass`) |
22
+ | `reconnectionBackoff` | Configures retry delays: `fastRetries`, `initialDelayMs`, `maxDelayMs`, `multiplier` |
23
+
24
+ **Returns (`UseNatsDialogSubscriptionReturn`):** `{ isConnected, isSubscribed, reconnectionCount }`
25
+
26
+ ### `SharedConnection` (module-level singleton)
27
+ A module-scoped singleton that reference-counts active consumers sharing the same WebSocket URL, with a deferred close delay (`SHARED_CLOSE_DELAY_MS`) to avoid reconnect churn during component remounts.
10
28
 
11
29
  ## Usage Example
12
30
 
13
31
  ```typescript
14
- import { useNatsDialogSubscription, buildNatsWsUrl } from './use-nats-dialog-subscription'
32
+ import { useNatsDialogSubscription } from './use-nats-dialog-subscription'
15
33
 
16
- function DialogComponent({ dialogId, authToken }) {
17
- const { isConnected, isSubscribed } = useNatsDialogSubscription({
18
- enabled: Boolean(dialogId),
34
+ function DialogListener({ dialogId }: { dialogId: string }) {
35
+ const { isConnected, isSubscribed, reconnectionCount } = useNatsDialogSubscription({
36
+ enabled: true,
19
37
  dialogId,
20
38
  topics: ['message', 'admin-message'],
21
- getNatsWsUrl: () => buildNatsWsUrl(
22
- 'https://api.example.com',
23
- { token: authToken, includeAuthParam: true }
24
- ),
25
- onEvent: (data, messageType) => {
26
- console.log(`Received ${messageType}:`, data)
39
+ getNatsWsUrl: () => 'ws://nats.example.com:4223',
40
+ onEvent: (event, messageType) => {
41
+ console.log(`[${messageType}]`, event)
42
+ },
43
+ onConnect: () => console.log('NATS connected'),
44
+ onDisconnect: () => console.log('NATS disconnected'),
45
+ onBeforeReconnect: async () => {
46
+ await refreshAuthToken() // e.g., refresh JWT before retry
47
+ },
48
+ reconnectionBackoff: {
49
+ fastRetries: 3,
50
+ fastRetryDelayMs: 500,
51
+ initialDelayMs: 1000,
52
+ maxDelayMs: 30000,
53
+ multiplier: 2,
27
54
  },
28
- onConnect: () => console.log('Connected to NATS'),
29
- onDisconnect: () => console.log('Disconnected from NATS'),
30
- clientConfig: {
31
- name: 'my-app',
32
- user: 'client',
33
- pass: 'secret'
34
- }
35
55
  })
36
56
 
37
- return (
38
- <div>
39
- Status: {isConnected ? 'Connected' : 'Disconnected'}
40
- Subscribed: {isSubscribed ? 'Yes' : 'No'}
41
- </div>
42
- )
57
+ return <div>Connected: {isConnected ? 'Yes' : 'No'} | Reconnects: {reconnectionCount}</div>
43
58
  }
44
59
  ```
45
60
 
46
- The hook automatically handles connection sharing across multiple instances, reconnection on failures, and cleanup when components unmount or dialog IDs change.
61
+ ## Notes
62
+
63
+ - Reconnection uses **jittered exponential backoff** (`delay * (0.5 + random * 0.5)`) to avoid thundering herd scenarios.
64
+ - Callbacks (`onEvent`, `onConnect`, etc.) are stored in stable refs, so they never trigger reconnection when their identity changes.
65
+ - The shared connection is scoped per WebSocket URL — switching URLs tears down the old connection before establishing a new one.
@@ -0,0 +1,40 @@
1
+ <!-- source-hash: cc0502db44c43b65b6de8507cd22cc50 -->
2
+ A React hook that wraps `getProxiedImageUrl` by reading proxy configuration (`proxyPrefix` and `skipDomains`) from the ambient `ChatRuntimeContext`, eliminating the need to manually pass proxy config at each call site.
3
+
4
+ ## Key Components
5
+
6
+ ### `useProxiedImageUrl(url)`
7
+ - **Input:** `string | null | undefined` — the image URL to potentially proxy
8
+ - **Output:** `string` — the proxied URL, or `''` for null/undefined input
9
+ - **Behavior:** Always passes `directHttps: true`, meaning HTTPS URLs are returned as-is. For cases requiring proxied HTTPS URLs, use `getProxiedImageUrl` from `@flamingo-stack/openframe-frontend-core/utils` directly with hardcoded config.
10
+
11
+ ## Usage Example
12
+
13
+ ```typescript
14
+ // ✅ Standard usage — inside a component rendered within ChatRuntimeContext.Provider
15
+ function AvatarImage({ imageUrl }: { imageUrl: string }) {
16
+ const proxiedUrl = useProxiedImageUrl(imageUrl)
17
+ return <img src={proxiedUrl} alt="avatar" />
18
+ }
19
+
20
+ // ✅ Handles null/undefined gracefully
21
+ function OptionalImage({ imageUrl }: { imageUrl?: string | null }) {
22
+ const proxiedUrl = useProxiedImageUrl(imageUrl) // returns '' if nullish
23
+ return proxiedUrl ? <img src={proxiedUrl} alt="preview" /> : null
24
+ }
25
+
26
+ // ❌ Never call inside a loop — violates Rules of Hooks
27
+ items.map(item => useProxiedImageUrl(item.url)) // WRONG
28
+
29
+ // ✅ For map/loop patterns, use the pure utility instead
30
+ import { getProxiedImageUrl } from '@flamingo-stack/openframe-frontend-core/utils'
31
+ items.map(item => getProxiedImageUrl(item.url, { proxyPrefix, skipDomains }))
32
+ ```
33
+
34
+ ## Constraints
35
+
36
+ | Constraint | Detail |
37
+ |---|---|
38
+ | Must be inside `ChatRuntimeContext.Provider` | Uses `useRequiredChatRuntime()` — throws if context is missing |
39
+ | `directHttps: true` always set | HTTPS URLs bypass the proxy; use pure util to override |
40
+ | Top-level call only | Standard Rules of Hooks apply — no loops or conditionals |
@@ -1,47 +1,50 @@
1
- <!-- source-hash: 2cb4b6bbac4078d643ed0550733c9b7d -->
2
- A React hook for processing real-time NATS message chunks into structured message segments, handling approvals, tool executions, and error states with accumulator-based state management.
1
+ <!-- source-hash: e37a3772ece6c09122bfe5d89ce800e0 -->
2
+ Real-time NATS streaming chunk processor hook that converts raw streaming messages into typed message segments, managing stream state, tool execution, and approval workflows.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`useRealtimeChunkProcessor`** - Main hook that processes streaming chunks and manages message state
7
- - **`processChunk`** - Core function that parses incoming chunks and updates message segments
8
- - **`MessageSegmentAccumulator`** - State manager for building up message segments from streaming data
9
- - **Action handlers** - Support for text, tool execution, approval requests, metadata, and error chunks
10
- - **Approval management** - Tracks pending and escalated approvals with status updates
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `useRealtimeChunkProcessor` | Hook | Primary hook for processing NATS stream chunks into UI-ready message segments |
9
+ | `accumulatorRef` | Internal Ref | Holds a `MessageSegmentAccumulator` instance that tracks and builds segments across chunk events |
10
+ | `isInStreamRef` | Internal Ref | Tracks whether a `MESSAGE_START`/`MESSAGE_END` boundary is active |
11
+ | `hasEverStreamedRef` | Internal Ref | Distinguishes cold-start vs. resumed-dialog continuation mode |
12
+ | `pendingEscalatedRef` | Internal Ref | Tracks escalated (non-display) approval requests awaiting results |
13
+
14
+ ### Handled Chunk Actions
15
+
16
+ | Action | Behavior |
17
+ |--------|----------|
18
+ | `message_start` / `message_end` | Opens/closes stream window, resets segment accumulator |
19
+ | `text` / `thinking` | Appends to accumulator; uses append mode post-stream |
20
+ | `tool_execution` | Routes to accumulator in-stream, or `onToolExecuted` post-stream |
21
+ | `approval_request` | Renders inline or escalates based on `displayApprovalTypes` |
22
+ | `approval_batch` | Renders batch card or unfolds into legacy cards if `batchApprovalsEnabled = false` |
23
+ | `approval_result` | Resolves escalated or inline approvals, updates accumulator status |
24
+ | `error` | Parses error detail and emits error segment |
11
25
 
12
26
  ## Usage Example
13
27
 
14
28
  ```typescript
15
- import { useRealtimeChunkProcessor } from './use-realtime-chunk-processor'
16
-
17
- function ChatComponent() {
18
- const processor = useRealtimeChunkProcessor({
19
- callbacks: {
20
- onSegmentsUpdate: (segments) => setMessageSegments(segments),
21
- onStreamStart: () => setIsStreaming(true),
22
- onStreamEnd: () => setIsStreaming(false),
23
- onApprove: (requestId) => handleApproval(requestId, true),
24
- onReject: (requestId) => handleApproval(requestId, false),
25
- onError: (error, message) => console.error('Stream error:', error)
26
- },
27
- displayApprovalTypes: ['CLIENT'],
28
- approvalStatuses: { 'req-123': 'approved' },
29
- initialState: previousChatState
30
- })
31
-
32
- // Process incoming NATS chunks
33
- useEffect(() => {
34
- natsConnection.subscribe((chunk) => {
35
- processor.processChunk(chunk)
36
- })
37
- }, [processor])
38
-
39
- return (
40
- <div>
41
- {processor.getSegments().map(segment =>
42
- <MessageSegment key={segment.id} segment={segment} />
43
- )}
44
- </div>
45
- )
46
- }
47
- ```
29
+ const { processChunk } = useRealtimeChunkProcessor({
30
+ callbacks: {
31
+ onSegmentsUpdate: (segments, opts) => updateMessage(segments, opts),
32
+ onStreamStart: () => setStreaming(true),
33
+ onStreamEnd: () => setStreaming(false),
34
+ onApprove: (requestId) => approveToolCall(requestId),
35
+ onReject: (requestId) => rejectToolCall(requestId),
36
+ onEscalatedApproval: (requestId, data) => notifyTechnician(requestId, data),
37
+ onApprovalResolved: (requestId, status) => syncStatus(requestId, status),
38
+ onError: (error) => console.error(error),
39
+ },
40
+ displayApprovalTypes: ['CLIENT'],
41
+ approvalStatuses: { 'req-123': 'pending' },
42
+ enableThinking: false,
43
+ batchApprovalsEnabled: true,
44
+ })
45
+
46
+ // Feed raw NATS chunks directly
47
+ natsSubscription.on('message', (msg) => processChunk(msg.data))
48
+ ```
49
+
50
+ > **Note:** `batchApprovalsEnabled` defaults to `true`. Pass `false` to fall back to legacy per-call approval cards. Consumers using `onApprovalResolved` should omit `onSegmentsUpdate` handling for approval results to avoid bubble overwrites during status flips.
@@ -0,0 +1,46 @@
1
+ <!-- source-hash: 433665c60d11f92235ffb1f5227d3b44 -->
2
+ Debounced React hook and stateless fetch helper for slash-command autocomplete suggestions in the OpenFrame chat interface.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `fetchSlashCommands` | `async function` | Stateless fetch wrapper; resolves suggestions from a caller-supplied `commandsUrl`, returns empty array on any non-2xx response |
9
+ | `useSlashCommands` | React hook | Debounced (150ms), cancellable hook returning `{ commands, loading }` |
10
+ | `SlashCommandSummary` | Re-exported type | Canonical summary shape for a slash command |
11
+ | `SlashCommandSummaryAction` | Re-exported type | Action payload within a summary |
12
+ | `SlashCommandActionId` | Re-exported type | Identifier type for actions |
13
+
14
+ ## Usage Example
15
+
16
+ ```typescript
17
+ import {
18
+ useSlashCommands,
19
+ fetchSlashCommands,
20
+ } from "@flamingo-stack/openframe-frontend-core/components/chat/hooks";
21
+ import { useChatRuntime } from "./chat-runtime";
22
+
23
+ // Hook usage (preferred in React components)
24
+ function SlashCommandDropdown({ prefix }: { prefix: string | null }) {
25
+ const { endpoints } = useChatRuntime();
26
+ const { commands, loading } = useSlashCommands(prefix, endpoints.commandsUrl);
27
+
28
+ if (loading) return <Spinner />;
29
+ return <CommandList items={commands} />;
30
+ }
31
+
32
+ // Stateless usage (e.g. outside React, in a server action test)
33
+ const ctrl = new AbortController();
34
+ const suggestions = await fetchSlashCommands(
35
+ "res",
36
+ ctrl.signal,
37
+ "/api/mingo-guide/commands",
38
+ );
39
+ ```
40
+
41
+ ## Notes
42
+
43
+ - `commandsUrl` has **no default** — always supply via `useChatRuntime().endpoints.commandsUrl`
44
+ - URL resolution uses `new URL(commandsUrl, window.location.origin)`, supporting both relative and absolute URLs
45
+ - Non-2xx responses (401, 403, 429) return `[]` silently — no error toasts
46
+ - `AbortError` on unmount/dependency change is swallowed; other errors emit a `console.warn`
@@ -0,0 +1,34 @@
1
+ <!-- source-hash: c000c5cabcd81a500ce236944b8c4464 -->
2
+ Provides the SSE/Guide-mode transport adapter for the unified chat surface, implementing `UnifiedChatState` by consuming server-sent events from the chat stream endpoint and mapping them into structured `DocChatMessage` segments, sources, refs, and per-turn metadata.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `useSseChatAdapter` | Hook | Primary hook — reads `source` from runtime context, manages SSE stream lifecycle, slash commands, and turn metadata |
9
+ | `DocChatMessage` | Interface | Full message shape including `segments`, `sources`, `chatRefs`, and `scrollAnchor` |
10
+ | `ChatSource` | Interface | Per-citation source descriptor with support for single-row and grouped chips |
11
+ | `ChatTurnMeta` | Interface | Per-turn LLM metadata (provider, token counts, cache hit rate, routing decision) |
12
+ | `UseSseChatAdapterOptions` | Interface | DI options — primarily `tableIdForDocumentType` override for non-standard RAG table configs |
13
+ | `StreamingPhase` | Type (re-export) | Streaming lifecycle phase, re-exported from `unified-chat-state.types` for backward compatibility |
14
+ | `createDocStreamFn` | Internal factory | Builds the per-call async generator that POSTs to the SSE endpoint and yields `MessageSegment` chunks |
15
+
16
+ ## Usage Example
17
+
18
+ ```typescript
19
+ import { useSseChatAdapter } from './use-sse-chat-adapter'
20
+
21
+ // Basic — tableIdForDocumentType defaults to the lib-baked map
22
+ const chatState = useSseChatAdapter()
23
+
24
+ // With custom document type registry (per-tenant override)
25
+ const chatState = useSseChatAdapter({
26
+ tableIdForDocumentType: (docType) =>
27
+ myTenantRegistry[docType] ?? null,
28
+ })
29
+
30
+ // Consume the returned UnifiedChatState
31
+ const { messages, sendMessage, isStreaming, streamingPhase } = chatState
32
+ ```
33
+
34
+ > **Note:** `source` is read automatically from `ChatRuntimeContext` — no parameter needed. If `runtime.source` is empty the hook throws immediately to surface misconfigured embedders early.