@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,5 +1,5 @@
1
- <!-- source-hash: 9c2fe27cb025dab5e630418cc7b208a0 -->
2
- Reusable React component for displaying and managing highlight video previews with support for manual upload, AI-generated badges, and duration display.
1
+ <!-- source-hash: 9b2a25dc6109c28a9059e614c7b4ad28 -->
2
+ Reusable React component for displaying and managing highlight video previews with support for manual file upload, AI-generated badges, and customizable video rendering.
3
3
 
4
4
  ## Key Components
5
5
 
@@ -7,16 +7,18 @@ Reusable React component for displaying and managing highlight video previews wi
7
7
  | Prop | Type | Description |
8
8
  |------|------|-------------|
9
9
  | `highlightVideoUrl` | `string \| null` | URL of the highlight video |
10
- | `highlightVideoThumbnail` | `string \| null` | Thumbnail image URL |
10
+ | `highlightVideoThumbnail` | `string \| null` | Video thumbnail URL |
11
11
  | `highlightVideoDurationMs` | `number \| null` | Duration in milliseconds |
12
- | `highlightVideoSource` | `'manual' \| 'ai_generated' \| null` | Video origin, shows AI badge if `ai_generated` |
13
- | `onUpload` | `(file: File) => Promise<string>` | File upload handler |
12
+ | `highlightVideoSource` | `'manual' \| 'ai_generated' \| null` | Origin of the video |
13
+ | `onUpload` | `(file: File) => Promise<string>` | Upload handler returning new URL |
14
14
  | `onDelete` | `() => Promise<void>` | Delete handler |
15
15
  | `renderVideoPreview` | `(props) => ReactNode` | Render prop for custom video player |
16
16
  | `uploadProgressComponent` | `ReactNode` | Optional upload progress UI |
17
17
 
18
18
  ### `HighlightVideoPreview`
19
- Main exported component rendering the label row, badges, upload button, and delegating video display to the `renderVideoPreview` render prop.
19
+ The primary exported component. Renders a label row with optional `AIGeneratedBadge` and duration badge, an upload button, optional progress indicator, and either the video preview (via render prop) or an empty state message.
20
+
21
+ **Internal helper:** `formatDuration(ms)` converts milliseconds to `M:SS` display format.
20
22
 
21
23
  ## Usage Example
22
24
 
@@ -24,16 +26,16 @@ Main exported component rendering the label row, badges, upload button, and dele
24
26
  import { HighlightVideoPreview } from './highlight-video-preview';
25
27
 
26
28
  <HighlightVideoPreview
27
- highlightVideoUrl="https://cdn.example.com/video.mp4"
28
- highlightVideoThumbnail="https://cdn.example.com/thumb.jpg"
29
- highlightVideoDurationMs={125000}
29
+ highlightVideoUrl={interview.highlightVideoUrl}
30
+ highlightVideoThumbnail={interview.thumbnailUrl}
31
+ highlightVideoDurationMs={interview.durationMs}
30
32
  highlightVideoSource="ai_generated"
31
33
  onUpload={async (file) => {
32
34
  const url = await uploadToStorage(file);
33
35
  return url;
34
36
  }}
35
37
  onDelete={async () => {
36
- await deleteVideo();
38
+ await deleteHighlightVideo(interview.id);
37
39
  }}
38
40
  renderVideoPreview={({ videoUrl, thumbnailUrl, onDelete }) => (
39
41
  <VideoPlayer src={videoUrl} poster={thumbnailUrl} onDelete={onDelete} />
@@ -41,4 +43,4 @@ import { HighlightVideoPreview } from './highlight-video-preview';
41
43
  />
42
44
  ```
43
45
 
44
- > **Note:** This component is designed for both `CustomerInterview` and `ProductRelease` entities, providing a consistent highlight video UI across the platform. The `renderVideoPreview` render prop keeps the video player implementation decoupled.
46
+ > **Note:** The `renderVideoPreview` render prop pattern keeps this component entity-agnostic, making it reusable across `CustomerInterview` and `ProductRelease` entities without coupling to a specific player implementation.
@@ -1,25 +1,27 @@
1
- <!-- source-hash: 4bfda13fcb66ea09d23c0f65e2a0d2f7 -->
2
- Unified React component for managing highlight video generation and upload, supporting both AI-generated and manually uploaded highlight videos for `CustomerInterview` and `ProductRelease` entities.
1
+ <!-- source-hash: 3352f684fadb713012ab77b57ce2cf6a -->
2
+ Unified React component for managing highlight video generation and playback, combining AI-powered generation controls, manual upload, and video preview into a single configurable UI.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `HighlightVideoSection`
7
- Main exported component that renders three logical sections:
6
+ ### `HighlightVideoSection` (default export)
8
7
 
9
- - **Configuration Panel** Target duration selector (1–5 min) and subtitle-burning toggle
10
- - **AI Generation Section** — Wraps `AIEnrichSection` with Claude AI + Shotstack integration, including progress feedback, cancellation, and status messages
11
- - **Video Preview + Manual Upload** — Shows current highlight with metadata badges, handles file input for manual uploads, and renders either a custom `VideoPreviewComponent` or a built-in `<video>` player with delete support
8
+ The primary component rendering three distinct sections:
9
+
10
+ - **Configuration panel** — Target duration selector (1–5 minutes) and subtitle-burning toggle
11
+ - **AI generation panel** — Wraps `AIEnrichSection` with Claude AI + Shotstack integration, progress reporting, and optional cancel support
12
+ - **Preview/upload panel** — Displays the current highlight video (via a custom `VideoPreviewComponent` or the built-in `Video` component), upload trigger, AI-generated badge, duration badge, and delete control
12
13
 
13
14
  ### `HighlightVideoSectionProps`
14
- Full TypeScript interface exposing all configuration and callback props. Notable props:
15
15
 
16
- | Prop | Type | Description |
17
- |------|------|-------------|
18
- | `targetDurationSeconds` | `number` | AI generation target duration |
19
- | `canGenerateHighlight` | `boolean` | Gates the generate button |
20
- | `requiredFields` | `AIRequiredField[]` | Validation hints shown before generation |
21
- | `VideoPreviewComponent` | `React.ComponentType` | Optional custom video player |
22
- | `generationStatus` | `'idle' \| 'loading' \| 'success' \| 'error'` | Controls `AIEnrichSection` state |
16
+ Full TypeScript interface controlling all behavior. Key prop groups:
17
+
18
+ | Group | Props |
19
+ |---|---|
20
+ | Current video state | `highlightVideoUrl`, `highlightVideoThumbnail`, `highlightVideoDurationMs`, `highlightVideoSource` |
21
+ | AI generation | `onGenerateHighlight`, `isGenerating`, `generationProgress`, `generationStatus`, `generationStatusMessage` |
22
+ | Upload | `onUploadHighlight`, `isUploading` |
23
+ | Cancellation | `onCancelGeneration`, `isCancelling` |
24
+ | Extensibility | `VideoPreviewComponent`, `disabled`, `className` |
23
25
 
24
26
  ## Usage Example
25
27
 
@@ -28,20 +30,22 @@ import { HighlightVideoSection } from './highlight-video-section';
28
30
 
29
31
  <HighlightVideoSection
30
32
  highlightVideoUrl={interview.highlightUrl}
33
+ highlightVideoThumbnail={interview.highlightThumbnail}
31
34
  highlightVideoSource="ai_generated"
32
- highlightVideoDurationMs={180000}
33
35
  targetDurationSeconds={180}
34
36
  onTargetDurationChange={(secs) => setTargetDuration(secs)}
35
37
  skipSubtitleBurning={false}
36
- onSkipSubtitleBurningChange={(skip) => setSkipSubs(skip)}
37
- onGenerateHighlight={handleGenerate}
38
+ onSkipSubtitleBurningChange={(skip) => setSkipSubtitles(skip)}
39
+ onGenerateHighlight={handleGenerateHighlight}
38
40
  isGenerating={isGenerating}
39
41
  generationProgress={progress}
40
42
  generationStatus={status}
41
43
  canGenerateHighlight={!!interview.transcriptId}
42
- requiredFields={[{ field: 'transcript', label: 'Transcription' }]}
43
- onUploadHighlight={async (file) => uploadToStorage(file)}
44
- onDeleteHighlight={handleDelete}
44
+ requiredFields={[{ label: 'Transcript', fulfilled: !!interview.transcriptId }]}
45
+ onUploadHighlight={async (file) => uploadHighlight(file)}
46
+ onDeleteHighlight={handleDeleteHighlight}
45
47
  onCancelGeneration={handleCancel}
46
48
  />
47
- ```
49
+ ```
50
+
51
+ **Source:** [`highlight-video-section.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/highlight-video-section.tsx)
@@ -1,50 +1,54 @@
1
- <!-- source-hash: 14a224c533f658697e4039f0850c87ac -->
2
- Central barrel export file for the feature components library, re-exporting all UI components, providers, and utilities from their respective modules into a single public API surface.
1
+ <!-- source-hash: b2ac5c8b15e9d1863c76fff129a5c8e4 -->
2
+ Central barrel export file for the OpenFrame OSS library's feature components, re-exporting all public UI components, hooks, providers, and utilities from their respective module directories.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### Theme System
7
- - `ThemeProvider` / `useTheme` / `useThemeToggle` Canonical ODS theme system wrapping `next-themes` with manual light/dark switching, default dark, and no-flash support
8
- - `DynamicThemeProvider` / `useDynamicTheme` Dynamic theme provider variant
9
- - `THEME_STORAGE_KEY`, `THEME_ATTRIBUTE`, `DEFAULT_THEME` — Theme configuration constants
10
- - `Theme`, `ThemeProviderProps`, `UseThemeToggleResult` — TypeScript types
7
+ - **`DynamicThemeProvider`** / **`useDynamicTheme`**Dynamic runtime theming
8
+ - **`ThemeProvider`** / **`useTheme`** / **`useThemeToggle`** — Canonical ODS theme system (thin wrapper over `next-themes`), headless by design with constants `THEME_STORAGE_KEY`, `THEME_ATTRIBUTE`, `DEFAULT_THEME` and types `Theme`, `ThemeProviderProps`, `UseThemeToggleResult`
11
9
 
12
10
  ### Video Primitives
13
- - `video` — Unified `<Video>` component replacing legacy `VideoPlayer` + `YouTubeEmbed`
14
- - `entity-video-section` / `video-bites-display` Public detail-page wrappers
15
- - `video-ratio-tabs` Aspect-ratio grouping primitives for bites grid and admin editors
16
- - `highlight-video-*` / `transcript-summary-editor` / `video-clips-section` Video processing and display utilities
17
-
18
- ### UI Components
19
- - `command-box`, `filters-dropdown`, `tags-selector`, `select-button`, `view-toggle`
20
- - `os-type-badge`, `platform-badge`, `platform-filter` — Platform/OS display components
21
- - `error-boundary`, `loading-provider` — App infrastructure components
22
- - `seo-editor-preview`, `social-links-manager`, `knowledge-base-links-manager`
23
- - `board`, `notifications`, `waitlist-form`, `ai-enrich`, `policy-configuration-panel`
24
-
25
- ### Manager Components
26
- - `array-entry-manager`, `changelog-manager`, `changelog-sections-manager`
27
- - `clickup-tasks-manager`, `github-releases-manager`, `media-gallery-manager`
28
- - `release-media-manager`
11
+ - **`<Video>`** — Unified video component replacing legacy `<VideoPlayer>` + `<YouTubeEmbed>`
12
+ - **`<CardsStrip>`** — Horizontal card-strip engine (render-prop or organic `children` mode)
13
+ - **`<EntityVideoSection>`** / **`<VideoBitesStrip>`** Public detail-page wrappers
14
+ - **`<VideoBitesDisplay>`**Deprecated shim over the strip
15
+ - **`video-bites-shared`** — Server-safe leaf, also published as its own subpath
16
+
17
+ ### Feature Components (selected)
18
+ - `auth`, `auth-providers-list`, `command-box`, `error-boundary`
19
+ - `filters-dropdown`, `loading-provider`, `media-gallery-manager`
20
+ - `ai-enrich`, `board`, `notifications`, `time-tracker`
21
+ - `seo-editor-preview`, `tags-selector`, `social-links-manager`
22
+ - `changelog-manager`, `github-releases-manager`, `knowledge-base-links-manager`
29
23
 
30
24
  ## Usage Example
31
25
 
32
26
  ```typescript
33
- // Import theme system
34
- import { ThemeProvider, useThemeToggle } from '@/features'
35
-
36
- function App({ children }) {
37
- return <ThemeProvider>{children}</ThemeProvider>
38
- }
39
-
40
- function ThemeToggle() {
27
+ import {
28
+ ThemeProvider,
29
+ useThemeToggle,
30
+ Video,
31
+ CardsStrip,
32
+ CommandBox,
33
+ ErrorBoundary,
34
+ } from '@openframe-oss-lib/features'
35
+
36
+ function App() {
41
37
  const { toggle, theme } = useThemeToggle()
42
- return <Button onClick={toggle}>Mode: {theme}</Button>
38
+
39
+ return (
40
+ <ThemeProvider>
41
+ <ErrorBoundary>
42
+ <Video src="https://example.com/video.mp4" />
43
+ <button onClick={toggle}>Current: {theme}</button>
44
+ </ErrorBoundary>
45
+ </ThemeProvider>
46
+ )
43
47
  }
48
+ ```
44
49
 
45
- // Import video primitives
46
- import { Video, EntityVideoSection, VideoBitesDisplay } from '@/features'
50
+ ## Notes
47
51
 
48
- // Import UI components
49
- import { CommandBox, FiltersDropdown, OsTypeBadge } from '@/features'
50
- ```
52
+ - Marked `"use client"` — all exports are client-side React components/hooks
53
+ - Acts as the single public API surface for consumers; internal module paths should not be imported directly
54
+ - Source: [`src/features/index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/features/index.ts)
@@ -1,60 +1,62 @@
1
- <!-- source-hash: 19b6fb4bf578261808d64ed0dbbafcce -->
2
- Reusable React component for managing a media gallery with upload, display, drag-and-drop reordering, and deletion capabilities. Designed for use across events, product releases, and any content requiring media gallery management.
1
+ <!-- source-hash: c88990c646ac00bc2153738bb81e7d24 -->
2
+ Reusable React component for managing a media gallery supports image and video upload, drag-to-reorder, and deletion with an optional modal wrapper.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `MediaItem` Interface
7
- Describes a single media entry with the following fields:
6
+ ### `MediaItem` (interface)
7
+ Data shape for a single gallery entry:
8
8
 
9
- | Field | Type | Description |
10
- |-------|------|-------------|
11
- | `id` | `string \| number` | Optional identifier for existing items |
12
- | `media_type` | `'image' \| 'video' \| 'screenshot' \| 'demo'` | Type classification |
13
- | `media_url` | `string` | URL of the media asset |
14
- | `title` | `string` | Optional display title |
15
- | `description` | `string` | Optional description |
16
- | `display_order` | `number` | Optional sort order |
17
- | `_uploading` | `boolean` | Internal upload state flag |
9
+ | Field | Type | Notes |
10
+ |---|---|---|
11
+ | `id` | `string \| number` | Optional; omitted for new items |
12
+ | `media_type` | `'image' \| 'video' \| 'screenshot' \| 'demo'` | Controls render path |
13
+ | `media_url` | `string` | Resolved URL after upload |
14
+ | `title` | `string` | Displayed below the thumbnail |
15
+ | `display_order` | `number` | Updated automatically on reorder |
16
+ | `_uploading` | `boolean` | Optimistic upload state flag |
18
17
 
19
- ### `MediaGalleryManager` Component
20
- Primary export. Renders upload zone, media grid, drag-and-drop controls, and delete actions.
21
-
22
- **Props:**
18
+ ### `MediaGalleryManager` (component)
23
19
 
24
20
  | Prop | Type | Default | Description |
25
- |------|------|---------|-------------|
26
- | `media` | `MediaItem[]` | — | Current media items array |
27
- | `onChange` | `(media: MediaItem[]) => void` | — | Called on any mutation |
28
- | `onUpload` | `(file, mediaType) => Promise<string>` | — | Handles file upload, returns URL |
29
- | `isUploading` | `boolean` | `false` | Disables controls during upload |
30
- | `showInModal` | `boolean` | `false` | Reserved for modal rendering |
31
- | `modalTitle` | `string` | `'Media Gallery'` | Modal heading text |
32
- | `className` | `string` | `''` | Additional CSS classes |
21
+ |---|---|---|---|
22
+ | `media` | `MediaItem[]` | — | Controlled list of media items |
23
+ | `onChange` | `(media: MediaItem[]) => void` | — | Called on add, delete, or reorder |
24
+ | `onUpload` | `(file, mediaType) => Promise<string>` | — | Async upload handler; returns resolved URL |
25
+ | `isUploading` | `boolean` | `false` | Shows spinner and disables controls |
26
+ | `showInModal` | `boolean` | `false` | Reserved for modal rendering mode |
27
+ | `modalTitle` | `string` | `'Media Gallery'` | Title when rendered in a modal |
28
+ | `className` | `string` | `''` | Additional wrapper classes |
29
+
30
+ **Internal behaviors:**
31
+ - `handleFileSelect` — detects MIME type, calls `onUpload`, appends new `MediaItem`
32
+ - `handleDeleteMedia` — filters item by index, updates order
33
+ - `handleDragStart / handleDrop` — HTML5 drag-and-drop reorder; recalculates `display_order` on drop
33
34
 
34
35
  ## Usage Example
35
36
 
36
37
  ```typescript
37
38
  import { MediaGalleryManager, MediaItem } from './media-gallery-manager';
38
39
 
39
- const [media, setMedia] = useState<MediaItem[]>([]);
40
- const [uploading, setUploading] = useState(false);
40
+ const [gallery, setGallery] = useState<MediaItem[]>([]);
41
41
 
42
- async function handleUpload(file: File, mediaType: 'image' | 'video'): Promise<string> {
43
- setUploading(true);
42
+ async function uploadToStorage(file: File, mediaType: 'image' | 'video') {
44
43
  const formData = new FormData();
45
44
  formData.append('file', file);
46
45
  const res = await fetch('/api/upload', { method: 'POST', body: formData });
47
46
  const { url } = await res.json();
48
- setUploading(false);
49
47
  return url;
50
48
  }
51
49
 
52
50
  <MediaGalleryManager
53
- media={media}
54
- onChange={setMedia}
55
- onUpload={handleUpload}
56
- isUploading={uploading}
51
+ media={gallery}
52
+ onChange={setGallery}
53
+ onUpload={uploadToStorage}
54
+ isUploading={false}
57
55
  />
58
56
  ```
59
57
 
60
- > **Note:** Accepted file types are `image/*` and `video/*` with a recommended maximum of 50MB. On upload, images map to `screenshot` and videos to `demo` media types.
58
+ ## Notes
59
+
60
+ - Videos (`video`, `demo`) render via the internal `<Video>` component (MuxPlayer/HLS); images use Next.js `<Image>` with `fill` + `object-cover`.
61
+ - `display_order` is recalculated as array index on every reorder or delete — keep it as the source of truth for server persistence.
62
+ - The `showInModal` prop is wired to props but the modal rendering path is not yet implemented in this file.
@@ -0,0 +1,46 @@
1
+ <!-- source-hash: 4b4394b8492af21f51a0eb384983e584 -->
2
+ Provides Mux CDN origin constants and playback URL utilities in a server-safe (non-`'use client'`) module, enabling both server-side and client-side code to import Mux configuration without triggering Next.js client-reference poisoning.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `MUX_STREAM_ORIGIN` | `const string` | Base URL for Mux HLS playback and MP4 renditions (`https://stream.mux.com`) |
9
+ | `MUX_IMAGE_ORIGIN` | `const string` | Base URL for Mux server-generated thumbnails (`https://image.mux.com`) |
10
+ | `MuxMaxResolution` | `type` | Union of valid Mux `max_resolution` modifier values: `'720p' \| '1080p' \| '1440p' \| '2160p'` |
11
+ | `toMuxPreviewUrl` | `function` | Appends a `max_resolution` query param to Mux HLS URLs for bandwidth-capped preview players |
12
+
13
+ ## Usage Example
14
+
15
+ ```typescript
16
+ import { MUX_STREAM_ORIGIN, MUX_IMAGE_ORIGIN, toMuxPreviewUrl } from './mux-origins'
17
+
18
+ // Server-side hostname comparison (safe — no client stubs)
19
+ const streamHost = new URL(MUX_STREAM_ORIGIN).hostname // 'stream.mux.com'
20
+
21
+ // Cap renditions for a small hover-card preview player
22
+ const rawUrl = 'https://stream.mux.com/abc123.m3u8'
23
+ const previewUrl = toMuxPreviewUrl(rawUrl, '720p')
24
+ // → 'https://stream.mux.com/abc123.m3u8?max_resolution=720p'
25
+
26
+ // Pass-through cases (no modification)
27
+ toMuxPreviewUrl('https://example.supabase.co/clip.mp4') // non-Mux host
28
+ toMuxPreviewUrl('https://stream.mux.com/abc123.mp4') // non-.m3u8 path
29
+ toMuxPreviewUrl('https://stream.mux.com/abc123.m3u8?token=xyz') // signed URL
30
+ ```
31
+
32
+ ## Pass-Through Conditions
33
+
34
+ `toMuxPreviewUrl` returns the original URL unchanged when:
35
+
36
+ - Host is not `stream.mux.com` (e.g. Supabase MP4s, YouTube)
37
+ - Path does not end in `.m3u8` (e.g. MP4 renditions)
38
+ - URL already contains a `?token=` param (Mux prohibits loose modifiers alongside JWT tokens)
39
+ - URL string is unparseable
40
+
41
+ ## Notes
42
+
43
+ - **Server safety:** Intentionally omits `'use client'` so server modules (webhook handlers, Next.js middleware, `lib/config/mux-config.ts`) can import without crashing at Vercel build time. Re-exported from `use-video-warmup.ts` for backward compatibility.
44
+ - **Safari compatibility:** The `max_resolution` param works at the HLS manifest level, which is the only effective rendition cap on Safari's native HLS player where `hls.js` is unavailable.
45
+
46
+ **Source:** [`mux-origins.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/mux-origins.ts)
@@ -1,26 +1,29 @@
1
- <!-- source-hash: 7e8d4cbbf42c408ee48d1318fbf9c4e3 -->
2
- Unified SEO & Open Graph editor component that combines meta fields (title, description, keywords), OG image upload, and a live preview into a single reusable panel. Designed for content editors across blog posts, case studies, and product releases.
1
+ <!-- source-hash: 01d000415365defb1a9149173d637f01 -->
2
+ Unified SEO and Open Graph editor component that combines meta fields, OG image upload, and a live preview panel into a single composable UI block. Designed for reuse across blog posts, case studies, and product releases.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `OGEditorPreview`
7
- Main exported component that renders a card-style panel with:
8
- - **SEO Title + Keywords** side-by-side `Input` fields (responsive grid)
9
- - **SEO Description + OG Image** `Textarea` paired with an injected upload widget
10
- - **OG Preview** rendered below a divider via the `OGPreviewComponent` slot
7
+ The primary exported function component. Renders a card-style panel containing:
8
+ - **SEO Title** and **SEO Keywords** inputs (side-by-side on large screens)
9
+ - **SEO Description** textarea and **OG Image** upload slot (side-by-side on large screens)
10
+ - **OG Preview** section rendered below a divider
11
11
 
12
12
  ### `OGEditorPreviewProps`
13
- Full interface defining:
13
+ Interface defining all accepted props:
14
14
 
15
15
  | Prop | Type | Description |
16
- |------|------|-------------|
17
- | `seoTitle` / `seoDescription` / `seoKeywords` | `string` | Controlled SEO field values |
16
+ |---|---|---|
17
+ | `seoTitle` | `string` | Controlled SEO title value |
18
+ | `seoDescription` | `string` | Controlled meta description value |
19
+ | `seoKeywords` | `string` | Controlled keywords value |
18
20
  | `ogImageUrl` | `string` | Current OG image URL |
19
21
  | `title` / `summary` / `featuredImage` | `string` | Auto-populate sources from parent content |
20
- | `categories` | `Array<{name, slug}>` | Optional category metadata |
21
- | `OGImageUploadComponent` | `React.ReactNode` | Upload widget injected by parent |
22
- | `OGPreviewComponent` | `React.ReactNode` | Preview widget injected by parent |
23
- | `disabled` | `boolean` | Disables all inputs |
22
+ | `categories` | `Array<{name, slug}>` | Optional category list for auto-population |
23
+ | `OGImageUploadComponent` | `React.ReactNode` | Upload UI injected from parent |
24
+ | `OGPreviewComponent` | `React.ReactNode` | Preview UI injected from parent |
25
+ | `disabled` | `boolean` | Disables all inputs (default: `false`) |
26
+ | `className` | `string` | Additional CSS classes |
24
27
 
25
28
  ## Usage Example
26
29
 
@@ -28,20 +31,22 @@ Full interface defining:
28
31
  import { OGEditorPreview } from './og-editor-preview';
29
32
 
30
33
  <OGEditorPreview
31
- seoTitle={post.seoTitle}
32
- seoDescription={post.seoDescription}
33
- seoKeywords={post.seoKeywords}
34
- ogImageUrl={post.ogImageUrl}
34
+ seoTitle={form.seoTitle}
35
+ seoDescription={form.seoDescription}
36
+ seoKeywords={form.seoKeywords}
37
+ ogImageUrl={form.ogImageUrl}
35
38
  title={post.title}
36
39
  summary={post.summary}
37
40
  featuredImage={post.featuredImage}
38
- onSeoTitleChange={(val) => updateField('seoTitle', val)}
39
- onSeoDescriptionChange={(val) => updateField('seoDescription', val)}
40
- onSeoKeywordsChange={(val) => updateField('seoKeywords', val)}
41
- onOgImageUrlChange={(val) => updateField('ogImageUrl', val)}
42
- OGImageUploadComponent={<OGImageUploader postId={post.id} />}
43
- OGPreviewComponent={<OGPreview title={post.seoTitle} description={post.seoDescription} image={post.ogImageUrl} />}
41
+ onSeoTitleChange={(v) => setForm({ ...form, seoTitle: v })}
42
+ onSeoDescriptionChange={(v) => setForm({ ...form, seoDescription: v })}
43
+ onSeoKeywordsChange={(v) => setForm({ ...form, seoKeywords: v })}
44
+ onOgImageUrlChange={(v) => setForm({ ...form, ogImageUrl: v })}
45
+ OGImageUploadComponent={<ImageUploader onUpload={handleUpload} />}
46
+ OGPreviewComponent={<OGPreview url={previewUrl} title={form.seoTitle} />}
44
47
  />
45
48
  ```
46
49
 
47
- > Upload and preview widgets are passed as render props (`React.ReactNode`), keeping this component decoupled from specific upload or preview implementations.
50
+ > **Note:** `OGImageUploadComponent` and `OGPreviewComponent` are injected as render props (`React.ReactNode`), keeping upload and preview logic decoupled from this component. `ogImageUrl` and `onOgImageUrlChange` are declared in the interface but not consumed internally — they are intended for use by the injected child components via the parent's closure.
51
+
52
+ **Source:** [`og-editor-preview.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/og-editor-preview.tsx)
@@ -1,31 +1,39 @@
1
- <!-- source-hash: 65ab317c1224391b2ef2d144c5e6b6ca -->
2
- A React component that displays multiple operating system type badges in a horizontal group, useful for showing supported platforms for scripts and applications.
1
+ <!-- source-hash: cd5e91e4f786cf7bf20df7ec3e71c11d -->
2
+ Renders a horizontal group of OS type icons, optionally truncating to a maximum count with a "+N more" overflow indicator.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **OSTypeBadgeGroup**: Main component that renders a collection of OS badges
7
- - **OSTypeBadgeGroupProps**: Interface defining component properties including OS types array, styling options, and display limits
8
- - Integrates with **OSTypeBadge** component for individual badge rendering
9
- - **maxDisplay** prop with overflow handling ("+N more" indicator)
6
+ ### `OSTypeBadgeGroup`
7
+
8
+ The primary export. Iterates over an array of OS type strings and renders an [`OSTypeBadge`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/os-type-badge/os-type-badge.tsx) (icon-only mode) for each entry. Returns `null` when `osTypes` is empty or undefined.
9
+
10
+ ### `OSTypeBadgeGroupProps`
11
+
12
+ | Prop | Type | Default | Description |
13
+ |---|---|---|---|
14
+ | `osTypes` | `string[]` | — | OS type strings (case-insensitive, alias-aware) |
15
+ | `className` | `string` | `''` | Additional CSS classes for the wrapper |
16
+ | `iconSize` | `string` | `'w-5 h-5'` | Tailwind size classes applied to each icon |
17
+ | `maxDisplay` | `number` | — | Cap on visible badges; excess shown as `+N more` |
10
18
 
11
19
  ## Usage Example
12
20
 
13
21
  ```typescript
14
22
  import { OSTypeBadgeGroup } from './os-type-badge-group'
15
23
 
16
- // Basic usage with multiple OS types
24
+ // Show all three platform icons
17
25
  <OSTypeBadgeGroup osTypes={['windows', 'darwin', 'linux']} />
18
26
 
19
- // With display limit and custom styling
20
- <OSTypeBadgeGroup
21
- osTypes={['macos', 'linux', 'windows', 'freebsd']}
22
- maxDisplay={3}
23
- iconSize="w-6 h-6"
24
- className="my-4"
27
+ // Cap at 2, renders "+1 more" for the third
28
+ <OSTypeBadgeGroup
29
+ osTypes={['windows', 'macos', 'linux']}
30
+ maxDisplay={2}
31
+ iconSize="w-4 h-4"
25
32
  />
26
33
 
27
- // Handle empty arrays gracefully
28
- <OSTypeBadgeGroup osTypes={[]} /> // Returns null
29
- ```
30
-
31
- The component automatically handles OS type aliases (e.g., 'darwin' → macOS), displays only icons without labels, and provides responsive wrapping with gap spacing. When the number of OS types exceeds `maxDisplay`, it shows a truncated list with a "+N more" indicator.
34
+ // Custom wrapper styling
35
+ <OSTypeBadgeGroup
36
+ osTypes={['linux']}
37
+ className="mt-2"
38
+ />
39
+ ```
@@ -1,38 +1,55 @@
1
- <!-- source-hash: ff4b493b1051ef66b833db7f551bfc8a -->
2
- A React component for displaying operating system types with icons and labels, supporting flexible display modes and automatic OS type normalization.
1
+ <!-- source-hash: abfd76b408caa3d26e7e71712dadbe88 -->
2
+ Displays operating system type with an icon and label, automatically normalizing OS type strings from various formats and aliases. Exports three focused sub-components for flexible rendering.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **OSTypeBadge** - Main component that displays OS type with icon and label
7
- - **OSTypeIcon** - Convenience component for icon-only display
8
- - **OSTypeLabel** - Convenience component for label-only display
9
- - **OSTypeBadgeProps** - Interface defining component props including display modes and styling options
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `OSTypeBadge` | `React.FC` | Full badge with icon + label (default), icon-only, or label-only rendering |
9
+ | `OSTypeIcon` | `React.FC` | Convenience wrapper renders only the OS icon |
10
+ | `OSTypeLabel` | `React.FC` | Convenience wrapper — renders only the OS label text |
11
+ | `OSTypeBadgeProps` | `interface` | Props interface for `OSTypeBadge` |
12
+
13
+ ### `OSTypeBadgeProps`
14
+
15
+ | Prop | Type | Default | Description |
16
+ |---|---|---|---|
17
+ | `osType` | `string` | — | OS type string (case-insensitive, handles aliases) |
18
+ | `className` | `string` | `''` | Additional CSS classes |
19
+ | `iconOnly` | `boolean` | `false` | Render icon only, no label |
20
+ | `labelOnly` | `boolean` | `false` | Render label only, no icon |
21
+ | `iconSize` | `string` | `'w-4 h-4'` | Tailwind size classes for the icon |
22
+ | `iconColor` | `string` | `var(--color-text-secondary)` | Icon fill/stroke color |
23
+ | `rightIcon` | `React.ReactNode` | `null` | Optional trailing icon element |
10
24
 
11
25
  ## Usage Example
12
26
 
13
27
  ```typescript
14
28
  import { OSTypeBadge, OSTypeIcon, OSTypeLabel } from './os-type-badge'
15
29
 
16
- // Full badge with icon and label
30
+ // Full badge: icon + label
17
31
  <OSTypeBadge osType="windows" />
18
32
  <OSTypeBadge osType="Darwin" />
19
- <OSTypeBadge osType="Ubuntu" />
20
-
21
- // Icon only mode
22
- <OSTypeBadge osType="linux" iconOnly />
23
- <OSTypeIcon osType="macOS" size="w-6 h-6" />
24
-
25
- // Label only mode
26
- <OSTypeBadge osType="windows" labelOnly />
27
- <OSTypeLabel osType="fedora" />
28
-
29
- // With custom styling and right icon
30
- <OSTypeBadge
31
- osType="windows"
32
- className="bg-blue-100"
33
- iconColor="#0078d4"
34
- rightIcon={<ChevronRight />}
33
+
34
+ // Icon only (e.g. compact table cell)
35
+ <OSTypeIcon osType="Ubuntu" size="w-5 h-5" />
36
+
37
+ // Label only (e.g. plain text context)
38
+ <OSTypeLabel osType="linux" className="font-medium" />
39
+
40
+ // Badge with trailing action icon
41
+ <OSTypeBadge
42
+ osType="windows"
43
+ rightIcon={<ChevronRightIcon className="w-3 h-3" />}
35
44
  />
45
+
46
+ // Unknown / missing OS type
47
+ <OSTypeBadge osType={undefined} labelOnly /> // renders "Unknown"
48
+ <OSTypeBadge osType={undefined} /> // renders null
36
49
  ```
37
50
 
38
- The component automatically handles OS type normalization through utility functions, supports case-insensitive input, and gracefully handles unknown OS types. It uses responsive typography and includes proper TypeScript interfaces for type safety.
51
+ ## Notes
52
+
53
+ - OS type strings are normalized via `normalizeOSType` from [`os-utils`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/utils/os-utils.ts), so values like `"Darwin"`, `"ubuntu"`, or `"win32"` resolve correctly.
54
+ - When `osType` is missing and `labelOnly` is `false`, the component returns `null` (safe for conditional rendering).
55
+ - All three exports set a `displayName` for clear identification in React DevTools.