@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,31 +1,45 @@
1
- <!-- source-hash: e5e5528221514a1a868f47ffbc324b0c -->
2
- Auto-generated type definitions for the Flamingo/OpenFrame Supabase database schema, providing fully-typed `Row`, `Insert`, and `Update` interfaces for all public tables along with their foreign key relationships.
1
+ <!-- source-hash: 23455e458da538aa93f78c3bc682573d -->
2
+ Auto-generated Supabase database type definitions for the OpenFrame OSS library, providing strongly-typed interfaces for all public schema tables including announcements, Slack data, podcast episodes, webinars, and Luma events.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `Json` Type
7
- A recursive union type representing any valid JSON value — `string`, `number`, `boolean`, `null`, nested objects, or arrays.
7
+
8
+ A recursive union type representing any valid JSON value — primitives, objects, arrays, or `null`.
8
9
 
9
10
  ### `Database` Type
10
- The root type exported for use with the Supabase client. Contains a `public` schema with the following tables:
11
+
12
+ The root type describing the full Supabase public schema. Each table is represented with three operation shapes:
13
+
14
+ | Shape | Purpose |
15
+ |-------|---------|
16
+ | `Row` | Full record returned from `SELECT` queries |
17
+ | `Insert` | Required + optional fields for `INSERT` |
18
+ | `Update` | All fields optional for `PATCH`/`UPDATE` |
19
+
20
+ ### Tables
11
21
 
12
22
  | Table | Description |
13
- |---|---|
14
- | `announcement_assets` | File attachments (images, docs) linked to announcements |
15
- | `announcements` | Platform announcements with icon, color, and active state |
23
+ |-------|-------------|
24
+ | `announcement_assets` | File attachments linked to announcements |
25
+ | `announcements` | Platform announcements with icons and styling |
16
26
  | `slack_channels` | Synced Slack workspace channels |
17
- | `slack_messages` | Slack messages with threading and reply support |
18
- | `slack_users` | Slack workspace user profiles |
19
- | `podcast_episodes` | Podbean podcast episodes linked to platforms |
20
- | `webinars` | Livestorm webinar events linked to platforms |
27
+ | `slack_messages` | Slack messages with threading and metadata |
28
+ | `slack_users` | Slack workspace member profiles |
29
+ | `podcast_episodes` | Podbean-synced podcast episode records |
30
+ | `webinars` | Livestorm-synced webinar events |
31
+ | `luma_events` | Luma-synced community events |
32
+
33
+ ### Relationships
21
34
 
22
- Each table exposes three operation shapes:
23
- - **`Row`** full record shape returned by `SELECT`
24
- - **`Insert`** shape for `INSERT` (required fields enforced, optional fields use `?`)
25
- - **`Update`** — shape for `UPDATE` (all fields optional)
35
+ - `announcement_assets.announcement_id` `announcements.id`
36
+ - `slack_messages.channel_id` `slack_channels.channel_id`
37
+ - `slack_messages.user_id` `slack_users.user_id`
26
38
 
27
39
  ## Usage Example
28
40
 
41
+ Pass the `Database` type to the Supabase client for full end-to-end type safety:
42
+
29
43
  ```typescript
30
44
  import { createClient } from '@supabase/supabase-js'
31
45
  import type { Database } from './supabase'
@@ -35,18 +49,18 @@ const supabase = createClient<Database>(
35
49
  process.env.SUPABASE_ANON_KEY!
36
50
  )
37
51
 
38
- // Fully typed query row shape inferred automatically
39
- const { data: episodes } = await supabase
40
- .from('podcast_episodes')
41
- .select('id, title, audio_url, published_at')
42
- .eq('platform_id', 'abc-123')
43
-
44
- // Typed insert
45
- const { error } = await supabase
52
+ // Fully typed — Row shape inferred automatically
53
+ const { data: announcements } = await supabase
46
54
  .from('announcements')
47
- .insert({
48
- title: 'New Feature',
49
- description: 'Check out what is new!',
50
- platform_id: 'abc-123',
51
- })
52
- ```
55
+ .select('id, title, description, is_active')
56
+ .eq('is_active', true)
57
+
58
+ // Type-safe insert — Insert shape enforced
59
+ await supabase.from('slack_users').insert({
60
+ user_id: 'U12345',
61
+ username: 'jane.doe',
62
+ display_name: 'Jane Doe',
63
+ })
64
+ ```
65
+
66
+ **Source:** [`supabase.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/supabase.ts)
@@ -1,36 +1,56 @@
1
- <!-- source-hash: 455ff90d32dc36ef99be5420007f9262 -->
2
- Centralized type definitions for MSP tool types used throughout the Flamingo/OpenFrame platform. Provides a single source of truth for tool type constants and display labels.
1
+ <!-- source-hash: f34afe24b605fb7d34139a1142319f18 -->
2
+ Defines the centralized type system for all MSP tool integrations in the OpenFrame platform, serving as the single source of truth for tool type identifiers and display labels.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`ToolTypeValues`** - Const assertion object containing all available tool type constants (FLEET_MDM, MESHCENTRAL, etc.)
7
- - **`ToolType`** - Union type derived from ToolTypeValues for type-safe tool type references
8
- - **`toolLabels`** - Record mapping tool types to human-readable display names
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `ToolTypeValues` | `const object` | Enum-like constant map of all supported tool type string literals |
9
+ | `ToolType` | `type` | Union type derived from `ToolTypeValues` values |
10
+ | `toolLabels` | `Record<ToolType, string>` | Maps each `ToolType` to its human-readable display label |
11
+
12
+ ### Supported Tool Types
13
+
14
+ | Key | Value | Label |
15
+ |-----|-------|-------|
16
+ | `FLEET_MDM` | `'FLEET_MDM'` | Fleet |
17
+ | `MESHCENTRAL` | `'MESHCENTRAL'` | MeshCentral |
18
+ | `AUTHENTIK` | `'AUTHENTIK'` | Authentik |
19
+ | `OPENFRAME` | `'OPENFRAME'` | OpenFrame |
20
+ | `OPENFRAME_CHAT` | `'OPENFRAME_CHAT'` | OpenFrame Chat |
21
+ | `OPENFRAME_CLIENT` | `'OPENFRAME_CLIENT'` | OpenFrame Client |
22
+ | `OPENFRAME_RMM` | `'OPENFRAME_RMM'` | RMM |
23
+ | `OSQUERY` | `'OSQUERY'` | Osquery |
24
+ | `SYSTEM` | `'SYSTEM'` | System |
9
25
 
10
26
  ## Usage Example
11
27
 
12
28
  ```typescript
13
29
  import { ToolType, ToolTypeValues, toolLabels } from './tool.types'
14
30
 
15
- // Type-safe tool type usage
16
- const currentTool: ToolType = ToolTypeValues.MESHCENTRAL
17
-
18
- // Get display label for UI
19
- const displayName = toolLabels[currentTool] // "MeshCentral"
20
-
21
- // Use in component props
22
- interface ToolBadgeProps {
23
- type: ToolType
24
- label?: string
31
+ // Type-safe tool type reference
32
+ const currentTool: ToolType = ToolTypeValues.FLEET_MDM
33
+
34
+ // Resolve display label for UI rendering (e.g. ToolBadge, ToolIcon)
35
+ const label = toolLabels[currentTool] // → 'Fleet'
36
+
37
+ // Narrow by tool type in a switch
38
+ function handleTool(tool: ToolType) {
39
+ switch (tool) {
40
+ case ToolTypeValues.MESHCENTRAL:
41
+ // handle MeshCentral
42
+ break
43
+ case ToolTypeValues.OPENFRAME_RMM:
44
+ // handle RMM
45
+ break
46
+ }
25
47
  }
48
+ ```
26
49
 
27
- function ToolBadge({ type, label }: ToolBadgeProps) {
28
- const defaultLabel = toolLabels[type]
29
- return <span>{label || defaultLabel}</span>
30
- }
50
+ ## Notes
31
51
 
32
- // Usage with type safety
33
- <ToolBadge type={ToolTypeValues.OPENFRAME_CHAT} />
34
- ```
52
+ - Prefer `ToolTypeValues.X` over raw string literals to ensure compile-time safety.
53
+ - `ToolType` is a strict union — TypeScript will error on unrecognized values.
54
+ - Consumed by `ToolBadge`, `ToolIcon`, and any component requiring tool metadata.
35
55
 
36
- The const assertion pattern ensures type safety while maintaining runtime access to the values, making it ideal for components like ToolBadge and ToolIcon that need both compile-time type checking and runtime value access.
56
+ **Source:** [`tool.types.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/tool.types.ts)
@@ -1,54 +1,63 @@
1
- <!-- source-hash: d2e79259f53d9d688fe3d007c1eb382a -->
2
- Shared type definitions for video processing functionality used across multiple entities (CustomerInterview, ProductRelease, and other video-enabled features).
1
+ <!-- source-hash: 6ec3f18beb42e1d118dec17403060310 -->
2
+ Shared TypeScript type definitions for video processing functionality, providing the canonical data shapes used across video-enabled entities such as customer interviews, product releases, and marketing campaigns.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `VideoTeaser` | Interface | Short video clip for previews; tracks URL, thumbnail, visibility, and origin (`manual` \| `ai_generated`) |
9
- | `Speaker` | Interface | Speaker identification metadata from transcription |
10
- | `VideoClip` | Interface | AI-identified video segment with time range, confidence, and optional Twelve Labs ID |
11
- | `TranscriptWord` | Interface | Word-level transcript entry with millisecond timestamps and speaker attribution |
12
- | `SpeakerMapping` | Interface | Maps AssemblyAI speaker labels (e.g., `"A"`, `"B"`) to names and roles |
13
- | `ExcludedRange` | Interface | Time range exclusion (e.g., incentive mentions) in seconds |
14
- | `VideoProcessingFields` | Interface | Base fields shared across all video-enabled entities (transcript, highlight video, thumbnails, AI confidence scores) |
15
- | `VideoProcessingEntityType` | Union Type | Supported entity types for agent processing pipelines |
6
+ | Export | Kind | Description |
7
+ |---|---|---|
8
+ | `VideoTeaser` | Interface | Canonical persistence shape for short video clips/bites stored in `video_bites`/`teasers` JSONB columns |
9
+ | `Speaker` | Interface | Speaker identification metadata for transcription workflows |
10
+ | `VideoClip` | Interface | AI-identified video segment from Twelve Labs analysis |
11
+ | `TranscriptWord` | Interface | Word-level transcript data with millisecond-precision timing |
12
+ | `SpeakerMapping` | Interface | Maps AssemblyAI speaker labels (`"A"`, `"B"`) to named participant info |
13
+ | `ExcludedRange` | Interface | Time range exclusions (e.g., incentive mentions) in seconds |
14
+ | `VideoProcessingFields` | Interface | Base set of video fields shared across all video-capable entities |
15
+ | `VideoProcessingEntityType` | Type Union | Discriminator for agent routing across all supported entity types |
16
16
 
17
17
  ## Usage Example
18
18
 
19
19
  ```typescript
20
20
  import type {
21
+ VideoTeaser,
21
22
  VideoProcessingFields,
22
23
  SpeakerMapping,
23
- VideoTeaser,
24
- VideoProcessingEntityType
24
+ VideoProcessingEntityType,
25
25
  } from './video-processing'
26
26
 
27
- const speakerMapping: SpeakerMapping = {
28
- A: { name: 'Jane Smith', role: 'interviewer' },
29
- B: { name: 'John Doe', role: 'interviewee', userId: 'usr_123' },
27
+ // Composing a video-enabled entity record
28
+ const speakerMap: SpeakerMapping = {
29
+ A: { name: 'Jane Doe', role: 'interviewer' },
30
+ B: { name: 'John Smith', role: 'interviewee', userId: 'usr_abc123' },
30
31
  }
31
32
 
32
- const videoFields: VideoProcessingFields = {
33
- main_video_url: 'https://cdn.example.com/interviews/abc.mp4',
33
+ const fields: VideoProcessingFields = {
34
+ main_video_url: 'https://stream.mux.com/abc123.m3u8',
34
35
  transcript: 'Full transcript text...',
35
- transcript_words_data: [
36
- { text: 'Hello', start: 0, end: 450, confidence: 0.98, speaker: 'A' },
37
- ],
38
- speaker_mapping: speakerMapping,
39
- ai_confidence_transcript: 0.95,
40
- ai_confidence_summary: 0.88,
36
+ speaker_mapping: speakerMap,
37
+ ai_confidence_transcript: 0.94,
38
+ ai_confidence_summary: 0.87,
41
39
  }
42
40
 
41
+ const entityType: VideoProcessingEntityType = 'customer_interview'
42
+
43
+ // Constructing a teaser bite (canonical shape)
43
44
  const teaser: VideoTeaser = {
44
- url: 'https://cdn.example.com/teasers/clip1.mp4',
45
- title: 'Key insight on onboarding',
45
+ id: 'a1b2c3d4',
46
+ url: 'https://stream.mux.com/bite_xyz.m3u8',
47
+ title: 'Key product insight moment',
48
+ start_time_ms: 134000,
49
+ end_time_ms: 162000,
46
50
  published: true,
51
+ featured: false,
47
52
  source: 'ai_generated',
48
- created_at: new Date().toISOString(),
53
+ confidence: 87,
49
54
  }
50
-
51
- const entityType: VideoProcessingEntityType = 'customer_interview'
52
55
  ```
53
56
 
54
- > **Note:** `VideoProcessingFields` is intended as a base — extend it per entity rather than using it directly. `published` on `VideoTeaser` defaults to `false`; an admin must explicitly set it to `true` for public visibility.
57
+ ## Notes
58
+
59
+ - `VideoTeaser` is the **true superset** for persistence — downstream display types (e.g., `VideoTeaserWithRatio`) extend it rather than diverging from it.
60
+ - `VideoClip` intentionally remains a separate shape from `VideoTeaser`; it represents AI extraction candidates, not persisted bites.
61
+ - `id` on `VideoTeaser` is a stable 8-char lowercase-hex identity key used by the Mux transcode pipeline — never derived from `url`.
62
+
63
+ **Source:** [`video-processing.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/video-processing.ts)
@@ -389,6 +389,86 @@ export type Database = {
389
389
  Relationships: [
390
390
  ]
391
391
  }
392
+ walkthrough_videos: {
393
+ Row: {
394
+ id: number
395
+ platform_id: string
396
+ title: string
397
+ status: string
398
+ youtube_url: string | null
399
+ main_video_url: string | null
400
+ main_video_thumbnail: string | null
401
+ video_summary: string | null
402
+ transcript: string | null
403
+ srt_content: string | null
404
+ transcript_words_data: Json | null
405
+ video_bites: Json
406
+ config: Json | null
407
+ custom_instructions: string | null
408
+ highlight_video_url: string | null
409
+ highlight_video_source: string | null
410
+ highlight_video_thumbnail: string | null
411
+ highlight_video_duration_ms: number | null
412
+ author_id: string | null
413
+ created_at: string
414
+ updated_at: string
415
+ }
416
+ Insert: {
417
+ id?: never
418
+ platform_id: string
419
+ title: string
420
+ status?: string
421
+ youtube_url?: string | null
422
+ main_video_url?: string | null
423
+ main_video_thumbnail?: string | null
424
+ video_summary?: string | null
425
+ transcript?: string | null
426
+ srt_content?: string | null
427
+ transcript_words_data?: Json | null
428
+ video_bites?: Json
429
+ config?: Json | null
430
+ custom_instructions?: string | null
431
+ highlight_video_url?: string | null
432
+ highlight_video_source?: string | null
433
+ highlight_video_thumbnail?: string | null
434
+ highlight_video_duration_ms?: number | null
435
+ author_id?: string | null
436
+ created_at?: string
437
+ updated_at?: string
438
+ }
439
+ Update: {
440
+ id?: never
441
+ platform_id?: string
442
+ title?: string
443
+ status?: string
444
+ youtube_url?: string | null
445
+ main_video_url?: string | null
446
+ main_video_thumbnail?: string | null
447
+ video_summary?: string | null
448
+ transcript?: string | null
449
+ srt_content?: string | null
450
+ transcript_words_data?: Json | null
451
+ video_bites?: Json
452
+ config?: Json | null
453
+ custom_instructions?: string | null
454
+ highlight_video_url?: string | null
455
+ highlight_video_source?: string | null
456
+ highlight_video_thumbnail?: string | null
457
+ highlight_video_duration_ms?: number | null
458
+ author_id?: string | null
459
+ created_at?: string
460
+ updated_at?: string
461
+ }
462
+ Relationships: [
463
+ {
464
+ foreignKeyName: "walkthrough_videos_platform_id_fkey"
465
+ columns: ["platform_id"]
466
+ isOneToOne: true
467
+ referencedRelation: "platforms"
468
+ referencedColumns: ["id"]
469
+ }
470
+ ]
471
+ }
392
472
  luma_events: {
393
473
  Row: {
394
474
  id: string
@@ -120,4 +120,5 @@ export type VideoProcessingEntityType =
120
120
  | 'investor_update'
121
121
  | 'onboarding_guide'
122
122
  | 'what_i_shipped'
123
+ | 'walkthrough_video'
123
124
  // Fri May 15 14:58:59 EDT 2026
@@ -1,31 +1,63 @@
1
- <!-- source-hash: pending-regeneration -->
2
- Announcement dismissal store. The dismissal COOKIE is the single source of truth — the hub's root layout reads it server-side to decide whether to SSR-seed the AnnouncementBar (no flash for dismissed users); the legacy per-id localStorage key is read-only legacy consulted only when no cookie exists (migration trigger).
1
+ <!-- source-hash: eaaab09af79a45c05efef4de2c5f0db6 -->
2
+ Manages announcement dismissal state using a cookie-first strategy, enabling SSR-safe dismissal detection and seamless migration from a legacy localStorage approach.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`announcementDismissCookieName(platform)`** - The ONE home for the cookie-name encoding (`<platform>-announcement-dismissed`), shared by the client writer and the hub's SSR reader
7
- - **`isDismissedCookieValue(cookieValue, id)`** - THE dismissal match rule (id-match, never mere cookie presence), pure and isomorphic — shared across the server/client boundary
8
- - **`dismissAnnouncement(platform, id)`** - Persists a dismissal (cookie only, 1 year, SameSite=Lax); localStorage is intentionally not written
9
- - **`isAnnouncementDismissed(platform, id)`** - Client-side check, cookie-first with legacy-localStorage fallback; reads browser storage so it must be called from effects, never during render
10
- - **`clearLegacyAnnouncementCache(platform)`** - One-time cleanup of the pre-refactor localStorage "instant paint" cache blob
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `announcementDismissCookieName` | `function` | Returns the canonical cookie name for a platform's dismissed announcement ID |
9
+ | `isDismissedCookieValue` | `function` | Pure/isomorphic ID-match check shared across server and client boundaries |
10
+ | `dismissAnnouncement` | `function` | Persists a dismissal to cookie only (1-year `max-age`); intentionally skips localStorage |
11
+ | `isAnnouncementDismissed` | `function` | Cookie-first client-side check, with legacy localStorage fallback when no cookie exists |
12
+ | `clearAnnouncementDismissals` | `function` | Removes all dismissal state (cookie + legacy localStorage keys) — for tests/stories |
13
+ | `clearLegacyAnnouncementCache` | `function` | One-time cleanup of the pre-refactor announcement cache blob from localStorage |
14
+
15
+ ## Storage Architecture
16
+
17
+ ```mermaid
18
+ graph TD
19
+ SSR["SSR Layout (server)"] -->|reads cookie| Cookie["platform-announcement-dismissed cookie"]
20
+ Client["Client Mount Effect"] -->|reads cookie first| Cookie
21
+ Client -->|fallback, read-only| LS["Legacy localStorage key"]
22
+ Client -->|backfills on migration| Cookie
23
+ Dismiss["dismissAnnouncement()"] -->|writes| Cookie
24
+ Dismiss -. never writes .-> LS
25
+ ```
11
26
 
12
27
  ## Usage Example
13
28
 
14
29
  ```typescript
15
30
  import {
16
- dismissAnnouncement,
17
- isAnnouncementDismissed,
18
31
  announcementDismissCookieName,
19
32
  isDismissedCookieValue,
20
- } from './announcement-storage';
33
+ dismissAnnouncement,
34
+ isAnnouncementDismissed,
35
+ clearAnnouncementDismissals,
36
+ } from './announcement-storage'
37
+
38
+ // Server-side (Next.js layout): check if already dismissed via cookie
39
+ const cookieValue = cookies().get(announcementDismissCookieName('hub'))?.value
40
+ const shouldSeedBar = !isDismissedCookieValue(cookieValue, activeAnnouncement.id)
41
+
42
+ // Client-side: check dismissal from an effect (never during render)
43
+ useEffect(() => {
44
+ if (isAnnouncementDismissed('hub', announcement.id)) {
45
+ setVisible(false)
46
+ }
47
+ }, [announcement.id])
21
48
 
22
- // Client (in an effect):
23
- if (isAnnouncementDismissed('openframe', announcement.id)) { /* collapse */ }
24
- dismissAnnouncement('openframe', announcement.id);
49
+ // On user dismiss
50
+ function handleDismiss() {
51
+ dismissAnnouncement('hub', announcement.id)
52
+ setVisible(false)
53
+ }
25
54
 
26
- // Server (hub root layout):
27
- const cookieValue = (await cookies()).get(announcementDismissCookieName(platform))?.value;
28
- const dismissed = isDismissedCookieValue(cookieValue, announcement?.id);
55
+ // In tests/Storybook: reset state between stories
56
+ afterEach(() => clearAnnouncementDismissals('hub'))
29
57
  ```
30
58
 
31
- No `"use client"` directive on purpose the name/match helpers are imported by the hub's server layout; DOM-touching helpers guard on `typeof document`.
59
+ > **Note:** `isAnnouncementDismissed` reads browser storage and must only be called from effects never during render to avoid SSR/hydration mismatches.
60
+
61
+ ## Source
62
+
63
+ [`announcement-storage.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/announcement-storage.ts)
@@ -1,32 +1,36 @@
1
- <!-- source-hash: e85f6b3fb26728490c7a8f3f9f1cfba8 -->
2
- A configuration module that defines the application's core settings and provides utilities for accessing app-specific configuration values.
1
+ <!-- source-hash: 74f778fe6f21ac592b390d0c7e37584e -->
2
+ Provides static application configuration and runtime app-type resolution for the OpenMSP platform, with safe fallbacks for non-Next.js host environments.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`APP_CONFIG`** - Immutable configuration object containing app metadata and feature flags
7
- - **`getAppConfig()`** - Function that returns the complete application configuration
8
- - **`getAppType()`** - Function that retrieves the app type from environment variables with fallback
6
+ - **`APP_CONFIG`** Immutable (`as const`) config object containing app identity (`type`, `name`, `domain`) and feature flags (`announcements`, `notifications`).
7
+ - **`getAppConfig()`** Returns the full `APP_CONFIG` object.
8
+ - **`getAppType()`** Resolves the active app type at runtime, reading `process.env.NEXT_PUBLIC_APP_TYPE` for Next.js/webpack static inlining, with a `try/catch` guard that returns `'openmsp'` in environments where `process` is unavailable (e.g., Vite, CRA embeds).
9
9
 
10
10
  ## Usage Example
11
11
 
12
12
  ```typescript
13
- import { APP_CONFIG, getAppConfig, getAppType } from './app-config';
13
+ import { getAppConfig, getAppType } from './app-config';
14
14
 
15
- // Access static configuration
16
- console.log(APP_CONFIG.app.name); // 'OpenMSP'
17
- console.log(APP_CONFIG.features.announcements); // true
18
-
19
- // Get configuration dynamically
15
+ // Access full config
20
16
  const config = getAppConfig();
21
- if (config.features.notifications) {
22
- // Enable notification features
23
- }
17
+ console.log(config.app.name); // 'OpenMSP'
18
+ console.log(config.features.announcements); // true
24
19
 
25
- // Check app type (useful for multi-tenant applications)
20
+ // Resolve app type at runtime (safe in Next.js and Vite/CRA embeds)
26
21
  const appType = getAppType();
27
- if (appType === 'openmsp') {
28
- // OpenMSP-specific logic
22
+ console.log(appType); // 'openmsp' (or value of NEXT_PUBLIC_APP_TYPE)
23
+
24
+ // Feature-flag guard
25
+ if (getAppConfig().features.notifications) {
26
+ // initialize notification system
29
27
  }
30
28
  ```
31
29
 
32
- The configuration uses TypeScript's `as const` assertion to ensure type safety and immutability. The `getAppType()` function allows runtime determination of the application type through environment variables, making it suitable for multi-tenant or white-label applications.
30
+ ## Notes
31
+
32
+ - `NEXT_PUBLIC_APP_TYPE` must be set at **build time** in Next.js for webpack to statically inline it; runtime assignment has no effect.
33
+ - The `try/catch` in `getAppType()` ensures embed hosts (Vite, CRA) that lack a global `process` object receive the `'openmsp'` fallback without throwing.
34
+ - Dismissal cookies for announcements are domain-scoped, so the `'openmsp'` fallback is safe for single-platform embed deployments.
35
+
36
+ **Source:** [`app-config.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/app-config.ts)
@@ -0,0 +1,46 @@
1
+ <!-- source-hash: d68a2227a3551e27e65a194850078361 -->
2
+ Centralized repository of monochrome SVG brand mark silhouettes, keyed by lowercase brand name, intended for use with CSS `mask-image` tinting.
3
+
4
+ ## Key Components
5
+
6
+ **`BRAND_MARK_SVGS`** — `Record<string, string>`
7
+
8
+ A constant map of brand name strings to raw SVG markup. Each SVG uses `role="img"` and a `<title>` element for accessibility. Current entries include:
9
+
10
+ | Key | Brand |
11
+ |---|---|
12
+ | `amazonwebservices` | Amazon Web Services |
13
+ | `datadog` | Datadog |
14
+ | `git` | Git |
15
+ | `github` | GitHub |
16
+ | `gnubash` | GNU Bash |
17
+ | `googlecloud` | Google Cloud |
18
+ | `grafana` | Grafana |
19
+
20
+ ## Usage Example
21
+
22
+ ```typescript
23
+ import { BRAND_MARK_SVGS } from './brand-marks';
24
+
25
+ // Render an inline SVG
26
+ const svgMarkup = BRAND_MARK_SVGS['github'];
27
+ element.innerHTML = svgMarkup;
28
+
29
+ // Use as a CSS mask for tinted icons
30
+ const maskStyle = {
31
+ maskImage: `url("data:image/svg+xml,${encodeURIComponent(BRAND_MARK_SVGS['github'])}")`,
32
+ maskRepeat: 'no-repeat',
33
+ maskSize: 'contain',
34
+ backgroundColor: 'currentColor',
35
+ };
36
+ ```
37
+
38
+ ## Notes
39
+
40
+ - All SVGs are monochrome (single `<path>`) to support CSS `mask-image` tinting — applying color via `background-color` or `color` without modifying the SVG source.
41
+ - Centralizing these assets prevents consumers from bundling duplicate copies.
42
+ - Lookup keys are always **lowercase** with no spaces or hyphens (e.g., `amazonwebservices`, `googlecloud`).
43
+
44
+ ## Source
45
+
46
+ [`brand-marks.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/brand-marks.ts)
package/src/utils/.cn.md CHANGED
@@ -1,44 +1,55 @@
1
- <!-- source-hash: c1693a304ddf9b29bde0ca02b6f6b8ea -->
2
- Utility module providing class name merging with extended Tailwind support, and platform URL resolution helpers for multi-tenant Flamingo/OpenFrame deployments.
1
+ <!-- source-hash: 700d6c65ebfb65630e665b437acf4e83 -->
2
+ Utility module providing two core helpers: a Tailwind-aware class name merger (`cn`) that correctly handles custom ODS typography utilities, and an environment-aware base URL resolver (`getBaseUrl`) that delegates platform canonical URLs to the SSOT in `platform-domains.ts`.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  | Export | Type | Description |
7
7
  |--------|------|-------------|
8
- | `cn` | Function | Merges class names using `clsx` + `tailwind-merge`, extended with custom ODS typography classes (`text-h1`–`text-h6`) |
9
- | `getPlatformProductionUrl` | Function | Returns the production URL for a named platform, with `NEXT_PUBLIC_*` env var override support |
10
- | `getAllPlatformBaseDomains` | Function | Extracts all unique base domains across platforms; handles localhost, Vercel preview, and production cases (useful for cross-domain cookie scope) |
11
- | `getBaseUrl` | Function | Resolves the current app's base URL using a priority chain: env override → platform URL → Vercel domain → production fallback → `localhost:3000` |
8
+ | `cn` | `function` | Combines class names using `clsx` + a custom `tailwind-merge` instance |
9
+ | `getBaseUrl` | `function` | Returns the application base URL for the current environment |
10
+ | `twMerge` | internal | Extended `tailwind-merge` instance with the `ods-typography` class group |
11
+
12
+ ### `ods-typography` Class Group
13
+
14
+ Custom Tailwind text-size utilities registered to prevent silent conflicts with `text-color` utilities:
15
+
16
+ ```text
17
+ text-h1 · text-h2 · text-h3 · text-h4 · text-h5 · text-h6 · text-code · text-badge
18
+ ```
19
+
20
+ Without this registration, `cn('text-badge', 'text-ods-text-on-accent')` would drop `text-badge` — only the colour survives.
12
21
 
13
22
  ## Usage Example
14
23
 
15
24
  ```typescript
16
- import { cn, getBaseUrl, getPlatformProductionUrl, getAllPlatformBaseDomains } from '@/lib/cn'
17
-
18
- // Merge Tailwind classes (including custom ODS typography)
19
- const className = cn('text-h1 font-bold', isActive && 'text-yellow-400')
25
+ import { cn, getBaseUrl } from '@/lib/cn'
20
26
 
21
- // Resolve current app base URL
22
- const apiBase = getBaseUrl() // http://localhost:3000 (dev)
23
- // https://www.openmsp.ai (prod fallback)
27
+ // Merge conditional classes safely — typography and colour both survive
28
+ const className = cn(
29
+ 'text-badge',
30
+ 'text-ods-text-on-accent',
31
+ isActive && 'bg-accent',
32
+ )
24
33
 
25
- // Resolve a specific platform URL (respects NEXT_PUBLIC_* overrides)
26
- const flamingoUrl = getBaseUrl('flamingo') // https://www.flamingo.run
27
- const openframeUrl = getPlatformProductionUrl('openframe') // https://openframe.ai
34
+ // Current deployment URL (dev localhost, prod → Vercel/canonical domain)
35
+ const currentUrl = getBaseUrl()
28
36
 
29
- // Get all cookie-scoped base domains (e.g. for document.cookie domain=)
30
- const domains = getAllPlatformBaseDomains()
31
- // Production: ['.flamingo.run', 'flamingo.run', '.openmsp.ai', 'openmsp.ai', ...]
32
- // Vercel preview: ['.vercel.app', 'vercel.app']
33
- // Localhost: []
37
+ // Specific platform URL (respects env override, falls back to canonical)
38
+ const flamingoUrl = getBaseUrl('flamingo') // https://www.flamingo.run
39
+ const openMspUrl = getBaseUrl('openmsp') // https://www.openmsp.ai
34
40
  ```
35
41
 
36
- ## Environment Variables
42
+ ## `getBaseUrl` Resolution Order
43
+
44
+ ```mermaid
45
+ graph TD
46
+ A[getBaseUrl called] --> B{NODE_ENV !== production?}
47
+ B -->|Yes| C[NEXT_PUBLIC_DEV_URL or localhost:3000]
48
+ B -->|No| D{platform arg provided?}
49
+ D -->|Yes| E[getPlatformProductionUrl from SSOT]
50
+ D -->|No| F{VERCEL_PROJECT_PRODUCTION_URL set?}
51
+ F -->|Yes| G[https://vercel-domain]
52
+ F -->|No| H[getPlatformProductionUrl via NEXT_PUBLIC_APP_TYPE]
53
+ ```
37
54
 
38
- | Variable | Platform | Default |
39
- |----------|----------|---------|
40
- | `NEXT_PUBLIC_FLAMINGO_URL` | `flamingo`, `universal` | `https://www.flamingo.run` |
41
- | `NEXT_PUBLIC_OPENMSP_URL` | `openmsp` | `https://www.openmsp.ai` |
42
- | `NEXT_PUBLIC_OPENFRAME_URL` | `openframe` | `https://openframe.ai` |
43
- | `NEXT_PUBLIC_MARKETING_HUB_URL` | `marketing-hub` | `https://marketing-hub.flamingo.so` |
44
- | `NEXT_PUBLIC_DEV_URL` | all (dev only) | `http://localhost:3000` |
55
+ > Platform canonical URLs and their `NEXT_PUBLIC_*_URL` environment overrides are defined exclusively in [`src/platform-domains.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/platform-domains.ts).