@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
@@ -1,37 +1,20 @@
1
- <!-- source-hash: abb044a6e8d133979dfd31cca4044960 -->
2
- Transforms raw `HistoricalMessage` arrays from GraphQL/API responses into display-ready `ProcessedMessage` objects, handling message grouping, approval state resolution, and tool call rendering.
1
+ <!-- source-hash: a4a5bd19ceba365107b95a454fcee29b -->
2
+ Converts raw `HistoricalMessage` records from GraphQL/API responses into display-ready `ProcessedMessage` arrays, grouping consecutive assistant turns, resolving approval states, and extracting escalated approvals.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `processHistoricalMessages(messages, options)`
7
- Main export. Iterates over historical messages, groups consecutive assistant turns into single display messages, and returns a `ProcessHistoricalMessagesResult` containing:
8
- - `messages` — fully rendered `ProcessedMessage[]` ready for UI consumption
9
- - `escalatedApprovals` — approvals filtered out by `displayApprovalTypes` that the consumer handles separately (e.g., admin-side approvals in a client-facing view)
6
+ ### Exports
10
7
 
11
- ### `processMessageData(data, accumulator, approvalStatuses, options, escalatedApprovals)`
12
- Internal dispatcher. Routes each `MessageData` item by `MESSAGE_TYPE` to the correct accumulator method:
8
+ - **`processHistoricalMessages(messages, options)`** — Main entry point. Iterates over historical messages, groups assistant turns using an accumulator, flushes user/system messages inline, and returns a `ProcessHistoricalMessagesResult`.
9
+ - **`ProcessHistoricalMessagesResult`** Return type containing `messages: ProcessedMessage[]` and `escalatedApprovals: Map<string, ...>`.
13
10
 
14
- | Type | Action |
15
- |---|---|
16
- | `TEXT` | `appendText` |
17
- | `THINKING` | `appendThinking` |
18
- | `EXECUTING_TOOL` / `EXECUTED_TOOL` | `addToolExecution` |
19
- | `APPROVAL_REQUEST` | Batch or legacy approval card, or escalate |
20
- | `APPROVAL_RESULT` | Resolves pending/escalated approvals |
11
+ ### Internal Functions
21
12
 
22
- ### `flushAssistantMessage()` *(internal closure)*
23
- Drains the segment accumulator into a single assistant `ProcessedMessage`. Uses the **last** message ID in the group as the React key for stable pagination behavior.
24
-
25
- ### `ProcessHistoricalMessagesResult`
26
- ```typescript
27
- export interface ProcessHistoricalMessagesResult {
28
- messages: ProcessedMessage[]
29
- escalatedApprovals: Map<
30
- string,
31
- { command: string; explanation?: string; approvalType: string; toolCalls?: PendingToolCallData[] }
32
- >
33
- }
34
- ```
13
+ - **`processMessageData(data, accumulator, approvalStatuses, options, escalatedApprovals)`** — Dispatches a single `MessageData` item to the appropriate accumulator method based on `MESSAGE_TYPE` (`TEXT`, `THINKING`, `EXECUTING_TOOL`, `EXECUTED_TOOL`, `APPROVAL_REQUEST`).
14
+ - **`flushAssistantMessage()`** — Drains the `MessageSegmentAccumulator` into a single assistant `ProcessedMessage`, using the last message ID in the group for stable React keys. Resets all grouping state unconditionally.
15
+ - **`getOwnerDisplayName(owner)`** — Resolves a human-readable sender name from a `MessageOwner` (admin full name, or `'You'` for clients).
16
+ - **`getOwnerAvatar(owner)`** — Extracts the admin's profile image URL from the owner, if present.
17
+ - **`pushStandaloneMessages(processedMessages, msg, messageDataArray)`** — Emits `SYSTEM`-type messages directly as `role: 'user'` entries with `authorType: 'system'`.
35
18
 
36
19
  ## Usage Example
37
20
 
@@ -39,19 +22,32 @@ export interface ProcessHistoricalMessagesResult {
39
22
  import { processHistoricalMessages } from './process-historical-messages'
40
23
 
41
24
  const { messages, escalatedApprovals } = processHistoricalMessages(
42
- rawMessages,
25
+ rawHistoricalMessages,
43
26
  {
44
27
  assistantName: 'Fae',
45
28
  assistantType: 'fae',
29
+ assistantAvatar: '/avatars/fae.png',
46
30
  approvalStatuses: { 'req-123': 'approved' },
47
31
  displayApprovalTypes: ['CLIENT'],
48
32
  batchApprovalsEnabled: true,
49
- onApprove: (id) => handleApprove(id),
50
- onReject: (id) => handleReject(id),
33
+ onApprove: (id) => console.log('Approved', id),
34
+ onReject: (id) => console.log('Rejected', id),
51
35
  }
52
36
  )
53
37
 
54
- // escalatedApprovals contains ADMIN-type approvals for separate rendering
38
+ // Render messages
39
+ messages.forEach((msg) => console.log(msg.role, msg.content))
40
+
41
+ // Handle approvals that require elevated review
42
+ escalatedApprovals.forEach((approval, id) => {
43
+ console.log(`Escalated: ${id}`, approval.command)
44
+ })
55
45
  ```
56
46
 
57
- > **Note on `batchApprovalsEnabled`:** Defaults to `true`. Pass `false` to unfold batch approval requests into individual legacy approval cards — useful when the consuming UI has not yet adopted the batch approval component.
47
+ ## Notes
48
+
49
+ - `displayApprovalTypes` intentionally has **no default** on the history path — omitting it displays all approval types, preserving pre-existing history semantics and avoiding silent data loss on reload.
50
+ - `batchApprovalsEnabled` defaults to `true` so consumers without the flag still receive the batch approval UI.
51
+ - `streamSeq` is propagated via `Math.max` across rows in an assistant group, ensuring accurate history-merge coverage downstream.
52
+
53
+ **Source:** [`process-historical-messages.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/process-historical-messages.ts)
@@ -0,0 +1,52 @@
1
+ <!-- source-hash: cc8f96e18729e1c4644f8e6b851866bd -->
2
+ Converts a stored `HistoricalMessage[]` into ordered `StreamFrame` playback frames that animate a chat surface identically to the live NATS/SSE stream — without requiring a network connection.
3
+
4
+ ## Key Components
5
+
6
+ ### Types
7
+
8
+ - **`StreamFrame`** — A single rendered playback step containing the partial message list, `StreamingPhase`, `typing` indicator state, and `delayMs` hold time before advancing.
9
+
10
+ ### Functions
11
+
12
+ | Function | Description |
13
+ |---|---|
14
+ | `normalizeHistoricalMessageData` | Normalizes `messageData` (single item or array) to `MessageData[]`. |
15
+ | `isHistoricalUserTurn` | Returns `true` when a message has an `owner` (user-authored); assistant turns have none. |
16
+ | `buildStreamFrames` | Core export — expands a full message list into a deterministic sequence of `StreamFrame`s. |
17
+
18
+ ### Playback Cadence Constants
19
+
20
+ | Constant | Value | Role |
21
+ |---|---|---|
22
+ | `THINK_MS` | 550 ms | Pause before assistant reply begins streaming |
23
+ | `TOKEN_MS` | 55 ms | Delay per word revealed during text streaming |
24
+ | `USER_MS` | 480 ms | Dwell after a user turn lands |
25
+ | `SEGMENT_MS` | 340 ms | Pop-in delay for tool/approval card segments |
26
+ | `POST_MS` | 240 ms | Dwell after a completed assistant turn |
27
+
28
+ ## Usage Example
29
+
30
+ ```typescript
31
+ import { buildStreamFrames } from './scripted-stream'
32
+ import type { HistoricalMessage } from '../types'
33
+
34
+ const conversation: HistoricalMessage[] = [
35
+ { owner: 'user', content: 'How do I reset a password?', messageData: null },
36
+ {
37
+ content: 'Here is how you reset a password…',
38
+ messageData: [{ type: 'TEXT', text: 'Here is how you reset a password…' }],
39
+ },
40
+ ]
41
+
42
+ const frames = buildStreamFrames(conversation)
43
+
44
+ // Drive an EmbeddableChat in previewMode, e.g. inside useScriptedStream:
45
+ frames.forEach((frame, i) => {
46
+ setTimeout(() => {
47
+ renderChat(frame.messages, frame.phase, frame.typing)
48
+ }, frames.slice(0, i).reduce((sum, f) => sum + f.delayMs, 0))
49
+ })
50
+ ```
51
+
52
+ > **Note:** Frame count for any shared message prefix is deterministic — a host that appends a continuation after an approval resumes seamlessly without rebuilding earlier frames. Pair with `useScriptedStream` for the scheduling clock.
@@ -1,54 +1,55 @@
1
- <!-- source-hash: e259d6e958fa331a13973e9d2749ffbc -->
2
- Resolves the "what does clicking this row do?" CTA contract for source rows across chat-adjacent surfaces (chips, inline cards, search results). Pure function — no DOM, no fetch, no side effects.
1
+ <!-- source-hash: 6609067763f343156daece1351c3881a -->
2
+ Resolves the call-to-action contract for a single source row determining its icon, destination URL, target platform, and Ask drill-in eligibility — for use across chat-adjacent surfaces (source chips, inline cards, search results).
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### Interfaces
7
7
 
8
- | Interface | Purpose |
9
- |---|---|
10
- | `SourceRowInput` | Row data `sourceRepo`, `documentType`, `id`, `title`, `externalUrl`, `path` |
11
- | `SourceRowContext` | Host-injected context — `baseRoute`, `chipBasePlatform`, `currentPlatform`, `tableIdForDocumentType` |
12
- | `SourceRowCTA` | Resolved contract — `icon`, `iconLabel`, `href`, `targetPlatform`, `askable`, `chatRef` |
8
+ - **`SourceRowInput`** Describes the raw row data: `sourceRepo`, `documentType`, `id`, `title`, `externalUrl`, `targetPlatform`, and `path`.
9
+ - **`SourceRowContext`** — Host-injected runtime context: `baseRoute`, `chipBasePlatform`, `currentPlatform`, `tableIdForDocumentType`, `composeContentUrl`, and `docPlatformTargets`.
10
+ - **`SourceRowCTA`** The resolved output contract: `icon`, `iconLabel`, `href`, `targetPlatform`, `askable`, and `chatRef`.
13
11
 
14
- ### Exports
12
+ ### Functions
15
13
 
16
- - **`resolveSourceRowCTA(row, ctx)`** — Primary resolver. Returns the full CTA contract for a row. Handles icon resolution, URL safety (`safeHref`), path sanitization, and Ask drill-in viability.
17
- - **`resolveSourceIcon(input, ctx)`** — Lightweight helper for surfaces that only need the icon + label (inline cards, search dropdown). Accepts `{ sourceRepo, documentType }` or a bare `string` (treated as `documentType`) for backward compatibility.
14
+ - **`resolveSourceRowCTA(row, ctx)`** — Core pure function. Derives the icon, resolves the destination URL through a priority chain, and determines Ask drill-in viability.
15
+ - **`sourceRowCtxFromRuntime(runtime, surface)`** — Convenience builder that wires a `ChatRuntime` into a `SourceRowContext`, centralizing wiring shared by all call sites.
16
+ - **`sanitizePath(path)`** — Strips unsafe characters from path strings to prevent traversal or query-string injection.
18
17
 
19
- ### Internal Helpers
18
+ ### Constants
20
19
 
21
- - **`sanitizePath(path)`** — Strips non-alphanumeric characters except `/`, `-`, `.`, `_` to prevent path traversal or query injection.
22
- - **`shouldFallbackToPathNav(row)`** — Limits in-app path fallback to `markdown` and `data_room_doc` document types only.
23
- - **`pickSourceIcon(sourceRepo, documentType)`** — Maps `sourceRepo` → icon name → React component via `SOURCE_ICON_NAMES` + `ICON_REGISTRY`; falls back to `FileText`.
20
+ - **`DOC_TABLE_TYPES`** — `['markdown', 'data_room_doc']` the document types that resolve via path-based navigation rather than requiring an `externalUrl`.
24
21
 
25
22
  ## Usage Example
26
23
 
27
24
  ```typescript
28
- import { resolveSourceRowCTA, resolveSourceIcon } from './source-row-cta'
25
+ import { resolveSourceRowCTA, sourceRowCtxFromRuntime } from './source-row-cta'
26
+
27
+ const ctx = sourceRowCtxFromRuntime(
28
+ {
29
+ source: 'flamingo',
30
+ composeContentUrl: runtime.composeContentUrl,
31
+ docPlatformTargets: runtime.docPlatformTargets,
32
+ },
33
+ { baseRoute: '/knowledge-base', chipBasePlatform: 'flamingo' },
34
+ )
29
35
 
30
- // Full CTA resolution for a chip or search result
31
36
  const cta = resolveSourceRowCTA(
32
37
  {
33
38
  sourceRepo: 'blog-posts',
34
39
  documentType: 'blog_post',
35
- id: 'post-42',
36
- title: 'Series A Playbook',
37
- externalUrl: 'https://example.com/posts/42',
38
- targetPlatform: 'hub',
39
- },
40
- {
41
- baseRoute: '/knowledge-base',
42
- currentPlatform: 'hub',
43
- tableIdForDocumentType: (type) => type === 'blog_post' ? 'blog-posts' : null,
40
+ id: 'abc-123',
41
+ title: 'How we built OpenFrame',
42
+ externalUrl: 'https://flamingo.run/blog/abc-123',
44
43
  },
44
+ ctx,
45
45
  )
46
- // cta.href → 'https://example.com/posts/42' (safeHref-validated)
47
- // cta.askable → true
48
- // cta.chatRef → { type: 'blog_post', sourceRepo: 'blog-posts', id: 'post-42', ... }
49
46
 
50
- // Icon-only resolution for an inline card tracking strip
51
- const { Icon, label } = resolveSourceIcon({ documentType: 'cap_table' }, { tableIdForDocumentType })
47
+ // cta.href → sanitized destination URL
48
+ // cta.icon → React icon component
49
+ // cta.askable → true (has id + documentType)
50
+ // cta.chatRef → pre-built ChatRef for the Ask handler
52
51
  ```
53
52
 
54
- > `href` is always `safeHref()`-sanitized a hostile RAG row cannot inject `javascript:` or `data:` URIs into the DOM. Ask drill-in (`askable`) requires both a non-empty `id` and a `documentType`.
53
+ **URL resolution priority (doc rows):** `docPlatformTargets[documentType]` `chipBasePlatform` `baseRoute` `null`. All final hrefs pass through `safeHref()` to block `javascript:` / `data:` injection.
54
+
55
+ **Source:** [`source-row-cta.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/source-row-cta.ts)
@@ -1,22 +1,23 @@
1
- <!-- source-hash: 6aecca2e05a8c612241168939fffcf70 -->
2
- Utility helpers for resolving, formatting, and rendering tool call data — titles, argument values, and execution results — used across approval and execution UI cards.
1
+ <!-- source-hash: 39498ad7a2e0f9d7ad0f6c8c114b7a36 -->
2
+ Utility module for extracting, formatting, and rendering tool call metadata — titles, command bodies, argument values, and execution results — in a human-readable form for approval and execution cards.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### Constants
7
- - **`COMMAND_BODY_ARG_KEYS`** — Ordered list of argument keys (`command`, `query`, `script`, `scriptContent`, `code`) checked when resolving a tool call's display title.
7
+
8
+ - **`COMMAND_BODY_ARG_KEYS`** — Ordered list of argument keys (`command`, `query`, `script`, `scriptContent`, `code`) used to locate the primary command body in a tool call's argument map.
8
9
 
9
10
  ### Functions
10
11
 
11
- | Function | Description |
12
- |---|---|
13
- | `getToolCallTitle(opts)` | Resolves a human-readable title from args, title, or name shape-agnostic for both approval and execution cards. |
14
- | `getCommandText(call)` | Thin adapter over `getToolCallTitle` for `PendingToolCallData`. |
15
- | `expandedJsonStringify(value)` | Pretty-prints JSON with real newlines for multi-line strings instead of escaped `\n` sequences. |
16
- | `formatToolArgValue(value)` | Determines inline vs. block rendering for a single tool argument value. |
17
- | `formatToolResult(value)` | Determines inline vs. block rendering for a tool execution result, stripping markdown code fences if present. |
12
+ - **`getToolCallTitle(opts)`** Resolves a human-readable title for a tool call. Falls through `COMMAND_BODY_ARG_KEYS` → `title` → `name` → `'Tool call'`. Shape-agnostic; works for both `PendingToolCallData` and `ToolExecutionData`.
13
+ - **`getCommandText(call)`** — Thin adapter over `getToolCallTitle` for `PendingToolCallData` objects.
14
+ - **`getCommandBody(args)`** Returns only the raw command body (first `COMMAND_BODY_ARG_KEYS` match), with no fallback. Used by the Fae client card's expanded view.
15
+ - **`expandedJsonStringify(value)`** Pretty-prints JSON with real newlines instead of escaped `\n` sequences in multi-line strings. Optimised for human readability, not re-parsing.
16
+ - **`formatToolArgValue(value)`** Determines render mode for a single argument value: JSON block, text block, or inline string.
17
+ - **`formatToolResult(value)`** Determines render mode for a tool execution result. Strips markdown code fences, then applies the same JSON/block/inline logic as `formatToolArgValue`.
18
18
 
19
19
  ### Types
20
+
20
21
  - **`FormattedArgValue`** — Discriminated union: `{ kind: 'inline'; text: string }` or `{ kind: 'block'; text: string; language: 'json' | 'text' }`.
21
22
 
22
23
  ## Usage Example
@@ -24,19 +25,26 @@ Utility helpers for resolving, formatting, and rendering tool call data — titl
24
25
  ```typescript
25
26
  import {
26
27
  getCommandText,
28
+ getCommandBody,
27
29
  formatToolArgValue,
28
30
  formatToolResult,
29
31
  } from './tool-call-helpers'
30
32
 
31
- // Resolve display title from a pending tool call
32
- const title = getCommandText(pendingCall)
33
- // → e.g. "Get-Process | Where-Object CPU -gt 50"
33
+ // Resolve display title for an approval card
34
+ const title = getCommandText({
35
+ toolName: 'bash',
36
+ toolTitle: null,
37
+ toolCallArguments: { command: 'ls -la /var/log' },
38
+ })
39
+ // → 'ls -la /var/log'
34
40
 
35
41
  // Render an argument value
36
- const rendered = formatToolArgValue({ host: 'server-01', port: 22 })
37
- // → { kind: 'block', text: '{\n "host": "server-01",\n "port": 22\n}', language: 'json' }
42
+ const formatted = formatToolArgValue('{"key": "value\nwith newline"}')
43
+ // → { kind: 'block', text: '...', language: 'json' }
38
44
 
39
45
  // Render a tool execution result (strips fences, detects JSON)
40
- const result = formatToolResult('```json\n{"status":"ok"}\n```')
46
+ const result = formatToolResult('```bash\n{"status": "ok"}\n```')
41
47
  // → { kind: 'block', text: '{\n "status": "ok"\n}', language: 'json' }
42
- ```
48
+ ```
49
+
50
+ **Source:** [`tool-call-helpers.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/tool-call-helpers.ts)
@@ -1,25 +1,23 @@
1
- <!-- source-hash: e6e63274e2215026ef420402aa7a9e8f -->
2
- A self-contained, reusable contact form component that supports both standard contact submission and custom ticket-creation flows via configurable props. It handles field visibility toggling, attachment staging, Zod validation, and dual submit paths (built-in API vs. caller-provided handler).
1
+ <!-- source-hash: b966a03234b6e0b13e69b8aed2a51f90 -->
2
+ Canonical contact form component supporting both public contact flows and internal ticket creation. Accepts configurable field visibility, custom submit handlers, file attachments, and bot-protection signals, making a single form reusable across multiple surfaces without forking.
3
3
 
4
4
  ## Key Components
5
5
 
6
- **Exported Types**
7
- - `ContactFormHideableField` — Union type of the six fields that can be suppressed from the UI (`name`, `email`, `companySize`, `referralSource`, `helpCategory`, `message`)
8
- - `ContactFormProps` Full prop interface covering attribution, pre-fill, layout, submission, and slot customization
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `ContactForm` | Component | Main form component with all contact/ticket functionality |
9
+ | `ContactFormProps` | Interface | Full prop surface for customization and embedding |
10
+ | `ContactFormHideableField` | Type | Union of field keys that can be suppressed from rendering |
9
11
 
10
- **Main Export**
11
- - `ContactForm` — The primary form component
12
-
13
- **Internal Hooks Used**
14
- - `useForm` (react-hook-form) + `zodResolver` against `ContactSchema`
15
- - `useContactSubmission` — built-in `/api/contact` submit path with toast + redirect
16
- - `useChatAttachments` — file staging shared with the chat composer
17
- - `useState` — tracks in-flight state for the custom submit path
12
+ **Internal hooks used:**
13
+ - `useContactSubmission` — built-in `/api/contact` submit flow (toast + redirect)
14
+ - `useHumanitySignals` — honeypot + timing bot-protection signals
15
+ - `useChatAttachments` — file staging using the same primitives as the chat composer
18
16
 
19
17
  ## Usage Example
20
18
 
21
19
  ```typescript
22
- // Standard contact page — built-in submit flow
20
+ // Basic contact page usage
23
21
  <ContactForm
24
22
  userId={user?.id}
25
23
  helpCategoryOptions={appConfig.contact.contactReasons}
@@ -27,12 +25,13 @@ A self-contained, reusable contact form component that supports both standard co
27
25
  onSubmitSuccess={clearStoredRedditClickId}
28
26
  />
29
27
 
30
- // Ticket creation — custom submit, hidden fields, extra Subject input
28
+ // Ticket creation surface hides name/email, adds Subject field,
29
+ // uses a custom submit handler
31
30
  <ContactForm
32
- hideFields={['name', 'email', 'companySize', 'referralSource', 'helpCategory']}
33
- defaultValues={{ name: user.name, email: user.email, helpCategory: 'Support' }}
34
- attachmentsEnabled
31
+ hideFields={['name', 'email', 'companySize', 'referralSource']}
32
+ defaultValues={{ name: user.name, email: user.email }}
35
33
  extraTopField={<SubjectInput value={subject} onChange={setSubject} />}
34
+ attachmentsEnabled
36
35
  submitLabel="Open ticket"
37
36
  onCustomSubmit={async (data, attachments) => {
38
37
  await actions.submitTicket({ ...data, subject, attachments })
@@ -40,4 +39,10 @@ A self-contained, reusable contact form component that supports both standard co
40
39
  />
41
40
  ```
42
41
 
43
- > **Note:** When hiding `name`, `email`, or `helpCategory`, you **must** supply their values via `defaultValues` — Zod still validates them even when the fields are not rendered. Hidden `<input type="hidden">` elements ensure react-hook-form includes them in the submit payload.
42
+ ## Notes
43
+
44
+ - `defaultValues` is **required** when hiding `name`, `email`, or `helpCategory` — Zod still validates hidden fields; missing values cause a silent submit block (a `console.warn` logs the offending fields in DevTools).
45
+ - `onCustomSubmit` bypasses the built-in toast/redirect chain entirely; the caller owns all success/error UX.
46
+ - `attachmentsEnabled` must be `true` to render the file picker; otherwise `attachments` passed to `onCustomSubmit` is always `[]`.
47
+
48
+ **Source:** [`contact-form.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/contact-form.tsx)
@@ -0,0 +1,49 @@
1
+ <!-- source-hash: 64fe296f0d441160ca77beb4bd1eaaca -->
2
+ React context that bridges `useDocumentTree` viewer instances to `GlobalAskAI` components, enabling programmatic document navigation without global events or URL parsing.
3
+
4
+ ## Key Components
5
+
6
+ ### `DocNavigator` (interface)
7
+ Represents a mounted document viewer with three members:
8
+ - `baseRoute` — the URL prefix this navigator owns (e.g., `'/knowledge-base'`)
9
+ - `findNodeByPath(path)` — looks up a `DocNode` by storage path
10
+ - `selectNode(node)` — triggers navigation as if the user clicked a sidebar item
11
+
12
+ ### `DocNavigationProvider`
13
+ Context provider that maintains a `Map<baseRoute, DocNavigator>`. Supports multiple concurrent navigators (dual-pane, nested viewers) with longest-prefix matching to route navigation calls to the correct owner.
14
+
15
+ ### `useDocNavigation()` (hook)
16
+ Returns the context value with three methods:
17
+ - `register(nav)` — registers a navigator; returns a StrictMode-safe cleanup function
18
+ - `navigate(path)` — resolves the owning navigator and selects the node; returns `true` if handled
19
+ - `isAvailable()` — returns `true` if at least one navigator is mounted
20
+
21
+ ## Usage Example
22
+
23
+ ```typescript
24
+ // In a document viewer component
25
+ import { useDocNavigation } from './doc-navigation-context'
26
+
27
+ function DocViewer({ baseRoute }: { baseRoute: string }) {
28
+ const { register } = useDocNavigation()
29
+
30
+ useEffect(() => {
31
+ const cleanup = register({
32
+ baseRoute,
33
+ findNodeByPath: (path) => tree.find(path) ?? null,
34
+ selectNode: (node) => setActiveNode(node),
35
+ })
36
+ return cleanup
37
+ }, [baseRoute, register])
38
+ }
39
+
40
+ // In GlobalAskAI — navigate to a cited document
41
+ function AskAI() {
42
+ const { navigate, isAvailable } = useDocNavigation()
43
+
44
+ const handleCitationClick = (storagePath: string) => {
45
+ const handled = navigate(storagePath)
46
+ if (!handled) window.open(storagePath, '_blank')
47
+ }
48
+ }
49
+ ```
@@ -0,0 +1,64 @@
1
+ <!-- source-hash: cf4c252821dd0aa2c926e8dce8077256 -->
2
+ Renders a full-featured documentation viewer with a collapsible sidebar navigation, AI-powered search, sticky section navigation, and pluggable content/skeleton renderers for markdown and embed document types.
3
+
4
+ ## Key Components
5
+
6
+ ### Exports
7
+
8
+ - **`DocViewer`** — Main component wrapping `DocViewerContent`; accepts `DocViewerProps` and wires document tree state, scroll spy, link resolution, and search into a `PageLayout` shell
9
+ - **`DEFAULT_DOC_VIEWER_PALETTE`** — Shared ODS color token map for the viewer chrome (background, text, border, card); intentionally uniform across knowledge-base and data-room surfaces
10
+
11
+ ### Props (`DocViewerProps`)
12
+
13
+ | Prop | Type | Description |
14
+ |---|---|---|
15
+ | `sourceId` | `DocSourceId` | Registry source identifier, threaded into API calls and link resolution |
16
+ | `renderContent` | `fn` | Caller-supplied renderer for doc body (markdown, PDF, Figma, Sheets, etc.) |
17
+ | `renderSkeleton` | `fn` | Returns a typed loading skeleton based on `documentType` |
18
+ | `chatSource` | `string` | Server-side platform identifier for RAG search; never pass user input |
19
+ | `baseRoute` | `string` | Root path for URL navigation |
20
+ | `shell` | `boolean` | When `false`, omits the `<main>` wrapper if the host layout already provides it |
21
+ | `structureEndpoint` | `string?` | Override for doc tree API (defaults to `/api/docs/sources/${sourceId}/structure`) |
22
+ | `contentEndpoint` | `string?` | Override for doc content API |
23
+ | `searchEndpoint` | `string?` | Override for RAG search endpoint |
24
+ | `resolveLinkEndpoint` | `string?` | Override for internal link resolver (prop → runtime → `/api/docs/resolve-link`) |
25
+ | `backButton` | `object \| false` | Back-button config; pass `false` to hide |
26
+
27
+ ### Internal Hooks
28
+
29
+ - **`useDocumentTree`** — Fetches structure + content, manages `selectedPath`, `expandedNodes`, navigation
30
+ - **`useScrollSpy`** — Tracks active section for sticky nav highlighting
31
+ - **`useDocNavigation`** — Context-based in-page navigation
32
+ - **`useDocsResolveLink`** — Async internal link resolver pipeline
33
+ - **`useDocSearch`** — RAG search bar state and navigation callbacks
34
+
35
+ ## Usage Example
36
+
37
+ ```typescript
38
+ import { DocViewer } from "@openframe/lib"
39
+ import { renderDocContent } from "./my-renderer"
40
+ import { renderDocSkeleton } from "./my-skeleton"
41
+
42
+ export default function DocsPage({ params }: { params: { path: string[] } }) {
43
+ return (
44
+ <DocViewer
45
+ sourceId="openframe-docs"
46
+ chatSource="hub"
47
+ baseRoute="/docs"
48
+ docPath={params.path?.join("/")}
49
+ title="Documentation"
50
+ sidebarLabel="DOCUMENTATION"
51
+ showAIChat
52
+ renderContent={(content, handlers) =>
53
+ renderDocContent(content, handlers)
54
+ }
55
+ renderSkeleton={(documentType) =>
56
+ renderDocSkeleton(documentType)
57
+ }
58
+ backButton={{ label: "Back to home", href: "/" }}
59
+ />
60
+ )
61
+ }
62
+ ```
63
+
64
+ **Source:** [`doc-viewer.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/doc-viewer.tsx)
@@ -0,0 +1,49 @@
1
+ <!-- source-hash: d5476a1b465d54af10c5d777aa9edbff -->
2
+ Embeddable docs-hub page component that wires `<DocViewer>` with sensible per-document-type rendering defaults, reducing consumer setup to a single required prop (`documentTypeRenderers.markdown`).
3
+
4
+ ## Key Components
5
+
6
+ ### `DocsHubPage` (default export)
7
+ The primary component. Accepts a renderer map and delegates to `<DocViewer>` after merging consumer-supplied renderers with built-in defaults for `pdf`, `google_sheet`, `figma`, and `file` types.
8
+
9
+ ### `DocumentTypeRenderers`
10
+ A type-safe renderer map. `markdown` is **required**; all other document types are optional overrides. The library intentionally omits a default markdown renderer to let consumers choose their own sanitization strategy and avoid XSS exposure.
11
+
12
+ ### Default renderers
13
+ | Type | Default behavior |
14
+ |---|---|
15
+ | `pdf` | `<PdfViewer>` if `fileUrl` exists, else unsupported message |
16
+ | `google_sheet` | `<GoogleSheetsViewer>` if `externalUrl` exists, else unsupported message |
17
+ | `figma` | `<FigmaEmbed>` if `externalUrl` exists, else unsupported message |
18
+ | `file` | `<FileDownloadCard>` (handles missing URL internally) |
19
+ | unknown | Centered "Unsupported document type" text panel |
20
+
21
+ ### `defaultRenderSkeleton`
22
+ Picks `<MarkdownSkeleton>` for markdown/undefined types and `<EmbedSkeleton>` (shape-aware) for all embed types.
23
+
24
+ ## Usage Example
25
+
26
+ ```typescript
27
+ import { DocsHubPage } from './docs-hub-page'
28
+ import ReactMarkdown from 'react-markdown'
29
+
30
+ export function KnowledgeBasePage() {
31
+ return (
32
+ <DocsHubPage
33
+ title="Knowledge Base"
34
+ sidebarLabel="DOCUMENTATION"
35
+ // markdown renderer is required — consumer owns sanitization
36
+ documentTypeRenderers={{
37
+ markdown: (content) => (
38
+ <ReactMarkdown>{content.markdownBody ?? ''}</ReactMarkdown>
39
+ ),
40
+ // override only when you need custom props, e.g.:
41
+ // pdf: (content) => <PdfViewer src={content.fileUrl} showToolbar />,
42
+ }}
43
+ showAIChat={true}
44
+ />
45
+ )
46
+ }
47
+ ```
48
+
49
+ > **Note:** This component is client-side only (`'use client'`). For SEO, the host application is responsible for server-side rendering. See `docs/EMBEDDING_DOCS_HUB.md` for full embedder setup.
@@ -0,0 +1,51 @@
1
+ <!-- source-hash: 9d7bd787c09286e0b64acbaa1eea4ea0 -->
2
+ Public API barrel file for the documentation viewer feature, re-exporting all components, hooks, context providers, and TypeScript types needed to build and integrate a documentation hub UI.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Source | Description |
7
+ |---|---|---|
8
+ | `DocViewer` | `./doc-viewer` | Core document rendering component |
9
+ | `DocsHubPage` | `./docs-hub-page` | Full documentation hub page layout |
10
+ | `MarkdownSkeleton`, `EmbedSkeleton` | `./skeletons` | Loading skeleton components |
11
+ | `useDocumentTree` | `./use-document-tree` | Hook for fetching/managing document tree structure |
12
+ | `useScrollSpy` | `./use-scroll-spy` | Hook for tracking scroll position within docs |
13
+ | `DocNavigationProvider`, `useDocNavigation` | `./doc-navigation-context` | Context provider and hook for doc navigation state |
14
+
15
+ ### Re-exported Types
16
+
17
+ Types from `../../types/doc-source` define the API contract for the `/api/docs/sources/[sourceId]/{structure,content}` and `/api/docs/resolve-link` endpoints:
18
+
19
+ - `DocNode`, `DocContent`, `DocSourceId`, `DocumentType` — doc source data shapes
20
+ - `DocRenderHandlers`, `ResolveLinkResult` — renderer and link resolution interfaces
21
+
22
+ ## Usage Example
23
+
24
+ ```typescript
25
+ import {
26
+ DocsHubPage,
27
+ useDocumentTree,
28
+ DocNavigationProvider,
29
+ type DocumentTypeRenderers,
30
+ type DocNode,
31
+ } from '@/features/docs'
32
+
33
+ const renderers: DocumentTypeRenderers = {
34
+ markdown: (content) => <MarkdownRenderer content={content} />,
35
+ }
36
+
37
+ export default function DocsLayout() {
38
+ return (
39
+ <DocNavigationProvider>
40
+ <DocsHubPage sourceId="my-source" renderers={renderers} />
41
+ </DocNavigationProvider>
42
+ )
43
+ }
44
+ ```
45
+
46
+ ## Notes
47
+
48
+ - Marked `"use client"` — all exports are React Client Components or client-side hooks.
49
+ - Consumers implementing a custom doc source must satisfy the API contract types (`DocNode`, `DocContent`, etc.) exported from this file.
50
+
51
+ **Source:** [`index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/index.ts)
@@ -0,0 +1,47 @@
1
+ <!-- source-hash: 8ab264cb863c4be18bbbf4b0df822e4c -->
2
+ Animated loading skeleton components for the DocsHub document viewer, providing layout-matched placeholders while document content loads.
3
+
4
+ ## Key Components
5
+
6
+ ### `MarkdownSkeleton`
7
+
8
+ A text-style skeleton that mimics a rendered markdown article layout — paragraphs of pulsing bars, a heading bar, and two card-style callout blocks. Used by `<DocsHubPage>` as the default skeleton for `markdown` and unknown document types.
9
+
10
+ ### `EmbedSkeleton`
11
+
12
+ A document-type-aware skeleton for iframe-based viewers (`pdf`, `google_sheet`, `figma`, `file`). Matches the header button count and body layout of the actual viewer to minimize layout shift on load.
13
+
14
+ **`EmbedSkeletonProps`**
15
+
16
+ | Prop | Type | Description |
17
+ |---|---|---|
18
+ | `documentType` | `'pdf' \| 'google_sheet' \| 'figma' \| 'file' \| string` | Controls header button count and card layout |
19
+
20
+ **Layout by `documentType`:**
21
+
22
+ | Value | Layout |
23
+ |---|---|
24
+ | `pdf` | Header + icon/title + **two** buttons (Preview, Download) + iframe body |
25
+ | `google_sheet` / `figma` | Header + icon/title + **one** button + iframe body |
26
+ | `file` | Centered `FileDownloadCard`-style bordered card (icon, name, download button) |
27
+ | `undefined` / other | Generic one-button header + iframe body |
28
+
29
+ > **Note:** Bars use `bg-ods-border` intentionally — `--ods-skeleton` resolves to transparent in this build, which would leave large surfaces visually empty.
30
+
31
+ ## Usage Example
32
+
33
+ ```typescript
34
+ import { MarkdownSkeleton, EmbedSkeleton } from './skeletons'
35
+
36
+ // Default markdown loading state
37
+ <MarkdownSkeleton />
38
+
39
+ // PDF viewer loading state (two-button header)
40
+ <EmbedSkeleton documentType="pdf" />
41
+
42
+ // File download card loading state
43
+ <EmbedSkeleton documentType="file" />
44
+
45
+ // Embedders can override entirely via renderSkeleton prop on DocsHubPage
46
+ <DocsHubPage renderSkeleton={() => <MyCustomSkeleton />} />
47
+ ```