@flamingo-stack/openframe-frontend-core 0.0.213 → 0.0.214

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 (745) hide show
  1. package/dist/{chunk-3JWIJJ44.js → chunk-5OWDOFKK.js} +2 -2
  2. package/dist/{chunk-IK2X5YJU.js → chunk-HWY35EAK.js} +2 -2
  3. package/dist/{chunk-OTKJASSX.cjs → chunk-IZL2KEH6.cjs} +24 -24
  4. package/dist/{chunk-OTKJASSX.cjs.map → chunk-IZL2KEH6.cjs.map} +1 -1
  5. package/dist/{chunk-35XIT2CF.cjs → chunk-KDNGUYZM.cjs} +17 -17
  6. package/dist/{chunk-35XIT2CF.cjs.map → chunk-KDNGUYZM.cjs.map} +1 -1
  7. package/dist/{chunk-ZTJVRSN5.js → chunk-UKND27XC.js} +2 -2
  8. package/dist/chunk-UKND27XC.js.map +1 -0
  9. package/dist/{chunk-ZDF6F7ED.cjs → chunk-YZUUFTIK.cjs} +2 -2
  10. package/dist/chunk-YZUUFTIK.cjs.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/providers/.theme-provider.md +52 -0
  421. package/src/components/shared/delivery/.delivery-lists.md +39 -0
  422. package/src/components/shared/delivery/.delivery-row.md +41 -0
  423. package/src/components/shared/delivery/.delivery-table.md +41 -0
  424. package/src/components/shared/delivery/.index.md +38 -0
  425. package/src/components/shared/dev-section/.dev-card-row.md +60 -0
  426. package/src/components/shared/dev-section/.dev-section-page.md +48 -0
  427. package/src/components/shared/dev-section/.dev-section-view.md +43 -0
  428. package/src/components/shared/dev-section/.index.md +38 -0
  429. package/src/components/shared/legal-document/.index.md +40 -0
  430. package/src/components/shared/legal-document/.legal-document-page.md +50 -0
  431. package/src/components/shared/legal-document/.use-legal-docs.md +42 -0
  432. package/src/components/shared/onboarding/.onboarding-step-card.md +32 -31
  433. package/src/components/shared/onboarding/.onboarding-walkthrough.md +39 -43
  434. package/src/components/shared/product-release/.index.md +28 -30
  435. package/src/components/shared/product-release/.product-release-card-skeleton.md +28 -28
  436. package/src/components/shared/product-release/.product-release-card.md +45 -27
  437. package/src/components/shared/product-release/.release-detail-page.md +23 -24
  438. package/src/components/shared/roadmap/.index.md +37 -0
  439. package/src/components/shared/roadmap/.roadmap-grid-skeleton.md +39 -0
  440. package/src/components/shared/roadmap/.roadmap-grid.md +66 -0
  441. package/src/components/shared/roadmap/.use-roadmap-voting.md +68 -0
  442. package/src/components/tickets/.help-center-card.md +51 -0
  443. package/src/components/tickets/.help-center-create-form.md +38 -0
  444. package/src/components/tickets/.help-center-list.md +40 -0
  445. package/src/components/tickets/.index.md +65 -0
  446. package/src/components/tickets/.ticket-center.md +51 -0
  447. package/src/components/tickets/.ticket-detail-drawer.md +48 -0
  448. package/src/components/tickets/.ticket-linked-delivery-card.md +36 -0
  449. package/src/components/tickets/.ticket-open-form.md +50 -0
  450. package/src/components/tickets/.ticket-row.md +30 -0
  451. package/src/components/tickets/.types.md +57 -0
  452. package/src/components/tickets/hooks/.use-ticket-actions.md +77 -0
  453. package/src/components/tickets/hooks/.use-ticket-engagements.md +42 -0
  454. package/src/components/tickets/hooks/.use-tickets-list.md +54 -0
  455. package/src/components/ui/.actions-menu.md +66 -41
  456. package/src/components/ui/.alert-dialog.md +29 -26
  457. package/src/components/ui/.allowed-domains-input.md +29 -21
  458. package/src/components/ui/.assignee-dropdown.md +45 -0
  459. package/src/components/ui/.autocomplete.md +47 -41
  460. package/src/components/ui/.benefit-card.md +51 -36
  461. package/src/components/ui/.brand-association-card.md +30 -27
  462. package/src/components/ui/.breadcrumb.md +17 -15
  463. package/src/components/ui/.checkbox-block.md +39 -35
  464. package/src/components/ui/.checkbox-with-description.md +23 -16
  465. package/src/components/ui/.checkbox.md +31 -23
  466. package/src/components/ui/.circular-progress.md +49 -19
  467. package/src/components/ui/.content-loader.md +32 -20
  468. package/src/components/ui/.cursor-pagination.md +41 -52
  469. package/src/components/ui/.dashboard-info-card.md +33 -26
  470. package/src/components/ui/.date-picker.md +27 -25
  471. package/src/components/ui/.device-card-compact.md +28 -29
  472. package/src/components/ui/.device-card.md +27 -27
  473. package/src/components/ui/.dialog.md +25 -16
  474. package/src/components/ui/.drawer.md +86 -0
  475. package/src/components/ui/.dropdown-button.md +45 -0
  476. package/src/components/ui/.entity-image.md +46 -0
  477. package/src/components/ui/.error-state.md +41 -28
  478. package/src/components/ui/.feature-card.md +35 -31
  479. package/src/components/ui/.feature-list.md +48 -0
  480. package/src/components/ui/.field-wrapper.md +47 -0
  481. package/src/components/ui/.file-upload.md +42 -0
  482. package/src/components/ui/.filter-checkbox-item.md +43 -0
  483. package/src/components/ui/.filter-list.md +57 -0
  484. package/src/components/ui/.filter-modal.md +59 -0
  485. package/src/components/ui/.floating-tooltip.md +43 -26
  486. package/src/components/ui/.hidden-tags-popup.md +49 -0
  487. package/src/components/ui/.hover-dropdown.md +54 -0
  488. package/src/components/ui/.image-gallery-modal.md +41 -34
  489. package/src/components/ui/.image-uploader.md +53 -0
  490. package/src/components/ui/.index.md +40 -34
  491. package/src/components/ui/.info-card.md +31 -31
  492. package/src/components/ui/.info-row.md +31 -27
  493. package/src/components/ui/.input-trigger.md +44 -0
  494. package/src/components/ui/.input.md +37 -31
  495. package/src/components/ui/.markdown-editor.md +57 -0
  496. package/src/components/ui/.modal-v2.md +51 -0
  497. package/src/components/ui/.modal.md +32 -31
  498. package/src/components/ui/.more-actions-menu.md +45 -38
  499. package/src/components/ui/.organization-card.md +31 -37
  500. package/src/components/ui/.page-actions.md +44 -54
  501. package/src/components/ui/.phone-input.md +54 -0
  502. package/src/components/ui/.progress-bar.md +35 -27
  503. package/src/components/ui/.radio-group.md +39 -27
  504. package/src/components/ui/.release-changelog-section.md +34 -34
  505. package/src/components/ui/.search-input.md +48 -0
  506. package/src/components/ui/.select.md +54 -34
  507. package/src/components/ui/.service-card.md +42 -40
  508. package/src/components/ui/.sheet.md +27 -18
  509. package/src/components/ui/.simple-markdown-renderer.md +29 -31
  510. package/src/components/ui/.sort-column-item.md +42 -0
  511. package/src/components/ui/.square-avatar.md +34 -24
  512. package/src/components/ui/.status-badge.md +26 -38
  513. package/src/components/ui/.switch.md +22 -35
  514. package/src/components/ui/.tab-navigation.md +56 -53
  515. package/src/components/ui/.tab-selector.md +40 -0
  516. package/src/components/ui/.tag-key-value-filter.md +56 -0
  517. package/src/components/ui/.tag-search-input.md +53 -0
  518. package/src/components/ui/.tag.md +49 -31
  519. package/src/components/ui/.tags-manager.md +60 -0
  520. package/src/components/ui/.textarea.md +44 -34
  521. package/src/components/ui/.ticket-attachments-list.md +45 -0
  522. package/src/components/ui/.ticket-detail-section.md +29 -0
  523. package/src/components/ui/.ticket-info-section.md +56 -0
  524. package/src/components/ui/.ticket-note-card.md +53 -0
  525. package/src/components/ui/.ticket-notes-section.md +54 -0
  526. package/src/components/ui/.ticket-status-tag.md +49 -0
  527. package/src/components/ui/.title-content-block.md +25 -26
  528. package/src/components/ui/.toaster.md +40 -28
  529. package/src/components/ui/.tooltip.md +22 -11
  530. package/src/components/ui/.truncate-text.md +39 -0
  531. package/src/components/ui/button/.button-styles.md +35 -0
  532. package/src/components/ui/button/.button.md +53 -0
  533. package/src/components/ui/button/.split-button.md +48 -0
  534. package/src/components/ui/data-table/.data-table-body.md +48 -0
  535. package/src/components/ui/data-table/.data-table-column-filter.md +45 -0
  536. package/src/components/ui/data-table/.data-table-cursor-footer.md +45 -0
  537. package/src/components/ui/data-table/.data-table-empty.md +43 -0
  538. package/src/components/ui/data-table/.data-table-header.md +55 -0
  539. package/src/components/ui/data-table/.data-table-infinite-footer.md +44 -0
  540. package/src/components/ui/data-table/.data-table-row-count.md +43 -0
  541. package/src/components/ui/data-table/.data-table-row.md +47 -0
  542. package/src/components/ui/data-table/.data-table-skeleton.md +42 -0
  543. package/src/components/ui/data-table/.data-table.md +47 -0
  544. package/src/components/ui/data-table/.index.md +55 -0
  545. package/src/components/ui/data-table/.types.md +54 -0
  546. package/src/components/ui/data-table/.use-data-table.md +45 -0
  547. package/src/components/ui/data-table/.utils.md +38 -0
  548. package/src/components/ui/file-manager/.file-manager-action-bar.md +39 -30
  549. package/src/components/ui/file-manager/.file-manager-breadcrumb.md +29 -27
  550. package/src/components/ui/file-manager/.file-manager-context-menu.md +38 -42
  551. package/src/components/ui/file-manager/.file-manager-empty.md +26 -39
  552. package/src/components/ui/file-manager/.file-manager-table-row.md +33 -41
  553. package/src/components/ui/file-manager/.file-manager.md +35 -31
  554. package/src/components/ui/query-report-table/.index.md +43 -0
  555. package/src/components/ui/query-report-table/.query-report-table-header.md +36 -0
  556. package/src/components/ui/query-report-table/.query-report-table-row.md +40 -0
  557. package/src/components/ui/query-report-table/.query-report-table-skeleton.md +44 -0
  558. package/src/components/ui/query-report-table/.query-report-table.md +47 -0
  559. package/src/components/ui/query-report-table/.types.md +41 -0
  560. package/src/components/ui/query-report-table/.utils.md +35 -0
  561. package/src/components/ui/table/.index.md +27 -48
  562. package/src/components/ui/table/.table-cell.md +18 -27
  563. package/src/components/ui/table/.table-column-filter-dropdown.md +40 -0
  564. package/src/components/ui/table/.table-description-cell.md +24 -14
  565. package/src/components/ui/table/.table-empty-state.md +21 -22
  566. package/src/components/ui/table/.table-header.md +25 -40
  567. package/src/components/ui/table/.table-row.md +22 -40
  568. package/src/components/ui/table/.table-skeleton.md +33 -26
  569. package/src/components/ui/table/.table-timestamp-cell.md +26 -16
  570. package/src/components/ui/table/.table.md +39 -59
  571. package/src/components/ui/table/.types.md +44 -36
  572. package/src/components/ui/table/.utils.md +18 -20
  573. package/src/contexts/.chat-runtime-context.md +54 -0
  574. package/src/contexts/.endpoints-runtime-context.md +58 -0
  575. package/src/contexts/.index.md +53 -0
  576. package/src/contexts/.use-outer-or-default.md +36 -0
  577. package/src/embed-shims/.index.md +45 -0
  578. package/src/embed-shims/.next-dynamic.md +43 -0
  579. package/src/embed-shims/.next-image.md +45 -0
  580. package/src/embed-shims/.next-link.md +59 -0
  581. package/src/embed-shims/.next-navigation.md +59 -0
  582. package/src/hooks/.index.md +34 -29
  583. package/src/hooks/.use-access-code-integration.md +49 -0
  584. package/src/hooks/.use-contact-submission.md +37 -26
  585. package/src/hooks/.use-copy-to-clipboard.md +42 -0
  586. package/src/hooks/.use-near-viewport.md +44 -0
  587. package/src/hooks/.use-og-placeholder.md +51 -0
  588. package/src/hooks/.use-toast.md +36 -35
  589. package/src/hooks/state/.use-api-params.md +29 -46
  590. package/src/hooks/state/.use-query-params.md +37 -33
  591. package/src/hooks/ui/.index.md +33 -32
  592. package/src/hooks/ui/.use-auto-limit-tags.md +54 -0
  593. package/src/hooks/ui/.use-horizontal-scrollbar.md +74 -0
  594. package/src/hooks/ui/.use-image-edge-color.md +42 -0
  595. package/src/hooks/ui/.use-media-query.md +33 -25
  596. package/src/hooks/ui/.use-search.md +51 -0
  597. package/src/nats/.nats.md +49 -28
  598. package/src/schemas/.contact-schema.md +45 -0
  599. package/src/stories/.AnnouncementBar.stories.md +45 -0
  600. package/src/stories/.AppLayout.stories.md +20 -21
  601. package/src/stories/.Autocomplete.stories.md +48 -34
  602. package/src/stories/.Board.stories.md +35 -0
  603. package/src/stories/.Button.stories.md +36 -33
  604. package/src/stories/.ChatTicketList.stories.md +33 -0
  605. package/src/stories/.CheckboxBlock.stories.md +40 -28
  606. package/src/stories/.ContentLoader.stories.md +47 -0
  607. package/src/stories/.DashboardInfoCard.stories.md +57 -0
  608. package/src/stories/.DataTable.stories.md +41 -0
  609. package/src/stories/.DatePicker.stories.md +66 -52
  610. package/src/stories/.DeviceCard.stories.md +41 -40
  611. package/src/stories/.DeviceCardCompact.stories.md +41 -0
  612. package/src/stories/.DotsLoaderIcon.stories.md +36 -0
  613. package/src/stories/.Drawer.stories.md +58 -0
  614. package/src/stories/.EmbeddableChat.stories.md +41 -0
  615. package/src/stories/.FileManager.stories.md +41 -0
  616. package/src/stories/.FileManagerActionBar.stories.md +38 -0
  617. package/src/stories/.FileUpload.stories.md +53 -0
  618. package/src/stories/.FilterList.stories.md +54 -0
  619. package/src/stories/.FilterModal.stories.md +72 -0
  620. package/src/stories/.FiltersDropdown.stories.md +57 -0
  621. package/src/stories/.Header.stories.md +48 -0
  622. package/src/stories/.ImageUploader.stories.md +49 -0
  623. package/src/stories/.InfoCard.stories.md +54 -0
  624. package/src/stories/.Input.stories.md +48 -30
  625. package/src/stories/.ListPageLayout.stories.md +56 -43
  626. package/src/stories/.MingoOnboardingCard.stories.md +42 -0
  627. package/src/stories/.MingoOnboardingCardSkeleton.stories.md +35 -0
  628. package/src/stories/.Modal.stories.md +40 -31
  629. package/src/stories/.NotificationDrawer.stories.md +55 -0
  630. package/src/stories/.OnboardingStepCard.stories.md +41 -0
  631. package/src/stories/.OrganizationCard.stories.md +61 -0
  632. package/src/stories/.PageActions.stories.md +52 -49
  633. package/src/stories/.PageContainer.stories.md +41 -35
  634. package/src/stories/.PageLayout.stories.md +60 -0
  635. package/src/stories/.ParallaxImageShowcase.stories.md +49 -0
  636. package/src/stories/.PhoneInput.stories.md +53 -0
  637. package/src/stories/.QueryReportTable.stories.md +44 -0
  638. package/src/stories/.RadioGroup.stories.md +46 -0
  639. package/src/stories/.RadioGroupBlock.stories.md +45 -0
  640. package/src/stories/.Select.stories.md +29 -15
  641. package/src/stories/.SlashCommandSuggestions.stories.md +41 -0
  642. package/src/stories/.SplitButton.stories.md +62 -0
  643. package/src/stories/.TabNavigation.stories.md +47 -38
  644. package/src/stories/.TabSelector.stories.md +65 -0
  645. package/src/stories/.Table.stories.md +38 -46
  646. package/src/stories/.TableColumnFilterDropdown.stories.md +46 -0
  647. package/src/stories/.Tag.stories.md +43 -32
  648. package/src/stories/.TagKeyValueFilter.stories.md +44 -0
  649. package/src/stories/.TagSearchInput.stories.md +61 -0
  650. package/src/stories/.Textarea.stories.md +49 -26
  651. package/src/stories/.Theme.stories.md +41 -0
  652. package/src/stories/.TicketAttachmentsList.stories.md +39 -0
  653. package/src/stories/.TicketDescriptionViewer.stories.md +39 -0
  654. package/src/stories/.TicketInfoSection.stories.md +40 -0
  655. package/src/stories/.TicketKnowledgeBaseList.stories.md +36 -0
  656. package/src/stories/.TicketNotesSection.stories.md +50 -0
  657. package/src/stories/.Toaster.stories.md +40 -0
  658. package/src/stories/.ToolExecutionDisplay.stories.md +41 -0
  659. package/src/stories/.Tooltip.stories.md +41 -0
  660. package/src/stories/.UserSummary.stories.md +41 -0
  661. package/src/stories/.WaitlistForm.stories.md +42 -0
  662. package/src/stories/BlogCard.stories.tsx +61 -0
  663. package/src/stories/CampaignCardAdmin.stories.tsx +52 -0
  664. package/src/stories/CaseStudyCard.stories.tsx +42 -0
  665. package/src/stories/ChatContainer.stories.tsx +186 -0
  666. package/src/stories/ChatInlineVideoPill.stories.tsx +63 -0
  667. package/src/stories/CustomerInterviewCard.stories.tsx +42 -0
  668. package/src/stories/DataRoomDocCard.stories.tsx +52 -0
  669. package/src/stories/GenericEntityCard.stories.tsx +66 -0
  670. package/src/stories/GitHubActivityCard.stories.tsx +61 -0
  671. package/src/stories/HubspotTicketCard.stories.tsx +98 -0
  672. package/src/stories/InvestorUpdateCard.stories.tsx +42 -0
  673. package/src/stories/OnboardingGuideCard.stories.tsx +52 -0
  674. package/src/stories/ProductReleaseCard.stories.tsx +61 -0
  675. package/src/stories/ProgramCard.stories.tsx +79 -0
  676. package/src/stories/RoadmapCard.stories.tsx +75 -0
  677. package/src/stories/SlackMessageCard.stories.tsx +41 -0
  678. package/src/stories/__fixtures__/chat-cards.ts +604 -0
  679. package/src/types/.blog.md +53 -29
  680. package/src/types/.case-study.md +44 -27
  681. package/src/types/.customer-interview.md +66 -44
  682. package/src/types/.delivery.md +40 -0
  683. package/src/types/.employee.md +24 -30
  684. package/src/types/.index.md +33 -47
  685. package/src/types/.marketing.md +49 -44
  686. package/src/types/.navigation.md +33 -25
  687. package/src/types/.os.types.md +32 -27
  688. package/src/types/.platform.md +31 -28
  689. package/src/types/.product-release.md +65 -38
  690. package/src/types/.supabase.md +37 -29
  691. package/src/types/.team.md +41 -33
  692. package/src/types/.video-processing.md +54 -0
  693. package/src/types/.waitlist.md +40 -36
  694. package/src/utils/.access-code-client.md +37 -36
  695. package/src/utils/.cn.md +31 -23
  696. package/src/utils/.color-analysis.md +35 -0
  697. package/src/utils/.country-phone-utils.md +39 -0
  698. package/src/utils/.date-formatters.md +19 -18
  699. package/src/utils/.embed-authed-fetch.md +39 -0
  700. package/src/utils/.embed-proxy-auth-storage.md +38 -0
  701. package/src/utils/.fetch-priority.md +41 -0
  702. package/src/utils/.format.md +74 -25
  703. package/src/utils/.generic-domain-utils.md +42 -0
  704. package/src/utils/.image-proxy.md +59 -23
  705. package/src/utils/.index.md +42 -49
  706. package/src/utils/.local-storage-adapter.md +50 -0
  707. package/src/utils/.ods-color-utils.md +55 -38
  708. package/src/utils/.platform-config.md +45 -25
  709. package/src/utils/.scroll-into-view.md +40 -0
  710. package/src/utils/.source-icons.md +53 -0
  711. package/src/utils/.sse-decision-frame.md +46 -0
  712. package/src/utils/dev-sections/.index.md +34 -0
  713. package/src/utils/dev-sections/.openframe-dev-sections.md +49 -0
  714. package/dist/chunk-ZDF6F7ED.cjs.map +0 -1
  715. package/dist/chunk-ZTJVRSN5.js.map +0 -1
  716. package/src/components/.card.md +0 -42
  717. package/src/components/.contact-button.md +0 -30
  718. package/src/components/.drawer.md +0 -46
  719. package/src/components/.fixed-layout-container.md +0 -47
  720. package/src/components/.footer-waitlist-card.md +0 -29
  721. package/src/components/.join-waitlist-cta.md +0 -29
  722. package/src/components/.sheet.md +0 -47
  723. package/src/components/.sliding-panel.md +0 -48
  724. package/src/components/.tooltip.md +0 -48
  725. package/src/components/.use-mobile.md +0 -42
  726. package/src/components/.vendor-compact-card.md +0 -66
  727. package/src/components/.x-button.md +0 -42
  728. package/src/components/features/.github-repo-button.md +0 -40
  729. package/src/components/features/.organization-icon.md +0 -47
  730. package/src/components/features/.organization-selector.md +0 -45
  731. package/src/components/icons/.fleet-icon.md +0 -39
  732. package/src/components/icons/.meshcentral-icon.md +0 -35
  733. package/src/components/icons/.refresh-icon.md +0 -34
  734. package/src/components/icons/.tactical-icon.md +0 -35
  735. package/src/components/ui/.button.md +0 -69
  736. package/src/components/ui/.log-table-row.md +0 -47
  737. package/src/components/ui/.selectable-device-card.md +0 -46
  738. package/src/hooks/.api-hooks-stub.md +0 -45
  739. package/src/hooks/api/.use-product-releases.md +0 -53
  740. package/src/stories/.OrganizationSelector.stories.md +0 -42
  741. package/src/stories/.SelectableDeviceCard.stories.md +0 -30
  742. package/src/utils/.lite-youtube-embed-stub.md +0 -37
  743. package/src/utils/.lite-youtube-embed.md +0 -33
  744. /package/dist/{chunk-3JWIJJ44.js.map → chunk-5OWDOFKK.js.map} +0 -0
  745. /package/dist/{chunk-IK2X5YJU.js.map → chunk-HWY35EAK.js.map} +0 -0
@@ -0,0 +1,48 @@
1
+ <!-- source-hash: 84402bbfdf1a37e83bafc681331451ac -->
2
+ Resolves ClickUp `custom_item_id` numeric values to human-readable label strings for use in chat-inline cards and activity feeds.
3
+
4
+ ## Key Components
5
+
6
+ - **`CUSTOM_ITEM_ID`** — Const enum-style object mapping 14 ClickUp standard task type names to their numeric IDs (`1000`–`1014`).
7
+ - **`getTaskTypeLabel(customItemId)`** — Returns a display string for a given `custom_item_id`, or `null` for unknown IDs so callers can fall back to a generic label.
8
+
9
+ ## Usage Example
10
+
11
+ ```typescript
12
+ import { getTaskTypeLabel, CUSTOM_ITEM_ID } from './clickup-task-type-utils'
13
+
14
+ // Resolve a raw ID from a ClickUp task payload
15
+ const label = getTaskTypeLabel(task.custom_item_id) ?? 'Task'
16
+ console.log(label) // e.g. "Bug", "Epic", "Milestone"
17
+
18
+ // Use the constant directly when constructing queries or comparisons
19
+ if (task.custom_item_id === CUSTOM_ITEM_ID.EPIC) {
20
+ // handle epic-specific logic
21
+ }
22
+
23
+ // null and undefined both resolve gracefully
24
+ getTaskTypeLabel(null) // → null (fall back to "Task")
25
+ getTaskTypeLabel(undefined) // → null
26
+ getTaskTypeLabel(9999) // → null (unknown ID)
27
+ ```
28
+
29
+ ## ID Reference
30
+
31
+ | Constant | ID | Label |
32
+ |---|---|---|
33
+ | `TASK` | 1000 | Task |
34
+ | `MILESTONE` | 1001 | Milestone |
35
+ | `RECURRING` | 1002 | Recurring |
36
+ | `SUBTASK` | 1003 | Subtask |
37
+ | `FORM` | 1004 | Form |
38
+ | `PLAN` | 1006 | Plan |
39
+ | `STRATEGY` | 1007 | Strategy |
40
+ | `BUG` | 1008 | Bug |
41
+ | `REQUEST` | 1009 | Request |
42
+ | `FEATURE` | 1010 | Feature |
43
+ | `STORY` | 1011 | Story |
44
+ | `EPIC` | 1012 | Epic |
45
+ | `COMPONENT` | 1013 | Component |
46
+ | `INITIATIVE` | 1014 | Initiative |
47
+
48
+ > `null` input and unrecognized IDs both return `null` — callers should default to `"Task"` as the fallback affordance.
@@ -0,0 +1,62 @@
1
+ <!-- source-hash: 727163d193b2d1e3e47ea92637add9ea -->
2
+ Single source of truth for compact card Tailwind class constants and URL safety utilities used across chat-inline `size='sm'` card frames in the OpenFrame chat shell.
3
+
4
+ ## Key Components
5
+
6
+ ### Class Constants
7
+
8
+ | Export | Purpose |
9
+ |--------|---------|
10
+ | `COMPACT_CARD_OUTER` | Interactive anchor wrap with hover/transition styles |
11
+ | `COMPACT_CARD_OUTER_STATIC` | Non-interactive span wrap (no hover, `cursor-default`) |
12
+ | `COMPACT_CARD_SKELETON_OUTER` | Animated pulse skeleton frame |
13
+ | `COMPACT_CARD_IMAGE_SLOT` | 56×56 cover image container |
14
+ | `COMPACT_CARD_ICON_SLOT` | 56×56 fallback icon container |
15
+ | `COMPACT_CARD_SKELETON_IMAGE_SLOT` | 56×56 skeleton image placeholder |
16
+ | `COMPACT_CARD_TEXT_COL` | Flex column wrapper for text content |
17
+ | `COMPACT_CARD_TITLE_ROW` | Fixed 20px height title row |
18
+ | `COMPACT_CARD_META_ROW_BOX` | Fixed 16px height subtitle row |
19
+ | `COMPACT_CARD_TITLE` | Bold 14px/20px primary text |
20
+ | `COMPACT_CARD_SUBTITLE` | 11px/16px secondary text |
21
+ | `COMPACT_CARD_SUMMARY` | 11px/16px secondary text at 80% opacity |
22
+ | `COMPACT_CARD_META_ROW` | Multi-part 11px metadata row |
23
+ | `COMPACT_CARD_ROW_FILLER` | Non-breaking space to preserve row height |
24
+
25
+ ### Functions
26
+
27
+ **`safeHref(url)`** — Validates a URL before use in an `<a href>`. Allows `http:`, `https:`, `mailto:`, and same-origin paths (`/path`). Strips control/zero-width characters. Returns the original string or `null`.
28
+
29
+ ## Usage Example
30
+
31
+ ```typescript
32
+ import {
33
+ COMPACT_CARD_OUTER,
34
+ COMPACT_CARD_OUTER_STATIC,
35
+ COMPACT_CARD_IMAGE_SLOT,
36
+ COMPACT_CARD_TITLE,
37
+ COMPACT_CARD_SUBTITLE,
38
+ safeHref,
39
+ } from './compact-card-classes'
40
+
41
+ const href = safeHref(card.url)
42
+
43
+ // Interactive card (valid href)
44
+ if (href) {
45
+ return (
46
+ <a href={href} className={COMPACT_CARD_OUTER}>
47
+ <div className={COMPACT_CARD_IMAGE_SLOT}>...</div>
48
+ <span className={COMPACT_CARD_TITLE}>{card.title}</span>
49
+ <span className={COMPACT_CARD_SUBTITLE}>{card.subtitle}</span>
50
+ </a>
51
+ )
52
+ }
53
+
54
+ // Non-interactive fallback
55
+ return (
56
+ <span className={COMPACT_CARD_OUTER_STATIC}>
57
+ ...
58
+ </span>
59
+ )
60
+ ```
61
+
62
+ > Card-specific variations (play overlays, status badges, pill counters) are added inside each card component. The outer frame constants remain uniform across all compact card types.
@@ -0,0 +1,51 @@
1
+ <!-- source-hash: f8a0a33feba94cc42bfec8295a8e57f2 -->
2
+ Determines whether a navigation action should open in a new browser tab, using a prioritized rule chain to handle embed mode, explicit overrides, platform comparisons, and cross-origin fallbacks.
3
+
4
+ ## Key Components
5
+
6
+ ### Types
7
+ - **`NavSurface`** — Labels the calling surface (`'useNavLink'` | `'useUnifiedNav'`) for trace logging
8
+ - **`RuntimeMode`** — Chat runtime context (`'host'` | `'embed'`)
9
+ - **`DecideNewTabInput`** — Input shape for the decision function
10
+
11
+ ### Function
12
+ - **`decideNewTab(input: DecideNewTabInput): boolean`** — Returns `true` if navigation should open a new tab
13
+
14
+ ## Branch Priority
15
+
16
+ | Priority | Condition | Result |
17
+ |----------|-----------|--------|
18
+ | 1 | `runtimeMode === 'embed'` | Always new tab |
19
+ | 2 | `openIn === 'new-tab'` | New tab |
20
+ | 3 | `alwaysNewTab === true` | New tab |
21
+ | 4 | `openIn === 'same-tab'` | Same tab |
22
+ | 5 | `targetPlatform` defined + `currentSource` non-empty | New tab if platforms differ |
23
+ | 6 | Fallback: `isCrossOriginUrl(href)` | New tab if cross-origin |
24
+
25
+ ## Usage Example
26
+
27
+ ```typescript
28
+ import { decideNewTab } from './decide-new-tab'
29
+
30
+ // Embed mode — always opens new tab regardless of other options
31
+ decideNewTab({
32
+ href: '/dashboard',
33
+ currentSource: 'flamingo',
34
+ runtimeMode: 'embed',
35
+ }) // → true
36
+
37
+ // Platform comparison — cross-app link
38
+ decideNewTab({
39
+ href: '/tickets',
40
+ targetPlatform: 'openframe',
41
+ currentSource: 'flamingo',
42
+ }) // → true (different platforms)
43
+
44
+ // Explicit override
45
+ decideNewTab({
46
+ href: '/settings',
47
+ openIn: 'same-tab',
48
+ currentSource: 'flamingo',
49
+ runtimeMode: 'host',
50
+ }) // → false
51
+ ```
@@ -0,0 +1,29 @@
1
+ <!-- source-hash: 20391ac02d557100140a6d8d11a61656 -->
2
+ Builds and exports URL helpers for third-party app deep-links used across chat surfaces (chip clicks, inline-card tracking rows).
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `clickupTaskUrl` | `function` | Generates a ClickUp task detail URL from an external task ID |
9
+
10
+ ## Usage Example
11
+
12
+ ```typescript
13
+ import { clickupTaskUrl } from './external-app-urls'
14
+
15
+ // Valid external ID → returns full URL
16
+ clickupTaskUrl('abc123')
17
+ // → "https://app.clickup.com/t/abc123"
18
+
19
+ // Missing or nullish ID → returns null (prevents broken `.../t/undefined` links)
20
+ clickupTaskUrl(null) // → null
21
+ clickupTaskUrl(undefined) // → null
22
+ clickupTaskUrl('') // → null
23
+ ```
24
+
25
+ ## Notes
26
+
27
+ - This is the **lib-side subset** of the hub's `external-app-urls.ts` — only helpers consumed by shared/chat surfaces live here.
28
+ - HubSpot and admin route builders remain hub-side as they are only used by hub-internal mappers.
29
+ - Null-safe by design: always check the return value before rendering a link.
@@ -1,48 +1,44 @@
1
- <!-- source-hash: 9bcf6f0eae9543385fec745e5f5512eb -->
2
- A utility for extracting incomplete message state from historical assistant messages, enabling seamless continuation of message building across realtime connections when messages contain pending operations or tool executions.
1
+ <!-- source-hash: 05b4580f6cd1fa50abcf196198e4487a -->
2
+ Extracts incomplete message state from the last historical assistant message to enable resumption of in-progress AI responses across realtime connection restarts.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`extractIncompleteMessageState`** - Main function that analyzes the last processed message to extract incomplete state including pending approvals, executing tools, and existing message segments
6
+ ### `extractIncompleteMessageState(lastMessage)`
7
+
8
+ **Parameters:** `lastMessage: ProcessedMessage | undefined`
9
+
10
+ **Returns:** `{ existingSegments?, pendingApprovals?, executingTools? } | undefined`
11
+
12
+ Returns `undefined` if the message is complete or not an assistant message with structured segments. Otherwise returns state needed to reinitialize the realtime chunk processor.
13
+
14
+ **Incomplete state detection by segment type:**
15
+
16
+ | Segment Type | Condition Flagged Incomplete |
17
+ |---|---|
18
+ | `tool_execution` | Status is `EXECUTING_TOOL` |
19
+ | `approval_request` | Status is `pending` with a `requestId` |
20
+ | `approval_batch` | Not `rejected` AND not all tool calls have `done` executions |
21
+ | `context_compaction` | Status is `started` |
7
22
 
8
23
  ## Usage Example
9
24
 
10
25
  ```typescript
11
26
  import { extractIncompleteMessageState } from './extract-incomplete-message-state'
12
- import type { ProcessedMessage } from '../types'
13
-
14
- // Extract state from the last assistant message
15
- const lastMessage: ProcessedMessage = {
16
- role: 'assistant',
17
- content: [
18
- { type: 'text', content: 'Starting deployment...' },
19
- {
20
- type: 'tool_execution',
21
- data: {
22
- type: 'EXECUTING_TOOL',
23
- integratedToolType: 'kubernetes',
24
- toolFunction: 'deployApp',
25
- parameters: { namespace: 'prod' }
26
- }
27
- }
28
- ]
29
- }
30
27
 
28
+ const lastMessage = conversationHistory.at(-1)
31
29
  const incompleteState = extractIncompleteMessageState(lastMessage)
32
30
 
33
31
  if (incompleteState) {
34
- console.log('Found incomplete message with:')
35
- console.log('- Existing segments:', incompleteState.existingSegments?.length)
36
- console.log('- Executing tools:', incompleteState.executingTools?.size)
37
- console.log('- Pending approvals:', incompleteState.pendingApprovals?.size)
38
-
39
- // Initialize realtime processor with existing state
40
32
  realtimeProcessor.initialize({
41
33
  existingSegments: incompleteState.existingSegments,
42
34
  pendingApprovals: incompleteState.pendingApprovals,
43
- executingTools: incompleteState.executingTools
35
+ executingTools: incompleteState.executingTools,
44
36
  })
45
37
  }
46
38
  ```
47
39
 
48
- The function returns `undefined` for complete messages or non-assistant messages, and extracts tool executions and approval requests that are still in progress to maintain continuity across connection resets.
40
+ ## Notes
41
+
42
+ - Only processes assistant messages with structured (`MessageSegment[]`) content — string content is ignored
43
+ - `pendingApprovals` and `executingTools` maps are omitted from the return value when empty, reducing unnecessary initialization overhead
44
+ - The `approval_batch` logic ensures post-approval `EXECUTED_TOOL` chunks can correctly merge into the batch segment via `applyExecutionToBatch`
@@ -0,0 +1,34 @@
1
+ <!-- source-hash: df5859607a7e41cd7507f9527aeed74b -->
2
+ Coerces a chat message's `content` field — either a plain string or a `MessageSegment[]` array — into a flat string suitable for wire transport to the LLM.
3
+
4
+ ## Key Components
5
+
6
+ - **`flattenAssistantContent(raw: unknown): string`** — Single exported function that normalizes assistant message content before serialization. Handles three cases:
7
+ - Plain strings are returned as-is
8
+ - Arrays are filtered to `text`-typed segments, joining their `.text` fields with `\n\n`
9
+ - Null, undefined, or unknown shapes return `''`
10
+
11
+ ## Why This Exists
12
+
13
+ When `useChat` streams SSE responses, assistant messages are stored in React state as structured `MessageSegment[]` arrays (text, approval cards, tool executions, thinking blocks). A naive empty-string fallback for non-strings silently drops all context on subsequent turns — Anthropic receives `assistant: ""` and loses conversation history. This function preserves the LLM-visible text while intentionally skipping non-text segments (`approval_request`, `tool_execution`, `thinking`) to avoid bloating the request body.
14
+
15
+ ## Usage Example
16
+
17
+ ```typescript
18
+ import { flattenAssistantContent } from './flatten-assistant-content'
19
+
20
+ // Plain string — returned as-is
21
+ flattenAssistantContent("Hello world") // → "Hello world"
22
+
23
+ // Structured segment array — text segments joined
24
+ flattenAssistantContent([
25
+ { type: 'thinking', content: '...' }, // skipped
26
+ { type: 'text', text: 'Here is my answer.' }, // included
27
+ { type: 'tool_execution', id: 'tu_1' }, // skipped
28
+ { type: 'text', text: 'And a follow-up.' }, // included
29
+ ])
30
+ // → "Here is my answer.\n\nAnd a follow-up."
31
+
32
+ // Null / unknown — safe fallback
33
+ flattenAssistantContent(null) // → ""
34
+ ```
@@ -0,0 +1,46 @@
1
+ <!-- source-hash: d7e38b48af56d6db68e8de321044b39c -->
2
+ Single source of truth for resolving icon name strings (kebab-case or PascalCase) to React components, with sized rendering helpers.
3
+
4
+ ## Key Components
5
+
6
+ ### Exports
7
+
8
+ | Export | Type | Description |
9
+ |--------|------|-------------|
10
+ | `ICON_REGISTRY` | `Record<string, IconComponent>` | Kebab-case map of all registered icon names to React components |
11
+ | `normalizeIconKey(key)` | `(string) => string` | Converts PascalCase icon names to canonical kebab-case; passes kebab keys through unchanged |
12
+ | `getIconComponent(iconName)` | `(string\|null\|undefined) => ComponentType` | Resolves any icon name to a component; falls back to `FileText` |
13
+ | `getDynamicIcon(iconName, size, className)` | `(...) => ReactNode` | Renders a sized icon element directly; falls back to `Globe` |
14
+ | `DynamicIconSize` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | Size preset type (12px–48px) |
15
+
16
+ ### Key Conventions
17
+
18
+ - **Registry keys** are always kebab-case (e.g. `'dollar-sign'`, `'book-open'`)
19
+ - **Brand vs. Lucide variants** share the same base name: `'github'` → brand icon, `'github-lucide'` → Lucide outline
20
+ - **PascalCase aliases** (`social_platforms.icon_name` column) are resolved via `PASCAL_TO_KEBAB_ALIASES` before lookup
21
+ - **Unknown names** never crash render — `getIconComponent` falls back to `FileText`, `getDynamicIcon` falls back to `Globe`
22
+
23
+ ## Usage Example
24
+
25
+ ```typescript
26
+ import { getIconComponent, getDynamicIcon, normalizeIconKey } from './icon-registry'
27
+
28
+ // Resolve a component for use in JSX (kebab or PascalCase both work)
29
+ const Icon = getIconComponent('rocket') // → Rocket
30
+ const Icon2 = getIconComponent('LinkedInIcon') // → LinkedInIcon (via alias)
31
+ const Icon3 = getIconComponent('unknown-icon') // → FileText (fallback)
32
+
33
+ // Render a sized icon node directly
34
+ const node = getDynamicIcon('youtube', 'lg') // 32px YouTubeIcon with brand color
35
+ const node2 = getDynamicIcon('dollar-sign', 'sm', 'text-green-500')
36
+
37
+ // Normalize a PascalCase key manually
38
+ normalizeIconKey('GitHubIcon') // → 'github'
39
+ normalizeIconKey('globe') // → 'globe' (pass-through)
40
+ ```
41
+
42
+ ### Adding a New Icon
43
+
44
+ 1. Import the component at the top of the file
45
+ 2. Add a `'kebab-name': Component` entry to `ICON_REGISTRY`
46
+ 3. If the icon is stored as PascalCase in any DB column, add a `PascalName → 'kebab-name'` row to `PASCAL_TO_KEBAB_ALIASES`
@@ -1,48 +1,53 @@
1
- <!-- source-hash: 6172cd39304396b46814bbbfee6b9708 -->
2
- Centralized export module for chat message processing utilities, providing parsing, accumulation, and state management functionality for streaming message data.
1
+ <!-- source-hash: 85c0af6cd361347beeabcd097260378a -->
2
+ Barrel export module that consolidates and re-exports all message processing, chat navigation, UI styling, and content utility functions for chat interfaces.
3
3
 
4
4
  ## Key Components
5
5
 
6
- **Chunk Processing**
7
- - `parseChunkToAction` - Converts raw chunks into action objects
8
- - `isControlChunk`, `isErrorChunk`, `isMetadataChunk` - Type guard functions for chunk classification
9
- - `extractTextFromChunk` - Extracts text content from message chunks
10
-
11
- **Message Accumulation**
12
- - `MessageSegmentAccumulator` - Class for accumulating streaming message segments
13
- - `createMessageSegmentAccumulator` - Factory function for creating accumulators
14
- - `AccumulatorCallbacks` - Type definition for callback functions
15
-
16
- **Historical Processing**
17
- - `processHistoricalMessages` - Processes previously received messages
18
- - `extractErrorMessages` - Extracts error information from message history
19
- - `processHistoricalMessagesWithErrors` - Combined processing with error handling
20
-
21
- **State Management**
22
- - `extractIncompleteMessageState` - Retrieves state of partially received messages
6
+ | Category | Exports |
7
+ |----------|---------|
8
+ | **Chunk Parsing** | `parseChunkToAction`, `isControlChunk`, `isErrorChunk`, `isMetadataChunk`, `extractTextFromChunk` |
9
+ | **Message Accumulation** | `MessageSegmentAccumulator`, `createMessageSegmentAccumulator`, `AccumulatorCallbacks` |
10
+ | **Historical Messages** | `processHistoricalMessages`, `extractErrorMessages`, `processHistoricalMessagesWithErrors` |
11
+ | **Chat Navigation** | `handleChatNavClick`, `resolveExternalNavigation`, `decideNewTab`, `computeIsNewTab`, `buildAnchorProps` |
12
+ | **Proxy Auth** | `getChatProxyAuth`, `setChatProxyAuth`, `clearChatProxyAuth`, `applyProxyAuth`, `chatAuthedFetch` |
13
+ | **Attachments** | `formatChatAttachmentMarkdownForBubble`, `stripChatAttachmentMarkdown`, `buildChatAttachmentViewUrl` |
14
+ | **UI / Styling** | `chatChipClass`, compact card class constants (`COMPACT_CARD_*`), `getStatusColorScheme` |
15
+ | **Icon Registry** | `ICON_REGISTRY`, `getIconComponent`, `normalizeIconKey`, `getDynamicIcon` |
16
+ | **Source Utilities** | `getSourceIconName`, `getSourceLabel`, `resolveSourceRowCTA`, `resolveSourceIcon` |
17
+ | **Slash Commands** | `parseWireCommandOverride`, `sanitizeTitleForChat`, `buildDiscussAddendum` |
23
18
 
24
19
  ## Usage Example
25
20
 
26
21
  ```typescript
27
22
  import {
28
- MessageSegmentAccumulator,
29
23
  parseChunkToAction,
30
- processHistoricalMessages,
31
- extractIncompleteMessageState
32
- } from './message-utils'
33
-
34
- // Parse streaming chunk
24
+ createMessageSegmentAccumulator,
25
+ handleChatNavClick,
26
+ getChatProxyAuth,
27
+ getIconComponent,
28
+ formatChatAttachmentMarkdownForBubble,
29
+ decideNewTab,
30
+ getStatusColorScheme,
31
+ } from '@flamingo/chat-utils'
32
+
33
+ // Parse a streaming chunk from the AI response
35
34
  const action = parseChunkToAction(rawChunk)
36
35
 
37
- // Create message accumulator
38
- const accumulator = new MessageSegmentAccumulator({
36
+ // Accumulate streamed message segments
37
+ const accumulator = createMessageSegmentAccumulator({
39
38
  onSegmentComplete: (segment) => console.log('Segment:', segment),
40
- onError: (error) => console.error('Error:', error)
41
39
  })
42
40
 
43
- // Process historical data
44
- const processed = processHistoricalMessages(messageHistory)
41
+ // Resolve navigation target for a chat link
42
+ const { openInNewTab } = decideNewTab({
43
+ href: 'https://app.example.com/tickets/123',
44
+ surface: 'chat-bubble',
45
+ mode: 'web',
46
+ })
47
+
48
+ // Look up a registered icon by kebab-case key
49
+ const Icon = getIconComponent('clickup')
45
50
 
46
- // Extract incomplete state
47
- const state = extractIncompleteMessageState(partialMessages)
51
+ // Apply agent status color scheme to UI
52
+ const colors = getStatusColorScheme('running')
48
53
  ```
@@ -0,0 +1,35 @@
1
+ <!-- source-hash: 4303371bd78ed68ce85468361247ddc3 -->
2
+ Determines whether a URL is cross-origin by checking for an explicit host, used to drive new-tab navigation decisions in chat and link rendering.
3
+
4
+ ## Key Components
5
+
6
+ ### `isCrossOriginUrl(url)`
7
+ - **Input:** `string | null | undefined`
8
+ - **Returns:** `boolean` — `true` if the URL has an explicit host (absolute or protocol-relative), `false` for relative paths or falsy values
9
+
10
+ ## Logic
11
+
12
+ ```text
13
+ null / undefined / "" → false
14
+ /relative/path → false (same-origin by convention)
15
+ //protocol-relative → true (explicit host)
16
+ https://example.com → true (explicit host)
17
+ http://example.com → true (explicit host)
18
+ ```
19
+
20
+ ## Usage Example
21
+
22
+ ```typescript
23
+ import { isCrossOriginUrl } from './is-cross-origin-url'
24
+
25
+ isCrossOriginUrl('/support') // false — same-origin
26
+ isCrossOriginUrl('//cdn.example.com/file.js') // true — cross-origin
27
+ isCrossOriginUrl('https://flamingo.run') // true — cross-origin
28
+ isCrossOriginUrl(null) // false — falsy guard
29
+ ```
30
+
31
+ ## Design Notes
32
+
33
+ - **SSR-deterministic:** avoids `window.location` comparison, which previously caused React hydration mismatches when SSR (no `window`) and client produced different results for the same URL
34
+ - **Convention-based:** same-origin navigation within the app always uses relative paths; any URL with a host is treated as external regardless of the actual deployment origin
35
+ - **Scope:** only handles the fallback case in `decideNewTab`; absolute same-platform URLs are caught earlier by the `targetPlatform !== currentSource` branch and never reach this function
@@ -1,50 +1,41 @@
1
- <!-- source-hash: cff141bf1c94cc3e98e3c44f584a3383 -->
2
- Manages accumulation and state tracking of message segments during real-time streaming or historical message processing in chat applications.
1
+ <!-- source-hash: 17a77a7a52f5be3583fd5569ca4bb36f -->
2
+ Manages the accumulation and lifecycle of message segments during real-time AI chat streaming, handling text, tool executions, and approval workflows.
3
3
 
4
4
  ## Key Components
5
5
 
6
- **MessageSegmentAccumulator Class:**
7
- - `appendText()` - Accumulates text content, merging with existing text segments
8
- - `addToolExecution()` - Manages tool execution states (EXECUTING_TOOL EXECUTED_TOOL transitions)
9
- - `addApprovalRequest()` - Creates approval request segments for user confirmation
10
- - `processApprovalResult()` - Handles approval responses and updates segment status
11
- - `initializeWithState()` - Restores accumulator from saved state for session continuity
12
- - `getState()` / `reset()` - State management for serialization and cleanup
13
-
14
- **Helper Functions:**
15
- - `createMessageSegmentAccumulator()` - Factory function for creating accumulator instances
6
+ - **`MessageSegmentAccumulator`** — Core class that tracks all segment types (`text`, `thinking`, `tool_execution`, `approval_request`, `approval_batch`) in a stateful array
7
+ - **`AccumulatorCallbacks`** Interface for wiring `onApprove`/`onReject` handlers into approval segments
8
+ - **`initializeWithState()`** Restores accumulator from serialized state across reconnections or page refreshes
9
+ - **`appendText()` / `appendThinking()`** Coalesces consecutive same-type segments instead of creating duplicates
10
+ - **`addToolExecution()`** — Routes `EXECUTING_TOOL` `EXECUTED_TOOL` state transitions, merging into approval batches when a `toolExecutionRequestId` matches
11
+ - **`addApprovalBatch()`** Upserts batch approval segments by `approvalRequestId` to prevent duplicates during replay
12
+ - **`resolvePendingApprovalForExecution()`** Implicitly marks the latest pending approval as approved when a tool execution arrives (handles observer streams with no `APPROVAL_RESULT` chunk)
13
+ - **`getState()` / `reset()`** — Serialization and teardown helpers
16
14
 
17
15
  ## Usage Example
18
16
 
19
17
  ```typescript
20
- import { MessageSegmentAccumulator, AccumulatorCallbacks } from './message-segment-accumulator'
21
-
22
- // Create accumulator with approval callbacks
23
- const callbacks: AccumulatorCallbacks = {
24
- onApprove: async (requestId) => console.log(`Approved: ${requestId}`),
25
- onReject: async (requestId) => console.log(`Rejected: ${requestId}`)
26
- }
18
+ const accumulator = new MessageSegmentAccumulator({
19
+ onApprove: async (requestId) => await approveRequest(requestId),
20
+ onReject: async (requestId) => await rejectRequest(requestId),
21
+ })
27
22
 
28
- const accumulator = new MessageSegmentAccumulator(callbacks)
23
+ // Restore state after reconnection
24
+ accumulator.initializeWithState({
25
+ existingSegments: previousSegments,
26
+ pendingApprovals: savedApprovals,
27
+ })
29
28
 
30
- // Accumulate streaming text
31
- accumulator.appendText('Hello ')
32
- accumulator.appendText('world!') // Merges into single text segment
29
+ // Stream incoming chunks
30
+ accumulator.appendText('Checking your ')
31
+ accumulator.appendText('ticket status...')
33
32
 
34
- // Add tool execution
33
+ // Handle tool lifecycle
35
34
  accumulator.addToolExecution({
36
35
  type: 'tool_execution',
37
- data: {
38
- type: 'EXECUTING_TOOL',
39
- integratedToolType: 'filesystem',
40
- toolFunction: 'readFile',
41
- parameters: { path: '/home/user/file.txt' }
42
- }
36
+ data: { type: 'EXECUTING_TOOL', toolFunction: 'getTicket', toolTitle: 'Get Ticket', ... },
43
37
  })
44
38
 
45
- // Process approval request
46
- accumulator.addApprovalRequest('req-123', 'rm -rf temp/', 'Delete temp files', 'SYSTEM')
47
-
48
- // Get final segments
39
+ // Retrieve rendered segments
49
40
  const segments = accumulator.getSegments()
50
41
  ```
@@ -0,0 +1,44 @@
1
+ <!-- source-hash: 24346a4b70daaa3c49e151b19cf6cf28 -->
2
+ Provides pure helper functions for computing new-tab navigation decisions and building `<a>` anchor attribute objects used by chat-rendered links across inline cards, source chips, and runtime nav wrappers.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Signature | Purpose |
7
+ |--------|-----------|---------|
8
+ | `computeIsNewTab` | `(runtime, href, targetPlatform) → boolean` | Single source of truth for the new-tab rule; always returns `true` in `embed` mode, defers to `decideNewTab` callback or lib default in `host` mode |
9
+ | `newTabAnchorAttrs` | `(isNewTab) → { target?, rel? }` | Returns `_blank` + `noopener noreferrer` pair or empty object; safe to spread directly into JSX `<a>` |
10
+ | `buildAnchorProps` | `(href, isNewTab) → { href, target?, rel? } \| undefined` | Combines href + anchor attrs into a single `anchorProps` slot; returns `undefined` (not `{}`) when href is absent so card components can branch on `!= null` |
11
+
12
+ ## Usage Example
13
+
14
+ ```typescript
15
+ import {
16
+ computeIsNewTab,
17
+ buildAnchorProps,
18
+ } from './nav-anchor-props'
19
+
20
+ // Inside a card dispatcher wrapper
21
+ function CardLink({ runtime, chatRef, targetPlatform }) {
22
+ const isNewTab = computeIsNewTab(runtime, chatRef.url, targetPlatform)
23
+ const anchorProps = buildAnchorProps(chatRef.url, isNewTab)
24
+
25
+ return anchorProps != null
26
+ ? <a {...anchorProps}>{children}</a>
27
+ : <span>{children}</span>
28
+ }
29
+ ```
30
+
31
+ ## Navigation Mode Rules
32
+
33
+ ```mermaid
34
+ graph TD
35
+ A["computeIsNewTab called"] --> B{"href present?"}
36
+ B -- No --> C["return false"]
37
+ B -- Yes --> D{"embed mode?"}
38
+ D -- Yes --> E["return true (always new-tab)"]
39
+ D -- No --> F{"runtime.decideNewTab defined?"}
40
+ F -- Yes --> G["call runtime.decideNewTab"]
41
+ F -- No --> H["call libDecideNewTab fallback"]
42
+ ```
43
+
44
+ > **Important:** Do not inline the `embed` short-circuit or `decideNewTab` fallback chain elsewhere. `computeIsNewTab` is the **only** place this logic should live.
@@ -0,0 +1,47 @@
1
+ <!-- source-hash: 52e6bfa6e916758ef4a95f83d0eb97da -->
2
+ Unified click-handler for chat-rendered navigation links. Centralizes the routing decision logic (same-tab vs. new-tab, embed vs. host, modifier-key pass-through) so callers like chip blocks, entity-card wrappers, and markdown anchor wrappers share a single implementation.
3
+
4
+ ## Key Components
5
+
6
+ ### `ChatNavClickInput`
7
+ Input interface describing the navigation target:
8
+ - `href` — destination URL (required)
9
+ - `path` — optional internal route path
10
+ - `targetPlatform` — optional platform hint for routing decisions
11
+
12
+ ### `NavClickEvent`
13
+ Structural mouse-event interface (subset of `React.MouseEvent`) that keeps the handler callable from non-anchor surfaces without requiring a cast.
14
+
15
+ ### `handleChatNavClick(e, runtime, input): boolean`
16
+ The core export. Processes a click event against a `ChatRuntime` and returns:
17
+ - `true` — handler took action and called `preventDefault()`
18
+ - `false` — modifier-click or non-primary button; browser default applies
19
+
20
+ **Routing rules in priority order:**
21
+ 1. Empty `href` → `preventDefault` + no-op
22
+ 2. Non-primary button or any modifier key (`meta`, `ctrl`, `shift`, `alt`) → pass through to browser
23
+ 3. New-tab decision via `computeIsNewTab` → `runtime.navigation.openExternal` or `window.open`
24
+ 4. Same-tab → `runtime.navigation.navigate?.()` → fallback to `window.location.assign`
25
+
26
+ ## Usage Example
27
+
28
+ ```typescript
29
+ import { handleChatNavClick } from './nav-click-handler'
30
+ import { useChatRuntime } from '../../../contexts/chat-runtime-context'
31
+
32
+ function NavChip({ href, path, targetPlatform }) {
33
+ const runtime = useChatRuntime()
34
+
35
+ return (
36
+ <button
37
+ onClick={(e) =>
38
+ handleChatNavClick(e, runtime, { href, path, targetPlatform })
39
+ }
40
+ >
41
+ {label}
42
+ </button>
43
+ )
44
+ }
45
+ ```
46
+
47
+ > **Note:** Pass-through (`return false`) preserves native `<a>` semantics for modifier-clicks (e.g., Cmd+Click opens a new tab), so wrapping anchor elements still behave correctly without extra logic in the caller.