@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,35 +1,32 @@
1
- <!-- source-hash: 2cb028936365715865c9571d3df0261e -->
2
- A reusable React component for managing a dynamic list of changelog entries, supporting add, remove, expand/collapse, and optional per-entry visibility toggling.
1
+ <!-- source-hash: e6737cc6f4757d68e83c3688abe95603 -->
2
+ A reusable React client component for managing a list of collapsible changelog entries, supporting add, remove, expand/collapse, field editing, and optional per-entry public/internal visibility toggling.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `ChangelogManager` (default export)
7
7
 
8
- A controlled list manager rendered as a collapsible accordion of `ChangelogEntry` items.
8
+ A controlled component that renders a titled list of `ChangelogEntry` items with accordion-style expand/collapse behavior.
9
9
 
10
10
  **Props (`ChangelogManagerProps`):**
11
11
 
12
12
  | Prop | Type | Description |
13
- |------|------|-------------|
13
+ |---|---|---|
14
14
  | `title` | `string` | Section label displayed above the entry list |
15
15
  | `entries` | `ChangelogEntry[]` | Controlled array of changelog entries |
16
16
  | `onChange` | `(entries: ChangelogEntry[]) => void` | Callback fired on any mutation |
17
- | `className` | `string?` | Optional wrapper class override |
18
- | `expandAll` | `boolean?` | When `true`, expands all items (e.g. post-AI enrichment) |
19
- | `showVisibilityToggle` | `boolean?` | Renders a per-entry `Eye`/`EyeOff` toggle; used by investor updates |
17
+ | `className` | `string?` | Optional CSS class override |
18
+ | `expandAll` | `boolean?` | When `true`, expands all entries (e.g., after AI enrichment) |
19
+ | `showVisibilityToggle` | `boolean?` | Enables per-entry Eye/EyeOff toggle for investor update flows |
20
20
 
21
21
  **Internal state:**
22
- - `expandedIndices` — `Set<number>` tracking which accordion items are open
22
+ - `expandedIndices` — `Set<number>` tracking which entries are currently expanded
23
23
 
24
- **Key functions:**
25
-
26
- | Function | Behavior |
27
- |----------|----------|
28
- | `addEntry()` | Appends a blank entry and auto-expands it |
29
- | `removeEntry(index)` | Removes entry and adjusts the expanded indices set |
30
- | `updateEntry(index, field, value)` | Immutably updates a single field on an entry |
31
- | `toggleExpanded(index)` | Toggles accordion open/close state |
32
- | `toggleVisibility(index)` | Flips `visibility` between `'public'` and `'internal'` |
24
+ **Key handlers:**
25
+ - `addEntry` — appends a blank entry and auto-expands it; defaults `visibility` to `'public'` when `showVisibilityToggle` is enabled
26
+ - `removeEntry` filters out the entry and re-indexes `expandedIndices`
27
+ - `updateEntry` — immutably patches a single field on an entry
28
+ - `toggleExpanded` toggles an index in the expanded set
29
+ - `toggleVisibility` flips an entry between `'public'` and `'internal'`
33
30
 
34
31
  ## Usage Example
35
32
 
@@ -39,14 +36,14 @@ import type { ChangelogEntry } from '../../types/product-release';
39
36
 
40
37
  const [entries, setEntries] = useState<ChangelogEntry[]>([]);
41
38
 
42
- // Basic product release changelog
39
+ // Basic product release usage
43
40
  <ChangelogManager
44
41
  title="What's New"
45
42
  entries={entries}
46
43
  onChange={setEntries}
47
44
  />
48
45
 
49
- // Investor update with visibility control + auto-expand after AI fill
46
+ // Investor update usage with visibility controls
50
47
  <ChangelogManager
51
48
  title="Highlights"
52
49
  entries={entries}
@@ -56,4 +53,4 @@ const [entries, setEntries] = useState<ChangelogEntry[]>([]);
56
53
  />
57
54
  ```
58
55
 
59
- > **Note:** `showVisibilityToggle` is intended for investor update flows. Leave it unset for standard product release changelogs to preserve their default UX. New entries default to `visibility: 'public'` when the toggle is enabled.
56
+ > **Source:** [`changelog-manager.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/changelog-manager.tsx)
@@ -1,20 +1,16 @@
1
- <!-- source-hash: b7d1c615d3d37a540958daff7feed5f3 -->
2
- A reusable React component for displaying command strings in a styled monospace box with optional title and configurable action buttons.
1
+ <!-- source-hash: 7694600bf3dea6d86fe13d3363d55f23 -->
2
+ A unified React component for displaying command strings with optional action buttons, monospace formatting, and configurable line clamping.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### Interfaces
7
7
 
8
- | Interface | Description |
9
- |-----------|-------------|
10
- | `CommandBoxAction` | Defines a button with `label`, `onClick`, optional `variant`, `icon`, `disabled`, and `loading` states |
11
- | `CommandBoxProps` | Component props including `command` (required), `title`, `primaryAction`, `secondaryAction`, layout classes, and `maxLines` |
8
+ - **`CommandBoxAction`** — Defines a button's `label`, `onClick` handler, optional `variant` (`accent` | `outline` | `transparent` | `destructive`), `icon`, `disabled`, and `loading` states.
9
+ - **`CommandBoxProps`** — Component props including `command` (required), `title`, `primaryAction`, `secondaryAction`, `className`, `commandClassName`, and `maxLines`.
12
10
 
13
11
  ### Exports
14
12
 
15
- - **`CommandBox`** — Main component rendering the command display box
16
- - **`CommandBoxAction`** — Interface for action button configuration
17
- - **`CommandBoxProps`** — Interface for component props
13
+ - **`CommandBox`** — Main component rendering a styled command display area with up to two action buttons (primary stacked right, secondary before primary). Supports responsive flex layout (`flex-col` → `md:flex-row`).
18
14
 
19
15
  ## Usage Example
20
16
 
@@ -30,21 +26,20 @@ import { Copy, Play } from 'lucide-react'
30
26
  label: 'Copy Command',
31
27
  onClick: () => navigator.clipboard.writeText(command),
32
28
  icon: <Copy className="w-5 h-5" />,
33
- variant: 'accent'
29
+ variant: 'accent',
34
30
  }}
35
31
  secondaryAction={{
36
- label: 'Run on Machine',
32
+ label: 'Run on Current Machine',
37
33
  onClick: handleRun,
38
34
  icon: <Play className="w-5 h-5" />,
39
35
  variant: 'outline',
40
- loading: isRunning
36
+ loading: isRunning,
41
37
  }}
42
38
  />
43
39
  ```
44
40
 
45
41
  ## Notes
46
42
 
47
- - **Line clamping** uses a static `lineClampClasses` map (`16`) to ensure Tailwind generates the correct `line-clamp-*` classes at build time. Set `maxLines={0}` (default) for unlimited display.
48
- - **Button layout** stacks vertically on mobile and aligns right horizontally on `md+` screens.
49
- - Secondary action renders before the primary action visually, consistent with standard UI conventions.
50
- - `variant` defaults to `'accent'` for primary and `'outline'` for secondary if not specified.
43
+ - **Line clamping** uses a static `lineClampClasses` map (`1`–`6`) to satisfy Tailwind's build-time static class requirement. Set `maxLines={0}` (default) for unlimited display.
44
+ - Button variants default to `accent` for primary and `outline` for secondary if not specified.
45
+ - Source: [`command-box.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/command-box.tsx)
@@ -1,24 +1,26 @@
1
- <!-- source-hash: 87dfd7f5b94bff0f44ed579685785b88 -->
2
- Reusable editor component for entity summary fields with AI generation badges and confidence score display.
1
+ <!-- source-hash: e1202aba2fe24c4e9ad695931c0b8d92 -->
2
+ A reusable React component for editing entity summaries (e.g., Release Summary, Interview Summary) with built-in support for AI generation badges and confidence score display.
3
3
 
4
4
  ## Key Components
5
5
 
6
- **`EntitySummaryEditor`** — Default export. A controlled textarea editor with optional AI metadata indicators.
6
+ ### `EntitySummaryEditor`
7
+ The primary exported component rendering a labeled textarea with optional AI metadata indicators.
7
8
 
8
- **`EntitySummaryEditorProps`** — TypeScript interface defining all configurable props:
9
+ ### `EntitySummaryEditorProps`
10
+ TypeScript interface defining the component's configuration:
9
11
 
10
12
  | Prop | Type | Default | Description |
11
- |------|------|---------|-------------|
12
- | `summary` | `string` | `''` | Controlled text value |
13
- | `onSummaryChange` | `(value: string) => void` | required | Change handler |
14
- | `isAIGenerated` | `boolean` | `false` | Shows AI Generated badge |
15
- | `summaryConfidence` | `number \| null` | — | Confidence score (0–100) |
16
- | `label` | `string` | `'Summary (Markdown supported)'` | Field label |
13
+ |---|---|---|---|
14
+ | `summary` | `string` | `''` | Current summary text value |
15
+ | `onSummaryChange` | `(value: string) => void` | | Change handler callback |
16
+ | `isAIGenerated` | `boolean` | `false` | Shows `AIGeneratedBadge` when `true` |
17
+ | `summaryConfidence` | `number \| null` | — | Confidence score (0–100) shown via `ConfidenceBadge` |
18
+ | `label` | `string` | `'Summary (Markdown supported)'` | Field label text |
17
19
  | `helperText` | `string` | `'Entity summary...'` | Subtext below label |
18
20
  | `placeholder` | `string` | `'Brief summary...'` | Textarea placeholder |
19
- | `minHeight` | `number` | `200` | Minimum height in px |
21
+ | `minHeight` | `number` | `200` | Minimum textarea height in pixels |
20
22
  | `disabled` | `boolean` | `false` | Disables the textarea |
21
- | `className` | `string` | `''` | Container class override |
23
+ | `className` | `string` | `''` | Additional CSS classes on the container |
22
24
 
23
25
  ## Usage Example
24
26
 
@@ -35,12 +37,15 @@ function ReleaseForm() {
35
37
  isAIGenerated={true}
36
38
  summaryConfidence={87}
37
39
  label="Release Summary (Markdown supported)"
38
- helperText="Displayed on release cards and detail page."
39
40
  placeholder="Describe this release..."
40
- minHeight={240}
41
+ minHeight={250}
41
42
  />
42
43
  );
43
44
  }
44
45
  ```
45
46
 
46
- When `isAIGenerated` is `true`, a `Sparkles` icon badge renders next to the label. When `summaryConfidence` is provided, `ConfidenceBadge` renders inline showing the AI confidence percentage.
47
+ ## Notes
48
+
49
+ - Markdown is supported in the textarea value but rendering is handled upstream by the consumer.
50
+ - `ConfidenceBadge` only renders when `summaryConfidence` is a non-null, non-undefined number.
51
+ - Uses ODS design tokens (`ods-text-primary`, `ods-border`, `ods-card`) for theming consistency.
@@ -0,0 +1,43 @@
1
+ <!-- source-hash: 5f96942688ffceb3aba7f0e1cb5d04a5 -->
2
+ Renders a row of OpenFrame-styled tag badges from a flat entity-tags association array, with optional click-through filtering and overflow collapsing.
3
+
4
+ ## Key Components
5
+
6
+ ### `EntityTagBadges` (exported component)
7
+ The single canonical tag-badge renderer for the entire product. Accepts a `TagAssoc[]` array and maps each entry to a `StatusBadge` chip. Returns `null` when the tag list is empty.
8
+
9
+ ### `TAG_BADGE_CLASS` (exported constant)
10
+ The shared CSS class string (`bg-ods-card border border-ods-border`) that defines the OpenFrame tag chip skin. Exported so other components (e.g. `FaqAccordion` section badges) can reuse the identical appearance without duplicating styles.
11
+
12
+ ### Props
13
+
14
+ | Prop | Type | Description |
15
+ |---|---|---|
16
+ | `tags` | `TagAssoc[] \| null` | Flat association array from entity hydration |
17
+ | `basePath` | `string` | When set, wraps each slugged badge in a `next/link` to `${basePath}?tags=${slug}` |
18
+ | `max` | `number` | Cap on visible badges; extras collapse into a `+N` overflow badge |
19
+ | `className` | `string` | Extra classes on the wrapper `div` |
20
+
21
+ ## Usage Example
22
+
23
+ ```typescript
24
+ // Non-interactive display
25
+ <EntityTagBadges tags={article.article_tags} />
26
+
27
+ // Clickable badges linking to filtered list
28
+ <EntityTagBadges
29
+ tags={article.article_tags}
30
+ basePath="/blog"
31
+ max={5}
32
+ className="mt-2"
33
+ />
34
+
35
+ // Reuse the tag skin on a custom chip
36
+ import { TAG_BADGE_CLASS } from './entity-tag-badges'
37
+
38
+ <StatusBadge text="SECTION" variant="card" className={TAG_BADGE_CLASS} />
39
+ ```
40
+
41
+ **Overflow behavior:** `max={0}` shows no badges; `max={null | undefined}` shows all. Tags without a `slug` render as non-interactive even when `basePath` is provided.
42
+
43
+ > **Source:** [`entity-tag-badges.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/entity-tag-badges.tsx)
@@ -1,28 +1,16 @@
1
- <!-- source-hash: e2ba951ef60128447d27416a00b1a586 -->
2
- Renders the video block for entity detail pages, combining full video, highlight video, AI-generated summary, and video bites into a unified tabbed layout.
1
+ <!-- source-hash: 995d46df2c0fb31513779a266d32e0e3 -->
2
+ Renders the video block for a public entity detail page, combining a full video, AI-generated highlights, markdown summary, and video bites strip into a single composable section.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `EntityVideoSection` (default export)
7
- Main component that orchestrates the video display logic:
8
- - **Tab UI** — renders "Full Video" / "Highlights" tabs when both a full video and highlight video are present; falls back to a single `<Video>` when only one exists
9
- - **YouTube precedence** — resolves `youtubeUrl` vs `mainVideoUrl` priority at this level, keeping `<Video>` as a single-source-per-render primitive
10
- - **Video summary** — renders an AI-generated markdown summary via injected `MarkdownRenderer`
11
- - **Video bites grid** delegates to `<VideoBitesDisplay>` when `videoBites` are provided
12
- - **Null guard** — returns `null` when no video, summary, or bites are present
13
-
14
- ### `EntityVideoSectionProps`
15
- Full interface for controlling content and behavior:
16
-
17
- | Prop | Type | Description |
18
- |------|------|-------------|
19
- | `youtubeUrl` | `string \| null` | YouTube URL (takes priority over `mainVideoUrl`) |
20
- | `mainVideoUrl` | `string \| null` | Uploaded video URL |
21
- | `highlightVideoUrl` | `string \| null` | AI-generated highlight clip |
22
- | `captionsUrl` | `string \| null` | HTTPS URL to a VTT captions file |
23
- | `MarkdownRenderer` | `ComponentType` | Injected renderer for summary markdown |
24
- | `priority` | `boolean` | LCP hint for eager poster loading |
25
- | `srtContent` | `string \| null` | Deprecated — use `captionsUrl` |
6
+ **`EntityVideoSection`** Primary export. Orchestrates three sub-sections:
7
+ - **Tabbed video player** shows "Full Video" / "Highlights" tabs when both exist; falls back to a single `<Video>` if only one is available. YouTube URL takes precedence over `mainVideoUrl` when both are provided.
8
+ - **Markdown summary** — Rendered via an injected `MarkdownRenderer` component when `videoSummary` is present.
9
+ - **Video bites strip** — Scrollable `<VideoBitesStrip>` rendered when `videoBites` array is non-empty.
10
+
11
+ Returns `null` when no video, summary, or bites are available.
12
+
13
+ **`EntityVideoSectionProps`** — Full prop interface covering video URLs, captions, poster images, bites configuration, and the injected markdown renderer.
26
14
 
27
15
  ## Usage Example
28
16
 
@@ -30,22 +18,24 @@ Full interface for controlling content and behavior:
30
18
  import { EntityVideoSection } from './entity-video-section';
31
19
  import { MarkdownRenderer } from '@/components/markdown-renderer';
32
20
 
33
- export function TalkDetailPage({ talk }) {
34
- return (
35
- <EntityVideoSection
36
- youtubeUrl={talk.youtubeUrl}
37
- mainVideoUrl={talk.videoUrl}
38
- highlightVideoUrl={talk.highlightUrl}
39
- highlightVideoThumbnail={talk.highlightThumb}
40
- mainVideoPoster={talk.posterUrl}
41
- title={talk.title}
42
- videoSummary={talk.aiSummary}
43
- videoBites={talk.bites}
44
- bitesTitle="Key Moments"
45
- captionsUrl={talk.captionsUrl}
46
- MarkdownRenderer={MarkdownRenderer}
47
- priority
48
- />
49
- );
50
- }
51
- ```
21
+ <EntityVideoSection
22
+ youtubeUrl="https://www.youtube.com/watch?v=abc123"
23
+ highlightVideoUrl="https://cdn.example.com/highlight.mp4"
24
+ highlightVideoThumbnail="https://cdn.example.com/thumb.jpg"
25
+ title="Product Demo"
26
+ videoSummary="**Overview:** This video covers..."
27
+ videoBites={bites}
28
+ bitesTitle="Key Moments"
29
+ bitesProfile={speakerProfile}
30
+ bitesHref="/events/product-demo"
31
+ filterPublishedBites
32
+ priority
33
+ MarkdownRenderer={MarkdownRenderer}
34
+ />
35
+ ```
36
+
37
+ ## Notes
38
+
39
+ - `youtubeUrl` always wins over `mainVideoUrl` when both are set — resolved at the section level to keep `<Video>` single-source-per-render.
40
+ - `srtContent` is deprecated; use `captionsUrl` (VTT) instead.
41
+ - `priority` forwards an LCP hint to the full-video tab's poster image.
@@ -1,37 +1,34 @@
1
- <!-- source-hash: d8463fe41098681892c9956a4d6c77ce -->
2
- Renders an interactive Figma prototype viewer component with responsive layout, automatic device detection, section navigation, and scaled iframe embedding for both desktop and mobile viewports.
1
+ <!-- source-hash: 498b200b8dc21bf9ce26af638e0ae002 -->
2
+ Renders an interactive Figma prototype viewer with responsive scaling, section navigation, and multi-device support (desktop, mobile, touch). Integrates directly with the Figma Embed API and manages iframe lifecycle states.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### Interfaces & Types
7
- - **`FigmaPrototypeViewerConfig`** — Main configuration object; accepts file keys (per-device or legacy single), sections, dimensions, starting points, and UI class overrides
8
- - **`FigmaPrototypeSection`** — Defines a navigable prototype section with separate desktop/mobile node IDs
9
- - **`UnifiedState`** — Consolidated state shape covering view mode, iframe lifecycle, scaling, UI visibility flags, and navigation
10
- - **`ViewMode`** — `'DESKTOP' | 'MOBILE' | 'MOBILE_TOUCH'`
11
- - **`IframeState`** — `'INITIAL' | 'LOADING' | 'READY' | 'RELOADING' | 'SLEEP_RECOVERY'`
6
+ ### Exported Interfaces
7
+ - **`FigmaPrototypeSection`** — Defines a navigable section with `id`, `number`, `title`, optional `description`, and per-device starting node IDs
8
+ - **`FigmaPrototypeViewerConfig`** — Full viewer configuration including file keys (mobile/desktop/legacy), section list, dimension overrides, and CSS class customization
9
+ - **`FigmaPrototypeViewerProps`** — Component props wrapping config with optional external section control
12
10
 
13
- ### Core Functions
14
- - **`getViewMode(screenWidth, isTouchDevice)`** — Derives current `ViewMode` from screen width against the 768px breakpoint
15
- - **`calculateScaling(viewMode, containerDimensions, config?)`** — Computes `scale`, `marginX/Y`, and `scaledDimensions` to fit content without upscaling
16
- - **`resolveFileKey(config, viewMode)`** — Picks the correct Figma file key via env vars per-device config → legacy `fileKey`
17
- - **`resolveStartingPoint(config, viewMode, section?)`** — Resolves the initial prototype node via env vars → config → first section fallback
18
- - **`generateEmbedUrl(...)`** — Builds the `embed.figma.com/proto` URL with all required query parameters
19
- - **`renderUnifiedUI(state, handlers, config, iframeRef)`** — Pure render function producing the full component JSX from state
11
+ ### Internal Types
12
+ - **`ViewMode`** — `'DESKTOP' | 'MOBILE' | 'MOBILE_TOUCH'` determined by screen width and touch capability
13
+ - **`IframeState`** — Lifecycle states: `INITIAL → LOADING → READY`, plus `RELOADING` and `SLEEP_RECOVERY`
14
+ - **`UnifiedState`** — Single source of truth for all rendering decisions (scaling, visibility flags, navigation)
20
15
 
21
- ### Environment Variable Overrides
22
- Content dimensions and file keys can be set at the environment level:
16
+ ### Core Utility Functions
23
17
 
18
+ | Function | Purpose |
19
+ |---|---|
20
+ | `getViewMode` | Classifies device based on screen width and touch support |
21
+ | `calculateScaling` | Computes `scale`, `marginX`, `marginY` to fit content without upscaling |
22
+ | `resolveFileKey` | Priority chain: env var → config field → legacy `fileKey` |
23
+ | `resolveStartingPoint` | Priority chain: section node → env var → config → first section |
24
+ | `generateEmbedUrl` | Builds Figma embed URL with correct params for device mode |
25
+ | `renderUnifiedUI` | Renders full UI from declarative `UnifiedState` (section selector + iframe container) |
26
+
27
+ ### Configuration Priority (highest → lowest)
24
28
  ```text
25
- NEXT_PUBLIC_FIGMA_MOBILE_FILE_KEY
26
- NEXT_PUBLIC_FIGMA_DESKTOP_FILE_KEY
27
- NEXT_PUBLIC_FIGMA_MOBILE_STARTING_POINT
28
- NEXT_PUBLIC_FIGMA_DESKTOP_STARTING_POINT
29
- NEXT_PUBLIC_FIGMA_MOBILE_WIDTH / _HEIGHT
30
- NEXT_PUBLIC_FIGMA_DESKTOP_WIDTH / _HEIGHT
29
+ NEXT_PUBLIC_FIGMA_* env vars → config props → defaults
31
30
  ```
32
31
 
33
- Priority order: **env vars → config props → defaults**
34
-
35
32
  ## Usage Example
36
33
 
37
34
  ```typescript
@@ -40,25 +37,46 @@ import type { FigmaPrototypeViewerConfig } from './figma-prototype-viewer'
40
37
 
41
38
  const config: FigmaPrototypeViewerConfig = {
42
39
  title: 'Onboarding Flow',
43
- desktopFileKey: 'abc123XYZ',
44
- mobileFileKey: 'xyz789ABC',
45
- desktopStartingPoint: '1:23',
46
- mobileStartingPoint: '4:56',
40
+ desktopFileKey: 'abc123desktop',
41
+ mobileFileKey: 'abc123mobile',
42
+ desktopContentDimensions: { width: 1280, height: 720 },
43
+ mobileContentDimensions: { width: 390, height: 844 },
47
44
  sections: [
48
45
  {
49
- id: 'sign-up',
46
+ id: 'welcome',
50
47
  number: '01',
51
- title: 'Sign Up',
52
- description: 'New user registration flow',
48
+ title: 'Welcome Screen',
53
49
  startingNodeId: '1:23',
54
- mobileStartingNodeId: '4:56',
50
+ mobileStartingNodeId: '1:45'
55
51
  },
52
+ {
53
+ id: 'setup',
54
+ number: '02',
55
+ title: 'Account Setup',
56
+ startingNodeId: '2:10'
57
+ }
56
58
  ],
57
- mobileContentDimensions: { width: 343, height: 600 },
58
- desktopContentDimensions: { width: 944, height: 600 },
59
+ defaultSectionId: 'welcome'
59
60
  }
60
61
 
61
62
  export default function PrototypePage() {
62
- return <FigmaPrototypeViewer config={config} />
63
+ return (
64
+ <FigmaPrototypeViewer
65
+ config={config}
66
+ onSectionClick={(id) => console.log('Navigated to:', id)}
67
+ />
68
+ )
63
69
  }
64
- ```
70
+ ```
71
+
72
+ **Environment variable overrides** (`.env.local`):
73
+ ```bash
74
+ NEXT_PUBLIC_FIGMA_DESKTOP_FILE_KEY=your_desktop_key
75
+ NEXT_PUBLIC_FIGMA_MOBILE_FILE_KEY=your_mobile_key
76
+ NEXT_PUBLIC_FIGMA_DESKTOP_STARTING_POINT=1:23
77
+ NEXT_PUBLIC_FIGMA_MOBILE_STARTING_POINT=1:45
78
+ NEXT_PUBLIC_FIGMA_DESKTOP_WIDTH=1280
79
+ NEXT_PUBLIC_FIGMA_DESKTOP_HEIGHT=720
80
+ ```
81
+
82
+ **Source:** [`figma-prototype-viewer.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/figma-prototype-viewer.tsx)
@@ -1,18 +1,18 @@
1
- <!-- source-hash: a3c5543a6675d1ff7a726459eb736d56 -->
2
- Animated filter dropdown component for selecting, applying, and resetting multi-section filter configurations with support for checkbox, radio, and select modes.
1
+ <!-- source-hash: d381c68a67f3266ee8051c01fe38ea1d -->
2
+ Accessible, animated filter dropdown component with support for checkbox, radio, and multi-section filter configurations.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### Interfaces
7
- - **`FilterOption`** — Individual filter item with `id`, `label`, `value`, optional `count`, and `type`
8
- - **`FilterSection`** — Grouping of options with a selection `type` (`"checkbox"` | `"radio"` | `"select"`), optional `allowSelectAll`, and `defaultSelected`
9
- - **`FiltersDropdownProps`** — Full component props including `sections`, `onApply`, `onReset`, `currentFilters`, and `placement`
7
+ - **`FilterOption`** — Defines individual filter items with `id`, `label`, `value`, optional `count`, and `type` (`'option' | 'separator'`)
8
+ - **`FilterSection`** — Groups related filter options with a `type` (`"checkbox" | "radio" | "select"`), optional `allowSelectAll`, and `defaultSelected`
9
+ - **`FiltersDropdownProps`** — Full component props including custom trigger, section definitions, callbacks, placement, and `currentFilters` for controlled state
10
10
 
11
11
  ### Internal Components
12
- - **`FilterCheckbox`** — Styled checkbox with accent fill and checkmark icon when selected
12
+ - **`FilterCheckbox`** — Custom styled checkbox with accent fill and checkmark icon when selected
13
13
 
14
- ### Main Export
15
- - **`FiltersDropdown`** — Dropdown panel with animated open/close (mount/unmount + CSS transitions), smart viewport-aware placement, mobile-responsive layout, outside-click and Escape key dismissal, and active filter count indicator
14
+ ### Main Component: `FiltersDropdown`
15
+ Manages open/close animation (mount/unmount split via `shouldRender`/`isVisible`), viewport-aware placement, mobile responsiveness, outside-click and Escape-key dismissal, per-section selection state, and filter application/reset.
16
16
 
17
17
  ## Usage Example
18
18
 
@@ -25,7 +25,7 @@ const sections: FilterSection[] = [
25
25
  allowSelectAll: true,
26
26
  options: [
27
27
  { id: "open", label: "Open", value: "open", count: 12 },
28
- { id: "closed", label: "Closed", value: "closed", count: 4 },
28
+ { id: "closed", label: "Closed", value: "closed", count: 5 },
29
29
  ],
30
30
  },
31
31
  ]
@@ -42,7 +42,8 @@ const [appliedFilters, setAppliedFilters] = useState<Record<string, string[]>>({
42
42
  />
43
43
  ```
44
44
 
45
- ### Key Behaviors
46
- - `currentFilters` syncs external state back into the dropdown when reopened
47
- - Placement auto-adjusts (`bottom-start` `bottom-end`) based on available viewport space
48
- - On mobile (`< 640px`), the panel switches to a fixed, full-width overlay mode
45
+ ## Notes
46
+
47
+ - **Animation**: Uses a double `requestAnimationFrame` pattern to ensure CSS transitions fire correctly on mount; `shouldRender`/`isVisible` are intentionally separate to allow smooth enter/exit without `@keyframes`.
48
+ - **Placement auto-correction**: Dynamically overrides the `placement` prop if the dropdown would overflow the viewport.
49
+ - **`currentFilters` sync**: Serialized to a JSON string for stable `useEffect` dependency comparison, avoiding infinite re-render loops.
@@ -1,31 +1,34 @@
1
- <!-- source-hash: d7af9befa8736257f5fa1a7169b8bc9d -->
2
- Reusable configuration section component for highlight video generation settings, providing duration selection and subtitle burning controls in a unified horizontal layout.
1
+ <!-- source-hash: 3a44a8796eef8d6a87cab9dd243384f5 -->
2
+ Reusable React configuration panel for highlight video generation settings, providing duration selection and subtitle burning controls in a unified horizontal layout.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `HighlightConfigSection`
7
- A client-side React component used across `CustomerInterview` and `ProductRelease` entity workflows to configure highlight video output options.
7
+
8
+ A client-side React component that renders two controls side-by-side:
9
+
10
+ - **Target Duration Select** — dropdown offering 1–5 minute presets (3 minutes recommended) via a controlled `<Select>` component
11
+ - **Skip Subtitle Burning Checkbox** — toggle to bypass subtitle burn-in during video processing
8
12
 
9
13
  ### `HighlightConfigSectionProps`
10
- | Prop | Type | Description |
11
- |------|------|-------------|
12
- | `targetDurationSeconds` | `number` | Current selected duration in seconds |
13
- | `onTargetDurationChange` | `(seconds: number) => void` | Callback fired on duration change |
14
- | `skipSubtitleBurning` | `boolean` | Whether subtitle burning is skipped |
15
- | `onSkipSubtitleBurningChange` | `(skip: boolean) => void` | Callback fired on subtitle toggle |
16
- | `disabled` | `boolean?` | Disables all controls (default: `false`) |
17
- | `className` | `string?` | Additional CSS class override |
18
14
 
19
- **Duration options:** 60s, 120s, 180s *(recommended)*, 240s, 300s
15
+ | Prop | Type | Description |
16
+ |---|---|---|
17
+ | `targetDurationSeconds` | `number` | Current duration value in seconds |
18
+ | `onTargetDurationChange` | `(seconds: number) => void` | Fires on duration selection change |
19
+ | `skipSubtitleBurning` | `boolean` | Current subtitle skip state |
20
+ | `onSkipSubtitleBurningChange` | `(skip: boolean) => void` | Fires on checkbox toggle |
21
+ | `disabled` | `boolean` | Disables all controls (default: `false`) |
22
+ | `className` | `string` | Optional extra CSS classes |
20
23
 
21
24
  ## Usage Example
22
25
 
23
26
  ```typescript
24
27
  import { HighlightConfigSection } from './highlight-config-section';
25
28
 
26
- function VideoEditor() {
27
- const [duration, setDuration] = useState(180);
28
- const [skipSubs, setSkipSubs] = useState(false);
29
+ function MyHighlightForm() {
30
+ const [duration, setDuration] = React.useState(180); // 3 minutes default
31
+ const [skipSubs, setSkipSubs] = React.useState(false);
29
32
 
30
33
  return (
31
34
  <HighlightConfigSection
@@ -39,4 +42,4 @@ function VideoEditor() {
39
42
  }
40
43
  ```
41
44
 
42
- > **Note:** Renders as a dark-themed panel (`bg-[#1a1a1a]`) with a `Select` dropdown for duration and a checkbox for subtitle burning, laid out horizontally via flexbox.
45
+ > **Note:** This component is designed to be shared across `CustomerInterview` and `ProductRelease` entity flows. View the source at [`highlight-config-section.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/highlight-config-section.tsx).
@@ -1,20 +1,20 @@
1
- <!-- source-hash: 396284dd8be1b09a6ecb781dd4fed0ce -->
2
- Unified React component that combines highlight video configuration, AI-powered generation, and video preview/upload into a single composable section used across multiple modal contexts.
1
+ <!-- source-hash: 3e63796e9b4bf8c671743bc94b9dd017 -->
2
+ Unified section component that combines highlight video configuration, AI-powered generation, and video preview/upload into a single composable UI block.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `HighlightVideoCombinedSection`
7
- The primary export. Renders three sequential sub-sections:
8
- 1. **`HighlightConfigSection`** — Duration and subtitle burning settings
9
- 2. **`AIEnrichSection`** — AI generation trigger with status feedback and cancel support
10
- 3. **Preview + Upload** Inline video preview with manual upload fallback
7
+ The primary export. Orchestrates three sub-sections in a vertical stack:
8
+
9
+ 1. **`HighlightConfigSection`** — Duration and subtitle burn settings
10
+ 2. **`AIEnrichSection`**Generation trigger button with status feedback and cancel support
11
+ 3. **Preview + Upload Panel** — Displays the current highlight video or an empty state, with a manual upload button
11
12
 
12
13
  ### `HighlightVideoCombinedSectionProps`
13
- Full interface grouping props into four logical namespaces:
14
+ Full interface grouping props into three logical namespaces:
14
15
  - **Config** — `targetDurationSeconds`, `skipSubtitleBurning`, `configDisabled`
15
- - **Generation** — `onGenerateHighlight`, `isProcessing`, `canEnrich`, `requiredFields`, `status`
16
- - **Preview** — `highlightVideoUrl`, `highlightVideoThumbnail`, `renderVideoPreview`, `onUpload`, `onDelete`
17
- - **Common** — `className`, `title`, `description`, `buttonLabel`
16
+ - **Generation** — `onGenerateHighlight`, `isProcessing`, `canEnrich`, `requiredFields`, `status`, `hasResult`
17
+ - **Preview** — `highlightVideoUrl`, `highlightVideoSource`, `onUpload`, `onDelete`, `renderVideoPreview`
18
18
 
19
19
  ## Usage Example
20
20
 
@@ -25,23 +25,32 @@ Full interface grouping props into four logical namespaces:
25
25
  onTargetDurationChange={(s) => setDuration(s)}
26
26
  skipSubtitleBurning={false}
27
27
  onSkipSubtitleBurningChange={(v) => setSkipSubs(v)}
28
+
28
29
  // Generation
29
30
  onGenerateHighlight={handleGenerate}
30
31
  isProcessing={isGenerating}
31
- canEnrich={hasTranscript}
32
- requiredFields={[{ key: 'transcript', label: 'Transcription' }]}
33
- status={jobStatus}
34
- statusMessage={jobMessage}
35
- onCancel={handleCancel}
32
+ canEnrich={hasTranscription}
33
+ requiredFields={[{ field: 'transcription', label: 'Transcription' }]}
34
+ status={generationStatus}
36
35
  hasResult={!!highlightUrl}
36
+ showCancel
37
+ onCancel={handleCancel}
38
+
37
39
  // Preview
38
40
  highlightVideoUrl={highlightUrl}
39
- onUpload={async (file) => await uploadFile(file)}
40
- onDelete={async () => await deleteHighlight()}
41
+ highlightVideoSource="ai_generated"
42
+ highlightVideoDurationMs={118000}
43
+ onUpload={async (file) => uploadToStorage(file)}
44
+ onDelete={async () => deleteHighlight()}
41
45
  renderVideoPreview={({ videoUrl, title, thumbnailUrl, onDelete }) => (
42
- <VideoPlayer url={videoUrl} thumbnail={thumbnailUrl} onDelete={onDelete} />
46
+ <VideoPlayer url={videoUrl} title={title} thumbnail={thumbnailUrl} onDelete={onDelete} />
43
47
  )}
44
48
  />
45
49
  ```
46
50
 
47
- > **Note:** `renderVideoPreview` uses a render-prop pattern, keeping the component decoupled from any specific video player implementation. The manual upload uses a hidden `<input type="file">` created programmatically to avoid controlled input complexity.
51
+ ## Notes
52
+
53
+ - `renderVideoPreview` follows a render-prop pattern, giving callers full control over the player UI.
54
+ - The upload button creates a hidden `<input type="file">` via `document.createElement` — no DOM ref required.
55
+ - Button label auto-toggles between `"Generate Highlight"` and `"Regenerate Highlight"` based on `hasResult`.
56
+ - Default description is derived from `targetDurationSeconds`: `"Generate a N-minute summary video using Claude AI + Shotstack"`.