@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,54 +1,43 @@
1
- <!-- source-hash: e190543dcb8ddd78af0a45f332d3eefe -->
2
- A selectable button component that supports icons, images, tags, and selected/disabled states, designed for use in option-selection UIs such as lists or grids.
1
+ <!-- source-hash: 74eb7379842105cc594b84564c93e6f2 -->
2
+ A selectable button component built with `React.forwardRef` that supports rich content including icons, images, tags, and descriptions, with distinct selected/unselected visual states.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `SelectButtonProps`
7
7
  | Prop | Type | Description |
8
8
  |------|------|-------------|
9
- | `title` | `string` | Primary label text (required) |
10
- | `description` | `string` | Optional subtitle, visible on `md+` screens |
11
- | `selected` | `boolean` | Highlights the button with accent styling and shows a check icon |
12
- | `disabled` | `boolean` | Disables interaction and reduces opacity |
9
+ | `title` | `string` | Required button label |
10
+ | `description` | `string` | Optional subtitle (visible on `md+` breakpoints) |
11
+ | `selected` | `boolean` | Toggles active/highlighted state |
12
+ | `disabled` | `boolean` | Disables interaction and dims the button |
13
13
  | `icon` | `React.ReactNode` | Optional leading icon |
14
14
  | `image` | `{ src, alt }` | Optional thumbnail image |
15
- | `tag` | `string` | Optional badge label rendered via `Tag` |
16
- | `tagVariant` | `TagProps['variant']` | Controls tag style, defaults to `"outline"` |
15
+ | `tag` | `string` | Optional `Tag` badge label |
16
+ | `tagVariant` | `TagProps['variant']` | Badge variant, defaults to `"outline"` |
17
17
  | `onClick` | `() => void` | Click handler |
18
- | `className` | `string` | Additional CSS classes |
18
+ | `className` | `string` | Additional CSS overrides |
19
19
 
20
20
  ### `SelectButton`
21
- A `forwardRef` button with `role="option"` and `aria-selected`, suitable for accessible listbox patterns. Applies ODS design tokens for color, spacing, and focus states.
21
+ A forwarded-ref `<button>` with `role="option"` and `aria-selected`, suitable for use inside listbox-style selection UIs. Renders a `CheckCircleIcon` when selected.
22
22
 
23
23
  ## Usage Example
24
24
 
25
25
  ```typescript
26
26
  import { SelectButton } from './select-button'
27
- import { ServerIcon } from '../icons-v2-generated/...'
27
+ import { ServerIcon } from '../icons'
28
28
 
29
- // Basic selectable option
30
29
  <SelectButton
31
- title="Standard Plan"
32
- description="Up to 10 devices"
33
- selected={selectedPlan === 'standard'}
34
- onClick={() => setSelectedPlan('standard')}
35
- />
36
-
37
- // With icon and tag
38
- <SelectButton
39
- title="Enterprise Plan"
40
- description="Unlimited devices"
30
+ title="Production Server"
31
+ description="us-east-1 · 4 vCPU"
41
32
  icon={<ServerIcon />}
42
- tag="Popular"
33
+ image={{ src: "/logos/aws.png", alt: "AWS" }}
34
+ tag="Recommended"
43
35
  tagVariant="solid"
44
- selected={selectedPlan === 'enterprise'}
45
- onClick={() => setSelectedPlan('enterprise')}
36
+ selected={selectedId === 'prod'}
37
+ onClick={() => setSelectedId('prod')}
46
38
  />
39
+ ```
47
40
 
48
- // With thumbnail image
49
- <SelectButton
50
- title="Acme Corp"
51
- image={{ src: '/logos/acme.png', alt: 'Acme Corp logo' }}
52
- selected={true}
53
- />
54
- ```
41
+ > **Accessibility note:** Wrap multiple `SelectButton` instances in a container with `role="listbox"` to form a complete ARIA listbox pattern.
42
+
43
+ **Source:** [`select-button.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/select-button.tsx)
@@ -1,51 +1,64 @@
1
- <!-- source-hash: e691658139dcf0e352222348aeae0a32 -->
2
- Self-contained React component that combines SEO metadata editing fields with a live social media (Open Graph) card preview, used across blog posts, case studies, and product releases in the Flamingo/OpenFrame platform.
1
+ <!-- source-hash: d142e47d8c6e07ffbb045420607beaf0 -->
2
+ Renders a combined SEO metadata editor and live social media preview card, providing inline character-count validation and AI confidence indicators for SEO title, description, and keywords fields, plus OG image upload/display.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `SEOEditorPreview` (default export)
7
- The main component rendering a two-panel layout:
8
- - **Editor fields** — SEO title, description, keywords, and OG image upload
9
- - **Live OG card preview** — real-time social media card simulation
10
7
 
11
- ### `SEOEditorPreviewProps` interface
8
+ A client-side React component that combines three responsibilities:
9
+
10
+ - **SEO field editing** — `Input`/`Textarea` fields for `seoTitle`, `seoDescription`, and `seoKeywords`, each with character-count tracking and length-limit warnings sourced from `SEO_TITLE_MAX_LENGTH` and `SEO_DESCRIPTION_MAX_LENGTH` constants.
11
+ - **OG image management** — upload via `onOgImageUpload`, display with hover-to-replace/remove controls, and automatic fallback to `featuredImage` when no OG image is set.
12
+ - **Live social preview** — a "Social Media Preview" card reflecting display fallbacks (`seoTitle → title`, `seoDescription → summary`, `ogImageUrl → featuredImage`).
13
+
14
+ ### `SEOEditorPreviewProps`
15
+
12
16
  | Prop | Type | Description |
13
- |------|------|-------------|
17
+ |---|---|---|
14
18
  | `seoTitle` / `seoDescription` / `seoKeywords` / `ogImageUrl` | `string` | Controlled SEO field values |
15
19
  | `title` / `summary` / `featuredImage` | `string` | Auto-populate fallback sources |
16
- | `onSeo*Change` / `onOgImageUrlChange` | `(value: string) => void` | Change handlers per field |
17
- | `onOgImageUpload` | `(file: File) => Promise<string>` | Optional parent-provided upload handler |
18
- | `aiConfidenceSeo*` | `number` (optional) | AI confidence scores shown via `ConfidenceBadge` |
19
- | `domain` | `string` | Preview domain label (default: `'openmsp.ai'`) |
20
- | `disabled` | `boolean` | Disables all inputs |
21
-
22
- ### Internal State
23
- - `imageError` — falls back to placeholder when OG image fails to load
24
- - `isUploading` — shows `Loader2` spinner during file upload
25
- - `fileInputRef` — ref to hidden `<input type="file">` for programmatic click
20
+ | `onSeo*Change` / `onOgImageUrlChange` | `(value: string) => void` | Controlled change handlers |
21
+ | `onOgImageUpload` | `(file: File) => Promise<string>` | Parent-supplied upload handler |
22
+ | `aiConfidenceSeo*` | `number` (optional) | Triggers `AIGeneratedBadge` + `ConfidenceBadge` |
23
+ | `domain` | `string` | Preview domain (default: `'openmsp.ai'`) |
24
+ | `disabled` | `boolean` | Disables all interactive controls |
26
25
 
27
26
  ## Usage Example
28
27
 
29
28
  ```typescript
30
- <SEOEditorPreview
31
- seoTitle={post.seoTitle}
32
- seoDescription={post.seoDescription}
33
- seoKeywords={post.seoKeywords}
34
- ogImageUrl={post.ogImageUrl}
35
- title={post.title}
36
- summary={post.summary}
37
- featuredImage={post.featuredImage}
38
- onSeoTitleChange={(v) => updatePost({ seoTitle: v })}
39
- onSeoDescriptionChange={(v) => updatePost({ seoDescription: v })}
40
- onSeoKeywordsChange={(v) => updatePost({ seoKeywords: v })}
41
- onOgImageUrlChange={(v) => updatePost({ ogImageUrl: v })}
42
- onOgImageUpload={async (file) => {
43
- const { url } = await uploadAsset(file);
29
+ import { SEOEditorPreview } from './seo-editor-preview';
30
+
31
+ function ArticleForm() {
32
+ const [seoTitle, setSeoTitle] = useState('');
33
+ const [seoDescription, setSeoDescription] = useState('');
34
+
35
+ const handleUpload = async (file: File): Promise<string> => {
36
+ const formData = new FormData();
37
+ formData.append('file', file);
38
+ const res = await fetch('/api/upload', { method: 'POST', body: formData });
39
+ const { url } = await res.json();
44
40
  return url;
45
- }}
46
- aiConfidenceSeoTitle={0.92}
47
- domain="flamingo.run"
48
- />
41
+ };
42
+
43
+ return (
44
+ <SEOEditorPreview
45
+ seoTitle={seoTitle}
46
+ seoDescription={seoDescription}
47
+ seoKeywords=""
48
+ ogImageUrl=""
49
+ title="Getting Started with OpenFrame"
50
+ summary="A guide to the unified MSP platform."
51
+ featuredImage="/images/hero.png"
52
+ onSeoTitleChange={setSeoTitle}
53
+ onSeoDescriptionChange={setSeoDescription}
54
+ onSeoKeywordsChange={() => {}}
55
+ onOgImageUrlChange={() => {}}
56
+ onOgImageUpload={handleUpload}
57
+ aiConfidenceSeoTitle={0.87}
58
+ domain="flamingo.run"
59
+ />
60
+ );
61
+ }
49
62
  ```
50
63
 
51
- > All SEO fields accept empty strings (never `undefined`). When a field is empty, the component automatically falls back to `title`, `summary`, or `featuredImage` props, showing an "Auto-populated" hint label beneath the input.
64
+ > **Source:** [`seo-editor-preview.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/seo-editor-preview.tsx)
@@ -1,25 +1,31 @@
1
- <!-- source-hash: d38fe303fe5fb74d67b5d888ec7ca267 -->
2
- A client-side React component for managing a dynamic list of social media profile links, supporting add, update, and remove operations with platform-aware icons.
1
+ <!-- source-hash: 590a86864f3606344569842b53130fe9 -->
2
+ A client-side React component for managing a dynamic list of social media profile links, supporting platform selection, URL input, and visibility controls.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### Interfaces
6
+ ### Exported Interfaces
7
7
 
8
- | Interface | Description |
9
- |---|---|
10
- | `SocialLink` | Represents a single link entry with `platform`, `url`, and optional `username` |
11
- | `SocialPlatform` | Describes a platform definition sourced from dynamic data (e.g., database), including `icon_name`, `url_pattern`, and `placeholder` |
12
- | `SocialLinksManagerProps` | Component props: `links`, `onChange` callback, optional `platforms` array, and optional `className` |
8
+ - **`SocialLink`** Represents a single social link entry with `platform`, `url`, optional `username`, and `visibility` (`'external' | 'internal'`).
9
+ - **`SocialPlatform`** — Describes a platform definition (typically fetched from a database) with fields like `id`, `name`, `display_name`, `icon_name`, `url_pattern`, `placeholder`, and `enabled`.
13
10
 
14
- ### `SocialLinksManager`
11
+ ### Component
15
12
 
16
- The primary exported component. Renders a list of social link rows, each with:
17
- - A platform icon (resolved via `iconMap` using `icon_name` from `SocialPlatform` or falls back to `platform` string)
18
- - A `Select` dropdown for choosing the platform
19
- - An `Input` for the profile URL
20
- - A delete button (`Trash2`) to remove the entry
13
+ - **`SocialLinksManager`** Main component accepting:
14
+ - `links` Current array of `SocialLink` entries
15
+ - `onChange` Callback invoked with the updated links array on any mutation
16
+ - `platforms` — Optional array of `SocialPlatform` definitions (defaults to empty; pass dynamic data from your API)
17
+ - `className` Optional CSS class override
21
18
 
22
- Supported icon keys in `iconMap`: `linkedin`, `github`, `twitter`, `reddit`, `slack`, `whatsapp`, `website`, `youtube`, `instagram`, `facebook`, `discord`, `telegram`, `tiktok`.
19
+ ### Internal Helpers
20
+
21
+ - **`addLink`** — Appends a new empty link defaulting to the first available platform.
22
+ - **`removeLink(index)`** — Removes the link at the given index.
23
+ - **`updateLink(index, field, value)`** — Mutates a specific field on a link entry immutably.
24
+ - **`getIcon(link, platform?)`** — Resolves the correct icon component from `iconMap` using `platform.icon_name` or `link.platform` as a fallback.
25
+
26
+ ### `iconMap`
27
+
28
+ A static mapping from platform key strings to icon components, covering: `linkedin`, `github`, `twitter`, `reddit`, `slack`, `whatsapp`, `website`, `youtube`, `instagram`, `facebook`, `discord`, `telegram`, `tiktok`, `email`/`mail`.
23
29
 
24
30
  ## Usage Example
25
31
 
@@ -27,8 +33,22 @@ Supported icon keys in `iconMap`: `linkedin`, `github`, `twitter`, `reddit`, `sl
27
33
  import { SocialLinksManager, SocialLink, SocialPlatform } from './social-links-manager';
28
34
 
29
35
  const platforms: SocialPlatform[] = [
30
- { id: '1', name: 'linkedin', display_name: 'LinkedIn', icon_name: 'linkedin', enabled: true, placeholder: 'https://linkedin.com/in/...' },
31
- { id: '2', name: 'github', display_name: 'GitHub', icon_name: 'github', enabled: true, placeholder: 'https://github.com/...' },
36
+ {
37
+ id: '1',
38
+ name: 'linkedin',
39
+ display_name: 'LinkedIn',
40
+ icon_name: 'linkedin',
41
+ placeholder: 'https://linkedin.com/in/username',
42
+ enabled: true,
43
+ },
44
+ {
45
+ id: '2',
46
+ name: 'github',
47
+ display_name: 'GitHub',
48
+ icon_name: 'github',
49
+ placeholder: 'https://github.com/username',
50
+ enabled: true,
51
+ },
32
52
  ];
33
53
 
34
54
  function ProfileEditor() {
@@ -44,4 +64,6 @@ function ProfileEditor() {
44
64
  }
45
65
  ```
46
66
 
47
- > **Note:** `platforms` defaults to an empty array, so platform data should always be passed explicitly typically fetched from your database to keep icon and URL patterns in sync.
67
+ **Visibility note:** Links with `visibility: 'internal'` are intended for company-hub rendering only and should be filtered server-side before exposing to external consumers.
68
+
69
+ **Source:** [`social-links-manager.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/social-links-manager.tsx)
@@ -1,53 +1,51 @@
1
- <!-- source-hash: 12ec98968857443cbefad0230bd2d335 -->
2
- A client-side React button component that renders a branded "Start with OpenFrame" CTA button, supporting five visual modes with the OpenFrame logo icon and a "Beta" status badge.
1
+ <!-- source-hash: e7990b46fb9187b4eebc186c31d83f16 -->
2
+ A branded CTA button component for the OpenFrame platform, rendering the OpenFrame logo icon alongside customizable label text and a "Beta" status badge.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `StartWithOpenFrameButton` | `React.ForwardRefExoticComponent` | Main button component with OpenFrame branding |
9
- | `StartWithOpenFrameButtonProps` | `interface` | Extends `ButtonProps`, omitting `variant`, `size`, and `leftIcon` |
10
-
11
- ### Props
6
+ ### `StartWithOpenFrameButtonProps`
7
+ Extends `ButtonProps` (omitting `variant`, `size`, and `leftIcon`) with:
12
8
 
13
9
  | Prop | Type | Default | Description |
14
- |------|------|---------|-------------|
15
- | `mode` | `'outline' \| 'yellow' \| 'pink' \| 'purple' \| 'cyan'` | `'outline'` | Visual color mode |
16
- | `buttonSize` | `'sm' \| 'md' \| 'lg'` | | Maps to internal Button size tokens |
17
- | `loading` | `boolean` | `false` | Shows loading state, hides the OpenFrame icon |
18
- | `buttonBackgroundColor` | `string` | | Custom background override (cyan mode only) |
19
- | `buttonTextColor` | `string` | — | Custom text color override (cyan mode only) |
20
- | `children` | `React.ReactNode` | `'Start Free Trial'` | Button label |
21
-
22
- ### Mode Behavior
23
-
24
- | Mode | Variant | Background Token |
25
- |------|---------|-----------------|
26
- | `outline` | `outline` | Default outline style |
27
- | `yellow` | `accent` | `--ods-open-yellow-base` |
28
- | `pink` / `purple` | `accent` | `--ods-flamingo-pink-base` |
29
- | `cyan` | `accent` | `--ods-flamingo-cyan-base` |
10
+ |---|---|---|---|
11
+ | `children` | `React.ReactNode` | `'Start Free Trial'` | Button label text |
12
+ | `mode` | `'outline' \| 'yellow' \| 'pink' \| 'purple' \| 'cyan'` | `'outline'` | Visual style theme |
13
+ | `buttonSize` | `'sm' \| 'md' \| 'lg'` | | Maps to internal Button size values |
14
+ | `loading` | `boolean` | `false` | Shows loading state; hides logo icon |
15
+ | `buttonBackgroundColor` | `string` | — | Custom background (cyan mode only) |
16
+ | `buttonTextColor` | `string` | | Custom text color (cyan mode only) |
17
+
18
+ ### `StartWithOpenFrameButton`
19
+ A `React.forwardRef` component that:
20
+ - Maps `mode` to `Button` variant (`outline` or `accent`) and ODS Tailwind classes
21
+ - Adjusts `OpenFrameLogo` icon colors for contrast per mode
22
+ - Injects a fixed `StatusBadge` ("Beta") as `rightIcon`
23
+ - Supports inline style overrides for the `cyan` mode
30
24
 
31
25
  ## Usage Example
32
26
 
33
27
  ```typescript
34
28
  import { StartWithOpenFrameButton } from './start-with-openframe-button';
35
29
 
36
- // Default outline mode
37
- <StartWithOpenFrameButton onClick={() => router.push('/signup')} />
30
+ // Default outline style
31
+ <StartWithOpenFrameButton />
38
32
 
39
- // Yellow accent, large size
33
+ // Yellow accent variant with large size
40
34
  <StartWithOpenFrameButton mode="yellow" buttonSize="lg">
41
35
  Get Started
42
36
  </StartWithOpenFrameButton>
43
37
 
44
- // Cyan with custom brand colors
38
+ // Cyan mode with custom brand colors
45
39
  <StartWithOpenFrameButton
46
40
  mode="cyan"
47
- buttonBackgroundColor="#00BCD4"
41
+ buttonBackgroundColor="#00BFA5"
48
42
  buttonTextColor="#000000"
49
- />
43
+ >
44
+ Launch OpenFrame
45
+ </StartWithOpenFrameButton>
50
46
 
51
47
  // Loading state
52
- <StartWithOpenFrameButton loading={isSubmitting} />
53
- ```
48
+ <StartWithOpenFrameButton loading={true} />
49
+ ```
50
+
51
+ > **Source:** [`start-with-openframe-button.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/start-with-openframe-button.tsx)
@@ -1,56 +1,47 @@
1
- <!-- source-hash: f987a6879214f07a120da4bd03335b15 -->
2
- Reusable client-side status filter component that renders a row of toggle buttons for filtering content by status, following the admin dashboard pattern used across the Flamingo/OpenFrame platform.
1
+ <!-- source-hash: edc07c45893f37b235057e00e9d58942 -->
2
+ A reusable React client component that renders a row of status filter buttons for admin dashboards, supporting role-based selective disabling of individual status options.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### Interfaces
7
7
 
8
- | Interface | Description |
9
- |-----------|-------------|
10
- | `StatusOption` | Defines a filter option with `value` and `label` strings |
11
- | `StatusFilterComponentProps` | Full props contract for the component |
8
+ - **`StatusOption`** Shape for each filter option: `{ value: string; label: string }`
9
+ - **`StatusFilterComponentProps`** — Full prop contract for the component:
12
10
 
13
- ### Props
11
+ | Prop | Type | Description |
12
+ |---|---|---|
13
+ | `selectedStatus` | `string` | Currently active filter value |
14
+ | `onStatusChange` | `(status: string) => void` | Callback fired on button click |
15
+ | `statusOptions` | `StatusOption[]` | List of available filter options |
16
+ | `showCount` | `boolean?` | Toggles item count display (default: `false`) |
17
+ | `count` | `number?` | Number to display when `showCount` is true |
18
+ | `className` | `string?` | Additional CSS classes for the wrapper |
19
+ | `disabledValues` | `string[]?` | Status values to render but disable (e.g. for role-gating) |
14
20
 
15
- | Prop | Type | Default | Description |
16
- |------|------|---------|-------------|
17
- | `selectedStatus` | `string` | — | Currently active filter value |
18
- | `onStatusChange` | `(status: string) => void` | — | Callback fired on filter selection |
19
- | `statusOptions` | `StatusOption[]` | — | Array of filter options to render |
20
- | `showCount` | `boolean` | `false` | Toggles item count display |
21
- | `count` | `number` | `0` | Number shown when `showCount` is enabled |
22
- | `className` | `string` | `''` | Additional CSS classes for the wrapper |
21
+ ### Component
23
22
 
24
- ### Exported
25
-
26
- - `StatusFilterComponent` — named export, main component
27
- - `StatusOption` — exported interface
28
- - `StatusFilterComponentProps` — exported interface
23
+ - **`StatusFilterComponent`** — Renders an "All" button followed by individual status buttons. Active status uses the `accent` variant; inactive uses `outline`. Disabled buttons remain visible but non-interactive — useful for exposing a full status set while restricting which values a viewer may select.
29
24
 
30
25
  ## Usage Example
31
26
 
32
27
  ```typescript
33
28
  import { StatusFilterComponent, StatusOption } from './status-filter-component';
34
29
 
35
- const ticketStatusOptions: StatusOption[] = [
36
- { value: 'open', label: 'Open' },
37
- { value: 'in_progress', label: 'In Progress' },
38
- { value: 'closed', label: 'Closed' },
30
+ const statusOptions: StatusOption[] = [
31
+ { value: 'published', label: 'Published' },
32
+ { value: 'draft', label: 'Draft' },
33
+ { value: 'archived', label: 'Archived' },
39
34
  ];
40
35
 
41
- export function TicketDashboard() {
42
- const [status, setStatus] = React.useState('all');
43
-
44
- return (
45
- <StatusFilterComponent
46
- selectedStatus={status}
47
- onStatusChange={setStatus}
48
- statusOptions={ticketStatusOptions}
49
- showCount
50
- count={42}
51
- />
52
- );
53
- }
36
+ // Non-management users can only switch to 'published'
37
+ <StatusFilterComponent
38
+ selectedStatus={currentStatus}
39
+ onStatusChange={setCurrentStatus}
40
+ statusOptions={statusOptions}
41
+ showCount={true}
42
+ count={42}
43
+ disabledValues={['draft', 'archived']}
44
+ />
54
45
  ```
55
46
 
56
- > **Note:** The `'all'` option is always rendered as a dedicated button — any `StatusOption` with `value: 'all'` in the input array is automatically excluded from the mapped list to prevent duplication.
47
+ > **Source:** [`status-filter-component.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/status-filter-component.tsx)
@@ -1,61 +1,57 @@
1
- <!-- source-hash: 0d6f9a8deca3671804c89abef2d0469f -->
2
- A reusable React component for selecting and creating tags with search autocomplete, chip display, and tag limit enforcement.
1
+ <!-- source-hash: 8568bb28ffc1ce07d2d726b7322e39a7 -->
2
+ Reusable React component for selecting and managing tags with search autocomplete, chip display, and optional tag creation.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `TagsSelector`
7
- Main exported component that renders a search input with inline tag chips, an autocomplete dropdown, and a tag counter.
6
+ ### Interfaces
8
7
 
9
- **Props (`TagsSelectorProps`):**
8
+ - **`Tag`** — Shape of a tag object: `id`, `name`, `slug`
9
+ - **`TagsSelectorProps`** — Component props:
10
10
 
11
11
  | Prop | Type | Default | Description |
12
- |------|------|---------|-------------|
13
- | `availableTags` | `Tag[]` | — | Pool of tags to search from |
14
- | `selectedTagIds` | `number[]` | — | Currently selected tag IDs |
15
- | `onTagsChange` | `(tagIds: number[]) => void` | — | Callback when selection changes |
16
- | `onCreateTag` | `(name: string) => Promise<Tag \| null>` | — | Optional async tag creation handler |
12
+ |---|---|---|---|
13
+ | `availableTags` | `Tag[]` | — | Pool of selectable tags |
14
+ | `selectedTagIds` | `number[]` | — | Controlled list of selected tag IDs |
15
+ | `onTagsChange` | `(ids: number[]) => void` | — | Fires when selection changes |
16
+ | `onCreateTag` | `(name: string) => Promise<Tag \| null>` | — | Async handler to create a new tag |
17
17
  | `maxTags` | `number` | `10` | Maximum selectable tags |
18
- | `allowCreate` | `boolean` | `true` | Enables the "Create tag" option |
19
- | `disabled` | `boolean` | `false` | Disables all interactions |
18
+ | `allowCreate` | `boolean` | `true` | Show "Create tag" option in dropdown |
19
+ | `disabled` | `boolean` | `false` | Disables all interaction |
20
20
 
21
- ### Internal Helpers
21
+ ### Exported Component
22
22
 
23
- - `handleTagAdd`Adds a tag if not already selected and under the limit
24
- - `handleTagRemove` — Removes a tag chip from selection
25
- - `handleCreateTag` — Calls `onCreateTag`, auto-selects the result, manages loading state
26
- - `getFilteredTagsForAutocomplete` — Filters available tags by search query, excluding already selected
27
- - `tagExistsWithName` — Case-insensitive duplicate check before showing "Create" option
23
+ - **`TagsSelector`**Main component rendering the search input, tag chips, autocomplete dropdown, and tag counter
28
24
 
29
25
  ## Usage Example
30
26
 
31
27
  ```typescript
32
28
  import { TagsSelector } from './tags-selector';
33
29
 
34
- function BlogPostForm() {
35
- const [selectedTagIds, setSelectedTagIds] = useState<number[]>([]);
30
+ function MyForm() {
31
+ const [selectedIds, setSelectedIds] = useState<number[]>([]);
36
32
 
37
- const handleCreateTag = async (name: string) => {
33
+ const handleCreate = async (name: string) => {
38
34
  const res = await fetch('/api/tags', {
39
35
  method: 'POST',
40
36
  body: JSON.stringify({ name }),
41
37
  });
42
- return res.json(); // { id, name, slug }
38
+ return res.json(); // returns Tag | null
43
39
  };
44
40
 
45
41
  return (
46
42
  <TagsSelector
47
43
  availableTags={[
48
- { id: 1, name: 'MSP', slug: 'msp' },
49
- { id: 2, name: 'AI', slug: 'ai' },
44
+ { id: 1, name: 'TypeScript', slug: 'typescript' },
45
+ { id: 2, name: 'React', slug: 'react' },
50
46
  ]}
51
- selectedTagIds={selectedTagIds}
52
- onTagsChange={setSelectedTagIds}
53
- onCreateTag={handleCreateTag}
47
+ selectedTagIds={selectedIds}
48
+ onTagsChange={setSelectedIds}
49
+ onCreateTag={handleCreate}
54
50
  maxTags={5}
55
- placeholder="Search tags..."
51
+ placeholder="Search or create tags..."
56
52
  />
57
53
  );
58
54
  }
59
55
  ```
60
56
 
61
- > **Note:** The dropdown auto-opens on focus and supports keyboard creation — pressing `Enter` while typing a new tag name triggers `handleCreateTag` when `allowCreate` is enabled.
57
+ **Source:** [`tags-selector.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/tags-selector.tsx)
@@ -1,26 +1,32 @@
1
- <!-- source-hash: 82679c7416bd1640d332a170504ba800 -->
2
- A reusable React component that renders editable textarea fields for video summary, transcript, and optional SRT subtitles with AI generation badges and confidence score indicators.
1
+ <!-- source-hash: 861a257f5441c2c79974b0bc1518d8c1 -->
2
+ Reusable React component that renders editable textarea fields for video summary, transcript, and optional SRT subtitles, with AI generation badges and confidence score indicators.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `TranscriptSummaryEditor`
7
- The default export. Renders up to three labeled textarea sections:
8
7
 
9
- | Section | Shown When |
10
- |---|---|
11
- | **Video Summary** | Always |
12
- | **Transcript** | Always |
13
- | **Subtitles (SRT)** | `subtitles` content exists OR `onSubtitlesChange` is provided |
8
+ Main exported component rendering up to three editor sections:
14
9
 
15
- Each section supports:
16
- - Customizable label, helper text, and placeholder
17
- - Configurable minimum height
18
- - `isAIGenerated` badge (Sparkles icon / CC icon for subtitles)
19
- - `ConfidenceBadge` for AI confidence scores (video summary and transcript only)
20
- - `disabled` state propagated to all textareas
10
+ - **Video Summary** — always visible; supports Markdown input
11
+ - **Transcript** always visible; supports speaker diarization format
12
+ - **Subtitles (SRT)** — conditionally rendered when `subtitles` content or `onSubtitlesChange` handler is provided
21
13
 
22
14
  ### `TranscriptSummaryEditorProps`
23
- Full TypeScript interface with all configurable props — all optional except `onVideoSummaryChange` and `onTranscriptChange`.
15
+
16
+ Full interface with sensible defaults for all optional props:
17
+
18
+ | Prop | Type | Default |
19
+ |---|---|---|
20
+ | `videoSummary` | `string` | `''` |
21
+ | `transcript` | `string` | `''` |
22
+ | `isAIGenerated` | `boolean` | `false` |
23
+ | `videoSummaryConfidence` | `number \| null` | — |
24
+ | `transcriptConfidence` | `number \| null` | — |
25
+ | `disabled` | `boolean` | `false` |
26
+ | `subtitles` | `string` | — |
27
+ | `onSubtitlesChange` | `(value: string) => void` | — |
28
+
29
+ All label, helper text, placeholder, and `minHeight` props are customizable per field.
24
30
 
25
31
  ## Usage Example
26
32
 
@@ -38,11 +44,11 @@ function InterviewEditor() {
38
44
  onVideoSummaryChange={setSummary}
39
45
  transcript={transcript}
40
46
  onTranscriptChange={setTranscript}
47
+ subtitles={subtitles}
48
+ onSubtitlesChange={setSubtitles}
41
49
  isAIGenerated={true}
42
50
  videoSummaryConfidence={87}
43
51
  transcriptConfidence={92}
44
- subtitles={subtitles}
45
- onSubtitlesChange={setSubtitles}
46
52
  videoSummaryMinHeight={250}
47
53
  transcriptMinHeight={400}
48
54
  />
@@ -50,4 +56,4 @@ function InterviewEditor() {
50
56
  }
51
57
  ```
52
58
 
53
- > Designed for use with `CustomerInterview` and `ProductRelease` entities in the Flamingo/OpenFrame platform, providing a consistent editing UI across entity types.
59
+ **Source:** [`transcript-summary-editor.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/transcript-summary-editor.tsx)
@@ -0,0 +1,47 @@
1
+ <!-- source-hash: f3f269920014c6536db44dfc2792eefe -->
2
+ Provides React hooks for warming the network path to video origins, reducing click-to-first-frame latency via preconnects and IntersectionObserver-gated preloads.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `saveDataEnabled` | `function` | Detects metered connections via `navigator.connection?.saveData`; SSR-safe |
9
+ | `useVideoOriginPreconnect` | `hook` | Fires TCP/TLS preconnects to Mux and Supabase Storage origins without IO subscription |
10
+ | `useVideoWarmup` | `hook` | Full warmup — preconnects on every render + IO-gated `<link rel="preload" as="video">` for Supabase-hosted MP4s |
11
+ | `MUX_STREAM_ORIGIN` | `const` | Re-exported from `mux-origins.ts` (server-safe module) |
12
+ | `MUX_IMAGE_ORIGIN` | `const` | Re-exported from `mux-origins.ts` (server-safe module) |
13
+
14
+ **Origin resolution priority:** explicit `supabaseStorageOrigin` arg → `ChatRuntime.endpoints.supabaseStorageOrigin` → preload skipped (Mux preconnects still fire).
15
+
16
+ **Preload gates (all must pass):**
17
+ 1. Container is within `nearMargin` of viewport (default `1000px`)
18
+ 2. `saveDataEnabled()` returns `false`
19
+ 3. `videoUrl` origin matches `supabaseStorageOrigin` (Mux HLS and YouTube are intentional no-ops)
20
+
21
+ ## Usage Example
22
+
23
+ ```typescript
24
+ // Full warmup — owns the video container ref
25
+ function VideoCard({ videoUrl }: { videoUrl: string }) {
26
+ const { ref, isNear } = useVideoWarmup<HTMLDivElement>({
27
+ videoUrl,
28
+ nearMargin: '800px',
29
+ })
30
+
31
+ return (
32
+ <div ref={ref}>
33
+ {isNear && <MuxPlayer src={videoUrl} />}
34
+ </div>
35
+ )
36
+ }
37
+
38
+ // Preconnect-only — no container ref available
39
+ function ReleasePage() {
40
+ useVideoOriginPreconnect()
41
+ return <SiblingVideoPlayer />
42
+ }
43
+ ```
44
+
45
+ > **`useVideoOriginPreconnect` vs `useVideoWarmup`:** Use `useVideoOriginPreconnect` when you cannot attach a `ref` to the video container (e.g. a page that delegates rendering to a sibling). Use `useVideoWarmup` when you own the container.
46
+
47
+ **Source:** [`hooks/use-video-warmup.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/hooks/use-video-warmup.ts)