@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,16 +1,14 @@
1
- <!-- source-hash: 5421df27f5f23a658e7a9769d35c1b32 -->
2
- Brief description of the file's purpose in 1-2 sentences.
3
-
4
- Defines the shared TypeScript wire types for the onboarding guide feature, covering the full row shape returned by `/api/onboarding-guides` and the chat onboarding-guide card. These types are intentionally client-safe — DAL mutations stay hub-side.
1
+ <!-- source-hash: 7b39d1e6bf453026c3f2a4c5ea757aff -->
2
+ Wire-shape type definitions for the chat onboarding-guide card and `/api/onboarding-guides` API responses, including entity structure, filter parameters, and list/section summary response shapes.
5
3
 
6
4
  ## Key Components
7
5
 
8
- | Export | Type | Description |
9
- |--------|------|-------------|
10
- | `OnboardingGuide` | `interface` | Full row shape: identity, ordering, body content, video pipeline, images, SEO, workflow, and audit fields |
11
- | `OnboardingGuideFilters` | `interface` | Query parameters for list endpoints (`status`, `search`, `section`, `platform`, pagination, `ids`) |
12
- | `OnboardingGuideListResponse` | `interface` | Paginated list response wrapping `OnboardingGuide[]` with a total `count` |
13
- | `OnboardingGuideSectionSummary` | `interface` | Lightweight section rollup: name, ordering, and guide count |
6
+ | Export | Kind | Description |
7
+ |---|---|---|
8
+ | `OnboardingGuide` | `interface` | Full entity row shape with content, video pipeline, SEO, workflow, and audit fields |
9
+ | `OnboardingGuideFilters` | `interface` | Query filter parameters for listing/searching guides |
10
+ | `OnboardingGuideListResponse` | `interface` | Paginated list response wrapping `OnboardingGuide[]` with a total count |
11
+ | `OnboardingGuideSectionSummary` | `interface` | Aggregated section metadata — section name, order, and guide count |
14
12
 
15
13
  ## Usage Example
16
14
 
@@ -19,32 +17,35 @@ import type {
19
17
  OnboardingGuide,
20
18
  OnboardingGuideFilters,
21
19
  OnboardingGuideListResponse,
20
+ OnboardingGuideSectionSummary,
22
21
  } from './onboarding-guide';
23
22
 
24
- // Fetch guides for a specific platform section
25
- async function fetchGuides(
26
- filters: OnboardingGuideFilters
27
- ): Promise<OnboardingGuideListResponse> {
28
- const params = new URLSearchParams({
29
- ...(filters.status && { status: filters.status }),
30
- ...(filters.platform && { platform: filters.platform }),
31
- ...(filters.section && { section: filters.section }),
32
- limit: String(filters.limit ?? 20),
33
- offset: String(filters.offset ?? 0),
34
- });
35
-
36
- const res = await fetch(`/api/onboarding-guides?${params}`);
37
- return res.json() as Promise<OnboardingGuideListResponse>;
38
- }
39
-
40
- // Resolve video source (Mux/MP4 preferred, YouTube as fallback)
41
- function resolveVideoUrl(guide: OnboardingGuide): string | null {
42
- return guide.main_video_url ?? guide.youtube_url ?? null;
43
- }
23
+ // Fetch guides with filters
24
+ const filters: OnboardingGuideFilters = {
25
+ status: 'published',
26
+ section: 'getting-started',
27
+ platform: 'openframe',
28
+ limit: 10,
29
+ offset: 0,
30
+ };
31
+
32
+ const response: OnboardingGuideListResponse = await fetch(
33
+ `/api/onboarding-guides?${new URLSearchParams(filters as Record<string, string>)}`
34
+ ).then((r) => r.json());
35
+
36
+ // Access guide fields
37
+ const guide: OnboardingGuide = response.data[0];
38
+ const videoUrl = guide.main_video_url ?? guide.youtube_url;
39
+ const platforms = guide.onboarding_guide_platforms?.filter((p) => p.is_featured);
40
+
41
+ // Section summary
42
+ const summary: OnboardingGuideSectionSummary = {
43
+ section: guide.section,
44
+ section_order: guide.section_order,
45
+ count: response.count,
46
+ };
44
47
  ```
45
48
 
46
- ## Notes
49
+ > **Note:** Server-side DAL methods (`createOnboardingGuide`, `updateOnboardingGuide`, `resolvePublicPlatformScope`) remain hub-side. Only the row type and filter/response shapes are exported from this module.
47
50
 
48
- - **Video pipeline**: `main_video_url` (Mux/MP4) and `youtube_url` are independent columns — consumers should use whichever is populated, matching the `<VideoSourceSelector>` admin toggle.
49
- - **Multi-platform**: `onboarding_guide_platforms` is a junction array; a single guide can be featured across multiple platforms with independent `featured_order` values.
50
- - **Ordering**: Use `section_order` + `step_order` together for deterministic sort within a section.
51
+ **Source:** [`onboarding-guide.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/onboarding-guide.ts)
@@ -1,57 +1,69 @@
1
- <!-- source-hash: a31da27a1da7444bbcbd4a8716703941 -->
2
- Defines the Unified Program System's TypeScript type hierarchy, providing base interfaces, database row types, program-specific extensions, configuration objects, and pure transform utilities for events, podcasts, and webinars across a single set of generic components.
1
+ <!-- source-hash: 10cd7a28cb940588c11a2ef95de5ce12 -->
2
+ Defines the core TypeScript types and interfaces for the Unified Program System, which provides a single generic abstraction layer for handling events, podcasts, and webinars across public and admin surfaces.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Kind | Description |
7
- |--------|------|-------------|
8
- | `ProgramHost` | Interface | Host/speaker info (name, avatar, role, etc.) |
9
- | `LumaEventRow` / `PodcastEpisodeRow` / `WebinarRow` | Interfaces | Raw DB row shapes for each program source table |
10
- | `BaseProgramItem` | Interface | Shared contract all program items must satisfy |
11
- | `EventItem` / `PodcastItem` / `WebinarItem` | Interfaces | Extended shapes with program-specific fields |
12
- | `ProgramType` | Type | `'event' \| 'podcast' \| 'webinar'` discriminant |
13
- | `ProgramConfig<T>` | Interface | Configuration object that drives generic component behavior (labels, routing, icons, sort order) |
14
- | `ProgramLabels` | Interface | Display strings (singular, plural, archive, empty, etc.) |
15
- | `ProgramListResponse<T>` / `ProgramItemResponse<T>` | Interfaces | Generic API response wrappers |
16
- | `ProgramFilter` / `AdminProgramFilter` | Interfaces | Query/filter option shapes |
17
- | `transformEventToProgram` | Function | Maps `LumaEventRow` `EventItem` |
18
- | `transformPodcastToProgram` | Function | Maps `PodcastEpisodeRow` `PodcastItem` |
19
- | `transformWebinarToProgram` | Function | Maps `WebinarRow` `WebinarItem` |
6
+ ### Host & Author Types
7
+ - **`ProgramHost`** — Host/speaker info (name, avatar, role) sourced from provider sync (Luma, Podbean, Livestorm)
8
+ - **`ProgramAuthorRef`** Client-safe author subset from `profiles` FK join; excludes email for public payloads
9
+ - **`programItemToStripProfile()`** Resolves a `VideoBiteStripProfile` from an item's author or first host; routes through `toStripProfile` as SSoT
10
+
11
+ ### Database Row Types
12
+ - **`LumaEventRow`** Raw row from `luma_events`
13
+ - **`PodcastEpisodeRow`** Raw row from `podcast_episodes` (includes video/audio override fields)
14
+ - **`WebinarRow`** Raw row from `webinars` (includes Livestorm recording and override fields)
15
+
16
+ ### Program Item Interfaces
17
+ - **`BaseProgramItem`** Common shape all program items implement (`id`, `title`, `cover_url`, `date`, `hosts`, etc.)
18
+ - **`EventItem`** Extends base with location, geo, and Luma-specific fields
19
+ - **`PodcastItem`** Extends base with audio/video URLs, AI processing, and SEO fields
20
+ - **`WebinarItem`** — Extends base with Livestorm recording, AI processing, and SEO fields
21
+
22
+ ### Configuration Types
23
+ - **`ProgramType`** — `'event' | 'podcast' | 'webinar'`
24
+ - **`ProgramLabels`** — Display strings (singular, plural, section headers, empty states)
25
+ - **`ProgramConfig<T>`** — Core configuration object driving generic component behavior (table name, API endpoint, routing, icons, sort order)
26
+
27
+ ### Response Types
28
+ - **`ProgramListResponse<T>`** — Paginated list result
29
+ - **`ProgramItemResponse<T>`** — Single item with optional media
30
+ - **`ProgramMedia`** — Associated media records (image/video/audio)
20
31
 
21
32
  ## Usage Example
22
33
 
23
34
  ```typescript
24
35
  import type {
25
36
  ProgramConfig,
26
- EventItem,
37
+ PodcastItem,
27
38
  ProgramLabels,
28
39
  } from './program-types';
29
- import { transformEventToProgram } from './program-types';
30
- import { CalendarDays } from 'lucide-react';
31
-
32
- // Define a typed config for events
33
- const eventConfig: ProgramConfig<EventItem> = {
34
- type: 'event',
35
- table: 'luma_events',
36
- apiEndpoint: '/api/events',
37
- dateField: 'start_at',
38
- detailRoute: '/events',
39
- externalLinkLabel: 'View on Luma',
40
- icon: <CalendarDays />,
41
- sortOrder: 'asc',
42
- labels: {
43
- singular: 'Event',
44
- plural: 'Events',
45
- upcoming: 'Next Event',
46
- upcomingSection: 'Upcoming Events',
47
- archive: 'Past Events',
48
- empty: 'No events yet',
49
- },
40
+ import { MicIcon } from 'lucide-react';
41
+
42
+ const podcastLabels: ProgramLabels = {
43
+ singular: 'Episode',
44
+ plural: 'Episodes',
45
+ upcoming: 'Latest Episode',
46
+ upcomingSection: 'Latest Episodes',
47
+ archive: 'All Episodes',
48
+ empty: 'No episodes yet',
50
49
  };
51
50
 
52
- // Transform a raw DB row into a typed EventItem
53
- const row = await db.from('luma_events').select('*').single();
54
- const eventItem: EventItem = transformEventToProgram(row);
55
- ```
51
+ const podcastConfig: ProgramConfig<PodcastItem> = {
52
+ type: 'podcast',
53
+ labels: podcastLabels,
54
+ dateField: 'published_at',
55
+ table: 'podcast_episodes',
56
+ apiEndpoint: '/api/podcasts',
57
+ icon: <MicIcon />,
58
+ externalLinkLabel: 'Listen on Podbean',
59
+ detailRoute: '/podcasts',
60
+ sortOrder: 'desc',
61
+ };
56
62
 
57
- > `BaseProgramItem` is the generic constraint used throughout — any new program type only needs to extend it and supply a matching `ProgramConfig` to plug into all shared components automatically.
63
+ // Resolve a strip profile for video-bites overlay
64
+ const profile = programItemToStripProfile({
65
+ author: { full_name: 'Jane Doe', avatar_url: '/jane.png' },
66
+ hosts: [{ name: 'Fallback Host', role: 'team_member' }],
67
+ });
68
+ // → resolves from author first; falls back to first host
69
+ ```
@@ -1,34 +1,32 @@
1
- <!-- source-hash: cef5cf927873caff6558f4d9a0c3a3ed -->
2
- Defines and exports a single shared Tailwind CSS class string for chip-density action buttons used across the device density UI components.
1
+ <!-- source-hash: c8729430311476480b1576febdfc94b2 -->
2
+ Defines and exports a single shared Tailwind CSS class string for chip-density action buttons used across the empty-state chip's action row and the `<DisplayChipAction>` popover.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`CHIP_ACTION_BUTTON_CLASS`** — A constant string of Tailwind utility classes providing consistent styling for compact action buttons (e.g., Recent, Search, Find, Display, Submit, Cancel) rendered inside chip card tertiary action rows and the `<DisplayChipAction>` popover.
6
+ - **`CHIP_ACTION_BUTTON_CLASS`** — A frozen CSS utility string combining text, background, border, spacing, and focus-ring styles for sub-`small` density action buttons (Recent / Search / Find / Display / Submit / Cancel).
7
7
 
8
8
  ## Usage Example
9
9
 
10
10
  ```typescript
11
11
  import { CHIP_ACTION_BUTTON_CLASS } from './chip-action-class'
12
12
 
13
- // Apply to a button element
14
- <button className={CHIP_ACTION_BUTTON_CLASS}>
15
- Recent
16
- </button>
13
+ // Apply to a native button element
14
+ <button class={CHIP_ACTION_BUTTON_CLASS}>Recent</button>
17
15
 
18
- // Extend with additional classes when needed
19
- <button className={`${CHIP_ACTION_BUTTON_CLASS} my-extra-class`}>
20
- Search
21
- </button>
16
+ // Or spread into a component's class prop
17
+ <ActionButton class={CHIP_ACTION_BUTTON_CLASS}>Search</ActionButton>
22
18
  ```
23
19
 
24
20
  ## Design Notes
25
21
 
26
- | Property | Value | Intent |
27
- |----------|-------|--------|
28
- | Font size | `text-h6` | Sub-UI-Kit density, fits chip action rows |
29
- | Padding | `px-2 py-1` | Tight, below standard `Button size="small"` |
30
- | Colors | `ods-text-secondary` / hover `ods-text-primary` | ODS token-based theming |
31
- | Background | `bg-transparent` / hover `ods-card-hover` | Subtle interactive feedback |
32
- | Focus ring | `focus-visible:ring-ods-focus` | Accessible keyboard navigation |
22
+ | Property | Value / Intent |
23
+ |---|---|
24
+ | Font size | `text-h6` (~11px) — below UI-Kit `Button size="small"` |
25
+ | Padding | `px-2 py-1` chip-density, not standard button sizing |
26
+ | Colors | ODS semantic tokens (`ods-text-*`, `ods-card-hover`, `ods-border`) |
27
+ | Focus ring | `focus-visible:ring-2` with `ods-focus` token keyboard accessible |
28
+ | Background | `bg-transparent` base, `ods-card-hover` on hover |
33
29
 
34
- Centralizing this constant prevents Tailwind class chain drift across the empty-state chip and `<DisplayChipAction>` popover, ensuring byte-equivalent styling at both call sites.
30
+ The constant prevents Tailwind class strings from drifting independently across the two call sites. Any styling change is made once here and propagates uniformly.
31
+
32
+ **Source:** [`chip-action-class.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/chip-action-class.ts)
@@ -1,46 +1,46 @@
1
- <!-- source-hash: 53f316e6709d2c8161bb544234df2d3a -->
2
- Centralises Tailwind/ODS className generation for the chat-adjacent UI chip family, ensuring consistent styling across citation chips, inline entity-card pills, and search-result dropdown rows.
1
+ <!-- source-hash: d45a902b18f3712e1b2aeac789ac6496 -->
2
+ Shared className generator for the chat-adjacent UI family, producing consistent Tailwind/ODS class strings for source chips, inline entity-card pills, and search-result dropdown rows.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `ChipClassOptions` (interface)
7
7
 
8
8
  | Property | Type | Description |
9
- |----------|------|-------------|
10
- | `tone` | `'primary' \| 'secondary'` | Controls resting text color — `primary` matches body text; `secondary` is muted for metadata |
11
- | `density` | `'chip' \| 'list-row' \| 'card-row'` | Controls size/padding variant. Defaults to `'chip'` |
12
- | `extra` | `string` | Optional additional classes appended verbatim (e.g. `cursor-pointer`) |
9
+ |---|---|---|
10
+ | `tone` | `'primary' \| 'secondary'` | Resting text color — `primary` reads as content, `secondary` as metadata |
11
+ | `density` | `'chip' \| 'list-row' \| 'card-row'` | Size/padding variant. Defaults to `'chip'` |
12
+ | `extra` | `string` | Extra classes appended verbatim (e.g. `cursor-pointer`) |
13
13
 
14
- ### `chatChipClass(options)` (function)
14
+ ### `chatChipClass(options: ChipClassOptions): string`
15
15
 
16
- Accepts a `ChipClassOptions` object and returns a composed Tailwind class string. All three density variants share the same border, hover transition, and accent treatment so they read as one UI family regardless of size.
16
+ Returns a composed Tailwind class string. All three density variants share border, hover transition, and accent treatment so they read as the same ODS family only the size and frame differ.
17
17
 
18
- | Density | Sizing | Frame |
19
- |---------|--------|-------|
20
- | `chip` | `px-2 py-0.5 text-h6` | bordered card bg |
21
- | `list-row` | `px-3 py-2 text-sm` | bordered card bg |
22
- | `card-row` | `px-2 py-1 text-h6` | no border/bg |
18
+ | `density` | Sizing | Frame |
19
+ |---|---|---|
20
+ | `'chip'` | `px-2 py-0.5 text-h6` | Border + card bg + rounded |
21
+ | `'list-row'` | `px-3 py-2 text-sm` | Border + card bg + rounded |
22
+ | `'card-row'` | `px-2 py-1 text-h6` | No border, no bg (sits under a card frame) |
23
23
 
24
24
  ## Usage Example
25
25
 
26
26
  ```typescript
27
27
  import { chatChipClass } from './chip-styles'
28
28
 
29
- // Citation chip (default density)
29
+ // Citation chip below an assistant turn
30
30
  const citationClass = chatChipClass({ tone: 'secondary' })
31
31
 
32
- // Search dropdown row
33
- const dropdownRowClass = chatChipClass({
32
+ // Search-bar dropdown row with click affordance
33
+ const searchRowClass = chatChipClass({
34
34
  tone: 'primary',
35
35
  density: 'list-row',
36
36
  extra: 'cursor-pointer w-full',
37
37
  })
38
38
 
39
- // Tracking strip under a card frame
39
+ // Tracking strip inside a card frame (no border/bg)
40
40
  const cardRowClass = chatChipClass({
41
41
  tone: 'secondary',
42
42
  density: 'card-row',
43
43
  })
44
44
  ```
45
45
 
46
- > **Design note:** A single ODS token change here propagates to all three surfaces simultaneously — citation chips, inline entity markers, and search results will always render as the same visual family.
46
+ **Source:** [`chip-styles.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/chip-styles.ts)
@@ -1,51 +1,62 @@
1
- <!-- source-hash: 637d22f77dbdb02b04013632095ddfdb -->
2
- Utilities for parsing raw NATS message chunks into typed, structured action objects consumed by the AI message pipeline.
1
+ <!-- source-hash: c8c1cef3b3966f8791e7003c4f74429f -->
2
+ Utilities for parsing raw NATS message chunks into typed, structured action objects consumed by the OpenFrame chat pipeline.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `parseChunkToAction(chunk)`
7
- Core export that maps a raw `ChunkData` object to a `ParsedChunkAction` union type. Uses a `switch` on `MESSAGE_TYPE` to handle all supported message variants:
6
+ ### `parseChunkToAction(chunk: unknown): ParsedChunkAction | null`
7
+ The primary export. Accepts an untyped NATS chunk, inspects its `type` field against `MESSAGE_TYPE` constants, and returns a discriminated `ParsedChunkAction` union or `null` for unrecognized types. Handles the full message lifecycle including:
8
8
 
9
- | Action | Description |
9
+ - **Lifecycle signals:** `message_start`, `message_end`, `dialog_closed`
10
+ - **Content:** `text`, `thinking`, `system`, `direct_message`
11
+ - **Tool execution:** `tool_execution` (both `EXECUTING_TOOL` and `EXECUTED_TOOL` states)
12
+ - **Approval flow:** `approval_request`, `approval_batch`, `approval_result`
13
+ - **Metadata & telemetry:** `metadata`, `token_usage`, `context_compaction_start/end`
14
+ - **Error handling:** `error`
15
+
16
+ ### `normalizeToolCalls(raw: unknown): PendingToolCallData[]` *(internal)*
17
+ Safely coerces an untyped array into `PendingToolCallData[]`, filtering non-objects and providing safe defaults for all fields.
18
+
19
+ ### Predicate helpers
20
+ Lightweight type guards for fast chunk classification without full parsing:
21
+
22
+ | Function | Returns `true` when |
10
23
  |---|---|
11
- | `message_start` / `message_end` | Lifecycle control signals |
12
- | `metadata` | AI model/provider info |
13
- | `text` / `thinking` / `system` | Content streaming |
14
- | `tool_execution` | Tool start/completion events |
15
- | `approval_request` / `approval_batch` | Single or multi-tool approval flows |
16
- | `approval_result` | Approval outcome |
17
- | `token_usage` | Token consumption stats |
18
- | `context_compaction_start/end` | Context window management |
19
- | `direct_message` | Owner-attributed messages |
20
- | `dialog_closed` | Session termination |
21
-
22
- Returns `null` for unknown or malformed chunks.
23
-
24
- ### `normalizeToolCalls(raw)` *(internal)*
25
- Coerces an unknown array into `PendingToolCallData[]`, safely defaulting missing fields and enforcing correct types.
26
-
27
- ### Guard Helpers
28
- Lightweight boolean checks for common chunk classifications:
29
-
30
- - `isControlChunk(chunk)` — start/end signals
31
- - `isErrorChunk(chunk)` — error type
32
- - `isMetadataChunk(chunk)` — AI metadata
33
- - `extractTextFromChunk(chunk)` — returns text content or `null`
24
+ | `isControlChunk` | `MESSAGE_START` or `MESSAGE_END` |
25
+ | `isErrorChunk` | `ERROR` type |
26
+ | `isMetadataChunk` | `AI_METADATA` type |
27
+ | `extractTextFromChunk` | `TEXT` type returns the string or `null` |
34
28
 
35
29
  ## Usage Example
36
30
 
37
31
  ```typescript
38
- import { parseChunkToAction, isErrorChunk } from './chunk-parser'
32
+ import {
33
+ parseChunkToAction,
34
+ isControlChunk,
35
+ isErrorChunk,
36
+ } from './chunk-parser'
39
37
 
40
- // Incoming NATS message payload
41
- const raw = { type: 'TEXT', text: 'Hello from Mingo AI' }
38
+ // Parse an incoming NATS chunk
39
+ const action = parseChunkToAction(rawChunk)
42
40
 
43
- if (isErrorChunk(raw)) {
44
- console.error('Stream error received')
41
+ if (action?.action === 'text') {
42
+ appendToTranscript(action.text)
43
+ } else if (action?.action === 'approval_batch') {
44
+ promptUserApproval(action.toolCalls)
45
45
  }
46
46
 
47
- const action = parseChunkToAction(raw)
48
- if (action?.action === 'text') {
49
- renderText(action.text) // "Hello from Mingo AI"
47
+ // Fast-path guards before full parse
48
+ if (isErrorChunk(rawChunk)) {
49
+ handleError()
50
50
  }
51
- ```
51
+ if (isControlChunk(rawChunk)) {
52
+ resetStreamState()
53
+ }
54
+ ```
55
+
56
+ ## Notes
57
+
58
+ - All field access is defensive — missing or wrong-typed properties fall back to safe defaults rather than throwing.
59
+ - `approval_result` accepts both `resolvedByName` and `displayName` so realtime NATS chunks and GraphQL history replays produce identical output shapes.
60
+ - `contextItems` on `message_request` back-fills `label` from `id` to satisfy the required `ChatContextItem` contract when no label is present on the wire.
61
+
62
+ **Source:** [`https://github.com/flamingo-stack/openframe-oss-lib/blob/main/chunk-parser.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/chunk-parser.ts)
@@ -1,30 +1,41 @@
1
- <!-- source-hash: 727163d193b2d1e3e47ea92637add9ea -->
2
- Single source of truth for compact card Tailwind class constants and URL safety utilities used across chat-inline `size='sm'` card frames in the OpenFrame chat shell.
1
+ <!-- source-hash: ad42c4031c2afe62a64d7457c6018d7e -->
2
+ Single source of truth for compact card Tailwind class constants and URL safety validation used across chat-inline `size='sm'` card frames.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### Class Constants
6
+ ### Constants
7
7
 
8
8
  | Export | Purpose |
9
- |--------|---------|
10
- | `COMPACT_CARD_OUTER` | Interactive anchor wrap with hover/transition styles |
11
- | `COMPACT_CARD_OUTER_STATIC` | Non-interactive span wrap (no hover, `cursor-default`) |
12
- | `COMPACT_CARD_SKELETON_OUTER` | Animated pulse skeleton frame |
9
+ |---|---|
10
+ | `COMPACT_CARD_OUTER` | Interactive anchor frame with hover/transition styles |
11
+ | `COMPACT_CARD_OUTER_STATIC` | Non-interactive span frame (`cursor-default`, no hover) |
12
+ | `COMPACT_CARD_SKELETON_OUTER` | Skeleton frame with `animate-pulse` |
13
13
  | `COMPACT_CARD_IMAGE_SLOT` | 56×56 cover image container |
14
- | `COMPACT_CARD_ICON_SLOT` | 56×56 fallback icon container |
15
- | `COMPACT_CARD_SKELETON_IMAGE_SLOT` | 56×56 skeleton image placeholder |
16
- | `COMPACT_CARD_TEXT_COL` | Flex column wrapper for text content |
17
- | `COMPACT_CARD_TITLE_ROW` | Fixed 20px height title row |
18
- | `COMPACT_CARD_META_ROW_BOX` | Fixed 16px height subtitle row |
19
- | `COMPACT_CARD_TITLE` | Bold 14px/20px primary text |
20
- | `COMPACT_CARD_SUBTITLE` | 11px/16px secondary text |
21
- | `COMPACT_CARD_SUMMARY` | 11px/16px secondary text at 80% opacity |
14
+ | `COMPACT_CARD_SKELETON_IMAGE_SLOT` | 56×56 placeholder for skeleton state |
15
+ | `COMPACT_CARD_ICON_SLOT` | 56×56 icon container (cards without a cover image) |
16
+ | `COMPACT_CARD_TEXT_COL` | Flex column wrapper for title/subtitle/meta rows |
17
+ | `COMPACT_CARD_TITLE_ROW` | Fixed 20px title row container |
18
+ | `COMPACT_CARD_META_ROW_BOX` | Fixed 16px subtitle/summary row container |
19
+ | `COMPACT_CARD_TITLE` | Bold 14px/20px leading title text |
20
+ | `COMPACT_CARD_SUBTITLE` | 11px secondary text |
21
+ | `COMPACT_CARD_SUMMARY` | 11px secondary text at 80% opacity |
22
22
  | `COMPACT_CARD_META_ROW` | Multi-part 11px metadata row |
23
- | `COMPACT_CARD_ROW_FILLER` | Non-breaking space to preserve row height |
23
+ | `COMPACT_CARD_ROW_FILLER` | Non-breaking space to preserve 16px row height |
24
24
 
25
25
  ### Functions
26
26
 
27
- **`safeHref(url)`** — Validates a URL before use in an `<a href>`. Allows `http:`, `https:`, `mailto:`, and same-origin paths (`/path`). Strips control/zero-width characters. Returns the original string or `null`.
27
+ **`safeHref(url)`** — Validates a URL before use in an `<a href>`. Returns the original string only if it passes all safety checks, otherwise `null`.
28
+
29
+ Allowed:
30
+ - `http:`, `https:`, `mailto:` schemes
31
+ - Same-origin paths starting with `/` (not `//`)
32
+ - Hash fragments starting with `#`
33
+
34
+ Rejected:
35
+ - Control/zero-width/line-separator characters
36
+ - Unknown schemes (`javascript:`, `data:`, etc.)
37
+ - Bare scheme-only strings
38
+ - `http`/`https` URLs with no hostname
28
39
 
29
40
  ## Usage Example
30
41
 
@@ -40,23 +51,10 @@ import {
40
51
 
41
52
  const href = safeHref(card.url)
42
53
 
43
- // Interactive card (valid href)
44
- if (href) {
45
- return (
46
- <a href={href} className={COMPACT_CARD_OUTER}>
47
- <div className={COMPACT_CARD_IMAGE_SLOT}>...</div>
48
- <span className={COMPACT_CARD_TITLE}>{card.title}</span>
49
- <span className={COMPACT_CARD_SUBTITLE}>{card.subtitle}</span>
50
- </a>
51
- )
52
- }
53
-
54
- // Non-interactive fallback
55
- return (
56
- <span className={COMPACT_CARD_OUTER_STATIC}>
57
- ...
58
- </span>
59
- )
54
+ // Renders an interactive anchor if href is safe, otherwise a static span
55
+ const outerClass = href ? COMPACT_CARD_OUTER : COMPACT_CARD_OUTER_STATIC
56
+ const Wrapper = href ? 'a' : 'span'
57
+ const wrapperProps = href ? { href } : {}
60
58
  ```
61
59
 
62
- > Card-specific variations (play overlays, status badges, pill counters) are added inside each card component. The outer frame constants remain uniform across all compact card types.
60
+ > **Card-specific variation** (play overlays, pill badges, status indicators) lives inside each individual card component. These constants govern only the shared outer frame uniform across all compact card types.
@@ -0,0 +1,49 @@
1
+ <!-- source-hash: 2635bcbc16b7313a29642d0f68f41942 -->
2
+ Unified navigation execution primitive that centralizes all navigation actions — new-tab vs. same-tab, internal vs. external, embed vs. host, and runtime/router/window fallback chain — into a single module consumed by every interactive surface in the library.
3
+
4
+ ## Key Components
5
+
6
+ ### Interfaces
7
+
8
+ - **`NavClickEvent`** — Minimal structural mouse-event interface (subset of `React.MouseEvent`) so chip buttons and tiles can call the handler without casting.
9
+ - **`ExecuteNavigationClickArgs`** — Arguments for the click-handler form: event, runtime, `href`, optional `path`, `targetPlatform`, and `fallbackNavigate`.
10
+ - **`ExecuteNavigationImperativeArgs`** — Arguments for the imperative form: same as above minus the event.
11
+
12
+ ### Functions
13
+
14
+ - **`runNavigation`** *(internal)* — Core decision engine. Computes new-tab vs. same-tab, routes same-page hash anchors through `navigateSamePageHash`, delegates to `runtime.navigation.navigate`, and falls back to `fallbackNavigate` or `window.location.assign`.
15
+ - **`executeNavigation`** — Click-handler form. Skips modifier/non-primary clicks (returning `false` so the browser handles them natively), calls `preventDefault`, then delegates to `runNavigation`. Returns `true` when it took action.
16
+ - **`executeNavigationImperative`** — Imperative form for buttons, list rows, and post-action redirects. Same decision tree, no event/modifier logic.
17
+
18
+ ## Usage Example
19
+
20
+ ```typescript
21
+ // Click-handler form (anchor / chip)
22
+ import { executeNavigation } from './execute-navigation'
23
+
24
+ function ChatCard({ href, runtime }) {
25
+ return (
26
+ <a
27
+ href={href}
28
+ onClick={(event) =>
29
+ executeNavigation({ event, runtime, href, targetPlatform: 'web' })
30
+ }
31
+ >
32
+ Open
33
+ </a>
34
+ )
35
+ }
36
+
37
+ // Imperative form (button / post-submit redirect)
38
+ import { executeNavigationImperative } from './execute-navigation'
39
+
40
+ function handleFormSuccess(runtime, href) {
41
+ executeNavigationImperative({
42
+ runtime,
43
+ href,
44
+ fallbackNavigate: router.push, // useRouter().push
45
+ })
46
+ }
47
+ ```
48
+
49
+ > **No runtime?** Pass `null` — the module skips the new-tab/embed decision and falls back to `window.location.assign` (or your `fallbackNavigate`). Safe for surfaces like announcement bars that have no `ChatRuntimeContext`.
@@ -1,15 +1,16 @@
1
- <!-- source-hash: 05b4580f6cd1fa50abcf196198e4487a -->
2
- Extracts incomplete message state from the last historical assistant message to enable resumption of in-progress AI responses across realtime connection restarts.
1
+ <!-- source-hash: d829899f7bd3695292f7399c706c0b38 -->
2
+ Extracts incomplete message state from the last historical assistant message, enabling the realtime chunk processor to resume building messages across reconnected sessions.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `extractIncompleteMessageState(lastMessage)`
7
7
 
8
- **Parameters:** `lastMessage: ProcessedMessage | undefined`
8
+ Inspects a `ProcessedMessage` and returns resumable state if any in-progress segments are found.
9
9
 
10
- **Returns:** `{ existingSegments?, pendingApprovals?, executingTools? } | undefined`
10
+ **Parameters:**
11
+ - `lastMessage` — A `ProcessedMessage` or `undefined`
11
12
 
12
- Returns `undefined` if the message is complete or not an assistant message with structured segments. Otherwise returns state needed to reinitialize the realtime chunk processor.
13
+ **Returns:** An object with optional `existingSegments`, `pendingApprovals`, and `executingTools`, or `undefined` if the message is complete or ineligible.
13
14
 
14
15
  **Incomplete state detection by segment type:**
15
16
 
@@ -17,7 +18,7 @@ Returns `undefined` if the message is complete or not an assistant message with
17
18
  |---|---|
18
19
  | `tool_execution` | Status is `EXECUTING_TOOL` |
19
20
  | `approval_request` | Status is `pending` with a `requestId` |
20
- | `approval_batch` | Not `rejected` AND not all tool calls have `done` executions |
21
+ | `approval_batch` | Not `rejected` and not all tool calls have `done` executions |
21
22
  | `context_compaction` | Status is `started` |
22
23
 
23
24
  ## Usage Example
@@ -29,7 +30,7 @@ const lastMessage = conversationHistory.at(-1)
29
30
  const incompleteState = extractIncompleteMessageState(lastMessage)
30
31
 
31
32
  if (incompleteState) {
32
- realtimeProcessor.initialize({
33
+ initializeRealtimeChunkProcessor({
33
34
  existingSegments: incompleteState.existingSegments,
34
35
  pendingApprovals: incompleteState.pendingApprovals,
35
36
  executingTools: incompleteState.executingTools,
@@ -37,8 +38,4 @@ if (incompleteState) {
37
38
  }
38
39
  ```
39
40
 
40
- ## Notes
41
-
42
- - Only processes assistant messages with structured (`MessageSegment[]`) content — string content is ignored
43
- - `pendingApprovals` and `executingTools` maps are omitted from the return value when empty, reducing unnecessary initialization overhead
44
- - The `approval_batch` logic ensures post-approval `EXECUTED_TOOL` chunks can correctly merge into the batch segment via `applyExecutionToBatch`
41
+ **Source:** [`extract-incomplete-message-state.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/extract-incomplete-message-state.ts)