@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,61 @@
1
+ <!-- source-hash: 62535b1bf504403e5b6ae70e45a0f7f7 -->
2
+ Provides a React hook that resolves relative links inside doc bodies by POSTing to a configurable endpoint, returning a `ResolveLinkResult` envelope with graceful error handling.
3
+
4
+ ## Key Components
5
+
6
+ ### `useDocsResolveLink(sourceId, resolveLinkEndpoint?)`
7
+
8
+ A memoized callback hook that resolves relative hrefs found in doc content to their full navigable targets.
9
+
10
+ **Parameters:**
11
+ - `sourceId` — identifies the doc source sent in the request body
12
+ - `resolveLinkEndpoint` *(optional)* — per-instance endpoint override; falls back to `ChatRuntime.endpoints.docsResolveLinkUrl`, then `'/api/docs/resolve-link'`
13
+
14
+ **Endpoint resolution chain:**
15
+
16
+ ```text
17
+ resolveLinkEndpoint prop
18
+ ?? ChatRuntimeProvider endpoints.docsResolveLinkUrl
19
+ ?? '/api/docs/resolve-link'
20
+ ```
21
+
22
+ **Returned callback signature:**
23
+
24
+ ```typescript
25
+ (href: string, currentPath: string) => Promise<ResolveLinkResult>
26
+ ```
27
+
28
+ Returns `{ success: false, error }` on HTTP errors or network failures (DNS, CORS, offline), so callers never receive an unhandled rejection.
29
+
30
+ ## Usage Example
31
+
32
+ ```typescript
33
+ import { useDocsResolveLink } from './use-docs-resolve-link'
34
+
35
+ function DocLinkRenderer({ sourceId }: { sourceId: string }) {
36
+ const resolveLink = useDocsResolveLink(sourceId)
37
+
38
+ const handleLinkClick = async (href: string, currentPath: string) => {
39
+ const result = await resolveLink(href, currentPath)
40
+
41
+ if (!result.success) {
42
+ console.warn('Link resolution failed:', result.error)
43
+ return // render broken-link badge
44
+ }
45
+
46
+ // navigate to result.url or open preview
47
+ }
48
+ }
49
+ ```
50
+
51
+ With a custom endpoint override (per-instance configuration):
52
+
53
+ ```typescript
54
+ const resolveLink = useDocsResolveLink(sourceId, '/api/custom/resolve-link')
55
+ ```
56
+
57
+ ## Notes
58
+
59
+ - Re-memoized only when `sourceId` or the resolved endpoint changes (`useCallback` deps)
60
+ - Non-JSON and non-`ok` responses are normalized to `{ success: false, error }` — no uncaught rejections reach the markdown renderer's click handler
61
+ - Source: [`use-docs-resolve-link.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/use-docs-resolve-link.ts)
@@ -0,0 +1,83 @@
1
+ <!-- source-hash: 27cc9c9902e1357e6b671ff69f6e9cc5 -->
2
+ Manages document tree navigation state, content fetching, and sidebar expansion for `DocViewer` components across all doc-source consumers.
3
+
4
+ ## Key Components
5
+
6
+ ### `useDocumentTree(config, initialPath?)`
7
+ Primary hook that orchestrates structure and content loading in parallel, handles URL synchronization, and manages sidebar tree expansion state.
8
+
9
+ **Config options (`UseDocumentTreeConfig`):**
10
+
11
+ | Property | Type | Description |
12
+ |---|---|---|
13
+ | `structureEndpoint` | `string` | API endpoint for the document tree structure |
14
+ | `contentEndpoint` | `string` | API endpoint for document content |
15
+ | `baseRoute` | `string` | Base URL path (e.g., `'/knowledge-base'`) |
16
+ | `folderIndexFile` | `string?` | Folder index filename (defaults to `'README.md'`) |
17
+
18
+ **Returns:**
19
+
20
+ | State | Type | Description |
21
+ |---|---|---|
22
+ | `structure` | `DocNode[]` | Full document tree |
23
+ | `selectedPath` | `string` | Currently active document path |
24
+ | `content` | `DocContent \| null` | Fetched document content |
25
+ | `isLoadingStructure` | `boolean` | Structure fetch in progress |
26
+ | `isLoadingContent` | `boolean` | Content fetch in progress |
27
+ | `error` | `string \| null` | Error message if fetch failed |
28
+ | `expandedNodes` | `Set<string>` | IDs of expanded sidebar nodes |
29
+
30
+ ### `findFirstDocPath(folder)`
31
+ Internal helper. Depth-first search for the first non-Mermaid file in a folder. Used to auto-display content for folders without a README.
32
+
33
+ ### `scrollToContent()`
34
+ Internal helper. Scrolls the `<article>` element (or document root as fallback) into view after navigation, accounting for the hub header offset.
35
+
36
+ ## Usage Example
37
+
38
+ ```typescript
39
+ import { useDocumentTree } from './use-document-tree'
40
+
41
+ function KnowledgeBaseViewer({ slug }: { slug?: string }) {
42
+ const {
43
+ structure,
44
+ selectedPath,
45
+ content,
46
+ isLoadingStructure,
47
+ isLoadingContent,
48
+ error,
49
+ expandedNodes,
50
+ } = useDocumentTree(
51
+ {
52
+ structureEndpoint: '/api/kb/structure',
53
+ contentEndpoint: '/api/kb/content',
54
+ baseRoute: '/knowledge-base',
55
+ folderIndexFile: 'README.md',
56
+ },
57
+ slug,
58
+ )
59
+
60
+ if (isLoadingStructure) return <Skeleton />
61
+ if (error) return <ErrorMessage message={error} />
62
+
63
+ return (
64
+ <DocViewer
65
+ structure={structure}
66
+ selectedPath={selectedPath}
67
+ content={content}
68
+ expandedNodes={expandedNodes}
69
+ isLoadingContent={isLoadingContent}
70
+ />
71
+ )
72
+ }
73
+ ```
74
+
75
+ ## Navigation Behavior
76
+
77
+ - **Parallel fetches:** Structure and a speculative content fetch fire simultaneously on mount to minimize time-to-first-content.
78
+ - **No-README folders:** Auto-selects the first child document via `findFirstDocPath`; the sidebar remains the directory browser.
79
+ - **Browser back/forward:** Synced via `popstate` listener.
80
+ - **Client-side router navigation:** Synced via `cleanInitialPath` prop change (covers `history.pushState` which does not fire `popstate`).
81
+ - **Stale fetch guard:** A `lastFetchedPath` ref prevents late in-flight responses from overwriting newer content.
82
+
83
+ **Source:** [`use-document-tree.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/use-document-tree.ts)
@@ -0,0 +1,58 @@
1
+ <!-- source-hash: 67580105f9f032b02b2f1fd926ec7677 -->
2
+ A React hook that tracks which document section is currently visible in the viewport based on scroll position, and handles smooth navigation to sections when clicked.
3
+
4
+ ## Key Components
5
+
6
+ ### Constants
7
+
8
+ - **`SCROLL_OFFSET`** (`100px`) — Unified offset value used for both scroll-target positioning and active-section detection threshold, ensuring the highlight indicator stays in sync with the clicked section's resting position.
9
+
10
+ ### Interfaces
11
+
12
+ - **`ScrollSpySection`** — Shape of a section entry (`id`, optional `title`, optional `level`)
13
+ - **`UseScrollSpyReturn`** — Hook return type exposing `activeSection` and `handleSectionClick`
14
+
15
+ ### `useScrollSpy(sections)`
16
+
17
+ The primary export. Accepts an array of `ScrollSpySection` objects and returns:
18
+
19
+ | Return Value | Type | Description |
20
+ |---|---|---|
21
+ | `activeSection` | `string` | ID of the currently visible section |
22
+ | `handleSectionClick` | `(sectionId: string) => void` | Scrolls to the target section and pins it as active for 800ms |
23
+
24
+ **Scroll detection** is throttled at 100ms via `setTimeout` to avoid excessive re-renders. The scroll listener is bypassed while a programmatic click-scroll is in progress (`isScrollingFromClick` ref guard).
25
+
26
+ **Section stability** is maintained by comparing serialized IDs (`sectionIds` memo) to avoid unnecessary effect re-runs when the sections reference changes but content is identical.
27
+
28
+ ## Usage Example
29
+
30
+ ```typescript
31
+ import { useScrollSpy } from "./use-scroll-spy"
32
+
33
+ const sections = [
34
+ { id: "introduction", title: "Introduction", level: 1 },
35
+ { id: "installation", title: "Installation", level: 2 },
36
+ { id: "configuration", title: "Configuration", level: 2 },
37
+ ]
38
+
39
+ function DocSidebar() {
40
+ const { activeSection, handleSectionClick } = useScrollSpy(sections)
41
+
42
+ return (
43
+ <nav>
44
+ {sections.map(section => (
45
+ <button
46
+ key={section.id}
47
+ onClick={() => handleSectionClick(section.id)}
48
+ style={{ fontWeight: activeSection === section.id ? "bold" : "normal" }}
49
+ >
50
+ {section.title}
51
+ </button>
52
+ ))}
53
+ </nav>
54
+ )
55
+ }
56
+ ```
57
+
58
+ **Source:** [`use-scroll-spy.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/use-scroll-spy.ts)
@@ -0,0 +1,45 @@
1
+ <!-- source-hash: b283791a77bffec199910b7a53546479 -->
2
+ Provides a base layout container and platform-specific wrapper components that enforce consistent sizing, spacing, and styling for all embedded content types (YouTube, Twitter, Reddit, LinkedIn, link previews).
3
+
4
+ ## Key Components
5
+
6
+ ### Constants & Types
7
+
8
+ - **`EMBED_SIZES`** — Maps each embed type to a Tailwind `max-w-*` class, controlling the maximum width per platform context.
9
+ - **`EmbedSize`** — Union type derived from `EMBED_SIZES` keys: `"youtube" | "twitter" | "reddit" | "linkedin" | "linkPreview"`.
10
+
11
+ ### Components
12
+
13
+ - **`EmbedContainer`** — Base container applying shared styles: centered layout, rounded corners, card background, border, and hover shadow accent. Accepts `size`, `children`, and an optional `className`.
14
+ - **`YouTubeContainer`** — Preset wrapper using `max-w-3xl` (768px), suited for widescreen video.
15
+ - **`TwitterContainer`** — Preset wrapper using `max-w-md` (448px), narrow mobile-first layout.
16
+ - **`RedditContainer`** — Preset wrapper using `max-w-xl` (576px), medium width for threads.
17
+ - **`LinkedInContainer`** — Preset wrapper using `max-w-lg` (512px), mobile-first post layout.
18
+ - **`LinkPreviewContainer`** — Preset wrapper using `max-w-lg` (512px), balanced card width.
19
+
20
+ ## Usage Example
21
+
22
+ ```typescript
23
+ import {
24
+ YouTubeContainer,
25
+ LinkPreviewContainer,
26
+ EmbedContainer
27
+ } from './embed-container';
28
+
29
+ // Use a preset platform container
30
+ <YouTubeContainer>
31
+ <iframe src="https://www.youtube-nocookie.com/embed/VIDEO_ID" />
32
+ </YouTubeContainer>
33
+
34
+ // Use a link preview container
35
+ <LinkPreviewContainer className="my-8">
36
+ <LinkPreviewCard url="https://example.com" />
37
+ </LinkPreviewContainer>
38
+
39
+ // Use the base container directly with a custom size
40
+ <EmbedContainer size="reddit" className="my-4">
41
+ <RedditEmbed postId="abc123" />
42
+ </EmbedContainer>
43
+ ```
44
+
45
+ > **Source:** [`embed-container.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/embed-container.tsx)
@@ -0,0 +1,51 @@
1
+ <!-- source-hash: d907992b7d3c6c815ed4b06b496e2ab0 -->
2
+ A reusable React iframe wrapper component that handles loading state with a skeleton placeholder and prevents memory leaks during unmount or `src` changes.
3
+
4
+ ## Key Components
5
+
6
+ ### `EmbedLoadingSkeleton` (internal)
7
+ A pulsing rectangle placeholder rendered while the iframe content loads. Uses `bg-ods-card` instead of `bg-ods-skeleton` to ensure visibility (the skeleton token resolves to transparent in this build).
8
+
9
+ ### `EmbedIframeProps`
10
+ | Prop | Type | Default | Description |
11
+ |---|---|---|---|
12
+ | `src` | `string` | — | URL to embed |
13
+ | `title` | `string` | — | Accessible iframe title |
14
+ | `height` | `string` | `calc(100vh - 250px)` | Container height (CSS value) |
15
+ | `className` | `string` | — | Extra classes for outer container |
16
+ | `allow` | `string` | — | iframe `allow` attribute |
17
+ | `referrerPolicy` | `ReferrerPolicy` | — | iframe referrer policy |
18
+ | `loading` | `'eager' \| 'lazy'` | — | iframe loading strategy |
19
+ | `allowFullScreen` | `boolean` | — | Fullscreen permission (ignored if `allow` includes `"fullscreen"`) |
20
+
21
+ ### `EmbedIframe`
22
+ The main exported component. Uses `key={src}` to force full remount on `src` change and sets `iframe.src = 'about:blank'` on cleanup to release the embedded document and avoid memory leaks.
23
+
24
+ ## Usage Example
25
+
26
+ ```typescript
27
+ import { EmbedIframe } from './embed-iframe'
28
+
29
+ export function DashboardEmbed() {
30
+ return (
31
+ <EmbedIframe
32
+ src="https://app.example.com/embed/dashboard"
33
+ title="Metrics Dashboard"
34
+ height="600px"
35
+ allow="fullscreen"
36
+ loading="lazy"
37
+ referrerPolicy="strict-origin-when-cross-origin"
38
+ />
39
+ )
40
+ }
41
+ ```
42
+
43
+ ## Memory Leak Prevention
44
+
45
+ Two `useEffect` hooks guard against leaks:
46
+ 1. **`src` change** — resets `isLoaded` to `false`, triggering the skeleton.
47
+ 2. **Unmount cleanup** — sets `iframe.src = 'about:blank'` inside a `try/catch` (cross-origin iframes may throw on `src` assignment).
48
+
49
+ ---
50
+
51
+ **Source:** [`embed-iframe.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/embed-iframe.tsx)
@@ -0,0 +1,43 @@
1
+ <!-- source-hash: dfed78fcee0a3efa10dad32dd26a5278 -->
2
+ Renders an interactive Figma embed with a header bar (icon, title, "Open in Figma" link) and an iframe powered by `EmbedIframe`. Supports all Figma surface types (design files, prototypes, FigJam boards, Slides decks) and exposes a present/browse toggle exclusively for Slides URLs.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `FigmaEmbed` | Component | Primary embed component; accepts any Figma URL and renders the full embed UI |
9
+ | `FigmaEmbedProps` | Interface | Props: `url`, `title?`, `height?`, `loading?` |
10
+ | `SlidesViewToggle` | Internal Component | Present/Browse toggle rendered only for Figma Slides URLs |
11
+ | `SlidesView` | Type | `'present' \| 'browse'` — controls Figma Slides viewer mode |
12
+
13
+ ## Usage Example
14
+
15
+ ```typescript
16
+ // Inline article embed (lazy-loaded, constrained height)
17
+ <FigmaEmbed
18
+ url="https://www.figma.com/design/abc123/My-Design"
19
+ title="Component Library"
20
+ height="70vh"
21
+ />
22
+
23
+ // Data-room viewer (eager-loaded, full-viewport height)
24
+ <FigmaEmbed
25
+ url="https://www.figma.com/proto/abc123/My-Prototype?node-id=1-2"
26
+ title="Interactive Prototype"
27
+ loading="eager"
28
+ />
29
+
30
+ // Figma Slides deck — shows present/browse toggle
31
+ <FigmaEmbed
32
+ url="https://www.figma.com/deck/abc123/My-Slides"
33
+ title="Q3 Roadmap"
34
+ height="60vh"
35
+ />
36
+ ```
37
+
38
+ ## Behavior Notes
39
+
40
+ - **URL resolution** delegates to `toFigmaEmbedUrl` / `toFigmaOriginalUrl` / `isFigmaSlidesUrl` from `embed-url-converters` — accepts raw file, proto, board, deck, or already-resolved embed URLs.
41
+ - **"Open in Figma"** button is suppressed if the resolved URL fails `https://figma.com` hostname validation.
42
+ - **Slides toggle**: `present` (default) uses Figma's native full-bleed deck viewer with keyboard navigation; `browse` switches to the thumbnail-rail viewer.
43
+ - **Empty state**: renders a centered Figma icon + message when `url` is absent or unresolvable.
@@ -0,0 +1,47 @@
1
+ <!-- source-hash: 0befd91ec103b7f52d977c737473998b -->
2
+ A centered card UI component that displays metadata for a downloadable file and renders a download button when a URL is available.
3
+
4
+ ## Key Components
5
+
6
+ ### `FileDownloadCard`
7
+ The primary exported component. Renders a styled card showing:
8
+ - **File icon** — `lucide-react` `FileText` icon as a visual indicator
9
+ - **File name** — displays `fileName` or falls back to `"File"`
10
+ - **MIME type** — shown only when `mimeType` is provided
11
+ - **File size** — formatted via `formatFileSize` utility, shown only when `fileSize` is a number
12
+ - **Download button** — rendered only when `fileUrl` is present; opens in a new tab
13
+
14
+ ### `FileDownloadCardProps`
15
+ All props are optional, allowing safe render with partial data:
16
+
17
+ | Prop | Type | Description |
18
+ |------|------|-------------|
19
+ | `fileName` | `string` | Display name of the file |
20
+ | `mimeType` | `string` | MIME type string (e.g. `application/pdf`) |
21
+ | `fileSize` | `number` | File size in bytes; formatted via `formatFileSize` |
22
+ | `fileUrl` | `string` | Download URL; omitting hides the Download button |
23
+
24
+ ## Usage Example
25
+
26
+ ```typescript
27
+ import { FileDownloadCard } from './file-download-card'
28
+
29
+ // Full card with download button
30
+ <FileDownloadCard
31
+ fileName="Q4-Report.pdf"
32
+ mimeType="application/pdf"
33
+ fileSize={204800}
34
+ fileUrl="https://cdn.example.com/Q4-Report.pdf"
35
+ />
36
+
37
+ // Read-only card — no download button (fileUrl omitted)
38
+ <FileDownloadCard
39
+ fileName="Pending-Upload.xlsx"
40
+ mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
41
+ fileSize={51200}
42
+ />
43
+ ```
44
+
45
+ > This component is the default renderer for `file`-type documents in `<DocsHubPage>`. Override it by passing a custom `file` renderer to `documentTypeRenderers`.
46
+
47
+ **Source:** [`file-download-card.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/file-download-card.tsx)
@@ -0,0 +1,40 @@
1
+ <!-- source-hash: 7fe71b372dd2b4fea0e2accc89c5d273 -->
2
+ A React client component that renders an embedded Google Sheets viewer with a header bar and an external link button.
3
+
4
+ ## Key Components
5
+
6
+ ### `GoogleSheetsViewerProps`
7
+ | Prop | Type | Required | Description |
8
+ |---|---|---|---|
9
+ | `externalUrl` | `string` | ✅ | Google Sheets URL (standard or embed format) |
10
+ | `fileName` | `string` | ❌ | Display name shown in the header; defaults to `"Google Sheet"` |
11
+ | `height` | `string` | ❌ | Iframe height passed to `EmbedIframe` |
12
+
13
+ ### `GoogleSheetsViewer`
14
+ Main exported component. Handles two render states:
15
+ - **Empty state** — renders a centered icon and message when `externalUrl` is falsy
16
+ - **Viewer state** — renders a header row (icon + title + open-in-Sheets button) above an `EmbedIframe`
17
+
18
+ URL conversion is delegated to two utility helpers:
19
+ - `toGoogleSheetsEmbedUrl` — converts the URL to the `/pub?output=html` embed format for the iframe
20
+ - `toGoogleSheetsOriginalUrl` — normalises the URL back to the standard `docs.google.com/spreadsheets` form for the external link
21
+
22
+ ## Usage Example
23
+
24
+ ```typescript
25
+ import { GoogleSheetsViewer } from '@/components/viewers/google-sheets-viewer'
26
+
27
+ export default function ReportPage() {
28
+ return (
29
+ <GoogleSheetsViewer
30
+ externalUrl="https://docs.google.com/spreadsheets/d/SHEET_ID/edit"
31
+ fileName="Q3 Budget Report"
32
+ height="600px"
33
+ />
34
+ )
35
+ }
36
+ ```
37
+
38
+ ## Source
39
+
40
+ [`google-sheets-viewer.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/google-sheets-viewer.tsx)
@@ -0,0 +1,58 @@
1
+ <!-- source-hash: c38e7dc463f7a5e6d0be8699a0c2f7db -->
2
+ Public API barrel for the rich-markdown embed component library, re-exporting all embed components, their prop types, container primitives, and the shared runtime context from their respective modules.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Description |
7
+ |---|---|
8
+ | `EmbedIframe` | Generic iframe wrapper for arbitrary URL embeds |
9
+ | `PdfViewer` | In-browser PDF rendering component |
10
+ | `GoogleSheetsViewer` | Embedded Google Sheets viewer |
11
+ | `FigmaEmbed` | Figma design file embed |
12
+ | `OGLinkPreview` / `OGLinkErrorBoundary` | Open Graph link preview card with error boundary |
13
+ | `FileDownloadCard` | Downloadable file attachment card |
14
+ | `RedditEmbedClient` | Reddit post/thread embed (satellite) |
15
+ | `TwitterEmbedClient` | Twitter/X post embed (satellite) |
16
+ | `LinkedInEmbedClient` | LinkedIn post embed (satellite) |
17
+ | `MarkdownImage` | Image component used within markdown rendering |
18
+ | `EmbedContainer` / `*Container` | Layout wrappers (`YouTubeContainer`, `TwitterContainer`, etc.) with `EMBED_SIZES` presets |
19
+ | `RichMarkdownRuntimeProvider` / `useRichMarkdownRuntime` | React context provider sharing proxy endpoints and image transformer config across all embed components |
20
+
21
+ ## Usage Example
22
+
23
+ ```typescript
24
+ // Full renderer usage — wrap once at the app boundary
25
+ import {
26
+ RichMarkdownRuntimeProvider,
27
+ RedditEmbedClient,
28
+ OGLinkPreview,
29
+ EMBED_SIZES,
30
+ } from '@openframe/embed-components'
31
+
32
+ function App() {
33
+ return (
34
+ <RichMarkdownRuntimeProvider
35
+ proxyEndpoint="/api/proxy"
36
+ imageTransformer={(url) => `/cdn?url=${encodeURIComponent(url)}`}
37
+ >
38
+ <MyPage />
39
+ </RichMarkdownRuntimeProvider>
40
+ )
41
+ }
42
+
43
+ // Composing a satellite embed outside the markdown renderer
44
+ function ReleasePage() {
45
+ return (
46
+ <RedditEmbedClient
47
+ postUrl="https://reddit.com/r/msp/comments/example"
48
+ size={EMBED_SIZES.medium}
49
+ />
50
+ )
51
+ }
52
+ ```
53
+
54
+ > **Satellite embeds** (`Reddit`, `Twitter`, `LinkedIn`) are also wired into `<RichMarkdownRenderer>` internally. When mounting them standalone, wrap with `RichMarkdownRuntimeProvider` only if you need to override proxy or image transformer defaults.
55
+
56
+ ## Source
57
+
58
+ [`index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/index.ts)
@@ -0,0 +1,50 @@
1
+ <!-- source-hash: fdf1dfbbf12ccb22608a2cd3f5dcf58c -->
2
+ Client-side React component that renders LinkedIn post embeds as iframes, with URL/URN normalization and graceful fallback handling when a post URL cannot be resolved to an embeddable URN.
3
+
4
+ ## Key Components
5
+
6
+ ### `toLinkedInEmbedUrl(url: string): string`
7
+ Internal utility that normalizes any LinkedIn post URL or URN into LinkedIn's official embed endpoint (`/embed/feed/update/<urn>`). Handles four input patterns:
8
+ - Already-canonical embed URLs
9
+ - Explicit URNs (`urn:li:activity|share|ugcPost:<id>`)
10
+ - Activity IDs embedded in URL slugs (`activity-<id>`)
11
+ - Numeric IDs (15–25 digits) at the end of post URLs
12
+
13
+ Returns `''` when no URN can be derived, signaling the component to render a fallback card.
14
+
15
+ ### `LinkedInEmbedClient`
16
+ The primary exported component. Accepts a `url` string and optional `height` (default `600px`). Renders one of two states:
17
+
18
+ | State | Condition | Output |
19
+ |---|---|---|
20
+ | Fallback card | `embedUrl` is empty | Static card with a "View on LinkedIn" link |
21
+ | Embed view | Valid embed URL | Skeleton loader → iframe + external link footer |
22
+
23
+ ## Usage Example
24
+
25
+ ```typescript
26
+ import { LinkedInEmbedClient } from './linkedin-embed-client';
27
+
28
+ // From a standard post URL
29
+ <LinkedInEmbedClient
30
+ url="https://www.linkedin.com/posts/example-company_post-title-activity-1234567890123456789-AbCd"
31
+ height={500}
32
+ />
33
+
34
+ // From an explicit URN
35
+ <LinkedInEmbedClient
36
+ url="urn:li:activity:1234567890123456789"
37
+ />
38
+
39
+ // Falls back to a link card if the URL cannot be resolved
40
+ <LinkedInEmbedClient
41
+ url="https://www.linkedin.com/company/some-page"
42
+ />
43
+ ```
44
+
45
+ ## Notes
46
+
47
+ - Uses `useMemo` to avoid re-computing the embed URL on every render.
48
+ - The skeleton loader (animated pulse) is shown until the iframe fires `onLoad`.
49
+ - LinkedIn iframes do not support auto-resizing; height must be set explicitly via the `height` prop.
50
+ - All external links use `rel="noopener noreferrer"` for security.
@@ -0,0 +1,40 @@
1
+ <!-- source-hash: 0ce5f81d0a9d025580e28ea3daa0fb7b -->
2
+ Renders markdown images with correct aspect ratios and size constraints inside rich markdown articles, using a lightweight probe to detect intrinsic dimensions before displaying the full image.
3
+
4
+ ## Key Components
5
+
6
+ ### `MarkdownImage({ src, alt })`
7
+ The primary export. A client component that:
8
+ - **Probes** the image at 48px via `transformImageSrc` to determine the true width/height ratio before fetching the full image
9
+ - **Renders a skeleton placeholder** (`animate-pulse`) while the probe is in-flight, preventing layout jumps
10
+ - **Passes `object-contain`** to the underlying image shim so Supabase's loader uses `resize=contain` (never crops)
11
+ - **Caps display size** at `32rem` tall while maintaining the real aspect ratio — wide images fill the column, tall screenshots don't dominate the page
12
+
13
+ ### Constants
14
+ | Name | Value | Purpose |
15
+ |---|---|---|
16
+ | `MAX_H_REM` | `32` | On-page height cap (~512px) |
17
+ | `DISPLAY_W` | `768` | Logical width hint for srcset generation |
18
+
19
+ ### Dependencies
20
+ - **`useRichMarkdownRuntime`** — supplies `transformImageSrc`, which adapts image URLs for the active optimizer (Supabase on the hub, identity passthrough elsewhere)
21
+ - **`Image` shim** (`embed-shims/next-image`) — full Next.js Image Optimization on the hub, plain `<img>` in other embedders
22
+
23
+ ## Usage Example
24
+
25
+ ```typescript
26
+ // Used automatically by the markdown renderer; not typically called directly.
27
+ // The rich markdown runtime must be provided by an ancestor RichMarkdownRuntimeProvider.
28
+ import { MarkdownImage } from './markdown-image';
29
+
30
+ // Inside a markdown component map:
31
+ const components = {
32
+ img: ({ src, alt }: { src: string; alt?: string }) => (
33
+ <MarkdownImage src={src} alt={alt} />
34
+ ),
35
+ };
36
+ ```
37
+
38
+ > **Note:** `transformImageSrc` is optional — embedders that omit it receive an identity fallback, so the raw `src` is used for both the probe and display copy.
39
+
40
+ **Source:** [`markdown-image.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/markdown-image.tsx)
@@ -0,0 +1,54 @@
1
+ <!-- source-hash: ca37d68e797966a1bd0503fa8f95bb97 -->
2
+ Renders an Open-Graph link preview card by fetching OG metadata from a configurable scrape endpoint, resolving images through a multi-step fallback chain, and displaying either a compact horizontal or default vertical card layout.
3
+
4
+ ## Key Components
5
+
6
+ ### `OGData` (interface)
7
+ Defines the expected JSON shape returned by the OG scrape endpoint (`/api/og-scraper` by default). Fields include `title`, `description`, `image`, `originalImage`, `url`, `siteName`, `type`, and `favicon`.
8
+
9
+ ### `OGLinkErrorBoundary` (class component)
10
+ A React error boundary scoped to link previews. Catches rendering errors silently and renders a `fallback` prop (typically a plain `<a>` tag) to prevent a broken third-party preview from crashing the parent view. Named distinctly to avoid export collision with the lib's `features/error-boundary`.
11
+
12
+ ### `BuildPlaceholderUrl` (type)
13
+ Callback signature `(title, siteName) => string | null` for generating a placeholder image URL when scraping returns no image. The hub injects its own implementation; embedders can omit this to disable placeholder generation entirely.
14
+
15
+ ### `OGLinkPreview` (React FC)
16
+ Main card component. Key behaviors:
17
+ - **URL validation** — rejects malformed URLs, `localhost`, and RFC1918 ranges without a network request, rendering a plain link instead.
18
+ - **OG fetch** — `GET {apiBaseUrl}{ogEndpointPath}?url=<encoded>` with configurable base and path for cross-origin embed contexts.
19
+ - **Image resolution** — cascades through `og:image` → `originalImage` → `fallbackImage` prop → `buildPlaceholderUrl` result, with per-source error toggles.
20
+ - **Edge color extraction** — calls `useImageEdgeColor` on the resolved image for a letterbox background tint.
21
+ - **Variants** — `compact` (horizontal, 120px) or `default` (vertical with `aspect-video` hero).
22
+
23
+ ### Internal helpers
24
+ - `getDomain` / `domainToTitle` — extract and humanize a hostname for graceful error fallback display.
25
+ - `ExternalLinkIcon` / `Favicon` — small presentational components used inside the card.
26
+
27
+ ## Usage Example
28
+
29
+ ```typescript
30
+ import { OGLinkPreview, OGLinkErrorBoundary } from './og-link-preview'
31
+
32
+ // Default vertical card (hub / same-origin)
33
+ <OGLinkErrorBoundary fallback={<a href={url}>{url}</a>}>
34
+ <OGLinkPreview
35
+ url="https://techcrunch.com/some-article"
36
+ buildPlaceholderUrl={(title, siteName) =>
37
+ `/api/og-placeholder?title=${encodeURIComponent(title)}&site=${encodeURIComponent(siteName)}`
38
+ }
39
+ />
40
+ </OGLinkErrorBoundary>
41
+
42
+ // Compact card from an embed context pointing at the hub
43
+ <OGLinkPreview
44
+ url="https://example.com/press-release"
45
+ apiBaseUrl="https://hub.example.com"
46
+ ogEndpointPath="/api/og-scraper"
47
+ variant="compact"
48
+ fallbackTitle="Example Press Release"
49
+ fallbackImage="https://cdn.example.com/hero.jpg"
50
+ enablePlaceholder={false}
51
+ />
52
+ ```
53
+
54
+ **Source:** [`og-link-preview.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/og-link-preview.tsx)