@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,40 +1,47 @@
1
- <!-- source-hash: ec93c3a6544d7f572c8219bc65ceaf67 -->
2
- Smooth-scroll utility that positions an element at the top of the viewport with support for sticky header offsets and pre-computed layout-shift adjustments.
1
+ <!-- source-hash: 265569e7b29e4fca2ffe9d67c0157121 -->
2
+ Cancellation-proof scroll helper that animates a target element to the top of the viewport using a self-driven `requestAnimationFrame` tween immune to browser scroll anchoring, layout shifts, and mid-scroll cancellation issues that affect native smooth scrolling.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `ScrollElementIntoViewOptions`
7
-
8
- | Option | Type | Default | Description |
9
- |---|---|---|---|
10
- | `headerOffset` | `number` | `0` | Pixels to subtract for sticky chrome (e.g., `96` for `scroll-mt-24`) |
11
- | `behavior` | `ScrollBehavior` | `'smooth'` | `'smooth'` for animated scrolls, `'instant'` for deep-link jumps |
12
- | `adjustTargetY` | `(raw: number) => number` | | Callback to correct the pixel target before animation starts |
13
-
14
- ### `scrollElementIntoView(target, options?)`
15
-
16
- Computes a fixed pixel target via `getBoundingClientRect().top + scrollY - headerOffset`, then calls `window.scrollTo()` directly. This avoids the jitter caused by `element.scrollIntoView()`, which re-targets continuously during layout shifts. Handles `null`/`undefined` refs as a no-op and short-circuits in SSR environments.
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `ScrollElementIntoViewOptions` | `interface` | Configuration: `headerOffset`, `behavior`, `adjustTargetY`, `durationMs` |
9
+ | `scrollElementIntoView` | `function` | Main entry point — resolves the scroll container, cancels any prior tween, and drives the animation |
10
+ | `getScrollableAncestor` | `function` (internal) | Walks up the DOM to find the nearest real scroll container (`auto\|scroll\|overlay`), ignoring `clip`/`hidden` |
11
+ | `cancelActiveScroll` | `function` (internal) | Cancels the in-flight `rAF` loop and removes gesture listeners |
12
+ | `easeOutCubic` | `function` (internal) | Easing curve `1 - (1 - t)³` applied per frame |
17
13
 
18
14
  ## Usage Example
19
15
 
20
16
  ```typescript
21
17
  import { scrollElementIntoView } from './scroll-into-view'
22
18
 
23
- // Basic — scroll a ref to top, accounting for a 96px sticky header
24
- scrollElementIntoView(cardRef.current, { headerOffset: 96 })
19
+ // Basic — smooth scroll below a 64px sticky header
20
+ const el = document.getElementById('section-target')
21
+ scrollElementIntoView(el, { headerOffset: 64 })
25
22
 
26
- // Instant jump on deep-link land
27
- scrollElementIntoView(anchorRef.current, {
28
- headerOffset: 96,
29
- behavior: 'instant',
30
- })
23
+ // Instant jump (deep-link land, programmatic focus)
24
+ scrollElementIntoView(el, { behavior: 'instant', headerOffset: 64 })
31
25
 
32
- // Pre-computed layout-shift adjustment (e.g. HelpCenterCard accordion)
33
- // Row A (above target) collapses simultaneously — shift target up by A's height
34
- scrollElementIntoView(rowBRef.current, {
26
+ // With a layout-shift adjustment (e.g. sibling drawer collapsing adds 120px)
27
+ scrollElementIntoView(el, {
35
28
  headerOffset: 96,
36
- adjustTargetY: (raw) => raw - getAboveDrawerHeight(),
29
+ durationMs: 400,
30
+ adjustTargetY: (rawY) => rawY - 120,
37
31
  })
32
+
33
+ // Null-safe — safe to pass a ref directly without defensive branching
34
+ scrollElementIntoView(ref.current, { headerOffset: 96 })
38
35
  ```
39
36
 
40
- > **Why not `element.scrollIntoView()`?** That API re-targets continuously as the page reflows during the animation, causing visible jitter when sibling content is also moving. Pre-computing a fixed pixel value lets the browser commit to a clean, uninterrupted animation.
37
+ **Behaviors at a glance:**
38
+
39
+ - **Scroll container auto-detection** — drives the nearest `overflow-y: auto/scroll` ancestor (e.g. OpenFrame's `<main class="overflow-y-auto">`) rather than always targeting `window`
40
+ - **Anchoring immunity** — per-frame instant writes mean there is no native smooth scroll for browser scroll anchoring or `focus()` to abort
41
+ - **Live target recomputation** — target pixel is recalculated each frame, so a drawer still expanding is tracked to its resting position
42
+ - **User takeover** — `wheel` and `touchmove` cancel the tween immediately; the user is never fought
43
+ - **`prefers-reduced-motion`** — falls back to a single synchronous write automatically
44
+
45
+ ## Source
46
+
47
+ [`scroll-into-view.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/scroll-into-view.ts)
@@ -0,0 +1,37 @@
1
+ <!-- source-hash: a978a1280534da5c75f87c43d8c70e25 -->
2
+ Defines and exports the single source of truth for the `seo_description` field length constraint, enforcing a hard database-level character cap.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Value | Description |
7
+ |--------|------|-------|-------------|
8
+ | `SEO_DESCRIPTION_MAX_LENGTH` | `number` | `160` | Hard cap matching the `varchar(160)` DB column constraint |
9
+
10
+ ## Usage Example
11
+
12
+ ```typescript
13
+ import { SEO_DESCRIPTION_MAX_LENGTH } from '@flamingo-stack/openframe-frontend-core/utils';
14
+
15
+ // UI input enforcement
16
+ <input maxLength={SEO_DESCRIPTION_MAX_LENGTH} />
17
+
18
+ // AI prompt guidance
19
+ const prompt = `Generate a description under ${SEO_DESCRIPTION_MAX_LENGTH} characters.`;
20
+
21
+ // Validation guard
22
+ if (description.length > SEO_DESCRIPTION_MAX_LENGTH) {
23
+ throw new Error(`SEO description exceeds ${SEO_DESCRIPTION_MAX_LENGTH} character limit.`);
24
+ }
25
+ ```
26
+
27
+ ## Notes
28
+
29
+ > **Hard cap** — unlike `seo_title` (a soft search-engine recommendation), this limit is enforced at the database level (`varchar(160)`). Postgres will reject values exceeding it outright.
30
+
31
+ **Known consumers:**
32
+ - `SEOEditorPreview` — binds `maxLength` and renders an over-length alert
33
+ - The hub — uses this constant for AI generation prompt guidance and the rewrite-to-fit helper
34
+
35
+ ---
36
+
37
+ **Source:** [`seo-description.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/seo-description.ts)
@@ -0,0 +1,25 @@
1
+ <!-- source-hash: 822bf336cf43bc797363ba147feae651 -->
2
+ Defines and exports the single source of truth for the `seo_title` field length budget used across SEO tooling, AI generation prompts, and database validation.
3
+
4
+ ## Key Components
5
+
6
+ - **`SEO_TITLE_MAX_LENGTH`** — Constant (`60`) representing the maximum character length for an SEO title, aligned with search engine truncation thresholds.
7
+
8
+ ## Usage Example
9
+
10
+ ```typescript
11
+ import { SEO_TITLE_MAX_LENGTH } from '@flamingo-stack/openframe-oss-lib/seo-title';
12
+
13
+ // Validate an SEO title before saving
14
+ if (title.length > SEO_TITLE_MAX_LENGTH) {
15
+ throw new Error(`SEO title must be ${SEO_TITLE_MAX_LENGTH} characters or fewer.`);
16
+ }
17
+ ```
18
+
19
+ ## Notes
20
+
21
+ - The `seo_title` is rendered **verbatim** as the HTML `<title>` tag — no brand suffix is appended (unlike the default title fallback).
22
+ - The value `60` reflects the widely accepted character limit before search engines truncate page titles in results.
23
+ - Consumers include:
24
+ - **`SEOEditorPreview`** — drives the `maxLength` attribute on the input field and triggers the too-long alert.
25
+ - **The hub** — imported via `@flamingo-stack/openframe-frontend-core/utils` for AI prompt guidance and database `CHECK` constraint values.
@@ -0,0 +1,37 @@
1
+ <!-- source-hash: 9f786a0730fdf75c06716b087e1f5b2f -->
2
+ Unified social media embed caching singleton that provides a three-tier cache hierarchy (memory → server → direct fetch) for Reddit and Twitter embed clients, with request deduplication and async background refresh.
3
+
4
+ ## Key Components
5
+
6
+ - **`SocialEmbedCache`** — Singleton class exposing all cache operations
7
+ - **`CacheOptions`** — Interface defining `platform`, `url`, and `apiEndpoint` per-call inputs
8
+ - **`getFromMemory / setInMemory`** — In-process `Map`-backed cache layer
9
+ - **`getFromServer`** — Checks the server-side cache via `?cache-only=true` query param
10
+ - **`setInServer`** — Writes data to the server cache with promise-level deduplication via `cachingRequests`
11
+ - **`fetchWithHierarchy`** — Orchestrates the full lookup chain: memory → server cache → Reddit direct browser fetch → server proxy fallback
12
+ - **`scheduleAsyncRefresh`** — Fires a background refresh 1 second after load to keep the server cache warm without blocking the consumer
13
+ - **`fetchDirect`** — Thin wrapper around a caller-supplied `directFetcher` function with uniform logging
14
+
15
+ ## Usage Example
16
+
17
+ ```typescript
18
+ import { SocialEmbedCache } from './social-embed-cache';
19
+
20
+ const cache = SocialEmbedCache.getInstance();
21
+
22
+ await cache.fetchWithHierarchy({
23
+ platform: 'reddit',
24
+ url: 'https://www.reddit.com/r/example/comments/abc123/.json',
25
+ apiEndpoint: '/content/api/blog/reddit-proxy',
26
+ dataValidator: (data) => Array.isArray(data) && data.length > 0,
27
+ onDataUpdate: (data) => setEmbedData(data),
28
+ onError: (msg) => setError(msg),
29
+ onLoading: (loading) => setLoading(loading),
30
+ });
31
+ ```
32
+
33
+ > **Note:** Pass `apiEndpoint` on each call to route through your own reverse proxy rather than a hard-coded hub path. The singleton is pure TypeScript with no React dependency, making it safe to share across any embed satellite.
34
+
35
+ ## Source
36
+
37
+ [`social-embed-cache.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/social-embed-cache.ts)
@@ -1,16 +1,23 @@
1
- <!-- source-hash: 4129d05ad3798983504dba26d6153a8c -->
2
- Maps RAG table IDs to their display icons, human-readable labels, and document type lookups for the OpenFrame chat source chip system. Server-safe with no client-only imports.
1
+ <!-- source-hash: 64605009d59b6e0fa3559c548a66b58b -->
2
+ Provides static lookup maps and helper functions for resolving RAG table IDs to icon names, display labels, and document type mappings designed to be server-safe so both server-side chat route handlers and client-side components can import from a single source.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `SOURCE_ICON_NAMES` | `Record<string, string>` | Maps `RagTableConfig.id` → icon name string (resolved to React components via `icon-registry.ts`) |
9
- | `SOURCE_LABELS_BY_TABLE` | `Record<string, string>` | Maps `RagTableConfig.id` → human-readable display label used in chat source chips |
10
- | `DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID` | `Record<string, string>` | Reverse maps LLM-emitted `documentType` strings `RagTableConfig.id` |
11
- | `getSourceIconName()` | Function | Safe lookup returning `undefined` for unknown table IDs |
12
- | `getSourceLabel()` | Function | Lookup with fallback to raw table slug when no label is registered |
13
- | `defaultTableIdForDocumentType()` | Function | Default resolver for `useEmbeddedChat` when no custom callback is provided; returns `null` for unknown types |
6
+ ### Constants
7
+
8
+ | Export | Purpose |
9
+ |---|---|
10
+ | `SOURCE_ICON_NAMES` | Maps `RagTableConfig.id` → icon name string (resolved to a React component client-side via `icon-registry.ts`) |
11
+ | `SOURCE_LABELS_BY_TABLE` | Maps `RagTableConfig.id` human-readable display label used in chat chip strips |
12
+ | `DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID` | Reverse map from LLM-emitted `documentType` strings `RagTableConfig.id` |
13
+
14
+ ### Functions
15
+
16
+ | Export | Signature | Behavior |
17
+ |---|---|---|
18
+ | `getSourceIconName` | `(tableId: string \| null \| undefined) => string \| undefined` | Returns icon name or `undefined` (caller decides fallback) |
19
+ | `getSourceLabel` | `(tableId: string) => string` | Returns display label; falls back to raw `tableId` slug if unmapped |
20
+ | `defaultTableIdForDocumentType` | `(documentType: string) => string \| null` | Default resolver for `useEmbeddedChat`; returns `null` for unknown types |
14
21
 
15
22
  ## Usage Example
16
23
 
@@ -21,33 +28,22 @@ import {
21
28
  defaultTableIdForDocumentType,
22
29
  } from '@/utils/source-icons'
23
30
 
24
- // Resolve icon name for a known RAG table
25
- const iconName = getSourceIconName('github-commits')
26
- // → 'github'
27
-
28
- // Get display label for a chip strip
29
- const label = getSourceLabel('hubspot-tickets-anon')
30
- // → 'Tickets'
31
+ // Resolve icon name for a chip strip glyph
32
+ const iconName = getSourceIconName('github-commits') // → 'github'
31
33
 
32
- // Map a documentType emitted by the LLM to its table ID
33
- const tableId = defaultTableIdForDocumentType('slack_message')
34
- // → 'slack-messages'
34
+ // Resolve display label for a sub-message chip
35
+ const label = getSourceLabel('hubspot-tickets-self') // → 'My Tickets'
36
+ getSourceLabel('unknown-table') // → 'unknown-table' (fallback)
35
37
 
36
- // Graceful handling of unknown types
37
- const unknown = defaultTableIdForDocumentType('custom_type')
38
- // → null
38
+ // Map an LLM-emitted documentType to its RAG table
39
+ const tableId = defaultTableIdForDocumentType('slack_message') // → 'slack-messages'
40
+ defaultTableIdForDocumentType('custom_type') // → null
39
41
  ```
40
42
 
41
- ## Supported Source Categories
43
+ ## Architecture Notes
42
44
 
43
- | Category | Tables Covered |
44
- |----------|---------------|
45
- | **Docs** | `openframe-docs`, `data-room-docs` |
46
- | **CMS / Programs** | Blog posts, releases, case studies, webinars, events, podcasts, interviews |
47
- | **Financials** | KPIs, cap table, P&L, balance sheet, cash flow, investor updates |
48
- | **ClickUp** | Roadmap, delivery, internal tasks |
49
- | **GitHub** | Commits, PRs, PR reviews (public + internal variants) |
50
- | **HubSpot** | Tickets (full, anon, self) |
51
- | **Communications** | Slack messages |
45
+ - **Server-safe by design** no `'use client'` banner; icon *names* live here while icon *components* remain client-only in `src/components/chat/utils/icon-registry.ts`.
46
+ - The client-side chat barrel re-exports these helpers for ergonomic imports.
47
+ - `DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID` mirrors the hub's `tableIdForDocumentType()` registry; embedders needing tenant-specific overrides pass a custom callback to `useEmbeddedChat` instead.
52
48
 
53
- > **Design note:** Icon names are intentionally decoupled from React components — the resolver (`icon-registry.ts`) stays client-only while this file remains server-safe, allowing hub-side RAG mappers and chat route handlers to call these utilities directly.
49
+ **Source:** [`src/utils/source-icons.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/utils/source-icons.ts)
@@ -0,0 +1,46 @@
1
+ <!-- source-hash: 6fc430d117cdf20c7781e51705df5734 -->
2
+ Composes fetch URLs for suggestion sections (FaqSection and RelatedContentSection) with a consistent query parameter shape, ensuring the two consumers never drift in their `entityType`/`entityId`/`count` parameter ordering.
3
+
4
+ ## Key Components
5
+
6
+ ### `SuggestionUrlOptions`
7
+ Configuration interface controlling URL construction:
8
+
9
+ | Property | Type | Description |
10
+ |---|---|---|
11
+ | `apiBaseUrl` | `string?` | Prefix for third-party embeds or reverse proxies; defaults to same-origin relative (`''`) |
12
+ | `entityType` | `string?` | Entity scope qualifier; must be paired with `entityId` |
13
+ | `entityId` | `number \| string?` | Entity scope qualifier; must be paired with `entityType` |
14
+ | `count` | `number?` | Maps to the server's `count` param; omitted when undefined (server default applies) |
15
+ | `extraParams` | `Record<string, string \| undefined>?` | Additional query params appended after the shared trio; empty/undefined values are skipped |
16
+
17
+ ### `buildSuggestionUrl(path, opts)`
18
+ Pure, server-safe function that assembles the final URL string. Parameter ordering is fixed: `entityType` → `entityId` → `count` → `extraParams`. Both `entityType` and `entityId` must be non-empty to be included; a partial pair is silently dropped.
19
+
20
+ ## Usage Example
21
+
22
+ ```typescript
23
+ // Same-origin relative URL with entity scope
24
+ buildSuggestionUrl('/api/faqs', {
25
+ entityType: 'article',
26
+ entityId: 42,
27
+ count: 5,
28
+ })
29
+ // → '/api/faqs?entityType=article&entityId=42&count=5'
30
+
31
+ // Absolute URL with extra params and no entity scope
32
+ buildSuggestionUrl('/api/related', {
33
+ apiBaseUrl: 'https://api.example.com',
34
+ count: 10,
35
+ extraParams: { excludeTypes: 'video,file', draft: undefined }, // 'draft' skipped
36
+ })
37
+ // → 'https://api.example.com/api/related?count=10&excludeTypes=video%2Cfile'
38
+
39
+ // Bare path — no query string appended
40
+ buildSuggestionUrl('/api/faqs')
41
+ // → '/api/faqs'
42
+ ```
43
+
44
+ ## Source
45
+
46
+ [`suggestion-url.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/suggestion-url.ts)
@@ -1,40 +1,55 @@
1
- <!-- source-hash: 6ea14bfd05bc32d44e0bdda863e8da6c -->
2
- Provides normalization and conversion utilities for tool types across the Flamingo platform. Handles various input formats (aliases, case variations) and converts them to canonical ToolType values used throughout the system.
1
+ <!-- source-hash: 656c2a7658a961c816d272983ab9827c -->
2
+ Provides normalization and conversion utilities for mapping tool name variants (aliases, case variations, separator styles) to canonical `ToolType` values used across the OpenFrame platform.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`normalizeToolType()`** - Converts tool name variants to canonical ToolType, returns undefined for invalid inputs
7
- - **`normalizeToolTypeWithFallback()`** - Same as above but defaults to 'SYSTEM' for invalid inputs
8
- - **`toToolLabel()`** - Converts any tool name variant to its display label
9
- - **`isValidToolType()`** - Validates if a string can be normalized to a valid ToolType
10
- - **`getToolTypeAliases()`** - Returns all valid aliases for a given canonical ToolType
11
- - **`getToolLabel()`** - Gets display label for a canonical ToolType
12
- - **`toolAliasMap`** - Internal mapping of tool name variants to canonical types
6
+ | Export | Description |
7
+ |---|---|
8
+ | `normalizeToolType(input?)` | Converts any tool name variant to a canonical `ToolType`; returns `undefined` if no match |
9
+ | `normalizeToolTypeWithFallback(input?)` | Same as above but defaults to `'SYSTEM'` when no match is found |
10
+ | `toToolLabel(input?)` | Converts any tool name variant to its human-readable display label |
11
+ | `isValidToolType(input?)` | Returns `true` if the input resolves to a known `ToolType` |
12
+ | `getToolTypeAliases(toolType)` | Returns all alias strings that map to a given canonical `ToolType` |
13
+ | `getToolLabel(toolType)` | Returns the display label for a canonical `ToolType` |
14
+ | `toolAliasMap` | Internal lookup table covering all supported tools: `FLEET_MDM`, `MESHCENTRAL`, `AUTHENTIK`, `OPENFRAME`, `OPENFRAME_CHAT`, `OPENFRAME_CLIENT`, `OPENFRAME_RMM`, `OSQUERY`, `SYSTEM` |
13
15
 
14
16
  ## Usage Example
15
17
 
16
18
  ```typescript
17
- import {
18
- normalizeToolType,
19
- normalizeToolTypeWithFallback,
19
+ import {
20
+ normalizeToolType,
21
+ normalizeToolTypeWithFallback,
20
22
  toToolLabel,
21
- isValidToolType
23
+ isValidToolType,
24
+ getToolTypeAliases,
22
25
  } from './tool-utils'
23
26
 
24
27
  // Normalize various input formats
25
- normalizeToolType('FLEET-MDM') // => 'FLEET_MDM'
26
- normalizeToolType('unknown') // => undefined
28
+ normalizeToolType('rmm') // => 'OPENFRAME_RMM'
29
+ normalizeToolType('FLEET-MDM') // => 'FLEET_MDM'
30
+ normalizeToolType('unknown') // => undefined
27
31
 
28
- // With fallback to SYSTEM
29
- normalizeToolTypeWithFallback('mesh') // => 'MESHCENTRAL'
30
- normalizeToolTypeWithFallback('invalid') // => 'SYSTEM'
32
+ // Safe fallback for unknown inputs
33
+ normalizeToolTypeWithFallback('unknown') // => 'SYSTEM'
31
34
 
32
- // Convert to display labels
33
- toToolLabel('fleet_mdm') // => 'Fleet'
35
+ // Human-readable labels
36
+ toToolLabel('fleet-mdm') // => 'Fleet'
37
+ toToolLabel('rmm') // => 'RMM'
34
38
 
35
- // Validation
36
- isValidToolType('authentik') // => true
37
- isValidToolType('invalid') // => false
39
+ // Validation guard
40
+ if (isValidToolType(userInput)) {
41
+ // safe to use as ToolType
42
+ }
43
+
44
+ // Enumerate all aliases for a tool (e.g. docs or validation UI)
45
+ getToolTypeAliases('FLEET_MDM')
46
+ // => ['FLEET', 'FLEET_MDM', 'FLEET-MDM', 'FLEETMDM', 'fleet', ...]
38
47
  ```
39
48
 
40
- The utility supports all major MSP tools including Fleet MDM, MeshCentral, Authentik, and OpenFrame components with comprehensive alias mapping for different naming conventions.
49
+ ## Notes
50
+
51
+ - Resolution order: exact match → uppercase → lowercase
52
+ - All separator styles are supported: underscores (`FLEET_MDM`), hyphens (`fleet-mdm`), and concatenated (`fleetmdm`)
53
+ - Agent suffixes like `fleetmdm-agent` and `openframe-rmm-agent` are included in the alias map
54
+
55
+ **Source:** [`tool-utils.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/tool-utils.ts)
@@ -0,0 +1,64 @@
1
+ <!-- source-hash: e02e3bf5bd0b2062565eb3542938d795 -->
2
+ Builds hierarchical document trees from flat record lists using a generic 3-pass algorithm, shared across all doc-source DALs in the OpenFrame platform.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `TreeNodeBase` | Interface | Base shape for tree nodes — extend with domain-specific fields |
9
+ | `formatDocName` | Function | Strips `.md` extension, handles `README` casing, and humanizes hyphenated names |
10
+ | `sortTreeChildren` | Function | Recursively sorts nodes: README first → folders → files, each sub-group ordered by `sortOrder` then alphabetically |
11
+ | `buildDocumentTree` | Function | Generic 3-pass tree builder accepting mapper and path resolver callbacks |
12
+
13
+ ## 3-Pass Algorithm
14
+
15
+ ```mermaid
16
+ graph TD
17
+ Pass1["Pass 1: Map flat records to nodes"] --> Pass2["Pass 2: Resolve parent paths and build hierarchy"]
18
+ Pass2 --> Pass3["Pass 3: Sort children recursively"]
19
+ Pass3 --> Root["Return root nodes"]
20
+ ```
21
+
22
+ ## Usage Example
23
+
24
+ ```typescript
25
+ import { buildDocumentTree, formatDocName, TreeNodeBase } from './tree-builder'
26
+
27
+ interface DocNode extends TreeNodeBase {
28
+ slug: string
29
+ }
30
+
31
+ interface DbDoc {
32
+ path: string
33
+ parent_path: string | null
34
+ name: string
35
+ type: 'file' | 'folder'
36
+ }
37
+
38
+ const docs: DbDoc[] = fetchDocsFromDb()
39
+
40
+ const tree = buildDocumentTree<DocNode, DbDoc>(
41
+ docs,
42
+ (doc) => ({
43
+ id: doc.path,
44
+ name: formatDocName(doc.name),
45
+ path: doc.path,
46
+ type: doc.type,
47
+ slug: doc.path.split('/').pop() ?? '',
48
+ children: [],
49
+ }),
50
+ (doc) => doc.parent_path, // Pass 2: explicit parent path
51
+ (doc) => doc.path // Pass 2: node's own path key
52
+ )
53
+ ```
54
+
55
+ ## Sort Order
56
+
57
+ | Priority | Rule |
58
+ |---|---|
59
+ | 1 | `README` / `readme.md` always first |
60
+ | 2 | Folders before files |
61
+ | 3 | Ascending `sortOrder` (nodes without it sort last) |
62
+ | 4 | Alphabetical (locale-insensitive) |
63
+
64
+ **Source:** [`lib/tree-builder.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/lib/tree-builder.ts)
@@ -0,0 +1,42 @@
1
+ <!-- source-hash: a8a83c1fb84a9906fd7502112718264a -->
2
+ Isomorphic SSOT module for stable per-element identity on `video_bites` / `teasers` JSONB array elements. Provides ID generation, ID stamping, and the canonical element-matching predicate shared across the admin editor (browser) and Mux reconciliation sweep (Node).
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `BiteIdentity` | Interface | Identity-relevant subset of `VideoTeaser` (`id?`, `url`, `source_url?`) |
9
+ | `BITE_ID_RE` | `RegExp` | Validates 8 lowercase hex char IDs — collision-safe within a single array |
10
+ | `generateBiteId()` | Function | Produces a new 8-hex ID via `crypto.randomUUID()` |
11
+ | `ensureBiteIds()` | Function | Stamps missing IDs and re-stamps in-array duplicates; returns same reference when unchanged |
12
+ | `matchBiteElement()` | Function | Canonical three-leg predicate for identifying the same clip across array states |
13
+
14
+ ## Usage Example
15
+
16
+ ```typescript
17
+ import { ensureBiteIds, matchBiteElement } from './video-bite-id'
18
+
19
+ // Stamp incoming bites before persistence
20
+ const { bites, changed } = ensureBiteIds(rawBites)
21
+ if (changed) await persistBites(bites)
22
+
23
+ // Match an incoming element against the existing array (multiset — consume each existing once)
24
+ const matched = existingBites.find(existing => matchBiteElement(existing, incoming))
25
+ if (matched) {
26
+ // Carry matched.id forward — id equality, url match, or source_url flip
27
+ }
28
+ ```
29
+
30
+ ## Matching Legs
31
+
32
+ `matchBiteElement` uses an **any-of** strategy (not short-circuit on ID mismatch) to handle cases where two sides represent the same clip with different IDs:
33
+
34
+ 1. **ID equality** — both sides carry an ID and they match
35
+ 2. **URL equality** — `incoming.url === existing.url` (pre-flip sessions, plain re-saves)
36
+ 3. **Source URL flip** — `incoming.url === existing.source_url` (Mux HLS pipeline already flipped the URL; redelivered Vizard ingests)
37
+
38
+ > **Caller contract:** When matching a whole incoming array, each existing element must be consumed at most once to prevent duplicate incoming URLs from cloning a single element's ID.
39
+
40
+ ---
41
+
42
+ **Source:** [`video-bite-id.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/video-bite-id.ts)
@@ -19,6 +19,8 @@
19
19
  * server layout; the DOM-touching helpers guard on `typeof document`.
20
20
  */
21
21
 
22
+ import { isDismissedCookieValue, readDismissCookie, writeDismissCookie, clearDismissCookie } from './dismiss-cookie'
23
+
22
24
  /** Cookie name for a platform's dismissed-announcement id — the ONE home for
23
25
  * the encoding, shared by the client writer and the hub's SSR reader. */
24
26
  export function announcementDismissCookieName(platform: string): string {
@@ -27,20 +29,10 @@ export function announcementDismissCookieName(platform: string): string {
27
29
 
28
30
  /** THE dismissal match rule (id-match, not presence), shared across the
29
31
  * server/client boundary. `undefined` id (no active announcement) → false. */
30
- export function isDismissedCookieValue(
31
- cookieValue: string | undefined,
32
- id: string | undefined,
33
- ): boolean {
34
- return !!id && cookieValue === id
35
- }
36
-
37
- function readCookie(name: string): string | undefined {
38
- if (typeof document === 'undefined') return undefined
39
- const match = document.cookie
40
- .split('; ')
41
- .find((row) => row.startsWith(`${name}=`))
42
- return match ? decodeURIComponent(match.slice(name.length + 1)) : undefined
43
- }
32
+ // The match rule + cookie IO live in `utils/dismiss-cookie.ts` — shared with
33
+ // every other dismissible surface. Re-exported so existing importers (incl. the
34
+ // hub's SSR layout) keep their import path.
35
+ export { isDismissedCookieValue } from './dismiss-cookie'
44
36
 
45
37
  const legacyDismissKey = (platform: string, id: string) =>
46
38
  `${platform}-announcement-${id}-dismissed`
@@ -49,8 +41,7 @@ const legacyDismissKey = (platform: string, id: string) =>
49
41
  * next request; localStorage is intentionally NOT written (read-only legacy). */
50
42
  export function dismissAnnouncement(platform: string, id: string): void {
51
43
  if (typeof document === 'undefined') return
52
- const name = announcementDismissCookieName(platform)
53
- document.cookie = `${name}=${encodeURIComponent(id)}; path=/; max-age=31536000; SameSite=Lax`
44
+ writeDismissCookie(announcementDismissCookieName(platform), id)
54
45
  }
55
46
 
56
47
  /**
@@ -61,7 +52,7 @@ export function dismissAnnouncement(platform: string, id: string): void {
61
52
  */
62
53
  export function isAnnouncementDismissed(platform: string, id: string): boolean {
63
54
  if (typeof document === 'undefined') return false
64
- const cookieValue = readCookie(announcementDismissCookieName(platform))
55
+ const cookieValue = readDismissCookie(announcementDismissCookieName(platform))
65
56
  if (cookieValue !== undefined) return isDismissedCookieValue(cookieValue, id)
66
57
  try {
67
58
  return localStorage.getItem(legacyDismissKey(platform, id)) !== null
@@ -74,7 +65,7 @@ export function isAnnouncementDismissed(platform: string, id: string): boolean {
74
65
  * keys) — test/story helper so callers never restate the key encoding. */
75
66
  export function clearAnnouncementDismissals(platform: string): void {
76
67
  if (typeof document === 'undefined') return
77
- document.cookie = `${announcementDismissCookieName(platform)}=; path=/; max-age=0`
68
+ clearDismissCookie(announcementDismissCookieName(platform))
78
69
  try {
79
70
  const prefix = `${platform}-announcement-`
80
71
  Object.keys(localStorage).forEach((key) => {
@@ -0,0 +1,51 @@
1
+ <!-- source-hash: 4c86af12e778cd64fe713a8cdb304259 -->
2
+ Defines shared URL parameter keys and anchor ID utilities for the OpenFrame dev-center, serving as the single source of truth between the chrome registry (which writes query params) and list views (which read them).
3
+
4
+ ## Key Components
5
+
6
+ ### `DEV_SECTION_PARAM_KEYS`
7
+ A `const` object mapping logical filter names to their canonical URL query parameter strings.
8
+
9
+ | Key | URL Param | Purpose |
10
+ |---|---|---|
11
+ | `search` | `search` | Free-text search, shared by all dev-center sections |
12
+ | `status` | `status` | Roadmap / Help Center ticket status filter |
13
+ | `releaseStatus` | `release_status` | Product-releases stability-tier filter |
14
+ | `deliveryTaskType` | `task_type` | Delivery task-type filter (bug-fix / enhancement) |
15
+
16
+ ### `DevSectionAnchorKind`
17
+ Union type constraining valid section identifiers used in DOM anchor IDs: `'roadmap' | 'delivery' | 'ticket'`.
18
+
19
+ ### `devSectionAnchorId(section, id)`
20
+ Composes the canonical `<section>-<id>` anchor string used consistently by row components (`DeliveryRow`, `RoadmapCard`, `HelpCenterCard`) and the URL composer (`appendSearchAndHash`).
21
+
22
+ ## Usage Example
23
+
24
+ ```typescript
25
+ import {
26
+ DEV_SECTION_PARAM_KEYS,
27
+ DevSectionAnchorKind,
28
+ devSectionAnchorId,
29
+ } from './dev-section-param-keys'
30
+
31
+ // Reading a filter from the URL (list view side)
32
+ const url = new URL(window.location.href)
33
+ const status = url.searchParams.get(DEV_SECTION_PARAM_KEYS.status)
34
+ const taskType = url.searchParams.get(DEV_SECTION_PARAM_KEYS.deliveryTaskType)
35
+
36
+ // Writing a filter to the URL (chrome registry side)
37
+ url.searchParams.set(DEV_SECTION_PARAM_KEYS.releaseStatus, 'stable')
38
+
39
+ // Generating a consistent anchor ID for a roadmap item
40
+ const anchorId = devSectionAnchorId('roadmap', 'item-42')
41
+ // → "roadmap-item-42"
42
+
43
+ // Used in a row component
44
+ <div id={devSectionAnchorId('delivery' as DevSectionAnchorKind, task.id)} />
45
+ ```
46
+
47
+ ## Why This Exists
48
+
49
+ Without this module, the chrome and view layers could each hard-code different string literals (e.g., `"task_type"` vs `"taskType"`), causing silent filtering failures. Since this file has **no React or heavy dependencies**, it is safely importable from both server-bundled utilities and client-side views.
50
+
51
+ **Source:** [`dev-section-param-keys.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/dev-section-param-keys.ts)