@flamingo-stack/openframe-frontend-core 0.0.481 → 0.0.482

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 (838) hide show
  1. package/dist/{chunk-H6DFCF44.cjs → chunk-22AED5IC.cjs} +82 -82
  2. package/dist/{chunk-H6DFCF44.cjs.map → chunk-22AED5IC.cjs.map} +1 -1
  3. package/dist/{chunk-MGKCS6KS.js → chunk-3WCARCI4.js} +2 -2
  4. package/dist/{chunk-LNKWY74S.cjs → chunk-4HL6UENH.cjs} +5 -5
  5. package/dist/{chunk-LNKWY74S.cjs.map → chunk-4HL6UENH.cjs.map} +1 -1
  6. package/dist/{chunk-Y3Y2DLNO.js → chunk-6UGYBCEN.js} +3 -3
  7. package/dist/{chunk-BBUEY73L.js → chunk-7I5B5PQ4.js} +6269 -5339
  8. package/dist/chunk-7I5B5PQ4.js.map +1 -0
  9. package/dist/{chunk-PSPWT2Q5.js → chunk-7LWXWXEY.js} +4 -4
  10. package/dist/{chunk-M7O74OWG.cjs → chunk-ACOU5YJI.cjs} +31 -31
  11. package/dist/{chunk-M7O74OWG.cjs.map → chunk-ACOU5YJI.cjs.map} +1 -1
  12. package/dist/{chunk-INDFIVDV.cjs → chunk-AHGSN4AT.cjs} +12 -12
  13. package/dist/{chunk-INDFIVDV.cjs.map → chunk-AHGSN4AT.cjs.map} +1 -1
  14. package/dist/{chunk-VTSRDC4W.js → chunk-CKC3EAYT.js} +2 -2
  15. package/dist/{chunk-SASR7SK5.js → chunk-GZK7FWJJ.js} +20 -4
  16. package/dist/chunk-GZK7FWJJ.js.map +1 -0
  17. package/dist/{chunk-ZRANZNEA.js → chunk-JJE5TUZK.js} +2 -2
  18. package/dist/{chunk-66BNAFO6.js → chunk-JQIUBFHL.js} +4 -4
  19. package/dist/{chunk-MMCBQJKE.cjs → chunk-KUBJHB6I.cjs} +11 -11
  20. package/dist/{chunk-MMCBQJKE.cjs.map → chunk-KUBJHB6I.cjs.map} +1 -1
  21. package/dist/{chunk-ZV6E3U3C.cjs → chunk-MRGTMMJ3.cjs} +30 -30
  22. package/dist/{chunk-ZV6E3U3C.cjs.map → chunk-MRGTMMJ3.cjs.map} +1 -1
  23. package/dist/{chunk-OZJN54R5.cjs → chunk-NWVKG7QC.cjs} +37 -37
  24. package/dist/{chunk-OZJN54R5.cjs.map → chunk-NWVKG7QC.cjs.map} +1 -1
  25. package/dist/{chunk-AN47EIIJ.cjs → chunk-PHTSSHIQ.cjs} +59 -59
  26. package/dist/{chunk-AN47EIIJ.cjs.map → chunk-PHTSSHIQ.cjs.map} +1 -1
  27. package/dist/{chunk-N2JZ33V7.cjs → chunk-RUA3OXSJ.cjs} +26 -26
  28. package/dist/{chunk-N2JZ33V7.cjs.map → chunk-RUA3OXSJ.cjs.map} +1 -1
  29. package/dist/{chunk-LK623WCC.cjs → chunk-RZPF7MJ2.cjs} +9 -9
  30. package/dist/{chunk-LK623WCC.cjs.map → chunk-RZPF7MJ2.cjs.map} +1 -1
  31. package/dist/{chunk-G3UN2DXU.cjs → chunk-STYA77PH.cjs} +20 -4
  32. package/dist/chunk-STYA77PH.cjs.map +1 -0
  33. package/dist/{chunk-JUJY3HQS.cjs → chunk-U37UTLP7.cjs} +19 -19
  34. package/dist/{chunk-JUJY3HQS.cjs.map → chunk-U37UTLP7.cjs.map} +1 -1
  35. package/dist/{chunk-2DIOV7BR.js → chunk-UPN6EFOM.js} +4 -4
  36. package/dist/{chunk-OWMLWJQY.cjs → chunk-VPVOJD5X.cjs} +2432 -1502
  37. package/dist/chunk-VPVOJD5X.cjs.map +1 -0
  38. package/dist/{chunk-4SMRQ4SN.js → chunk-WBL5Y4PS.js} +3 -3
  39. package/dist/{chunk-FP4H6Y5O.js → chunk-WPYPSIY2.js} +3 -3
  40. package/dist/{chunk-R5WJJL4V.js → chunk-X5X43HFV.js} +5 -5
  41. package/dist/{chunk-DEHZ5CTC.js → chunk-XTWKDMCG.js} +2 -2
  42. package/dist/components/case-studies/index.cjs +9 -9
  43. package/dist/components/case-studies/index.js +3 -3
  44. package/dist/components/chat/index.cjs +3 -3
  45. package/dist/components/chat/index.js +2 -2
  46. package/dist/components/contact/index.cjs +4 -4
  47. package/dist/components/contact/index.js +3 -3
  48. package/dist/components/docs/index.cjs +6 -6
  49. package/dist/components/docs/index.js +5 -5
  50. package/dist/components/embeds/index.cjs +4 -4
  51. package/dist/components/embeds/index.js +3 -3
  52. package/dist/components/faq/index.cjs +4 -4
  53. package/dist/components/faq/index.js +3 -3
  54. package/dist/components/features/captions-url.cjs +12 -0
  55. package/dist/components/features/captions-url.cjs.map +1 -0
  56. package/dist/components/features/captions-url.js +10 -0
  57. package/dist/components/features/captions-url.js.map +1 -0
  58. package/dist/components/features/card-hit-layer.d.ts +40 -0
  59. package/dist/components/features/card-hit-layer.d.ts.map +1 -0
  60. package/dist/components/features/floating-walkthrough-video.d.ts +71 -0
  61. package/dist/components/features/floating-walkthrough-video.d.ts.map +1 -0
  62. package/dist/components/features/index.cjs +11 -3
  63. package/dist/components/features/index.cjs.map +1 -1
  64. package/dist/components/features/index.d.ts +4 -0
  65. package/dist/components/features/index.d.ts.map +1 -1
  66. package/dist/components/features/index.js +12 -4
  67. package/dist/components/features/use-walkthrough-video.d.ts +16 -0
  68. package/dist/components/features/use-walkthrough-video.d.ts.map +1 -0
  69. package/dist/components/features/video-bites-strip.d.ts.map +1 -1
  70. package/dist/components/features/video-center-badge.d.ts.map +1 -1
  71. package/dist/components/features/video-hover-preview.d.ts +68 -0
  72. package/dist/components/features/video-hover-preview.d.ts.map +1 -0
  73. package/dist/components/features/video.d.ts +78 -40
  74. package/dist/components/features/video.d.ts.map +1 -1
  75. package/dist/components/form.d.ts +0 -1
  76. package/dist/components/form.d.ts.map +1 -1
  77. package/dist/components/help-center-pages/index.cjs +21 -21
  78. package/dist/components/help-center-pages/index.js +12 -12
  79. package/dist/components/index.cjs +163 -155
  80. package/dist/components/index.cjs.map +1 -1
  81. package/dist/components/index.js +18 -10
  82. package/dist/components/index.js.map +1 -1
  83. package/dist/components/navigation/index.cjs +3 -3
  84. package/dist/components/navigation/index.js +2 -2
  85. package/dist/components/onboarding-guides/index.cjs +6 -6
  86. package/dist/components/onboarding-guides/index.js +5 -5
  87. package/dist/components/related-content/index.cjs +4 -4
  88. package/dist/components/related-content/index.js +3 -3
  89. package/dist/components/tickets/index.cjs +6 -6
  90. package/dist/components/tickets/index.js +5 -5
  91. package/dist/components/ui/button/button-styles.d.ts +2 -0
  92. package/dist/components/ui/button/button-styles.d.ts.map +1 -1
  93. package/dist/components/ui/button/button.d.ts +2 -2
  94. package/dist/components/ui/button/button.d.ts.map +1 -1
  95. package/dist/components/ui/file-manager/index.cjs +50 -50
  96. package/dist/components/ui/file-manager/index.js +1 -1
  97. package/dist/components/ui/index.cjs +3 -3
  98. package/dist/components/ui/index.js +2 -2
  99. package/dist/components/ui/page-actions.d.ts +2 -1
  100. package/dist/components/ui/page-actions.d.ts.map +1 -1
  101. package/dist/index.cjs +27 -3
  102. package/dist/index.cjs.map +1 -1
  103. package/dist/index.js +28 -4
  104. package/dist/types/supabase.d.ts +80 -0
  105. package/dist/types/supabase.d.ts.map +1 -1
  106. package/dist/types/video-processing.d.ts +1 -1
  107. package/dist/types/video-processing.d.ts.map +1 -1
  108. package/dist/utils/announcement-storage.d.ts +1 -1
  109. package/dist/utils/announcement-storage.d.ts.map +1 -1
  110. package/dist/utils/dismiss-cookie.d.ts +27 -0
  111. package/dist/utils/dismiss-cookie.d.ts.map +1 -0
  112. package/dist/utils/dismissal-storage.d.ts +19 -0
  113. package/dist/utils/dismissal-storage.d.ts.map +1 -0
  114. package/dist/utils/index.cjs +48 -10
  115. package/dist/utils/index.cjs.map +1 -1
  116. package/dist/utils/index.d.ts +2 -0
  117. package/dist/utils/index.d.ts.map +1 -1
  118. package/dist/utils/index.js +41 -11
  119. package/dist/utils/index.js.map +1 -1
  120. package/package.json +8 -2
  121. package/src/.index.md +39 -32
  122. package/src/.platform-domains.md +65 -0
  123. package/src/assets/.fae-avatar.md +33 -0
  124. package/src/assets/.index.md +15 -9
  125. package/src/components/.agent-mark.md +31 -0
  126. package/src/components/.announcement-bar.md +47 -35
  127. package/src/components/.calendar.md +19 -15
  128. package/src/components/.categories-cart.md +34 -30
  129. package/src/components/.category-card.md +33 -33
  130. package/src/components/.chart.md +38 -40
  131. package/src/components/.command.md +47 -23
  132. package/src/components/.comment-card.md +31 -26
  133. package/src/components/.content-loading-container.md +45 -20
  134. package/src/components/.context-menu.md +45 -31
  135. package/src/components/.date-time-picker.md +36 -30
  136. package/src/components/.empty-state.md +31 -31
  137. package/src/components/.faq-accordion.md +20 -30
  138. package/src/components/.filter-chip.md +36 -33
  139. package/src/components/.footer-waitlist-button.md +27 -21
  140. package/src/components/.footer.md +39 -24
  141. package/src/components/.form.md +32 -20
  142. package/src/components/.hero-image-uploader.md +35 -31
  143. package/src/components/.icon-display.md +53 -0
  144. package/src/components/.image-cropper.md +34 -33
  145. package/src/components/.index.md +25 -29
  146. package/src/components/.logs-list.md +27 -23
  147. package/src/components/.media-carousel.md +47 -26
  148. package/src/components/.metric-value.md +27 -24
  149. package/src/components/.msp-display.md +29 -23
  150. package/src/components/.open-source-features.md +23 -26
  151. package/src/components/.pagination.md +44 -39
  152. package/src/components/.persistent-filter-controls.md +61 -28
  153. package/src/components/.pricing-display.md +34 -33
  154. package/src/components/.results-count.md +33 -20
  155. package/src/components/.smooth-accordion.md +24 -20
  156. package/src/components/.social-icon-row.md +33 -21
  157. package/src/components/.sonner.md +40 -25
  158. package/src/components/.steps.md +39 -25
  159. package/src/components/.tool-icon.md +34 -21
  160. package/src/components/.unified-filter-logic.md +32 -36
  161. package/src/components/.user-display.md +33 -28
  162. package/src/components/.user-summary-stub.md +40 -33
  163. package/src/components/.vendor-display-button.md +17 -15
  164. package/src/components/.vendor-icon.md +17 -25
  165. package/src/components/.vendor-tag.md +39 -34
  166. package/src/components/.why-it-matters.md +15 -11
  167. package/src/components/.yes-no-display.md +36 -31
  168. package/src/components/authors/.author-detail-view.md +50 -0
  169. package/src/components/case-studies/.index.md +26 -0
  170. package/src/components/case-studies/.share-experience-section.md +45 -0
  171. package/src/components/chat/.approval-batch-message.md +48 -33
  172. package/src/components/chat/.approval-request-message.md +37 -26
  173. package/src/components/chat/.chat-archive-page.md +56 -0
  174. package/src/components/chat/.chat-attachment-bar.md +32 -40
  175. package/src/components/chat/.chat-composer.md +43 -0
  176. package/src/components/chat/.chat-container.md +41 -25
  177. package/src/components/chat/.chat-context-memory-bar.md +53 -0
  178. package/src/components/chat/.chat-context-picker.md +89 -0
  179. package/src/components/chat/.chat-header-icon-button.md +43 -0
  180. package/src/components/chat/.chat-header-search-field.md +51 -0
  181. package/src/components/chat/.chat-input.md +63 -30
  182. package/src/components/chat/.chat-list-empty-state.md +44 -0
  183. package/src/components/chat/.chat-message-enhanced.md +29 -31
  184. package/src/components/chat/.chat-message-list.md +34 -44
  185. package/src/components/chat/.chat-message-row.md +56 -0
  186. package/src/components/chat/.chat-message-skeleton.md +32 -26
  187. package/src/components/chat/.chat-panel-header-mobile.md +46 -0
  188. package/src/components/chat/.chat-panel-header.md +80 -0
  189. package/src/components/chat/.chat-sidebar-skeleton.md +31 -30
  190. package/src/components/chat/.chat-sidebar.md +36 -29
  191. package/src/components/chat/.chat-ticket-list.md +38 -23
  192. package/src/components/chat/.chat-typing-indicator.md +37 -19
  193. package/src/components/chat/.context-compaction-display.md +19 -15
  194. package/src/components/chat/.context-items-list.md +57 -0
  195. package/src/components/chat/.embeddable-chat.md +57 -66
  196. package/src/components/chat/.error-message-display.md +40 -22
  197. package/src/components/chat/.guide-mode-banner.md +41 -0
  198. package/src/components/chat/.guide-welcome.md +43 -0
  199. package/src/components/chat/.index.md +26 -21
  200. package/src/components/chat/.mingo-chat-history.md +63 -0
  201. package/src/components/chat/.mingo-chat-modals.md +44 -0
  202. package/src/components/chat/.mingo-history-rail.md +63 -0
  203. package/src/components/chat/.mingo-info-card.md +59 -0
  204. package/src/components/chat/.mingo-onboarding-card.md +21 -27
  205. package/src/components/chat/.mingo-welcome.md +60 -0
  206. package/src/components/chat/.model-display.md +33 -25
  207. package/src/components/chat/.msp-organization-card-skeleton.md +44 -0
  208. package/src/components/chat/.msp-organization-card.md +51 -0
  209. package/src/components/chat/.nav-link-anchor-via-runtime.md +36 -25
  210. package/src/components/chat/.quick-action-chip.md +60 -0
  211. package/src/components/chat/.quick-action-marquee.md +53 -0
  212. package/src/components/chat/.quick-action-wall.md +68 -0
  213. package/src/components/chat/.remark-mention-chips.md +41 -0
  214. package/src/components/chat/.slash-command-suggestions.md +30 -36
  215. package/src/components/chat/.source-action-button.md +28 -25
  216. package/src/components/chat/.tool-call-blocks.md +18 -30
  217. package/src/components/chat/.tool-execution-display.md +29 -34
  218. package/src/components/chat/entity-cards/.admin-content-card.md +29 -22
  219. package/src/components/chat/entity-cards/.blog-card.md +44 -33
  220. package/src/components/chat/entity-cards/.blog-image-placeholder.md +20 -18
  221. package/src/components/chat/entity-cards/.case-study-card.md +24 -33
  222. package/src/components/chat/entity-cards/.chat-ticket-item.md +39 -22
  223. package/src/components/chat/entity-cards/.customer-interview-card.md +29 -32
  224. package/src/components/chat/entity-cards/.data-room-doc-card.md +21 -22
  225. package/src/components/chat/entity-cards/.dispatch.md +41 -24
  226. package/src/components/chat/entity-cards/.entity-author-card.md +36 -33
  227. package/src/components/chat/entity-cards/.entity-portrait-card.md +47 -0
  228. package/src/components/chat/entity-cards/.generic-entity-card.md +26 -25
  229. package/src/components/chat/entity-cards/.github-activity-card.md +35 -41
  230. package/src/components/chat/entity-cards/.hubspot-ticket-card.md +22 -28
  231. package/src/components/chat/entity-cards/.index.md +33 -44
  232. package/src/components/chat/entity-cards/.investor-update-card.md +36 -25
  233. package/src/components/chat/entity-cards/.onboarding-guide-card.md +20 -29
  234. package/src/components/chat/entity-cards/.product-release-card-defaults.md +26 -19
  235. package/src/components/chat/entity-cards/.program-card.md +30 -33
  236. package/src/components/chat/entity-cards/.roadmap-card.md +40 -31
  237. package/src/components/chat/entity-cards/.roadmap-vote-button.md +33 -36
  238. package/src/components/chat/entity-cards/.slack-message-card.md +31 -32
  239. package/src/components/chat/entity-cards/.use-cover-image-fallback.md +47 -0
  240. package/src/components/chat/entity-cards/.use-entity-card-link.md +51 -0
  241. package/src/components/chat/entity-cards/.use-entity-card-placeholder.md +47 -0
  242. package/src/components/chat/entity-cards/.what-i-shipped-card.md +43 -0
  243. package/src/components/chat/hooks/.index.md +33 -30
  244. package/src/components/chat/hooks/.use-chat-card-item.md +30 -17
  245. package/src/components/chat/hooks/.use-chat-dialog-manager.md +59 -0
  246. package/src/components/chat/hooks/.use-chat-identity.md +37 -25
  247. package/src/components/chat/hooks/.use-chunk-catchup.md +53 -36
  248. package/src/components/chat/hooks/.use-empty-state-config.md +39 -0
  249. package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +65 -30
  250. package/src/components/chat/hooks/.use-nats-chat-adapter.md +55 -36
  251. package/src/components/chat/hooks/.use-nats-dialog-subscription.md +66 -50
  252. package/src/components/chat/hooks/.use-realtime-chunk-processor.md +58 -31
  253. package/src/components/chat/hooks/.use-scripted-stream.md +46 -0
  254. package/src/components/chat/hooks/.use-slash-commands.md +32 -25
  255. package/src/components/chat/hooks/.use-sse-chat-adapter.md +32 -21
  256. package/src/components/chat/hooks/.use-unified-chat.md +45 -35
  257. package/src/components/chat/types/.api.types.md +49 -41
  258. package/src/components/chat/types/.chat.types.md +56 -34
  259. package/src/components/chat/types/.component.types.md +36 -36
  260. package/src/components/chat/types/.context-item.types.md +61 -0
  261. package/src/components/chat/types/.index.md +32 -17
  262. package/src/components/chat/types/.message.types.md +44 -45
  263. package/src/components/chat/types/.network.types.md +46 -46
  264. package/src/components/chat/types/.processing.types.md +49 -37
  265. package/src/components/chat/types/.unified-chat-state.types.md +41 -26
  266. package/src/components/chat/types/entities/.content-ref.md +20 -31
  267. package/src/components/chat/types/entities/.investor-update.md +14 -16
  268. package/src/components/chat/types/entities/.onboarding-guide.md +35 -34
  269. package/src/components/chat/types/entities/.program-types.md +55 -43
  270. package/src/components/chat/utils/.chip-action-class.md +17 -19
  271. package/src/components/chat/utils/.chip-styles.md +18 -18
  272. package/src/components/chat/utils/.chunk-parser.md +48 -37
  273. package/src/components/chat/utils/.compact-card-classes.md +33 -35
  274. package/src/components/chat/utils/.execute-navigation.md +49 -0
  275. package/src/components/chat/utils/.extract-incomplete-message-state.md +9 -12
  276. package/src/components/chat/utils/.history-merge.md +65 -0
  277. package/src/components/chat/utils/.icon-library.md +33 -31
  278. package/src/components/chat/utils/.icon-registry.md +44 -0
  279. package/src/components/chat/utils/.index.md +37 -33
  280. package/src/components/chat/utils/.is-cross-origin-url.md +26 -22
  281. package/src/components/chat/utils/.message-segment-accumulator.md +46 -25
  282. package/src/components/chat/utils/.nav-anchor-props.md +29 -34
  283. package/src/components/chat/utils/.nav-click-handler.md +29 -33
  284. package/src/components/chat/utils/.process-historical-messages.md +29 -33
  285. package/src/components/chat/utils/.scripted-stream.md +52 -0
  286. package/src/components/chat/utils/.source-row-cta.md +32 -31
  287. package/src/components/chat/utils/.tool-call-helpers.md +25 -17
  288. package/src/components/contact/.contact-form.md +24 -19
  289. package/src/components/docs/.doc-navigation-context.md +49 -0
  290. package/src/components/docs/.doc-viewer.md +64 -0
  291. package/src/components/docs/.docs-hub-page.md +49 -0
  292. package/src/components/docs/.index.md +51 -0
  293. package/src/components/docs/.skeletons.md +47 -0
  294. package/src/components/docs/.use-docs-resolve-link.md +61 -0
  295. package/src/components/docs/.use-document-tree.md +83 -0
  296. package/src/components/docs/.use-scroll-spy.md +58 -0
  297. package/src/components/embeds/.embed-container.md +45 -0
  298. package/src/components/embeds/.embed-iframe.md +51 -0
  299. package/src/components/embeds/.figma-embed.md +43 -0
  300. package/src/components/embeds/.file-download-card.md +47 -0
  301. package/src/components/embeds/.google-sheets-viewer.md +40 -0
  302. package/src/components/embeds/.index.md +58 -0
  303. package/src/components/embeds/.linkedin-embed-client.md +50 -0
  304. package/src/components/embeds/.markdown-image.md +40 -0
  305. package/src/components/embeds/.og-link-preview.md +54 -0
  306. package/src/components/embeds/.pdf-viewer.md +43 -0
  307. package/src/components/embeds/.reddit-embed-client.md +40 -0
  308. package/src/components/embeds/.rich-markdown-runtime.md +53 -0
  309. package/src/components/embeds/.twitter-embed-client.md +44 -0
  310. package/src/components/faq/.faq-document-page.md +68 -0
  311. package/src/components/faq/.faq-section.md +55 -0
  312. package/src/components/faq/.index.md +29 -0
  313. package/src/components/faq/.json-ld.md +48 -0
  314. package/src/components/features/.array-entry-manager.md +32 -24
  315. package/src/components/features/.auth-providers-list.md +33 -32
  316. package/src/components/features/.captions-url.md +43 -0
  317. package/src/components/features/.cards-strip.md +48 -0
  318. package/src/components/features/.changelog-manager.md +17 -20
  319. package/src/components/features/.command-box.md +11 -16
  320. package/src/components/features/.entity-summary-editor.md +20 -15
  321. package/src/components/features/.entity-tag-badges.md +43 -0
  322. package/src/components/features/.entity-video-section.md +31 -41
  323. package/src/components/features/.figma-prototype-viewer.md +55 -37
  324. package/src/components/features/.filters-dropdown.md +14 -13
  325. package/src/components/features/.highlight-config-section.md +19 -16
  326. package/src/components/features/.highlight-video-combined-section.md +28 -19
  327. package/src/components/features/.highlight-video-preview.md +13 -11
  328. package/src/components/features/.highlight-video-section.md +26 -22
  329. package/src/components/features/.index.md +40 -36
  330. package/src/components/features/.media-gallery-manager.md +37 -35
  331. package/src/components/features/.mux-origins.md +46 -0
  332. package/src/components/features/.og-editor-preview.md +29 -24
  333. package/src/components/features/.os-type-badge-group.md +26 -18
  334. package/src/components/features/.os-type-badge.md +41 -24
  335. package/src/components/features/.paths-display.md +42 -25
  336. package/src/components/features/.platform-badge.md +26 -17
  337. package/src/components/features/.policy-configuration-panel.md +33 -31
  338. package/src/components/features/.provider-button.md +29 -20
  339. package/src/components/features/.push-button-selector.md +39 -41
  340. package/src/components/features/.release-media-manager.md +41 -34
  341. package/src/components/features/.section-selector.md +27 -16
  342. package/src/components/features/.select-button.md +21 -32
  343. package/src/components/features/.seo-editor-preview.md +49 -36
  344. package/src/components/features/.social-links-manager.md +40 -18
  345. package/src/components/features/.start-with-openframe-button.md +30 -32
  346. package/src/components/features/.status-filter-component.md +29 -38
  347. package/src/components/features/.tags-selector.md +25 -29
  348. package/src/components/features/.transcript-summary-editor.md +24 -18
  349. package/src/components/features/.use-video-warmup.md +47 -0
  350. package/src/components/features/.video-bites-display.md +36 -37
  351. package/src/components/features/.video-bites-shared.md +44 -0
  352. package/src/components/features/.video-bites-strip.md +63 -0
  353. package/src/components/features/.video-center-badge.md +38 -0
  354. package/src/components/features/.video-ratio-tabs.md +38 -31
  355. package/src/components/features/.video-source-selector.md +24 -27
  356. package/src/components/features/.video.md +35 -27
  357. package/src/components/features/.waitlist-form.md +39 -33
  358. package/src/components/features/.warning-block.md +53 -0
  359. package/src/components/features/ai-enrich/.AIEnrichSection.md +24 -25
  360. package/src/components/features/ai-enrich/.AIRequiredBadge.md +22 -21
  361. package/src/components/features/ai-enrich/.AIStatusIndicator.md +42 -35
  362. package/src/components/features/ai-enrich/.AIWarningsSection.md +23 -20
  363. package/src/components/features/ai-enrich/.ConfidenceBadge.md +35 -20
  364. package/src/components/features/auth/.auth-benefits-panel.md +48 -0
  365. package/src/components/features/auth/.auth-branding.md +51 -0
  366. package/src/components/features/auth/.auth-shell.md +51 -0
  367. package/src/components/features/auth/.back-to-login-link.md +48 -0
  368. package/src/components/features/auth/.complete-account-form.md +45 -0
  369. package/src/components/features/auth/.create-organization-form.md +53 -0
  370. package/src/components/features/auth/.index.md +48 -0
  371. package/src/components/features/auth/.invite-link-invalid-modal.md +42 -0
  372. package/src/components/features/auth/.login-form.md +42 -0
  373. package/src/components/features/auth/.openframe-sso-login-form.md +46 -0
  374. package/src/components/features/auth/.openframe-sso-signup-form.md +51 -0
  375. package/src/components/features/auth/.password-reset-form.md +57 -0
  376. package/src/components/features/auth/.sso-auth-shell.md +35 -0
  377. package/src/components/features/auth/.sso-providers.md +42 -0
  378. package/src/components/features/auth/.terms-agreement-label.md +28 -0
  379. package/src/components/features/board/.board-column-header.md +24 -18
  380. package/src/components/features/board/.board-column.md +32 -32
  381. package/src/components/features/board/.board-ticket-approval.md +42 -0
  382. package/src/components/features/board/.board.md +38 -38
  383. package/src/components/features/board/.index.md +35 -38
  384. package/src/components/features/board/.ticket-card.md +33 -36
  385. package/src/components/features/board/.types.md +38 -31
  386. package/src/components/features/card-hit-layer.tsx +84 -0
  387. package/src/components/features/floating-walkthrough-video.tsx +891 -0
  388. package/src/components/features/index.ts +4 -0
  389. package/src/components/features/notifications/.approval-request-notification-tile.md +45 -0
  390. package/src/components/features/notifications/.index.md +35 -31
  391. package/src/components/features/notifications/.notification-drawer.md +32 -19
  392. package/src/components/features/notifications/.notification-popups.md +51 -0
  393. package/src/components/features/notifications/.notification-tile.md +43 -27
  394. package/src/components/features/notifications/.notifications-context.md +42 -45
  395. package/src/components/features/notifications/.types.md +51 -31
  396. package/src/components/features/ticket-status-config-list/.ticket-status-config-list.md +51 -0
  397. package/src/components/features/time-tracker/.index.md +48 -0
  398. package/src/components/features/time-tracker/.time-tracker-context.md +55 -0
  399. package/src/components/features/time-tracker/.time-tracker-header-button.md +51 -0
  400. package/src/components/features/time-tracker/.time-tracker-panel.md +58 -0
  401. package/src/components/features/time-tracker/.types.md +51 -0
  402. package/src/components/features/time-tracker/.use-tracker-clock.md +32 -0
  403. package/src/components/features/use-walkthrough-video.ts +70 -0
  404. package/src/components/features/video-bites-strip.tsx +46 -146
  405. package/src/components/features/video-center-badge.tsx +11 -2
  406. package/src/components/features/video-hover-preview.tsx +201 -0
  407. package/src/components/features/video.tsx +368 -73
  408. package/src/components/help-center-pages/.delivery-page.md +51 -0
  409. package/src/components/help-center-pages/.index.md +51 -0
  410. package/src/components/help-center-pages/.onboarding-guides-catalog-page.md +53 -0
  411. package/src/components/help-center-pages/.product-releases-list-page.md +51 -0
  412. package/src/components/help-center-pages/.roadmap-page.md +46 -0
  413. package/src/components/icons/.figma-icon.md +13 -7
  414. package/src/components/icons/.index.md +26 -22
  415. package/src/components/icons/.vendor-directory-icon.md +30 -18
  416. package/src/components/icons/.x-logo.md +26 -10
  417. package/src/components/icons-v2-generated/.index.md +30 -41
  418. package/src/components/icons-v2-generated/brand-logos/.index.md +25 -19
  419. package/src/components/icons-v2-generated/communication/.index.md +26 -30
  420. package/src/components/icons-v2-generated/logos/.flamingo-logo-icon.md +41 -0
  421. package/src/components/layout/.article-detail-layout.md +32 -21
  422. package/src/components/layout/.page-container.md +25 -23
  423. package/src/components/layout/.page-heading.md +48 -0
  424. package/src/components/layout/.page-layout.md +30 -25
  425. package/src/components/layout/.title-block.md +43 -24
  426. package/src/components/loading/.card-skeleton.md +28 -35
  427. package/src/components/loading/.category-card-skeleton.md +25 -23
  428. package/src/components/loading/.device-card-skeleton.md +22 -15
  429. package/src/components/loading/.margin-report-skeleton.md +30 -35
  430. package/src/components/loading/.openmsp-heartbeat.md +30 -32
  431. package/src/components/loading/.organization-card-skeleton.md +22 -25
  432. package/src/components/loading/.organization-icon-skeleton.md +39 -27
  433. package/src/components/loading/.page-layout-skeleton.md +50 -28
  434. package/src/components/loading/.unified-skeleton.md +37 -40
  435. package/src/components/loading/.users-grid-skeleton.md +19 -38
  436. package/src/components/navigation/.app-header.md +35 -28
  437. package/src/components/navigation/.app-layout-context.md +48 -0
  438. package/src/components/navigation/.app-layout-drawer.md +56 -0
  439. package/src/components/navigation/.app-layout.md +24 -23
  440. package/src/components/navigation/.header-mingo-button.md +46 -0
  441. package/src/components/navigation/.header-organization-filter.md +32 -18
  442. package/src/components/navigation/.header.md +24 -31
  443. package/src/components/navigation/.index.md +36 -50
  444. package/src/components/navigation/.mingo-ai-button.md +41 -0
  445. package/src/components/navigation/.mobile-burger-menu.md +29 -29
  446. package/src/components/navigation/.mobile-nav-panel.md +41 -49
  447. package/src/components/navigation/.multi-level-navigation.md +76 -0
  448. package/src/components/navigation/.navigation-sidebar-item.md +14 -14
  449. package/src/components/navigation/.navigation-sidebar.md +30 -23
  450. package/src/components/navigation/.sliding-sidebar.md +30 -25
  451. package/src/components/navigation/.sticky-section-nav.md +23 -21
  452. package/src/components/onboarding-guides/.index.md +40 -0
  453. package/src/components/onboarding-guides/.onboarding-guide-detail-view.md +55 -0
  454. package/src/components/onboarding-guides/.onboarding-guides-catalog-skeleton.md +33 -0
  455. package/src/components/onboarding-guides/.onboarding-guides-catalog-view.md +50 -0
  456. package/src/components/onboarding-guides/hooks/.use-onboarding-guides.md +54 -0
  457. package/src/components/platform/.CveLink.md +28 -17
  458. package/src/components/platform/.ScriptArguments.md +18 -23
  459. package/src/components/platform/.ScriptInfoSection.md +27 -21
  460. package/src/components/platform/.ShellTypeBadge.md +34 -18
  461. package/src/components/platform/.SoftwareInfo.md +23 -21
  462. package/src/components/platform/.ToolBadge.md +18 -16
  463. package/src/components/profile/.ProfileLoadingSkeleton.md +24 -23
  464. package/src/components/related-content/.index.md +41 -0
  465. package/src/components/related-content/.related-content-section.md +62 -0
  466. package/src/components/shared/.article-author-byline.md +56 -0
  467. package/src/components/shared/.detail-page-skeleton.md +32 -43
  468. package/src/components/shared/.media-gallery-strip.md +43 -0
  469. package/src/components/shared/delivery/.delivery-lists.md +20 -19
  470. package/src/components/shared/delivery/.delivery-row.md +24 -20
  471. package/src/components/shared/delivery/.delivery-table.md +20 -22
  472. package/src/components/shared/dev-section/.dev-card-row.md +28 -36
  473. package/src/components/shared/dev-section/.dev-section-page.md +36 -25
  474. package/src/components/shared/dev-section/.dev-section-view.md +32 -22
  475. package/src/components/shared/doc-search/.doc-search-bar.md +58 -0
  476. package/src/components/shared/doc-search/.doc-search-result-row.md +50 -0
  477. package/src/components/shared/doc-search/.format-relative-path.md +30 -0
  478. package/src/components/shared/doc-search/.index.md +46 -0
  479. package/src/components/shared/doc-search/.map-doc-search-results.md +44 -0
  480. package/src/components/shared/doc-search/.resolve-search-result-action.md +52 -0
  481. package/src/components/shared/doc-search/.types.md +49 -0
  482. package/src/components/shared/doc-search/.use-doc-search.md +66 -0
  483. package/src/components/shared/legal-document/.legal-document-page.md +26 -20
  484. package/src/components/shared/legal-document/.use-legal-docs.md +36 -30
  485. package/src/components/shared/onboarding/.onboarding-step-card.md +24 -16
  486. package/src/components/shared/onboarding/.onboarding-walkthrough.md +42 -28
  487. package/src/components/shared/product-release/.index.md +33 -24
  488. package/src/components/shared/product-release/.product-release-card-skeleton.md +22 -28
  489. package/src/components/shared/product-release/.product-release-card.md +28 -29
  490. package/src/components/shared/product-release/.product-releases-view.md +49 -0
  491. package/src/components/shared/product-release/.release-detail-page.md +30 -15
  492. package/src/components/shared/roadmap/.index.md +29 -24
  493. package/src/components/shared/roadmap/.roadmap-grid.md +43 -54
  494. package/src/components/shared/roadmap/.roadmap-view.md +41 -0
  495. package/src/components/shared/roadmap/.use-roadmap-voting.md +27 -17
  496. package/src/components/switch.tsx +1 -1
  497. package/src/components/tickets/.help-center-card.md +32 -28
  498. package/src/components/tickets/.help-center-create-form.md +34 -22
  499. package/src/components/tickets/.help-center-list.md +36 -25
  500. package/src/components/tickets/.index.md +30 -45
  501. package/src/components/tickets/.ticket-center.md +31 -38
  502. package/src/components/tickets/.ticket-detail-drawer.md +20 -30
  503. package/src/components/tickets/.ticket-open-form.md +24 -26
  504. package/src/components/tickets/.ticket-reply-composer.md +51 -0
  505. package/src/components/tickets/.ticket-row.md +26 -11
  506. package/src/components/tickets/.types.md +56 -38
  507. package/src/components/tickets/hooks/.use-ticket-actions.md +60 -47
  508. package/src/components/tickets/hooks/.use-ticket-engagements.md +27 -27
  509. package/src/components/tickets/hooks/.use-tickets-list.md +24 -30
  510. package/src/components/ui/.accordion.md +28 -21
  511. package/src/components/ui/.actions-menu.md +36 -54
  512. package/src/components/ui/.ai-generated-badge.md +25 -0
  513. package/src/components/ui/.alert-dialog.md +21 -16
  514. package/src/components/ui/.alert.md +30 -25
  515. package/src/components/ui/.allowed-domains-input.md +26 -15
  516. package/src/components/ui/.announcement-bar-view.md +46 -0
  517. package/src/components/ui/.autocomplete.md +40 -27
  518. package/src/components/ui/.badge.md +34 -31
  519. package/src/components/ui/.brand-association-card.md +22 -18
  520. package/src/components/ui/.breadcrumb.md +18 -14
  521. package/src/components/ui/.bullet-list.md +35 -23
  522. package/src/components/ui/.card.md +47 -30
  523. package/src/components/ui/.checkbox-block.md +34 -22
  524. package/src/components/ui/.checkbox-with-description.md +18 -20
  525. package/src/components/ui/.chevron-button.md +29 -29
  526. package/src/components/ui/.circular-progress.md +30 -41
  527. package/src/components/ui/.color-preset-select.md +54 -0
  528. package/src/components/ui/.color-swatch.md +37 -0
  529. package/src/components/ui/.content-loader.md +34 -27
  530. package/src/components/ui/.crossfade-panels.md +50 -0
  531. package/src/components/ui/.cursor-pagination.md +38 -26
  532. package/src/components/ui/.dashboard-info-card.md +46 -27
  533. package/src/components/ui/.date-picker.md +52 -36
  534. package/src/components/ui/.device-card-compact.md +23 -20
  535. package/src/components/ui/.device-card.md +39 -30
  536. package/src/components/ui/.dialog.md +14 -14
  537. package/src/components/ui/.drawer.md +45 -39
  538. package/src/components/ui/.dropdown-button.md +41 -33
  539. package/src/components/ui/.dropdown-menu.md +40 -23
  540. package/src/components/ui/.duration-input.md +41 -0
  541. package/src/components/ui/.entity-image.md +32 -28
  542. package/src/components/ui/.error-state.md +30 -26
  543. package/src/components/ui/.fade-preview.md +44 -0
  544. package/src/components/ui/.field-wrapper.md +34 -23
  545. package/src/components/ui/.file-upload.md +30 -18
  546. package/src/components/ui/.filter-modal.md +30 -32
  547. package/src/components/ui/.filter-pill-row.md +58 -0
  548. package/src/components/ui/.floating-tooltip.md +27 -32
  549. package/src/components/ui/.hidden-tags-popup.md +18 -20
  550. package/src/components/ui/.highlight-card.md +36 -23
  551. package/src/components/ui/.honeypot-field.md +41 -0
  552. package/src/components/ui/.hover-dropdown.md +44 -31
  553. package/src/components/ui/.image-gallery-modal.md +28 -30
  554. package/src/components/ui/.image-uploader.md +39 -22
  555. package/src/components/ui/.index.md +33 -31
  556. package/src/components/ui/.info-card-row.md +50 -0
  557. package/src/components/ui/.info-card.md +27 -20
  558. package/src/components/ui/.info-row.md +30 -24
  559. package/src/components/ui/.info-section.md +63 -0
  560. package/src/components/ui/.input.md +29 -28
  561. package/src/components/ui/.label.md +34 -26
  562. package/src/components/ui/.markdown-editor.md +26 -25
  563. package/src/components/ui/.marquee-wall.md +64 -0
  564. package/src/components/ui/.menubar.md +50 -16
  565. package/src/components/ui/.modal-v2.md +41 -27
  566. package/src/components/ui/.modal.md +22 -19
  567. package/src/components/ui/.more-actions-menu.md +30 -24
  568. package/src/components/ui/.navigation-menu.md +40 -25
  569. package/src/components/ui/.organization-card.md +46 -27
  570. package/src/components/ui/.page-actions.md +55 -41
  571. package/src/components/ui/.page-loader.md +40 -23
  572. package/src/components/ui/.password-input.md +30 -0
  573. package/src/components/ui/.phone-input.md +20 -22
  574. package/src/components/ui/.portal-container.md +43 -0
  575. package/src/components/ui/.progress-bar.md +40 -27
  576. package/src/components/ui/.release-changelog-section.md +32 -26
  577. package/src/components/ui/.rich-markdown-renderer.md +45 -0
  578. package/src/components/ui/.scroll-fade.md +56 -0
  579. package/src/components/ui/.search-input.md +55 -37
  580. package/src/components/ui/.select.md +25 -26
  581. package/src/components/ui/.service-card.md +25 -19
  582. package/src/components/ui/.sheet.md +21 -21
  583. package/src/components/ui/.simple-markdown-renderer.md +36 -24
  584. package/src/components/ui/.slack-channel-chip.md +49 -0
  585. package/src/components/ui/.square-avatar.md +29 -26
  586. package/src/components/ui/.stacked-rows-panel.md +61 -0
  587. package/src/components/ui/.status-badge.md +30 -24
  588. package/src/components/ui/.status-indicator.md +35 -21
  589. package/src/components/ui/.tab-content.md +34 -22
  590. package/src/components/ui/.tab-navigation.md +40 -50
  591. package/src/components/ui/.tab-selector.md +48 -31
  592. package/src/components/ui/.tabs.md +34 -21
  593. package/src/components/ui/.tag-search-input.md +20 -20
  594. package/src/components/ui/.tag-select-dropdown.md +59 -0
  595. package/src/components/ui/.tag.md +25 -43
  596. package/src/components/ui/.tags-input.md +31 -31
  597. package/src/components/ui/.textarea.md +32 -30
  598. package/src/components/ui/.ticket-attachments-list.md +36 -29
  599. package/src/components/ui/.ticket-info-section.md +37 -42
  600. package/src/components/ui/.ticket-status-config-row.md +66 -0
  601. package/src/components/ui/.ticket-status-tag.md +39 -35
  602. package/src/components/ui/.toaster.md +21 -15
  603. package/src/components/ui/.toggle.md +38 -37
  604. package/src/components/ui/.tooltip.md +16 -13
  605. package/src/components/ui/button/.button-styles.md +17 -18
  606. package/src/components/ui/button/.button.md +30 -37
  607. package/src/components/ui/button/.split-button.md +46 -23
  608. package/src/components/ui/button/button-styles.ts +13 -0
  609. package/src/components/ui/button/button.tsx +5 -0
  610. package/src/components/ui/data-table/.data-table-body.md +50 -35
  611. package/src/components/ui/data-table/.data-table-empty.md +17 -33
  612. package/src/components/ui/data-table/.data-table-header.md +43 -40
  613. package/src/components/ui/data-table/.data-table-row.md +31 -31
  614. package/src/components/ui/data-table/.types.md +23 -28
  615. package/src/components/ui/file-manager/.file-manager-breadcrumb.md +16 -24
  616. package/src/components/ui/file-manager/.file-manager-empty.md +23 -15
  617. package/src/components/ui/file-manager/.file-manager-skeleton.md +34 -36
  618. package/src/components/ui/file-manager/.file-manager-table-row.md +29 -29
  619. package/src/components/ui/file-manager/.file-manager-table.md +39 -24
  620. package/src/components/ui/no-data/.index.md +22 -0
  621. package/src/components/ui/no-data/.no-data-actions.md +29 -0
  622. package/src/components/ui/no-data/.no-data-message.md +37 -0
  623. package/src/components/ui/no-data/.no-data-styles.md +39 -0
  624. package/src/components/ui/no-data/.no-data.md +59 -0
  625. package/src/components/ui/page-actions.tsx +2 -1
  626. package/src/components/ui/query-report-table/.query-report-table-header.md +15 -15
  627. package/src/components/ui/query-report-table/.query-report-table-row.md +16 -16
  628. package/src/components/ui/query-report-table/.query-report-table.md +39 -24
  629. package/src/components/ui/table/.table-column-filter-dropdown.md +15 -9
  630. package/src/components/ui/table/.table-description-cell.md +13 -12
  631. package/src/components/ui/table/.table-empty-state.md +19 -20
  632. package/src/components/ui/table/.table-row.md +30 -20
  633. package/src/components/ui/table/.table-skeleton.md +32 -27
  634. package/src/components/ui/table/.table-timestamp-cell.md +24 -23
  635. package/src/components/ui/table/.table.md +43 -30
  636. package/src/components/ui/table/.types.md +49 -45
  637. package/src/components/ui/table/.use-table-motion.md +45 -0
  638. package/src/contexts/.chat-runtime-context.md +55 -26
  639. package/src/contexts/.endpoints-runtime-context.md +40 -44
  640. package/src/embed-shims/.next-navigation.md +38 -31
  641. package/src/hooks/.api-hooks.md +28 -21
  642. package/src/hooks/.index.md +30 -25
  643. package/src/hooks/.use-authed-image-src.md +38 -0
  644. package/src/hooks/.use-contact-submission.md +35 -36
  645. package/src/hooks/.use-humanity-signals.md +47 -0
  646. package/src/hooks/.use-near-viewport.md +30 -30
  647. package/src/hooks/.use-og-placeholder-url.md +57 -0
  648. package/src/hooks/.use-scroll-to-hash.md +46 -0
  649. package/src/hooks/.use-self-fetch.md +52 -0
  650. package/src/hooks/state/.flatten-schema.md +37 -29
  651. package/src/hooks/ui/.index.md +37 -25
  652. package/src/hooks/ui/.use-auto-limit-tags.md +55 -38
  653. package/src/hooks/ui/.use-deferred-error.md +44 -0
  654. package/src/hooks/ui/.use-focus-trap.md +59 -0
  655. package/src/hooks/ui/.use-header-height.md +37 -0
  656. package/src/hooks/ui/.use-horizontal-scrollbar.md +25 -34
  657. package/src/hooks/ui/.use-marquee-engine.md +73 -0
  658. package/src/hooks/ui/.use-notification-permission.md +49 -0
  659. package/src/hooks/ui/.use-reset-on-page-hidden.md +40 -0
  660. package/src/hooks/ui/.use-suppress-clone-focus.md +41 -0
  661. package/src/nats/.index.md +39 -0
  662. package/src/nats/.nats-provider.md +46 -0
  663. package/src/nats/.nats.md +38 -28
  664. package/src/nats/.shared-connection.md +56 -0
  665. package/src/nats/.use-nats-subscription.md +57 -0
  666. package/src/stories/.ActionsMenu.stories.md +57 -0
  667. package/src/stories/.Alert.stories.md +46 -0
  668. package/src/stories/.AnnouncementBar.stories.md +59 -32
  669. package/src/stories/.AppLayoutDrawer.stories.md +60 -0
  670. package/src/stories/.AppLayoutSidebar.stories.md +45 -0
  671. package/src/stories/.ApprovalBatchMessage.stories.md +46 -0
  672. package/src/stories/.ApprovalBatchMessageClient.stories.md +55 -0
  673. package/src/stories/.ApprovalRequestMessage.stories.md +50 -0
  674. package/src/stories/.ApprovalRequestMessageClient.stories.md +41 -0
  675. package/src/stories/.BlogCard.stories.md +52 -0
  676. package/src/stories/.Board.stories.md +25 -20
  677. package/src/stories/.Button.stories.md +35 -40
  678. package/src/stories/.CampaignCardAdmin.stories.md +38 -0
  679. package/src/stories/.CardsStrip.stories.md +39 -0
  680. package/src/stories/.CaseStudyCard.stories.md +41 -0
  681. package/src/stories/.ChatContainer.stories.md +41 -0
  682. package/src/stories/.ChatInlineVideoPill.stories.md +36 -0
  683. package/src/stories/.ChatMessageEnhanced.stories.md +51 -0
  684. package/src/stories/.ChatMingoInfoCards.stories.md +30 -0
  685. package/src/stories/.ChatTicketList.stories.md +38 -22
  686. package/src/stories/.ChatTypingIndicator.stories.md +47 -0
  687. package/src/stories/.CheckboxBlock.stories.md +34 -35
  688. package/src/stories/.ContextCompactionDisplay.stories.md +28 -0
  689. package/src/stories/.CustomerInterviewCard.stories.md +36 -0
  690. package/src/stories/.DashboardInfoCard.stories.md +40 -33
  691. package/src/stories/.DataRoomDocCard.stories.md +42 -0
  692. package/src/stories/.DataTable.stories.md +37 -32
  693. package/src/stories/.DatePicker.stories.md +34 -30
  694. package/src/stories/.EmbeddableChat.stories.md +45 -28
  695. package/src/stories/.EmptyState.stories.md +55 -0
  696. package/src/stories/.ErrorMessageDisplay.stories.md +45 -0
  697. package/src/stories/.FilterModal.stories.md +28 -22
  698. package/src/stories/.GenericEntityCard.stories.md +50 -0
  699. package/src/stories/.GitHubActivityCard.stories.md +41 -0
  700. package/src/stories/.GuideWelcome.stories.md +38 -0
  701. package/src/stories/.Header.stories.md +32 -22
  702. package/src/stories/.HubspotTicketCard.stories.md +41 -0
  703. package/src/stories/.InfoCard.stories.md +37 -26
  704. package/src/stories/.InfoCardRow.stories.md +48 -0
  705. package/src/stories/.InfoSection.stories.md +55 -0
  706. package/src/stories/.Input.stories.md +45 -35
  707. package/src/stories/.InvestorUpdateCard.stories.md +41 -0
  708. package/src/stories/.MarqueeWall.stories.md +53 -0
  709. package/src/stories/.MingoAiButton.stories.md +31 -0
  710. package/src/stories/.MingoChatModals.stories.md +47 -0
  711. package/src/stories/.MingoInfoCard.stories.md +50 -0
  712. package/src/stories/.MingoOnboardingCard.stories.md +19 -19
  713. package/src/stories/.MingoWelcome.stories.md +41 -0
  714. package/src/stories/.MobileNavPanel.stories.md +52 -0
  715. package/src/stories/.Modal.stories.md +19 -16
  716. package/src/stories/.MspOrganizationCard.stories.md +45 -0
  717. package/src/stories/.NotificationDrawer.stories.md +39 -28
  718. package/src/stories/.OSTypeBadge.stories.md +34 -25
  719. package/src/stories/.OnboardingGuideCard.stories.md +41 -0
  720. package/src/stories/.PageActions.stories.md +21 -21
  721. package/src/stories/.PageContainer.stories.md +29 -24
  722. package/src/stories/.PageLayout.stories.md +18 -35
  723. package/src/stories/.PolicyConfigurationPanel.stories.md +58 -0
  724. package/src/stories/.ProductReleaseCard.stories.md +39 -0
  725. package/src/stories/.ProgramCard.stories.md +51 -0
  726. package/src/stories/.QuickActionChip.stories.md +59 -0
  727. package/src/stories/.QuickActionMarquee.stories.md +51 -0
  728. package/src/stories/.QuickActionWall.stories.md +58 -0
  729. package/src/stories/.RoadmapCard.stories.md +41 -0
  730. package/src/stories/.ShellTypeBadge.stories.md +42 -22
  731. package/src/stories/.SlackMessageCard.stories.md +42 -0
  732. package/src/stories/.SlashCommandSuggestions.stories.md +21 -31
  733. package/src/stories/.SplitButton.stories.md +23 -25
  734. package/src/stories/.StackedRowsPanel.stories.md +65 -0
  735. package/src/stories/.TabSelector.stories.md +26 -38
  736. package/src/stories/.Tag.stories.md +32 -27
  737. package/src/stories/.ThinkingDisplay.stories.md +43 -0
  738. package/src/stories/.TicketCard.stories.md +60 -0
  739. package/src/stories/.TicketInfoSection.stories.md +28 -20
  740. package/src/stories/.TimeTracker.stories.md +35 -0
  741. package/src/stories/.Toaster.stories.md +26 -20
  742. package/src/stories/.ToolBadge.stories.md +34 -24
  743. package/src/stories/.ToolExecutionDisplay.stories.md +22 -20
  744. package/src/stories/.ToolExecutionDisplayClient.stories.md +33 -0
  745. package/src/stories/.VideoBitesStrip.stories.md +37 -0
  746. package/src/stories/.WarningBlock.stories.md +51 -0
  747. package/src/stories/__fixtures__/.chat-card-decorator.md +39 -0
  748. package/src/stories/__fixtures__/.chat-cards.md +57 -0
  749. package/src/stories/auth/.CompleteAccount.stories.md +36 -0
  750. package/src/stories/auth/.CreateOrganization.stories.md +52 -0
  751. package/src/stories/auth/.InviteLinkInvalid.stories.md +21 -0
  752. package/src/stories/auth/.Login.stories.md +32 -0
  753. package/src/stories/auth/.OpenFrameSso.stories.md +58 -0
  754. package/src/stories/auth/.PasswordReset.stories.md +49 -0
  755. package/src/styles/ods-interaction-states.css +32 -0
  756. package/src/types/.announcement.md +67 -35
  757. package/src/types/.blog.md +44 -41
  758. package/src/types/.case-study.md +31 -17
  759. package/src/types/.content-ref.md +37 -0
  760. package/src/types/.customer-interview.md +38 -38
  761. package/src/types/.doc-source.md +87 -0
  762. package/src/types/.entity-author.md +53 -0
  763. package/src/types/.entity-platform.md +40 -0
  764. package/src/types/.index.md +23 -17
  765. package/src/types/.marketing.md +32 -35
  766. package/src/types/.navigation.md +31 -19
  767. package/src/types/.os.types.md +30 -31
  768. package/src/types/.permissions.md +49 -35
  769. package/src/types/.platform.md +44 -28
  770. package/src/types/.product-release.md +59 -42
  771. package/src/types/.shell.types.md +46 -30
  772. package/src/types/.supabase.md +43 -29
  773. package/src/types/.tool.types.md +43 -23
  774. package/src/types/.video-processing.md +40 -31
  775. package/src/types/supabase.ts +80 -0
  776. package/src/types/video-processing.ts +1 -0
  777. package/src/utils/.announcement-storage.md +49 -17
  778. package/src/utils/.app-config.md +22 -18
  779. package/src/utils/.brand-marks.md +46 -0
  780. package/src/utils/.cn.md +40 -29
  781. package/src/utils/.color-analysis.md +34 -25
  782. package/src/utils/.common.md +43 -23
  783. package/src/utils/.content-href.md +64 -0
  784. package/src/utils/.content-ref-groups.md +51 -0
  785. package/src/utils/.date-utils.md +46 -35
  786. package/src/utils/.doc-path-utils.md +38 -0
  787. package/src/utils/.doc-tree-nav.md +51 -0
  788. package/src/utils/.embed-authed-fetch.md +48 -32
  789. package/src/utils/.embed-content-fetch.md +36 -0
  790. package/src/utils/.embed-url-converters.md +52 -0
  791. package/src/utils/.extract-items.md +49 -0
  792. package/src/utils/.faq-anchor.md +48 -0
  793. package/src/utils/.format.md +73 -55
  794. package/src/utils/.humanity-signals.md +59 -0
  795. package/src/utils/.index.md +73 -31
  796. package/src/utils/.list-url.md +43 -0
  797. package/src/utils/.markdown-section-extractor.md +57 -0
  798. package/src/utils/.markdown-to-plain.md +51 -0
  799. package/src/utils/.media-carousel-utils-stub.md +42 -31
  800. package/src/utils/.ods-color-utils.md +84 -43
  801. package/src/utils/.og-placeholder.md +45 -0
  802. package/src/utils/.page-header-constants.md +26 -0
  803. package/src/utils/.platform-config.md +34 -34
  804. package/src/utils/.release-badge.md +47 -0
  805. package/src/utils/.release-cover.md +45 -0
  806. package/src/utils/.same-page-hash-nav.md +45 -0
  807. package/src/utils/.scroll-into-view.md +32 -25
  808. package/src/utils/.seo-description.md +37 -0
  809. package/src/utils/.seo-title.md +25 -0
  810. package/src/utils/.social-embed-cache.md +37 -0
  811. package/src/utils/.source-icons.md +30 -34
  812. package/src/utils/.suggestion-url.md +46 -0
  813. package/src/utils/.tool-utils.md +39 -24
  814. package/src/utils/.tree-builder.md +64 -0
  815. package/src/utils/.video-bite-id.md +42 -0
  816. package/src/utils/announcement-storage.ts +9 -18
  817. package/src/utils/dev-sections/.dev-section-param-keys.md +51 -0
  818. package/src/utils/dev-sections/.openframe-dev-sections.md +40 -28
  819. package/src/utils/dismiss-cookie.ts +55 -0
  820. package/src/utils/dismissal-storage.ts +38 -0
  821. package/src/utils/index.ts +3 -0
  822. package/dist/chunk-BBUEY73L.js.map +0 -1
  823. package/dist/chunk-G3UN2DXU.cjs.map +0 -1
  824. package/dist/chunk-OWMLWJQY.cjs.map +0 -1
  825. package/dist/chunk-SASR7SK5.js.map +0 -1
  826. package/src/components/chat/utils/.onboarding-icons.md +0 -28
  827. package/src/hooks/.use-og-placeholder.md +0 -51
  828. /package/dist/{chunk-MGKCS6KS.js.map → chunk-3WCARCI4.js.map} +0 -0
  829. /package/dist/{chunk-Y3Y2DLNO.js.map → chunk-6UGYBCEN.js.map} +0 -0
  830. /package/dist/{chunk-PSPWT2Q5.js.map → chunk-7LWXWXEY.js.map} +0 -0
  831. /package/dist/{chunk-VTSRDC4W.js.map → chunk-CKC3EAYT.js.map} +0 -0
  832. /package/dist/{chunk-ZRANZNEA.js.map → chunk-JJE5TUZK.js.map} +0 -0
  833. /package/dist/{chunk-66BNAFO6.js.map → chunk-JQIUBFHL.js.map} +0 -0
  834. /package/dist/{chunk-2DIOV7BR.js.map → chunk-UPN6EFOM.js.map} +0 -0
  835. /package/dist/{chunk-4SMRQ4SN.js.map → chunk-WBL5Y4PS.js.map} +0 -0
  836. /package/dist/{chunk-FP4H6Y5O.js.map → chunk-WPYPSIY2.js.map} +0 -0
  837. /package/dist/{chunk-R5WJJL4V.js.map → chunk-X5X43HFV.js.map} +0 -0
  838. /package/dist/{chunk-DEHZ5CTC.js.map → chunk-XTWKDMCG.js.map} +0 -0
@@ -0,0 +1,51 @@
1
+ <!-- source-hash: b340dcdf795a4dde839c90b56d635b69 -->
2
+ Resolves `target` and `rel` anchor attributes for entity cards by delegating the same-tab vs. new-tab decision to the `ChatRuntime` navigation callback, eliminating the need for hub-side wrapper components.
3
+
4
+ ## Key Components
5
+
6
+ ### `useEntityCardLink(args): EntityCardLinkProps`
7
+
8
+ Primary hook that computes anchor link attributes using a two-priority resolution strategy:
9
+
10
+ 1. **Explicit override** — If `target` or `rel` props are passed directly, they win immediately. A missing `rel` is auto-paired with `'noopener noreferrer'` when `target='_blank'` to prevent tabnabbing.
11
+ 2. **Runtime decision** — Falls back to `computeIsNewTab(runtime, href, targetPlatform)`, which mirrors the click handler in `executeNavigation`, keeping the rendered anchor and the click behavior in sync. Returns `{ target: undefined, rel: undefined }` (same-tab) when no runtime is mounted.
12
+
13
+ ### Interfaces
14
+
15
+ | Interface | Purpose |
16
+ |---|---|
17
+ | `UseEntityCardLinkArgs` | Input: `href`, optional `targetPlatform`, optional explicit `target`/`rel` overrides |
18
+ | `EntityCardLinkProps` | Output: resolved `target` and `rel` values for spreading onto an anchor element |
19
+
20
+ ## Usage Example
21
+
22
+ ```typescript
23
+ import { useEntityCardLink } from './use-entity-card-link'
24
+
25
+ function BlogCard({ href, targetPlatform }: Props) {
26
+ const { target, rel } = useEntityCardLink({ href, targetPlatform })
27
+
28
+ return (
29
+ <a href={href} target={target} rel={rel}>
30
+ Read Post
31
+ </a>
32
+ )
33
+ }
34
+
35
+ // Explicit override — runtime decision skipped entirely
36
+ function ExternalCard({ href }: Props) {
37
+ const { target, rel } = useEntityCardLink({
38
+ href,
39
+ target: '_blank',
40
+ // rel auto-paired to 'noopener noreferrer'
41
+ })
42
+
43
+ return <a href={href} target={target} rel={rel}>Open</a>
44
+ }
45
+ ```
46
+
47
+ ## Notes
48
+
49
+ - Requires `HubRuntimeProvider` (or a compatible embed shim) to be mounted for runtime-derived decisions.
50
+ - Result is memoized on `[target, rel, href, targetPlatform, runtime]` — safe to call in render.
51
+ - Source: [`use-entity-card-link.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/use-entity-card-link.ts)
@@ -0,0 +1,47 @@
1
+ <!-- source-hash: 7663c5ccc0601f548ad7c5ca061e0918 -->
2
+ Thin wrapper around `useOgPlaceholderUrl` that resolves the correct OG placeholder URL for entity cards, allowing an explicit `placeholderUrl` prop to override the runtime-derived value.
3
+
4
+ ## Key Components
5
+
6
+ ### `UseEntityCardPlaceholderArgs`
7
+ Interface defining hook inputs:
8
+ - `title` — entity title used as the placeholder label
9
+ - `placeholderUrl` — explicit override; when provided (including `null`), skips runtime derivation
10
+ - `siteName` — optional site name displayed under the title
11
+ - `aspect` — output aspect ratio: `'wide'` (default, catalog cards) or `'square'` (compact chat-inline cards)
12
+
13
+ ### `useEntityCardPlaceholder`
14
+ Hook that delegates URL construction to `useOgPlaceholderUrl` but applies a priority rule: an explicitly passed `placeholderUrl` (even `null`) always wins over the derived value. Only `undefined` falls through to the runtime default.
15
+
16
+ ## Usage Example
17
+
18
+ ```typescript
19
+ // Catalog card — derive URL from title at runtime
20
+ const placeholderSrc = useEntityCardPlaceholder({
21
+ title: 'Microsoft 365 Business Premium',
22
+ siteName: 'Flamingo',
23
+ aspect: 'wide',
24
+ })
25
+
26
+ // Chat-inline card — caller pre-resolves and passes explicit URL
27
+ const placeholderSrc = useEntityCardPlaceholder({
28
+ title: 'Entity Name',
29
+ placeholderUrl: 'https://cdn.example.com/placeholder.png',
30
+ aspect: 'square',
31
+ })
32
+
33
+ // Suppress placeholder entirely (e.g. real OG image already loaded)
34
+ const placeholderSrc = useEntityCardPlaceholder({
35
+ title: 'Entity Name',
36
+ placeholderUrl: null, // returns null; runtime default skipped
37
+ })
38
+ ```
39
+
40
+ ## Priority Logic
41
+
42
+ ```text
43
+ placeholderUrl !== undefined → return placeholderUrl (string or null)
44
+ placeholderUrl === undefined → return derived URL from useOgPlaceholderUrl
45
+ ```
46
+
47
+ **Source:** [`use-entity-card-placeholder.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/use-entity-card-placeholder.ts)
@@ -0,0 +1,43 @@
1
+ <!-- source-hash: 87d21aee30c9242f0b77a2542d0ce5fa -->
2
+ Shared UI card component for rendering "What I Shipped" entries consistently across both the people-hub owner dashboard and the related-content rail, ensuring zero visual drift between surfaces.
3
+
4
+ ## Key Components
5
+
6
+ ### Interfaces
7
+
8
+ - **`WhatIShippedCardData`** — Minimal data contract the card renders; satisfied by both hub dashboard entries and hydrated related-content rows.
9
+ - **`WhatIShippedCardProps`** — Card props including `entry`, optional OG `placeholderUrl`, owner `actions`, `anchorProps` for click-through links, and `className`.
10
+
11
+ ### Exports
12
+
13
+ - **`WhatIShippedCard`** — Primary card component. Wraps `AdminContentCard` with canonical field mapping: cover image (`featured_image` → `main_video_thumbnail` fallback → OG placeholder), 140-char truncated summary, status badge, author avatar/name, and formatted reporting month. Supports two modes:
14
+ - **Dashboard mode** — pass `actions` for owner action row.
15
+ - **Related-rail mode** — pass `anchorProps` to make the entire card a clickable link. Do not combine with `actions` to avoid nested interactive elements.
16
+ - **`WhatIShippedCardSkeleton`** — Pulse-animated loading skeleton matching the card's `AdminContentCard` shape (3:2 cover + title/summary/meta lines). Used by the related-content rail during hydration to prevent layout shift.
17
+
18
+ ### Constants
19
+
20
+ - **`STATUS_BADGE_CLASS`** — Maps `published`, `draft`, and `archived` status strings to their respective ODS color tokens.
21
+
22
+ ## Usage Example
23
+
24
+ ```typescript
25
+ // Dashboard (owner actions)
26
+ <WhatIShippedCard
27
+ entry={entry}
28
+ placeholderUrl={ogPlaceholderUrl}
29
+ actions={<button onClick={handleEdit}>Edit</button>}
30
+ />
31
+
32
+ // Related-content rail (click-through link)
33
+ <WhatIShippedCard
34
+ entry={entry}
35
+ placeholderUrl={buildOgPlaceholderUrl(entry)}
36
+ anchorProps={{ href: `/shipped/${entry.id}` }}
37
+ />
38
+
39
+ // Loading state
40
+ <WhatIShippedCardSkeleton className="col-span-1" />
41
+ ```
42
+
43
+ **Source:** [`what-i-shipped-card.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/what-i-shipped-card.tsx)
@@ -1,46 +1,49 @@
1
- <!-- source-hash: d1cebe46eff04115f214c16b75a69467 -->
2
- Barrel export file for the chat hooks module, re-exporting all public hooks from their individual files into a single `'use client'` entry point.
1
+ <!-- source-hash: 31ada6e53cd71ce93d35361e48559a56 -->
2
+ Barrel export file (`'use client'`) that re-exports all React hooks from the chat hooks module, providing a single import surface for consumers.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export Group | Hooks |
7
- |---|---|
8
- | **Realtime / Streaming** | `useChunkCatchup`, `useRealtimeChunkProcessor`, `useJetstreamDialogSubscription`, `useNatsDialogSubscription` |
9
- | **UI Utilities** | `useCollapsible`, `useCloseOnNavigation`, `useChatCardItem` |
10
- | **Chat Core** | `useChat`, `useSSE`, `useChatIdentity`, `useChatAttachments`, `useChatAttachmentImageGallery`, `useSlashCommands` |
11
- | **Transport Adapters** | `useSSEChatAdapter`, `useNatsChatAdapter` |
12
- | **Unified Surface** | `useUnifiedChat` (primary), `useEmbeddedChat` (legacy SSE alias) |
13
- | **Image Proxy** | `useProxiedImageUrl` |
6
+ ### Streaming & Real-time Hooks
7
+ - **`useChunkCatchup`** — Replays missed chunks after reconnection
8
+ - **`useScriptedStream`** Drives scripted/mock streaming sequences
9
+ - **`useRealtimeChunkProcessor`** Processes incoming real-time message chunks
10
+ - **`useJetstreamDialogSubscription`** / **`useNatsDialogSubscription`** NATS/JetStream transport subscriptions
11
+ - **`useCollapsible`** Collapsible UI state management
12
+
13
+ ### Chat Core Hooks
14
+ - **`useChat`** / **`useSSE`** — Core chat and Server-Sent Events hooks (ported from hub, without `MockChatService`/`useChatConfig`)
15
+ - **`useSlashCommands`** — Slash command parsing and dispatch
16
+ - **`useEmptyStateConfig`** — Empty state configuration
17
+ - **`useChatAttachments`** / **`useChatAttachmentImageGallery`** — File attachment handling and image gallery
18
+ - **`useChatIdentity`** — Chat user/agent identity resolution
19
+ - **`useChatCardItem`** — Chat card rendering state
20
+ - **`useCloseOnNavigation`** — Dismisses dialogs/panels on route change
21
+
22
+ ### Unified Chat Surface
23
+ - **`useUnifiedChat`** — Primary public hook; selects transport by `activeMode`
24
+ - **`useSSEChatAdapter`** / **`useNatsChatAdapter`** — Transport adapters (SSE and NATS)
25
+ - **`useEmbeddedChat`** — Legacy SSE alias for embedded surfaces
26
+
27
+ ### Utilities
28
+ - **`useProxiedImageUrl`** — Resolves proxied image URLs from `ChatRuntime.endpoints`
14
29
 
15
30
  ## Usage Example
16
31
 
17
32
  ```typescript
18
- // Typical consumer — import directly from the module index
33
+ // Preferred: import everything from the barrel
19
34
  import {
20
35
  useUnifiedChat,
21
36
  useChatAttachments,
22
- useSlashCommands,
23
- } from '@flamingo/chat-hooks'
37
+ useProxiedImageUrl,
38
+ } from '@openframe/chat-hooks'
24
39
 
25
40
  function ChatPanel({ modes, activeMode }) {
26
- const chat = useUnifiedChat({ modes, activeMode })
27
- const attachments = useChatAttachments()
28
- const slashCommands = useSlashCommands()
41
+ const { messages, send } = useUnifiedChat({ modes, activeMode })
42
+ const { attachments, addAttachment } = useChatAttachments()
43
+ const proxied = useProxiedImageUrl(rawImageUrl)
29
44
 
30
- // ...
31
- }
32
-
33
- // Advanced: direct transport access
34
- import { useNatsChatAdapter } from '@flamingo/chat-hooks'
35
-
36
- function CustomTransportPanel() {
37
- const nats = useNatsChatAdapter({ /* config */ })
38
- // ...
45
+ return <ChatUI messages={messages} onSend={send} />
39
46
  }
40
47
  ```
41
48
 
42
- ## Notes
43
-
44
- - Marked `'use client'` — safe for React Server Component trees; hooks run only on the client.
45
- - `useUnifiedChat` is the recommended entry point for new consumers; `useEmbeddedChat` is the legacy SSE alias kept for backward compatibility.
46
- - `useProxiedImageUrl` reads proxy config from `ChatRuntime.endpoints`, keeping image-proxy resolution consistent between hub and embedder environments.
49
+ > **Note:** For standard usage, prefer `useUnifiedChat`. The adapter hooks (`useSSEChatAdapter`, `useNatsChatAdapter`) are exposed for advanced cases requiring direct transport access.
@@ -1,19 +1,22 @@
1
- <!-- source-hash: 4c8bb965154478fda34b9e6e30abb929 -->
2
- Fetches a fully-mapped content item for an inline chat card by reusing the same list-API endpoint as public-facing pages (`/blog`, `/podcasts`, `/roadmap`, etc.), ensuring a single source of truth for item shape and joins.
1
+ <!-- source-hash: 00398183d82e9f61b3c8434476f51469 -->
2
+ Fetches and caches a single content item for inline chat card rendering by hitting the same list-API endpoints used by public pages (`/blog`, `/case-studies`, `/podcasts`, etc.), ensuring a consistent data shape with full relational joins.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `useChatCardItem<T>(type, id)`
7
- Primary hook. Builds the list URL via `runtime.endpoints.buildListUrl`, fires a TanStack Query fetch, and returns the matched item. Deduplicated by `['chat-card-item', type, id]` query key — multiple references to the same `(type, id)` within one chat message produce a single network request. `refetchOnWindowFocus` is disabled to avoid wasteful re-fetches as the chat panel is toggled.
6
+ ### `UseChatCardItemResult<T>`
7
+ Return type interface exposing:
8
+ - `item: T | undefined` — the resolved content item
9
+ - `isLoading: boolean` — TanStack Query loading state
10
+ - `isError: boolean` — TanStack Query error state
8
11
 
9
- ### `extractItems(data)`
10
- Normalizes heterogeneous API response shapes (`{ items }`, `{ posts }`, `{ campaigns }`, `{ completed, inProgress }`, `{ data }`, or bare arrays) into a flat `unknown[]`. Single normalization point for all content types.
12
+ ### `useChatCardItem<T>(type, id)`
13
+ Primary hook. Resolves the list URL via `runtime.endpoints.buildListUrl`, fetches through `embedAuthedFetch` (preserving auth credentials), extracts the matching item, and returns the typed result.
11
14
 
12
- ### `extractItemId(type, item)`
13
- Resolves the primary key from a fetched item, handling both `id` and `external_id` fields for ClickUp-backed types (`roadmap_item`, `delivery_item`, `internal_task`).
14
-
15
- ### `UseChatCardItemResult<T>`
16
- Return type interface exposing `item`, `isLoading`, and `isError`.
15
+ **Key behaviors:**
16
+ - **Deduplication** queries are keyed by `['chat-card-item', type, id]`; multiple references to the same content in one chat message produce a single network request
17
+ - **Auth-aware fetching** — uses `embedAuthedFetch` (not bare `fetch`) to traverse the `EmbedAuthAdapter` (cookie/Bearer/401-retry), preventing blank cards behind a gateway
18
+ - **Streaming-safe caching** — `staleTime: 5min` / `gcTime: 30min` prevents skeleton flashes on every chunk as markdown re-parses during streaming assistant messages
19
+ - **No focus refetching** `refetchOnWindowFocus: false` avoids wasteful re-fetches when users toggle the chat panel
17
20
 
18
21
  ## Usage Example
19
22
 
@@ -23,17 +26,27 @@ import { useChatCardItem } from './use-chat-card-item'
23
26
  interface BlogPost {
24
27
  id: string
25
28
  title: string
26
- author: string
29
+ slug: string
30
+ author: { name: string }
27
31
  }
28
32
 
29
33
  function ChatBlogCard({ id }: { id: string }) {
30
- const { item, isLoading, isError } = useChatCardItem<BlogPost>('post', id)
34
+ const { item, isLoading, isError } = useChatCardItem<BlogPost>('blog', id)
31
35
 
32
- if (isLoading) return <Spinner />
33
- if (isError || !item) return <ErrorCard />
36
+ if (isLoading) return <CardSkeleton />
37
+ if (isError || !item) return null
34
38
 
35
- return <BlogCardPreview title={item.title} author={item.author} />
39
+ return <BlogCard post={item} />
36
40
  }
37
41
  ```
38
42
 
39
- > **Runtime dependency:** The hook reads `runtime.endpoints.buildListUrl` from `ChatRuntimeContext`. Hub environments wire the registry-driven builder directly; embedded apps supply a per-type URL builder pointing at the reverse proxy.
43
+ ## Dependencies
44
+
45
+ | Dependency | Role |
46
+ |---|---|
47
+ | `@tanstack/react-query` | Query lifecycle, deduplication, caching |
48
+ | `useRequiredChatRuntime` | Provides `buildListUrl` per content type |
49
+ | `embedAuthedFetch` | Auth-aware fetch (cookie / Bearer / retry) |
50
+ | `extractItems` / `extractItemId` | Normalizes list-API response envelope |
51
+
52
+ **Source:** [`src/.../use-chat-card-item.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/hooks/use-chat-card-item.ts)
@@ -0,0 +1,59 @@
1
+ <!-- source-hash: 18f2ec0cf9ed75af0e8e8ae198973c29 -->
2
+ Manages the dialog-history concerns for the chat panel, including archive navigation, read-only archived conversation mode, and rename/archive/restore confirmation modals — keeping `EmbeddableChat` as a thin orchestration layer.
3
+
4
+ ## Key Components
5
+
6
+ ### `UseChatDialogManagerArgs`
7
+ Input interface wiring adapter callbacks into the manager:
8
+
9
+ | Field | Type | Description |
10
+ |---|---|---|
11
+ | `dialogs` | `ReadonlyArray<DialogItem>` | Active (non-archived) dialogs |
12
+ | `activeDialogId` | `string \| null \| undefined` | Currently open dialog |
13
+ | `selectDialog` | `(id: string \| null) => void` | Opens a dialog by id |
14
+ | `clearMessages` | `() => void` | Resets active conversation |
15
+ | `renameDialog` | `(id, title) => Promise<void>` | Renames a dialog |
16
+ | `archiveDialog` | `(id) => Promise<void>` | Archives a dialog |
17
+ | `fetchArchivedDialogs` | `(params) => Promise<FetchDialogsResult>` | Optional; gates archive UI |
18
+ | `unarchiveDialog` | `(id) => Promise<void>` | Optional; gates restore UI |
19
+
20
+ ### `useChatDialogManager`
21
+ The primary hook. Returns a flat object of state and handlers consumed directly by the chat panel JSX.
22
+
23
+ **Key return groups:**
24
+
25
+ - **Archive page** — `archiveOpen`, `archivedDialogs`, `archivedCursor`, `archivedLoading`, `archivedPending`, `openArchive`, `closeArchive`, `loadArchivedPage`, `handleArchivedSelect`
26
+ - **Current-chat navigation** — `handleSelectDialog`, `isOpeningDialog`, `handleBack`, `resetToNewChat`, `activeDialog`
27
+ - **Archived conversation mode** — `isViewingArchived`
28
+ - **Action modals** — `renameTarget`, `archiveTarget`, `restoreTarget` (+ setters), `handleConfirmRename`, `handleConfirmArchive`, `handleConfirmRestore`
29
+
30
+ ## Usage Example
31
+
32
+ ```typescript
33
+ const dialogManager = useChatDialogManager({
34
+ dialogs,
35
+ activeDialogId,
36
+ selectDialog,
37
+ clearMessages,
38
+ renameDialog,
39
+ archiveDialog,
40
+ fetchArchivedDialogs,
41
+ unarchiveDialog,
42
+ })
43
+
44
+ // Open archive page
45
+ dialogManager.openArchive()
46
+
47
+ // Load next page of archived dialogs
48
+ await dialogManager.loadArchivedPage(dialogManager.archivedCursor ?? undefined)
49
+
50
+ // Trigger archive confirmation modal
51
+ dialogManager.setArchiveTarget(someDialog)
52
+ await dialogManager.handleConfirmArchive()
53
+ ```
54
+
55
+ > **Note:** `loadArchivedPage` uses a monotonic request ID (`archivedRequestIdRef`) to prevent stale responses from clobbering newer results during overlapping background refresh and pagination fetches. A 120 ms skeleton delay avoids flashing the empty state on cached/fast first-page loads.
56
+
57
+ ## Source
58
+
59
+ [`use-chat-dialog-manager.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/use-chat-dialog-manager.ts)
@@ -1,45 +1,57 @@
1
- <!-- source-hash: b3bbee124a5b530f9a19e9b047eec040 -->
2
- Fetches and surfaces the current chat session's identity tier (`authTier`, `source`, `attachmentsEnabled`, `user`) via a lightweight `useEffect`/`useState` hook no client-side cache by design.
1
+ <!-- source-hash: 733d42822ee9220c6eefe2050f96cda5 -->
2
+ Provides the `ChatIdentitySurface` capability bag (`authTier`, `source`, `attachmentsEnabled`, `user`) for the current chat session, enabling client UI elements to gate on identity tiers without requiring a chat message first.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### Interfaces
7
-
8
- - **`ChatIdentityResponse`** Wire shape mirroring the hub's `/api/auth/identity` route response. Includes `authTier` (`'session' | 'bearer-act-as' | 'anon'`), `source`, `attachmentsEnabled` (server-computed), and a nullable `user` object with optional `firstName`, `lastName`, and `avatarUrl`.
9
- - **`ChatIdentitySurface`** Extends `ChatIdentityResponse` with an `isLoading` boolean for skeleton/spinner states.
10
-
11
- ### Hook
12
-
13
- - **`useChatIdentity()`** — Reads the identity endpoint URL from `useRequiredChatRuntime()`, fires an authenticated fetch via `chatAuthedFetch`, and returns identity data merged with `isLoading`. Falls back to `ANON_DEFAULTS` on errors or non-OK responses — never throws.
14
-
15
- ### Constants
16
-
17
- - **`ANON_DEFAULTS`** — Safe fallback (`authTier: 'anon'`, `attachmentsEnabled: false`, `user: null`) used during loading and on any fetch failure.
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `ChatIdentityResponse` | Interface | Wire-shape mirroring the hub's `/api/auth/identity` response |
9
+ | `ChatIdentitySurface` | Interface | Extends `ChatIdentityResponse` with `isLoading`; never throws |
10
+ | `ChatIdentityProvider` | Component | Optional context provider that resolves identity once for an entire React subtree |
11
+ | `useChatIdentity` | Hook | Returns the `ChatIdentitySurface` bag; reads from a parent provider when present, otherwise self-fetches |
18
12
 
19
13
  ## Usage Example
20
14
 
15
+ **Standalone (self-fetching):**
16
+
21
17
  ```typescript
22
18
  import { useChatIdentity } from './use-chat-identity'
23
19
 
24
20
  function AttachmentButton() {
25
21
  const { isLoading, attachmentsEnabled, user } = useChatIdentity()
26
22
 
27
- if (isLoading) return <Spinner />
23
+ if (isLoading) return <Skeleton />
28
24
  if (!attachmentsEnabled) return null
25
+ return <button>Attach file</button>
26
+ }
27
+ ```
28
+
29
+ **Shared provider for independent React subtrees:**
30
+
31
+ ```typescript
32
+ import { ChatIdentityProvider, useChatIdentity } from './use-chat-identity'
29
33
 
34
+ // Mount once inside ChatRuntimeContext.Provider, near your embed root.
35
+ // Pass enabled={false} to defer fetching until the chat drawer opens.
36
+ function AppShell({ children }: { children: ReactNode }) {
30
37
  return (
31
- <button>
32
- Attach file {user?.firstName ? `(${user.firstName})` : ''}
33
- </button>
38
+ <ChatIdentityProvider enabled={drawerOpen}>
39
+ {children}
40
+ </ChatIdentityProvider>
34
41
  )
35
42
  }
43
+
44
+ // Any descendant — even in a separate router outlet — shares the
45
+ // single resolution instead of issuing its own request.
46
+ function TicketCenterAuthed() {
47
+ const { user } = useChatIdentity()
48
+ return <span>{user?.firstName ?? ''}</span>
49
+ }
36
50
  ```
37
51
 
38
- ## Design Notes
52
+ ## Behavior Notes
39
53
 
40
- | Concern | Decision |
41
- |---|---|
42
- | Caching | None avoids stale identity across credential rotations |
43
- | Error handling | Falls back to anon defaults; never throws |
44
- | Credential changes | Re-fetches automatically when `proxyEmail` (from `localStorage`) changes |
45
- | `attachmentsEnabled` | Computed server-side; consumers read it directly without combining fields |
54
+ - **No client-side cache.** Uses plain `useState`/`useEffect`; refetches on credential rotation (`proxyEmail` change) and never persists stale identity.
55
+ - **Always safe to render.** Failures and non-OK responses fall back to `ANON_DEFAULTS` (`authTier: 'anon'`, `attachmentsEnabled: false`, `user: null`).
56
+ - **`attachmentsEnabled` is server-computed.** Consumers must not derive it from `authTier` + `source` themselves.
57
+ - Endpoint URL is read from `useRequiredChatRuntime().endpoints.identityUrl`, allowing reverse-proxy overrides per embed.
@@ -1,53 +1,70 @@
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.
1
+ <!-- source-hash: 97d203340db2c0a0d6f8b3dc8d30c054 -->
2
+ Manages chunk buffering, deduplication, and ordered replay of NATS message chunks during dialog catchup, ensuring historical and live-streamed chunks are merged without gaps or duplicates.
3
3
 
4
4
  ## Key Components
5
5
 
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 |
6
+ ### Internal Helpers
7
+
8
+ - **`makeSeqKey(messageType, chunkType, sequenceId)`** Generates a composite key for sequence-level deduplication across message types.
9
+ - **`makeBatchDedupKey(item)`** Generates a broader deduplication key for batch processing, incorporating text, tool, and approval fields.
10
+ - **`getChatTypeMessageType(chatType)`** Maps a `ChatType` to its corresponding `NatsMessageType` (`admin-message` or `message`).
11
+
12
+ ### Hook: `useChunkCatchup`
13
+
14
+ **Parameters** (`UseChunkCatchupOptions`):
15
+
16
+ | Parameter | Description |
17
+ |---|---|
18
+ | `dialogId` | Active dialog identifier |
19
+ | `onChunkReceived` | Callback fired for each processed chunk |
20
+ | `chatTypes` | Array of chat types to fetch (default: `[CHAT_TYPE.CLIENT]`) |
21
+ | `fetchChunks` | Async function to retrieve historical chunks from the API |
22
+
23
+ **Internal Refs:**
24
+
25
+ | Ref | Purpose |
26
+ |---|---|
27
+ | `processedSequenceKeys` | Tracks already-processed sequence keys to prevent duplicates |
28
+ | `lastSequenceIdByType` | Per-`NatsMessageType` resume checkpoint (prevents cross-stream offset contamination) |
29
+ | `fetchingInProgress` | Guards against concurrent fetches |
30
+ | `pendingCatchupRef` | Queues a second catchup requested during an in-flight fetch |
31
+ | `chunkBuffer` | Buffers live NATS chunks arriving during catchup |
32
+
33
+ **Returned Callbacks** (`UseChunkCatchupReturn`):
34
+
35
+ - **`processChunk(chunk, messageType, forceProcess?)`** — Routes an incoming chunk to the buffer or directly to `onChunkReceived`, recording its sequence key.
36
+ - **`flushBufferedRealtimeChunks()`** — Drains the buffer after catchup, sorting chunks so id-less live chunks appear after sequenced history.
37
+ - **`catchUpChunks(fromSequenceId?)`** — Orchestrates the full catchup flow: fetches historical chunks per chat type using per-type checkpoints, merges with buffered live chunks, sorts, deduplicates, and processes in order up to the last complete message boundary.
24
38
 
25
39
  ## Usage Example
26
40
 
27
41
  ```typescript
28
- const {
29
- catchUpChunks,
30
- processChunk,
31
- startInitialBuffering,
32
- resetAndCatchUp,
33
- } = useChunkCatchup({
34
- dialogId: 'dialog-123',
42
+ const { processChunk, catchUpChunks } = useChunkCatchup({
43
+ dialogId: 'dialog-abc123',
35
44
  chatTypes: [CHAT_TYPE.CLIENT, CHAT_TYPE.ADMIN],
36
45
  fetchChunks: async (dialogId, chatType, fromSequenceId) => {
37
- return await api.getChunks(dialogId, chatType, fromSequenceId)
46
+ const res = await api.getChunks({ dialogId, chatType, fromSequenceId })
47
+ return res.chunks
38
48
  },
39
49
  onChunkReceived: (chunk, messageType) => {
40
- dispatch(appendChunk({ chunk, messageType }))
50
+ appendChunkToTranscript(chunk, messageType)
41
51
  },
42
52
  })
43
53
 
44
- // On dialog open: buffer live chunks while fetching history
45
- startInitialBuffering()
54
+ // Called when a live NATS message arrives
55
+ natsSubscription.on('message', (chunk, messageType) => {
56
+ processChunk(chunk, messageType)
57
+ })
58
+
59
+ // Called on dialog load or reconnect
46
60
  await catchUpChunks()
61
+ ```
62
+
63
+ ## Notes
47
64
 
48
- // On NATS message received:
49
- processChunk(incomingChunk, 'message')
65
+ - Per-type sequence tracking (`lastSequenceIdByType`) prevents a faster stream's high sequence ID from skipping chunks in a slower, independently-numbered stream (legacy Redis transport behaviour).
66
+ - Pending catchup requests are queued rather than dropped to avoid permanent transcript gaps on double-reconnect.
67
+ - Chunks without a `sequenceId` are treated as the newest live events and sorted after all sequenced history.
68
+ - Deduplication only applies to chunks carrying a `sequenceId`; id-less streaming deltas are always preserved to avoid silent content loss.
50
69
 
51
- // On reconnect: re-fetch missed chunks from last known position
52
- await resetAndCatchUp()
53
- ```
70
+ **Source:** [`use-chunk-catchup.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/use-chunk-catchup.ts)
@@ -0,0 +1,39 @@
1
+ <!-- source-hash: 36dc058eabd4b8150553ed538a51cbd3 -->
2
+ Provides the client-side hook and fetch helper for loading per-platform chat empty-state configuration (greeting, quick-action chips, RAG table IDs) in both host (SSR props) and cross-origin embed (REST fetch) scenarios.
3
+
4
+ ## Key Components
5
+
6
+ ### Interfaces
7
+
8
+ | Interface | Purpose |
9
+ |---|---|
10
+ | `EmptyStateQuickAction` | A single quick-action chip — `id`, `label`, `prompt`, plus optional icon (glyph name, URL, or props) |
11
+ | `EmptyStateIcon` | Agent identity icon resolved by `<EntityIcon>` on the empty state |
12
+ | `EmptyStateConfig` | Wire shape of `GET /api/docs/empty-state`; fields: `name`, `icon`, `greeting`, `enabledRagTableIds`, `quickActions`, `suggestedQueries` |
13
+
14
+ ### Functions
15
+
16
+ - **`fetchEmptyStateConfig(signal, emptyStateUrl)`** — Bare GET via `embedAuthedFetch`. Returns `EMPTY_STATE_FALLBACK` on any non-2xx; logs 5xx errors without surfacing toasts; re-throws `AbortError` for react-query cancellation.
17
+ - **`useEmptyStateConfig(emptyStateUrl, options?)`** — React hook wrapping the fetch in a react-query query. Keyed on `emptyStateUrl`; `staleTime`/`gcTime: Infinity` makes the result static per session. `enabled: false` skips the network call entirely and returns the fallback immediately.
18
+
19
+ ## Usage Example
20
+
21
+ ```typescript
22
+ // Embed mode — fetch config from the host's empty-state endpoint
23
+ const { config, loading, loaded } = useEmptyStateConfig(
24
+ runtime.endpoints.emptyStateUrl,
25
+ { enabled: true },
26
+ );
27
+
28
+ if (loaded) {
29
+ console.log(config.greeting); // Admin-edited greeting or null
30
+ console.log(config.quickActions); // EmptyStateQuickAction[]
31
+ console.log(config.enabledRagTableIds); // string[]
32
+ }
33
+
34
+ // Host mode — URL is undefined; skip the fetch, use SSR props instead
35
+ const { config } = useEmptyStateConfig(undefined, { enabled: false });
36
+ // config === EMPTY_STATE_FALLBACK, loaded === true immediately
37
+ ```
38
+
39
+ > **Note:** Pass `enabled: false` in host (SSR) mode where `emptyStateUrl` is unset. The hook will never fire a network request and `loaded` will be `true` immediately, so downstream components can unconditionally read `config` without a loading guard.