@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,42 +1,63 @@
1
- <!-- source-hash: 246e5605bed712d2ecbfd71d23933d41 -->
2
- Provides the React context and typed interface that supply runtime configuration to the Flamingo/OpenFrame chat panel, decoupling API endpoints, navigation behavior, and identity source from the host environment.
1
+ <!-- source-hash: 8291e5c1b6ca756b6bd0c1207bec4218 -->
2
+ Provides the React context for configuring the chat panel's API endpoints, navigation behavior, and identity settings across host and embedded deployments.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `ChatRuntime` Interface
7
- The central config shape with three top-level concerns:
8
7
 
9
- | Field | Description |
10
- |---|---|
11
- | `endpoints` | All API URLs: streaming chat, agent approval, slash-commands, attachment upload/view, identity, and optional image proxy |
12
- | `navigation` | Mode (`'host'` or `'embed'`), external URL handler, in-app router callback, and new-tab decision logic |
13
- | `source` | Required string used for `localStorage` namespacing (`mingo-chat-<source>-v1`) |
8
+ The core configuration shape with three top-level concerns:
14
9
 
15
- ### `ChatRuntimeContext`
16
- Raw React context (`createContext<ChatRuntime | null>(null)`). Mount via `<ChatRuntimeContext.Provider value={...}>` at your tree root.
10
+ - **`endpoints`** — All API URLs consumed by the chat panel:
11
+ - `chatStreamUrl` POST streaming chat
12
+ - `approvalToolUrl` — POST agent tool approval/rejection
13
+ - `commandsUrl` — GET slash-command catalog
14
+ - `buildListUrl` — Entity-card list URL builder
15
+ - `attachmentUploadUrl` / `attachmentViewUrlPrefix` — File attachment support
16
+ - `identityUrl` — Session capability resolution
17
+ - Optional: `findTicketUrl`, `ticketActionUrl`, `listEngagementsUrl`, `docsSearchUrl`, `docsResolveLinkUrl`, `emptyStateUrl`, `aiAgentConfigUrl`, `imageProxyUrlPrefix`, `ogPlaceholderUrl`, `supabaseStorageOrigin`
17
18
 
18
- ### `useChatRuntime()`
19
- Nullable consumer hook. Returns `null` when no provider is mounted signals unconfigured runtime. Use for optional/graceful-degradation consumers.
19
+ - **`navigation`** — Click-routing behavior:
20
+ - `mode: 'host' | 'embed'` Host uses in-app router; embed forces new-tab
21
+ - `defaultContentOrigin` — Required for embed mode to absolutize relative URLs
22
+ - `navigate` — Optional in-app routing callback (host mode)
23
+ - `decideNewTab` / `openExternal` — Optional override hooks
20
24
 
21
- ### `useRequiredChatRuntime()`
22
- Strict consumer hook used inside chat internals. Throws a descriptive error if called outside a provider. Use this inside the chat panel itself.
25
+ - **`composeContentUrl`** (`ComposeContentUrl`) — Optional platform-aware content href composer; falls back to relative paths when unset
26
+
27
+ ### Context Exports
28
+
29
+ - `ChatRuntimeContext` — The React context object
30
+ - `useChatRuntime()` — Hook to consume the context within the chat tree
23
31
 
24
32
  ## Usage Example
25
33
 
26
34
  ```typescript
27
- // Host (hub) — already handled by <HubRuntimeProvider>
28
- // Embedded app wire your own provider:
35
+ // Host mode (e.g. hub.openframe.ai)
36
+ const runtime = React.useMemo<ChatRuntime>(() => ({
37
+ endpoints: {
38
+ chatStreamUrl: '/api/docs/chat',
39
+ approvalToolUrl: '/api/chat/agent/confirm-tool',
40
+ commandsUrl: '/api/docs/commands',
41
+ buildListUrl: (type, ids) => `/api/list/${type}?ids=${ids.join(',')}`,
42
+ attachmentUploadUrl: '/api/storage/upload/chat-attachments',
43
+ attachmentViewUrlPrefix: '/api/storage/view/chat-attachments/',
44
+ identityUrl: '/api/chat/identity',
45
+ },
46
+ navigation: {
47
+ mode: 'host',
48
+ navigate: ({ href }) => { router.push(href); return true },
49
+ },
50
+ }), [router])
29
51
 
30
- const runtime = useMemo<ChatRuntime>(() => ({
31
- source: 'my-embedded-app',
52
+ // Embedded app (e.g. user1.openframe.ai)
53
+ const embeddedRuntime = React.useMemo<ChatRuntime>(() => ({
32
54
  endpoints: {
33
- chatStreamUrl: 'https://hub.openframe.ai/api/docs/chat',
34
- approvalToolUrl: 'https://hub.openframe.ai/api/chat/agent/confirm-tool',
35
- commandsUrl: 'https://hub.openframe.ai/api/docs/commands',
55
+ chatStreamUrl: '/api/mingo-guide/docs/chat',
56
+ // ...other proxied paths
36
57
  buildListUrl: (type, ids) => null,
37
- attachmentUploadUrl: 'https://hub.openframe.ai/api/storage/upload',
38
- attachmentViewUrlPrefix: 'https://hub.openframe.ai/api/storage/view/chat-attachments/',
39
- identityUrl: 'https://hub.openframe.ai/api/chat/identity',
58
+ attachmentUploadUrl: '/api/mingo-guide/storage/upload',
59
+ attachmentViewUrlPrefix: 'https://hub.openframe.ai/api/storage/view/',
60
+ identityUrl: '/api/mingo-guide/chat/identity',
40
61
  },
41
62
  navigation: {
42
63
  mode: 'embed',
@@ -45,10 +66,18 @@ const runtime = useMemo<ChatRuntime>(() => ({
45
66
  }), [])
46
67
 
47
68
  return (
48
- <ChatRuntimeContext.Provider value={runtime}>
69
+ <ChatRuntimeContext.Provider value={embeddedRuntime}>
49
70
  <ChatPanel />
50
71
  </ChatRuntimeContext.Provider>
51
72
  )
73
+
74
+ // Inside chat components
75
+ const runtime = useChatRuntime()
76
+ const { chatStreamUrl } = runtime.endpoints
52
77
  ```
53
78
 
54
- > **Memoization is required.** Passing a new object reference on every render invalidates downstream `useMemo` consumers across the entire chat tree (slash-commands, nav links, stream factory). Always stabilize with `useMemo` and stable deps.
79
+ > **Performance note:** Always memoize the value passed to `<ChatRuntimeContext.Provider>`. Inline object literals recreated on each render will invalidate downstream `useMemo` consumers across the entire chat tree.
80
+
81
+ ## Source
82
+
83
+ [`chat-runtime-context.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/chat-runtime-context.tsx)
@@ -1,58 +1,54 @@
1
- <!-- source-hash: 9d75df8f934797fae402329b05b9e8c2 -->
2
- Provides a React context for sharing API endpoint URLs across the component tree, enabling host applications (including reverse-proxy deployments) to override canonical paths consumed by `oss-lib` components.
1
+ <!-- source-hash: 91729e745dc7597ae611c9a11fcb6839 -->
2
+ Provides a React context for sharing API endpoint URL literals across OSS-lib components, enabling host applications to override paths (e.g., when running behind a reverse proxy).
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `EndpointsRuntime` | `interface` | Shape of the runtime value: `announcementsUrl`, `accessCode.validateUrl`, `accessCode.consumeUrl`, `contactUrl` |
9
- | `EndpointsRuntimeContext` | `Context<EndpointsRuntime \| null>` | Raw React context — use directly only when mounting a `Provider` |
10
- | `useEndpointsRuntime()` | hook | Returns `null` when no provider is mounted; safe for optional consumers |
11
- | `useRequiredEndpointsRuntime()` | hook | Throws a descriptive error when no provider is mounted; use for form submissions and code validation |
6
+ ### `EndpointsRuntime` Interface
7
+ Defines the shape of the endpoint configuration:
8
+
9
+ | Field | Type | Description |
10
+ |---|---|---|
11
+ | `announcementsUrl` | `string` | GET active announcement (used by `<AnnouncementBar>`) |
12
+ | `accessCode.validateUrl` | `string` | POST validate access code |
13
+ | `accessCode.consumeUrl` | `string` | POST redeem access code after registration |
14
+ | `contactUrl` | `string` | POST contact-form submission |
15
+
16
+ ### `EndpointsRuntimeContext`
17
+ A React context initialized to `null`. Mount `<EndpointsRuntimeContext.Provider value={...}>` at your application root with the appropriate endpoint paths.
18
+
19
+ ### `useEndpointsRuntime()`
20
+ Optional hook — returns `null` when no provider is mounted. Use for components that should silently no-op when outside the provider tree (e.g., announcement polling).
21
+
22
+ ### `useRequiredEndpointsRuntime()`
23
+ Strict hook — throws a descriptive error when no provider is mounted. Use for components that cannot function without endpoints (form submission, code validation).
12
24
 
13
25
  ## Usage Example
14
26
 
15
27
  ```typescript
16
- // Hub root canonical paths
17
- <EndpointsRuntimeContext.Provider
18
- value={React.useMemo(() => ({
19
- announcementsUrl: '/api/announcements/active',
20
- accessCode: {
21
- validateUrl: '/api/access-codes/validate',
22
- consumeUrl: '/api/access-codes/consume',
23
- },
24
- contactUrl: '/api/contact',
25
- }), [])}
26
- >
28
+ // Mounting the provider (e.g., in your root layout)
29
+ const endpoints: EndpointsRuntime = React.useMemo(() => ({
30
+ announcementsUrl: '/api/announcements/active',
31
+ accessCode: {
32
+ validateUrl: '/api/access-codes/validate',
33
+ consumeUrl: '/api/access-codes/consume',
34
+ },
35
+ contactUrl: '/api/contact',
36
+ }), [])
37
+
38
+ <EndpointsRuntimeContext.Provider value={endpoints}>
27
39
  <App />
28
40
  </EndpointsRuntimeContext.Provider>
29
41
 
30
- // Embedded app — proxied paths (e.g. user1.openframe.ai)
31
- <EndpointsRuntimeContext.Provider
32
- value={React.useMemo(() => ({
33
- announcementsUrl: '/api/mingo-guide/announcements/active',
34
- accessCode: {
35
- validateUrl: '/api/mingo-guide/access-codes/validate',
36
- consumeUrl: '/api/mingo-guide/access-codes/consume',
37
- },
38
- contactUrl: '/api/mingo-guide/contact',
39
- }), [])}
40
- >
41
- <EmbeddedApp />
42
- </EndpointsRuntimeContext.Provider>
42
+ // Optional consumer
43
+ const endpoints = useEndpointsRuntime() // null if no provider
44
+ if (endpoints) fetchAnnouncement(endpoints.announcementsUrl)
43
45
 
44
- // Optional consumer (silently skips when outside provider)
45
- const endpoints = useEndpointsRuntime()
46
- if (endpoints) poll(endpoints.announcementsUrl)
46
+ // Strict consumer
47
+ const { contactUrl } = useRequiredEndpointsRuntime() // throws if no provider
48
+ ```
47
49
 
48
- // Required consumer (throws outside provider)
49
- const { contactUrl } = useRequiredEndpointsRuntime()
50
- await fetch(contactUrl, { method: 'POST', body })
50
+ > **Embedders:** Always memoize the value passed to the provider. Reference changes invalidate downstream effect dependencies and cause unnecessary re-fetches.
51
51
 
52
- // Tests / Storybook
53
- <EndpointsRuntimeContext.Provider value={mockedEndpoints}>
54
- <ComponentUnderTest />
55
- </EndpointsRuntimeContext.Provider>
56
- ```
52
+ ## Source
57
53
 
58
- > **Embedders:** always `useMemo` the value object passed to the provider. A new object reference on every render invalidates downstream `useEffect` dependency arrays and triggers unnecessary re-fetches.
54
+ [`endpoints-runtime-context.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/endpoints-runtime-context.tsx)
@@ -1,39 +1,38 @@
1
- <!-- source-hash: 6464e6b8e81567378d067bf37a01cd1c -->
2
- Environment-aware shim for `next/navigation` app-router hooks. Provides lightweight `window.location`-backed stubs by default, with an opt-in registration mechanism for full Next.js router integration in host applications.
1
+ <!-- source-hash: d193779b512ad2acfd37fa2c977da11e -->
2
+ Environment-aware shim for `next/navigation` app-router hooks. Provides lightweight `window.location`/History API fallbacks so library components work outside a Next.js host, with opt-in delegation to real `next/navigation` exports via `registerNavigation`.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `registerNavigation(nav)`
7
- Merges real `next/navigation` exports into the internal registry. Call once at app init in a Next.js host to enable full client-router integration.
8
-
9
- ### `NavigationImpl` (interface)
10
- Describes the full set of registerable hooks: `useRouter`, `usePathname`, `useSearchParams`, `useParams`, `redirect`, `permanentRedirect`, `notFound`.
11
-
12
- ### Exported Hooks & Utilities
13
-
14
- | Export | Stub Behavior |
6
+ | Export | Description |
15
7
  |---|---|
16
- | `useRouter()` | `push`/`replace` `window.location`; `back`/`forward` `history`; `refresh` `reload` |
17
- | `usePathname()` | Returns `window.location.pathname`, popstate-subscribed |
18
- | `useSearchParams()` | Returns `URLSearchParams` from `window.location.search`, popstate-subscribed |
19
- | `useParams<T>()` | Returns `{}` parse params from `usePathname()` manually |
20
- | `redirect(url)` | `window.location.assign(url)` + throws |
21
- | `permanentRedirect(url)` | `window.location.replace(url)` + throws |
22
- | `notFound()` | Throws with shim message |
23
- | `RedirectType` | Mirrors Next's enum (`push` / `replace`) |
24
- | `ServerInsertedHTMLContext` | `null` stub importable, non-functional |
8
+ | `registerNavigation(nav)` | Merges real `next/navigation` exports into the registry. Call once at app init in a Next.js host. |
9
+ | `useRouter()` | Returns a router stub; fallback uses `pushState`/`replaceState` + synthetic `popstate` for SPA navigation without page reloads. Cross-origin and malformed hrefs fall back to `window.location`. |
10
+ | `usePathname()` | Returns `window.location.pathname`, subscribed to `popstate`. |
11
+ | `useSearchParams()` | Returns a `URLSearchParams` view of `window.location.search`, subscribed to `popstate`. |
12
+ | `useParams()` | Returns `{}` embedders needing dynamic params should parse from `usePathname()`. |
13
+ | `redirect()` / `permanentRedirect()` | Best-effort via `window.location.assign` / `.replace`. |
14
+ | `notFound()` | Throws an error in non-Next environments. |
15
+ | `RedirectType` | Mirrors Next's `RedirectType` enum (`push` / `replace`). |
16
+ | `ServerInsertedHTMLContext` | Stub (`null`) so consumers can import without crashing. |
17
+ | `NavigationImpl` | Interface describing the full registration surface; all fields are optional. |
25
18
 
26
19
  ## Usage Example
27
20
 
21
+ **In a Next.js host — register once at app init:**
22
+
28
23
  ```typescript
29
- // In a Next.js host — lib/embed-shim-registration.ts
24
+ // lib/embed-shim-registration.ts
30
25
  import {
31
- useRouter, usePathname, useSearchParams,
32
- useParams, redirect, permanentRedirect, notFound,
26
+ useRouter,
27
+ usePathname,
28
+ useSearchParams,
29
+ useParams,
30
+ redirect,
31
+ permanentRedirect,
32
+ notFound,
33
33
  } from 'next/navigation'
34
- import { registerNavigation } from '@flamingo-stack/openframe-frontend-core/embed-shims'
34
+ import { registerNavigation } from '@flamingo-stack/openframe-oss-lib/embed-shims'
35
35
 
36
- // Call ONCE at app init — partial registration is safe
37
36
  registerNavigation({
38
37
  useRouter,
39
38
  usePathname,
@@ -45,15 +44,23 @@ registerNavigation({
45
44
  })
46
45
  ```
47
46
 
47
+ **In a standalone/embed environment — no setup required:**
48
+
48
49
  ```typescript
49
- // In a lib component works in both Next.js and standalone embed
50
- import { usePathname, useSearchParams } from './next-navigation'
50
+ // Works out of the box using History API fallbacks
51
+ import { useRouter, useSearchParams } from '@flamingo-stack/openframe-oss-lib/next-navigation'
51
52
 
52
- export function ActiveRoute() {
53
- const pathname = usePathname()
53
+ function MyComponent() {
54
+ const router = useRouter()
54
55
  const params = useSearchParams()
55
- return <span>{pathname}?{params.toString()}</span>
56
+
57
+ // SPA navigation — no document reload, popstate fires, subscribers re-render
58
+ return <button onClick={() => router.replace('?page=2')}>Next</button>
56
59
  }
57
60
  ```
58
61
 
59
- > **Note:** The fallback stubs only react to `popstate` events. Programmatic `pushState`/`replaceState` calls will **not** trigger re-renders without a registered real router.
62
+ > **Note:** The fallback `usePathname` / `useSearchParams` hooks react to `popstate` events. Programmatic `pushState`/`replaceState` calls outside this shim will NOT trigger re-renders register a real router or use the shim's own `useRouter` for mutations.
63
+
64
+ ## Source
65
+
66
+ [`next-navigation.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/next-navigation.tsx)
@@ -1,36 +1,43 @@
1
- <!-- source-hash: 6a72fca68f38313717239664519205f9 -->
2
- This file provides stub React hooks for API data fetching, offering consistent interfaces for loading states and error handling across different data types without actual API implementation.
1
+ <!-- source-hash: ecdb4d3c79e0accd705583d0d62187db -->
2
+ Stub React hooks providing placeholder API data-fetching interfaces for categories, vendors, and subcategory counts returning empty state without making actual network requests.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`useCategories()`** - Hook for fetching and managing category data with loading/error states
7
- - **`useVendors()`** - Hook for fetching and managing vendor data with loading/error states
8
- - **`useSubcategoryCountByCategory()`** - Hook that returns empty subcategory count data
6
+ | Hook | Returns | Description |
7
+ |------|---------|-------------|
8
+ | `useCategories` | `{ categories, loading, error }` | Fetches category list |
9
+ | `useVendors` | `{ vendors, loading, error }` | Fetches vendor list |
10
+ | `useSubcategoryCountByCategory` | `{ data, loading }` | Returns subcategory counts keyed by category |
9
11
 
10
12
  ## Usage Example
11
13
 
12
14
  ```typescript
13
- import { useCategories, useVendors } from './api-hooks';
15
+ import {
16
+ useCategories,
17
+ useVendors,
18
+ useSubcategoryCountByCategory,
19
+ } from './api-hooks';
14
20
 
15
- function MyComponent() {
16
- const { categories, loading: categoriesLoading, error: categoriesError } = useCategories();
17
- const { vendors, loading: vendorsLoading, error: vendorsError } = useVendors();
21
+ function CatalogView() {
22
+ const { categories, loading, error } = useCategories();
23
+ const { vendors } = useVendors();
24
+ const { data: subcategoryCounts } = useSubcategoryCountByCategory();
18
25
 
19
- if (categoriesLoading || vendorsLoading) {
20
- return <div>Loading...</div>;
21
- }
22
-
23
- if (categoriesError || vendorsError) {
24
- return <div>Error loading data</div>;
25
- }
26
+ if (loading) return <span>Loading...</span>;
27
+ if (error) return <span>Error loading data</span>;
26
28
 
27
29
  return (
28
- <div>
29
- <h2>Categories: {categories.length}</h2>
30
- <h2>Vendors: {vendors.length}</h2>
31
- </div>
30
+ <ul>
31
+ {categories.map((cat) => (
32
+ <li key={cat.id}>{cat.name}</li>
33
+ ))}
34
+ </ul>
32
35
  );
33
36
  }
34
37
  ```
35
38
 
36
- These hooks currently return empty arrays and default states, serving as placeholders for future API integration while maintaining the expected interface for components that consume them.
39
+ > **Note:** These are stub implementations — all hooks return empty/static state and no network calls are made. They are intended as placeholders until real API endpoints are wired in.
40
+
41
+ ## Source
42
+
43
+ [`api-hooks.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/api-hooks.ts)
@@ -1,47 +1,52 @@
1
- <!-- source-hash: 23bacbbf103fe8e3ffb15ca1d779391b -->
2
- Central barrel export file for the hooks package, re-exporting all custom React hooks organized by domain.
1
+ <!-- source-hash: 2e6175823c7681e92d95bc1e1551a854 -->
2
+ Central barrel export file for the hooks package, re-exporting all hook modules from a single entry point.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export Module | Description |
7
- |---------------|-------------|
8
- | `./ui` | UI interaction hooks |
9
- | `./platform` | Platform-specific hooks |
10
- | `./use-toast` | Toast notification hook |
11
- | `./use-contact-submission` | Contact form submission hook |
12
- | `./use-copy-to-clipboard` | Clipboard write hook |
13
- | `./use-batch-images` | Authenticated batch image loading |
14
- | `./use-authenticated-image` | Single authenticated image hook |
15
- | `./state` | URL state management hooks |
16
- | `./nats/use-nats-client` | NATS messaging client hook |
17
- | `./use-near-viewport` | Shared IntersectionObserver lazy-mount primitive |
18
- | `./use-access-code-integration` | Access code context integration (client-only) |
19
- | `./use-og-placeholder` | OG placeholder URL builder hook |
6
+ | Export Group | Module | Description |
7
+ |---|---|---|
8
+ | UI/Platform | `./ui`, `./platform` | Core UI and platform-specific hooks |
9
+ | Toast | `./use-toast` | Toast notification hook |
10
+ | Contact | `./use-contact-submission` | Contact form submission hook |
11
+ | Clipboard | `./use-copy-to-clipboard` | Clipboard interaction hook |
12
+ | Image Auth | `./use-batch-images`, `./use-authenticated-image`, `./use-authed-image-src` | Authenticated image loading hooks |
13
+ | URL State | `./state` | URL-based state management hooks |
14
+ | NATS | `./nats/use-nats-client` | NATS messaging client hook |
15
+ | Viewport | `./use-near-viewport` | Shared IntersectionObserver lazy-mount primitive |
16
+ | Access Code | `./use-access-code-integration` | Access code context integration |
17
+ | OG Placeholder | `./use-og-placeholder-url` | Endpoint-driven OG placeholder URL hook |
18
+ | Scroll | `./use-scroll-to-hash` | Deep-link scroll-to-hash after data load |
19
+ | Bot Protection | `./use-humanity-signals` | Honeypot + submit-timing bot protection primitive |
20
20
 
21
21
  ## Usage Example
22
22
 
23
23
  ```typescript
24
- // Import any hook directly from the hooks package root
24
+ // Import any hook directly from the package root
25
25
  import {
26
26
  useToast,
27
27
  useCopyToClipboard,
28
+ useAuthenticatedImage,
28
29
  useNatsClient,
29
30
  useNearViewport,
30
- useAccessCodeIntegration,
31
- } from '@flamingo/hooks'
31
+ useScrollToHash,
32
+ useHumanitySignals,
33
+ } from '@openframe/hooks'
32
34
 
33
35
  function MyComponent() {
34
36
  const { toast } = useToast()
35
37
  const { copy } = useCopyToClipboard()
36
- const nats = useNatsClient()
37
- const ref = useNearViewport()
38
+ const { ref: viewportRef } = useNearViewport()
38
39
 
39
- return <div ref={ref}>...</div>
40
+ useScrollToHash({ prefix: 'ticket', isLoading: false })
41
+
42
+ return <div ref={viewportRef} />
40
43
  }
41
44
  ```
42
45
 
43
46
  ## Notes
44
47
 
45
- - `use-access-code-integration` is intentionally placed in `hooks/` rather than `utils/` to keep React context dependencies out of the server-safe utilities bundle.
46
- - `use-near-viewport` uses a shared `IntersectionObserver` singleton to minimize DOM overhead across lazy-mounted components.
47
- - Image hooks (`use-batch-images`, `use-authenticated-image`) handle auth token injection for protected media endpoints.
48
+ - **`use-access-code-integration`** is intentionally kept in `hooks/` (not `utils/`) to avoid pulling `EndpointsRuntimeContext` into server-safe bundles.
49
+ - **`use-humanity-signals`** pairs with the server-side decision function in `utils/humanity-signals` the hook handles only the client primitive (honeypot ref + timing).
50
+ - **`use-near-viewport`** uses a shared `IntersectionObserver` singleton for efficient lazy-mounting across many components.
51
+
52
+ **Source:** [`hooks/index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/hooks/index.ts)
@@ -0,0 +1,38 @@
1
+ <!-- source-hash: 15b1f2d897deb354fe984a6b0d805f9f -->
2
+ Resolves authenticated image URLs for native shell environments (Capacitor, Tauri) where bearer token auth cannot be carried by native `<img>` requests. Acts as a pass-through on cookie-authenticated web clients.
3
+
4
+ ## Key Components
5
+
6
+ ### `useAuthedImageSrc(src?)` _(hook)_
7
+ Primary hook that returns a resolved image source string. Returns `undefined` while a fetch is in-flight or after failure (allowing callers to render a placeholder/fallback), and returns the original `src` unchanged on cookie-auth web clients.
8
+
9
+ ### `clearAuthedImageCache()` _(export)_
10
+ Clears all cached blob object-URLs and revokes them via `URL.revokeObjectURL`. Should be called at session end (logout/forced re-login) to prevent blob reuse across different identities. A generation counter fences any in-flight fetches at the time of the clear.
11
+
12
+ ### `fetchAsBlobUrl(src)` _(internal)_
13
+ Deduplicates concurrent fetches for the same URL using a module-level `inFlight` map, then stores the resolved blob object-URL in `resolvedCache`. Fetch is delegated to `embedAuthedFetch` (bearer auth + 401-refresh-retry + cross-origin guard).
14
+
15
+ ### Module-level Cache
16
+ - `resolvedCache`: `Map<string, string>` — session-lifetime blob URL cache keyed by full image URL
17
+ - `inFlight`: `Map<string, Promise<void>>` — deduplicates concurrent fetches for the same URL
18
+ - `cacheGeneration`: integer counter incremented on `clearAuthedImageCache` to fence stale fetch results
19
+
20
+ ## Usage Example
21
+
22
+ ```typescript
23
+ import { useAuthedImageSrc, clearAuthedImageCache } from './use-authed-image-src'
24
+
25
+ // In a component — renders placeholder while fetching or on error
26
+ function Avatar({ imageUrl }: { imageUrl: string }) {
27
+ const src = useAuthedImageSrc(imageUrl)
28
+
29
+ if (!src) return <InitialsAvatar />
30
+ return <img src={src} alt="User avatar" />
31
+ }
32
+
33
+ // At logout
34
+ function handleLogout() {
35
+ clearAuthedImageCache()
36
+ // ...rest of logout logic
37
+ }
38
+ ```
@@ -1,29 +1,27 @@
1
- <!-- source-hash: 76fefb8d1dd3113ac55a32017a2a8fe1 -->
2
- React hook that manages contact form submission state, API communication, toast notifications, and post-submission routing for the `/api/contact` endpoint.
1
+ <!-- source-hash: af4536ad2bb59120a690271ba368f845 -->
2
+ A React hook that manages contact form submission state, including loading/success tracking, toast notifications, and post-submission redirect logic.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `ContactSubmissionOptions`
7
- Configuration interface for hook behavior:
8
- - `userId` optional authenticated user identifier appended to the payload
9
- - `successRedirectUrl` destination after successful submission (supports absolute URLs and internal paths)
10
- - `successToastMessage` appends custom text to the default success toast
11
- - `onSuccess` optional callback fired after successful submission
7
+ Configuration interface for the hook:
8
+ - `userId` Optional authenticated user ID appended to the payload
9
+ - `successRedirectUrl` URL to navigate to after successful submission (1.5s delay)
10
+ - `successToastMessage` Custom suffix appended to the default success toast
11
+ - `onSuccess` Optional callback fired on successful submission
12
12
 
13
13
  ### `ContactFormData`
14
- Mirrors the `ContactBaseSchema` Zod contract on the server. Required fields are `name`, `email`, `helpCategory`, and `message`. Includes an index signature (`[key: string]: unknown`) so tracking metadata (`utm_*`, `rdt_cid`, `referrer_url`) and A/B variant fields pass through unchanged.
14
+ Mirrors the `ContactBaseSchema` on the `POST /api/contact` endpoint. Core fields (`name`, `email`, `helpCategory`, `message`) are required; tracking fields (`rdt_cid`, `utm_*`, `referrer_url`) and future per-form fields pass through via the permissive `[key: string]: unknown` index signature.
15
15
 
16
16
  ### `useContactSubmission(options)`
17
- The exported hook. Pulls `contactUrl` from `useRequiredEndpointsRuntime` (throws if no provider is mounted), then returns:
17
+ The exported hook. Resolves the endpoint URL via `useRequiredEndpointsRuntime` (throws if no provider is mounted), then exposes:
18
18
 
19
- | Return Value | Type | Description |
19
+ | Return | Type | Description |
20
20
  |---|---|---|
21
- | `submit` | `(formData: ContactFormData) => Promise<void>` | Sends POST request; shows toast on success or error |
22
- | `isSubmitting` | `boolean` | True while the fetch is in-flight |
21
+ | `submit` | `(formData) => Promise<void>` | Sends `POST` with form data; re-throws on error |
22
+ | `isSubmitting` | `boolean` | True while request is in-flight |
23
23
  | `isSuccess` | `boolean` | True after a successful response |
24
- | `setIsSuccess` | `Dispatch<SetStateAction<boolean>>` | Allows caller to manually reset success state |
25
-
26
- Redirect logic waits 1500ms after `isSuccess` before navigating — using `window.location.href` for absolute URLs and `router.push` for relative paths.
24
+ | `setIsSuccess` | `Dispatch` | Allows caller to reset success state |
27
25
 
28
26
  ## Usage Example
29
27
 
@@ -34,32 +32,33 @@ function ContactForm() {
34
32
  const { submit, isSubmitting, isSuccess } = useContactSubmission({
35
33
  userId: currentUser?.id,
36
34
  successRedirectUrl: '/thank-you',
37
- successToastMessage: 'Our team will respond within 24 hours.',
35
+ successToastMessage: 'We will get back to you within 24 hours.',
38
36
  onSuccess: () => analytics.track('contact_submitted'),
39
37
  });
40
38
 
41
- const handleSubmit = async (e: React.FormEvent) => {
42
- e.preventDefault();
43
- await submit({
44
- name: 'Jane Smith',
45
- email: 'jane@acme.com',
46
- helpCategory: 'billing',
47
- message: 'I have a question about my invoice.',
48
- // Tracking fields forwarded transparently
49
- utm_source: 'homepage',
50
- rdt_cid: 'abc123',
51
- });
39
+ const handleSubmit = async (formData: ContactFormData) => {
40
+ try {
41
+ await submit({
42
+ name: formData.name,
43
+ email: formData.email,
44
+ helpCategory: 'support',
45
+ message: formData.message,
46
+ // Tracking fields forwarded transparently
47
+ rdt_cid: getRedditClickId(),
48
+ });
49
+ } catch {
50
+ // Error toast is shown automatically; handle UI reset here if needed
51
+ }
52
52
  };
53
53
 
54
- return (
55
- <form onSubmit={handleSubmit}>
56
- {/* form fields */}
57
- <button type="submit" disabled={isSubmitting}>
58
- {isSubmitting ? 'Sending...' : 'Send Message'}
59
- </button>
60
- </form>
61
- );
54
+ return <button disabled={isSubmitting}>Submit</button>;
62
55
  }
63
56
  ```
64
57
 
65
- > **Note:** This hook requires `EndpointsRuntimeProvider` to be mounted in the component tree. The hub supplies the default contact endpoint; embedded apps provide a proxied path via the same context.
58
+ ## Notes
59
+
60
+ - Redirect uses `window.location.href` for absolute URLs and `router.push` for relative paths
61
+ - Guards against duplicate submissions via `isSubmitting` check at the top of `submit`
62
+ - Endpoint URL is injected via context, making the hook compatible with both hub and embedded/proxied deployments
63
+
64
+ **Source:** [`use-contact-submission.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/use-contact-submission.ts)