@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
@@ -65,7 +65,11 @@ export * from './video-ratio-tabs'
65
65
  export * from './video-bites-shared'
66
66
  export * from './video-bites-strip'
67
67
  export * from './video-bites-display'
68
+ export * from './card-hit-layer'
69
+ export * from './video-hover-preview'
68
70
  export * from './entity-video-section'
71
+ export * from './floating-walkthrough-video'
72
+ export * from './use-walkthrough-video'
69
73
  export * from './use-video-warmup'
70
74
  export * from './captions-url'
71
75
  export * from './video-source-selector'
@@ -0,0 +1,45 @@
1
+ <!-- source-hash: df0c665817142753be2e5e9762b91c23 -->
2
+ A React notification tile component for displaying and acting on approval requests, supporting optimistic UI updates, collapsible command previews, and auto-dismiss behavior.
3
+
4
+ ## Key Components
5
+
6
+ ### `ApprovalRequestNotificationTileProps`
7
+ | Prop | Type | Description |
8
+ |---|---|---|
9
+ | `notification` | `Notification` | Source notification data |
10
+ | `onApprove` | `(id: string) => void \| Promise<void>` | Callback fired on approval |
11
+ | `onReject` | `(id: string) => void \| Promise<void>` | Callback fired on rejection |
12
+ | `onComplete` | `(id: string) => void` | Called after successful resolution |
13
+ | `onSettle` | `(id: string) => void` | Optional settle lifecycle hook |
14
+ | `liveDurationMs` | `number` | Auto-dismiss duration for live tiles |
15
+ | `defaultExpanded` | `boolean` | Whether the command section starts open |
16
+
17
+ ### Internal State
18
+ - **`localStatus`** — Optimistic `ChatApprovalStatus` set immediately on click; rolls back on request failure; defers to resolved backend status once available.
19
+ - **`pinned`** — Prevents auto-dismiss when the user expands the command section mid-read.
20
+ - **`processing`** — Disables action buttons and pauses the tile timer during async resolution.
21
+
22
+ ### `resolve()`
23
+ Internal async handler that applies optimistic status, calls the appropriate action callback, rolls back on error, and calls `onComplete` only after confirmed server-side success.
24
+
25
+ ## Usage Example
26
+
27
+ ```typescript
28
+ import { ApprovalRequestNotificationTile } from './approval-request-notification-tile'
29
+
30
+ <ApprovalRequestNotificationTile
31
+ notification={notification}
32
+ liveDurationMs={8000}
33
+ defaultExpanded={false}
34
+ onApprove={async (id) => {
35
+ await api.approvals.approve(id)
36
+ }}
37
+ onReject={async (id) => {
38
+ await api.approvals.reject(id)
39
+ }}
40
+ onComplete={(id) => dismissNotification(id)}
41
+ onSettle={(id) => markSeen(id)}
42
+ />
43
+ ```
44
+
45
+ **Source:** [`approval-request-notification-tile.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/approval-request-notification-tile.tsx)
@@ -1,18 +1,28 @@
1
- <!-- source-hash: ec818e1d65048d1eb76277abcc10c0b6 -->
2
- Public API barrel file for the notifications module, re-exporting all components, hooks, context providers, and TypeScript types from their respective source files.
1
+ <!-- source-hash: ea69954a9208818f5e9fec008eb82366 -->
2
+ Public API barrel file for the notifications module, re-exporting all components, hooks, utilities, and TypeScript types from their respective internal modules.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Source |
7
- |--------|------|--------|
8
- | `NotificationsProvider` | Component | `notifications-context` |
9
- | `useNotifications` | Hook | `notifications-context` |
10
- | `useOptionalNotifications` | Hook | `notifications-context` |
11
- | `NotificationDrawer` | Component | `notification-drawer` |
12
- | `NotificationTile` | Component | `notification-tile` |
13
- | `Notification` | Type | `types` |
14
- | `NotificationVariant` | Type | `types` |
15
- | `AddNotificationInput` | Type | `types` |
6
+ **Context & Hooks**
7
+ - `NotificationsProvider` — React context provider for managing notification state
8
+ - `useNotifications` Hook to access notifications context (throws if outside provider)
9
+ - `useOptionalNotifications` Hook to access notifications context (returns `null` if outside provider)
10
+
11
+ **UI Components**
12
+ - `NotificationDrawer` Slide-out drawer listing all notifications
13
+ - `NotificationTile` Individual notification row/card component
14
+ - `NotificationPopups` Floating toast-style popup notifications
15
+ - `ApprovalRequestNotificationTile` Specialized tile for approval request notifications
16
+
17
+ **Utilities**
18
+ - `approvalMetaToBatchData` — Transforms approval metadata into batch-compatible format
19
+ - `getApprovalMeta` — Extracts approval metadata from a notification
20
+ - `isApprovalNotification` — Type guard for approval notifications
21
+ - `resolutionToStatus` — Maps an approval resolution to a display status
22
+ - `ADMIN_APPROVAL_REQUEST_CONTEXT_TYPE` — Constant identifying the approval request context type
23
+
24
+ **Types**
25
+ `Notification`, `NotificationVariant`, `NotificationSeverity`, `AddNotificationInput`, `ApprovalNotificationMeta`, `ApprovalToolCallMeta`, `RenderNotificationTile`, and associated `Props` types.
16
26
 
17
27
  ## Usage Example
18
28
 
@@ -21,37 +31,31 @@ import {
21
31
  NotificationsProvider,
22
32
  useNotifications,
23
33
  NotificationDrawer,
24
- NotificationTile,
25
- } from '@/notifications'
34
+ NotificationPopups,
35
+ isApprovalNotification,
36
+ } from '@openframe-oss-lib/notifications'
37
+ import type { AddNotificationInput, NotificationSeverity } from '@openframe-oss-lib/notifications'
26
38
 
27
- import type {
28
- Notification,
29
- NotificationVariant,
30
- AddNotificationInput,
31
- } from '@/notifications'
32
-
33
- // Wrap your app with the provider
34
39
  function App() {
35
40
  return (
36
41
  <NotificationsProvider>
42
+ <NotificationPopups position="bottom-right" />
37
43
  <NotificationDrawer />
38
- <MainContent />
44
+ <MyContent />
39
45
  </NotificationsProvider>
40
46
  )
41
47
  }
42
48
 
43
- // Consume notifications in a child component
44
- function MainContent() {
49
+ function MyContent() {
45
50
  const { addNotification } = useNotifications()
46
51
 
47
- const notify = () => {
48
- const input: AddNotificationInput = {
49
- variant: 'success' as NotificationVariant,
50
- message: 'Operation completed successfully',
51
- }
52
+ const notify = (message: string, severity: NotificationSeverity) => {
53
+ const input: AddNotificationInput = { message, severity }
52
54
  addNotification(input)
53
55
  }
54
56
 
55
- return <button onClick={notify}>Notify</button>
57
+ return <button onClick={() => notify('Task complete', 'success')}>Notify</button>
56
58
  }
57
- ```
59
+ ```
60
+
61
+ **Source:** [`src/notifications/index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/notifications/index.ts)
@@ -1,34 +1,47 @@
1
- <!-- source-hash: b78c3c40a3c3824dbca516563b5aef06 -->
2
- A right-side drawer component that displays unread notifications, a "Complete All" action, a pop-up toggle, and a history navigation button consuming context from `useOptionalNotifications`.
1
+ <!-- source-hash: e58046aa012c4e92bb2fca43c4247d8a -->
2
+ A slide-over drawer component that displays unread notifications with infinite scroll, toggle controls for popup/desktop notifications, and a history navigation button. It renders either within an `AppLayout` panel or falls back to a full viewport `Drawer` depending on the host context.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `NotificationDrawer` | Component | Main drawer shell; renders only when notifications context is available |
9
- | `EmptyState` | Internal Component | Shown when there are no unread notifications |
10
- | `ShowNotificationsToggleRow` | Internal Component | Switch to enable/disable pop-up notification banners |
11
- | `NotificationsHistoryButton` | Internal Component | Outline button that navigates to notification history and closes the drawer |
12
- | `NotificationDrawerProps` | Interface | `className` and optional `liveDurationMs` for tile animations |
6
+ - **`NotificationDrawer`** Primary export. Reads state from `useOptionalNotifications()` context and renders within `AppLayoutDrawer` or fallback `Drawer` based on layout context detection.
7
+ - **`DrawerScrollList`** — Scrollable notification list with `IntersectionObserver`-based infinite scroll; renders `NotificationTile` items or custom tiles via `renderTile`.
8
+ - **`DrawerLoadingTiles`** Animated skeleton placeholders shown during paginated load.
9
+ - **`EmptyState`** Displayed when there are no unread notifications.
10
+ - **`ShowNotificationsToggleRow`** Switch to toggle in-app popup notifications.
11
+ - **`DesktopNotificationsToggleRow`** Switch to enable browser push notifications; requests permission on enable, disables itself if permission is denied, and hides on unsupported platforms (SSR, iOS Safari).
12
+ - **`NotificationsHistoryButton`** — `SplitButton` that navigates to notification history inline or opens it in a new tab.
13
13
 
14
14
  ## Usage Example
15
15
 
16
16
  ```typescript
17
+ // Wrap your app with NotificationsProvider, then render the drawer:
17
18
  import { NotificationDrawer } from './notification-drawer'
18
- import { NotificationsProvider } from './notifications-context'
19
19
 
20
- // Wrap your app (or layout) with the provider, then drop the drawer anywhere:
21
- export function AppLayout({ children }: { children: React.ReactNode }) {
20
+ function AppShell() {
22
21
  return (
23
- <NotificationsProvider
24
- notifications={notifications}
25
- onHistoryClick={() => router.push('/notifications/history')}
26
- >
27
- {children}
28
- <NotificationDrawer liveDurationMs={5000} />
22
+ <NotificationsProvider>
23
+ <AppLayout>
24
+ <MainContent />
25
+ <NotificationDrawer
26
+ liveDurationMs={5000}
27
+ loadMoreRootMargin="300px"
28
+ renderTile={(notification, handlers) => (
29
+ <CustomNotificationTile
30
+ key={notification.id}
31
+ notification={notification}
32
+ {...handlers}
33
+ />
34
+ )}
35
+ />
36
+ </AppLayout>
29
37
  </NotificationsProvider>
30
38
  )
31
39
  }
32
40
  ```
33
41
 
34
- > **Note:** `NotificationDrawer` returns `null` when rendered outside a `NotificationsProvider`. Open/close state is fully managed through the context — use the `open`/`close` methods exposed by `useOptionalNotifications` to control visibility from elsewhere in the UI.
42
+ | Prop | Type | Default | Description |
43
+ |---|---|---|---|
44
+ | `liveDurationMs` | `number` | — | Auto-dismiss duration for live tiles |
45
+ | `loadMoreRootMargin` | `string` | `"200px"` | IntersectionObserver root margin for pagination trigger |
46
+ | `renderTile` | `RenderNotificationTile` | ctx default | Custom tile renderer; falls back to `NotificationTile` |
47
+ | `className` | `string` | — | Additional classes on the drawer panel |
@@ -0,0 +1,51 @@
1
+ <!-- source-hash: c70868cc8411a9927a06dea4d9d98ea5 -->
2
+ Renders a fixed-position overlay of live notification popups, automatically filtering, limiting, and positioning toast-style alerts that have not yet been read or settled.
3
+
4
+ ## Key Components
5
+
6
+ ### Types & Interfaces
7
+
8
+ - **`NotificationPopupsPosition`** — Union type for popup placement: `'top-right'`, `'top-left'`, `'bottom-right'`, `'bottom-left'`
9
+ - **`NotificationPopupsProps`** — Component props interface
10
+
11
+ ### Props
12
+
13
+ | Prop | Type | Default | Description |
14
+ |---|---|---|---|
15
+ | `className` | `string` | — | Additional CSS classes |
16
+ | `liveDurationMs` | `number` | `4000` | How long a notification stays "live" in ms |
17
+ | `maxVisible` | `number` | `4` | Maximum simultaneous popups |
18
+ | `position` | `NotificationPopupsPosition` | `'top-right'` | Screen corner placement |
19
+ | `hideWhenDrawerOpen` | `boolean` | `true` | Hides popups when notification drawer is open |
20
+ | `renderTile` | `RenderNotificationTile` | — | Custom tile renderer (overrides context renderer) |
21
+
22
+ ### `NotificationPopups` (main export)
23
+
24
+ Consumes `useOptionalNotifications` context and renders filtered, time-bounded notifications as accessible popup tiles. Supports both custom (`renderTile`) and default (`NotificationTile`) rendering. Handles click and keyboard (`Enter`/`Space`) activation, delegating to `notification.onClick`, or opening the drawer and settling the notification.
25
+
26
+ ## Usage Example
27
+
28
+ ```typescript
29
+ import { NotificationPopups } from './notification-popups'
30
+
31
+ // Basic usage — top-right corner, 4s live window
32
+ <NotificationPopups />
33
+
34
+ // Custom position and duration
35
+ <NotificationPopups
36
+ position="bottom-left"
37
+ liveDurationMs={6000}
38
+ maxVisible={3}
39
+ hideWhenDrawerOpen={false}
40
+ />
41
+
42
+ // Custom tile renderer
43
+ <NotificationPopups
44
+ position="top-right"
45
+ renderTile={(notification, { liveDurationMs }) => (
46
+ <MyCustomTile notification={notification} duration={liveDurationMs} />
47
+ )}
48
+ />
49
+ ```
50
+
51
+ > **Note:** `NotificationPopups` returns `null` if rendered outside a `NotificationsProvider`, `showPopups` is false, or no unread/unsettled notifications exist within the live window.
@@ -1,39 +1,55 @@
1
- <!-- source-hash: bd12c42181c375131ca22d95cc9d9e24 -->
2
- A self-contained notification tile component that renders a single notification with live/settled state management, auto-dismiss timing, and a progress bar animation.
1
+ <!-- source-hash: 1ba572f673818df9756a2a78c2e0d6ad -->
2
+ A client-side React component that renders a single notification tile with live auto-dismiss countdown, severity-based styling, image fallback, and accessible dismiss/complete controls.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`NotificationTileProps`** — Interface defining the tile's configuration:
7
- - `notification` The `Notification` object to display
8
- - `liveDurationMs` — Auto-settle duration in ms (default: `4000`)
9
- - `onComplete` Callback fired when the user marks the notification as done
10
- - `onSettle` Callback fired when the notification auto-dismisses or is manually closed
6
+ ### `NotificationTileProps`
7
+ | Prop | Type | Description |
8
+ |------|------|-------------|
9
+ | `notification` | `Notification` | Core notification data (id, title, description, severity, etc.) |
10
+ | `liveDurationMs` | `number` | Auto-dismiss window in ms (default: `4000`) |
11
+ | `onComplete` | `(id: string) => void` | Called when user marks notification complete |
12
+ | `onSettle` | `(id: string) => void` | Called when countdown expires or user dismisses live tile |
13
+ | `paused` | `boolean` | Freezes the countdown without settling the notification |
14
+ | `actions` | `ReactNode` | Action row rendered inside the padded section (e.g. approval buttons) |
15
+ | `children` | `ReactNode` | Extra content below the padded section; bring your own top divider |
11
16
 
12
- - **`NotificationTile`** — Main exported component that:
13
- - Determines `isLive` state based on `read`, `settled`, and elapsed time since `createdAt`
14
- - Uses a `useEffect` timer to auto-call `onSettle` after the remaining live duration
15
- - Shows a dismiss (`XmarkIcon`) button while live, swapping to a complete (`CheckCircleIcon`) button once settled
16
- - Renders a CSS progress bar (`toast-progress` animation) anchored to `liveDurationMs` with a negative `animationDelay` to account for already-elapsed time
17
+ ### Internal Logic
18
+ - **`accentVariant`** maps backend `NotificationSeverity` (`INFO`, `SUCCESS`, `WARNING`, `DANGER`) to a `NotificationVariant`; falls back to `notification.variant`.
19
+ - **`isLive`** `true` when the notification is unread, unsettled, and within the `liveDurationMs` window.
20
+ - **`failedImageUrl`** tracks broken image URLs so the component falls back to the `icon` slot or a severity-colored dot.
21
+ - **Progress bar** — animates via a CSS `toast-progress` keyframe using `animationDelay` to account for elapsed time since creation.
22
+ - **Dual button slot** — dismiss (`XmarkIcon`) and complete (`CheckCircleIcon`) share one 16 px slot; the inactive button is `aria-hidden`, `disabled`, and `tabIndex={-1}`.
17
23
 
18
24
  ## Usage Example
19
25
 
20
26
  ```typescript
21
27
  import { NotificationTile } from './notification-tile'
22
28
 
23
- const notification = {
24
- id: 'notif-1',
25
- variant: 'success',
26
- title: 'Ticket resolved',
27
- description: 'Ticket #4821 has been closed.',
28
- createdAt: Date.now(),
29
- read: false,
30
- settled: false,
29
+ function NotificationFeed() {
30
+ const notification = {
31
+ id: 'notif-1',
32
+ title: 'Ticket #4821 updated',
33
+ description: 'A technician has responded to your request.',
34
+ severity: 'INFO' as const,
35
+ variant: 'info' as const,
36
+ createdAt: Date.now() - 1000,
37
+ read: false,
38
+ settled: false,
39
+ }
40
+
41
+ return (
42
+ <NotificationTile
43
+ notification={notification}
44
+ liveDurationMs={5000}
45
+ onSettle={(id) => console.log('dismissed', id)}
46
+ onComplete={(id) => console.log('completed', id)}
47
+ actions={
48
+ <button type="button">Approve</button>
49
+ }
50
+ />
51
+ )
31
52
  }
53
+ ```
32
54
 
33
- <NotificationTile
34
- notification={notification}
35
- liveDurationMs={5000}
36
- onComplete={(id) => markComplete(id)}
37
- onSettle={(id) => settleNotification(id)}
38
- />
39
- ```
55
+ **Source:** [`notification-tile.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/notification-tile.tsx)
@@ -1,73 +1,70 @@
1
- <!-- source-hash: c21d20125d1c832d1265f5a500b7053e -->
2
- React context provider managing in-app notification state, including add, read, settle, remove, and panel open/close operations via a reducer pattern.
1
+ <!-- source-hash: 87176a6bcad1178d52fbb050df93200a -->
2
+ React context module that manages notification state for the OpenFrame notifications system, providing CRUD operations, read/settled tracking, drawer open/close control, and optional server-side persistence callbacks.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `NotificationsProvider`
7
- Wraps your app (or a subtree) to supply notification state. Uses `useReducer` for immutable state transitions and `useCallback`/`useMemo` for stable references.
7
+ Top-level provider that initializes state via `useReducer` and exposes all notification operations through context. Accepts pagination props (`hasMore`, `isLoadingMore`, `onLoadMore`), popup visibility controls, desktop OS notification opt-in, and a custom tile renderer override.
8
8
 
9
- **Props:**
9
+ ### `NotificationsActions`
10
+ Optional server-side callback hooks — `onMarkRead`, `onMarkAllRead`, `onRemove`, `onMarkSettled` — fired after local state updates for persistence sync.
10
11
 
11
- | Prop | Type | Default | Description |
12
- |------|------|---------|-------------|
13
- | `initialNotifications` | `Notification[]` | `[]` | Seed the store on mount |
14
- | `maxNotifications` | `number` | `50` | Hard cap; oldest entries are trimmed |
15
- | `defaultShowPopups` | `boolean` | `true` | Initial popup visibility |
16
- | `onShowPopupsChange` | `(v: boolean) => void` | — | Callback on popup toggle |
17
- | `onHistoryClick` | `() => void` | — | Callback for "view history" action |
12
+ ### Internal `reducer`
13
+ Handles `add`, `upsert`, `set`, `markRead`, `markAllRead`, `markSettled`, `remove`, and `clear` actions. The `upsert` action preserves position on update; `add` prepends and promotes to top. Both respect `maxNotifications`.
18
14
 
19
15
  ### `useNotifications`
20
- Primary hook — throws if called outside the provider.
16
+ Strict hook — throws if called outside `<NotificationsProvider>`.
21
17
 
22
18
  ### `useOptionalNotifications`
23
- Safe hook — returns `null` instead of throwing; useful for components that optionally participate in the notification system.
24
-
25
- ### `reducer`
26
- Pure state reducer handling: `add`, `markRead`, `markAllRead`, `markSettled`, `remove`, `clear`.
19
+ Soft hook — returns `null` when no provider is present, safe for optional integration.
27
20
 
28
21
  ## Usage Example
29
22
 
30
23
  ```typescript
31
- import { NotificationsProvider, useNotifications } from './notifications-context'
24
+ import {
25
+ NotificationsProvider,
26
+ useNotifications,
27
+ } from './notifications-context'
32
28
 
33
- // 1. Wrap your app
34
- export default function App() {
29
+ // Wrap your app or feature subtree
30
+ function App() {
35
31
  return (
36
- <NotificationsProvider maxNotifications={100} defaultShowPopups={true}>
37
- <Dashboard />
32
+ <NotificationsProvider
33
+ maxNotifications={100}
34
+ defaultShowPopups={true}
35
+ hasMore={true}
36
+ isLoadingMore={false}
37
+ onLoadMore={() => fetchMoreNotifications()}
38
+ actions={{
39
+ onMarkRead: async (id) => await api.markRead(id),
40
+ onRemove: async (id) => await api.deleteNotification(id),
41
+ }}
42
+ >
43
+ <NotificationsBell />
38
44
  </NotificationsProvider>
39
45
  )
40
46
  }
41
47
 
42
- // 2. Consume in any child component
43
- function Dashboard() {
44
- const { addNotification, unreadCount, markAllRead, toggle } = useNotifications()
45
-
46
- const notify = () =>
47
- addNotification({
48
- title: 'Ticket Updated',
49
- description: 'Ticket #1042 was resolved by Mingo AI.',
50
- color: 'success',
51
- })
48
+ // Consume in any child component
49
+ function NotificationsBell() {
50
+ const { unreadCount, addNotification, markAllRead, toggle } = useNotifications()
52
51
 
53
52
  return (
54
- <>
55
- <button onClick={notify}>Trigger</button>
56
- <button onClick={toggle}>Inbox ({unreadCount})</button>
53
+ <button onClick={toggle}>
54
+ Bell ({unreadCount})
55
+ <button onClick={() => addNotification({ title: 'New alert', body: 'Something happened' })}>
56
+ Add
57
+ </button>
57
58
  <button onClick={markAllRead}>Mark all read</button>
58
- </>
59
+ </button>
59
60
  )
60
61
  }
61
62
  ```
62
63
 
63
- ## Context Value Reference
64
+ ## Notes
65
+
66
+ - `upsert` vs `add`: `add` promotes the item to the top of the list on collision; `upsert` updates in place.
67
+ - `actionsRef` pattern prevents stale closures when persistence callbacks change between renders.
68
+ - `desktopPopupsConfigured` is `true` only when `onShowDesktopPopupsChange` is provided, gating the OS-level toggle in the UI.
64
69
 
65
- | Method / Property | Description |
66
- |---|---|
67
- | `notifications` | Full ordered array, newest first |
68
- | `unreadCount` | Derived count of unread items |
69
- | `isOpen` | Panel open state |
70
- | `addNotification(input)` | Adds entry, returns generated `id` |
71
- | `markSettled(id)` | Marks a notification as acted upon (e.g. hides progress) |
72
- | `open / close / toggle` | Control panel visibility |
73
- | `setShowPopups(bool)` | Toggle toast popups globally |
70
+ **Source:** [`notifications-context.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/notifications-context.tsx)
@@ -1,45 +1,65 @@
1
- <!-- source-hash: 30636d800aad270ef8c49d64c5fe172d -->
2
- Defines TypeScript types for the notification system, including variant styles, notification shape, and input for creating new notifications.
1
+ <!-- source-hash: 606f3b966d2c642c11c978923ae677cd -->
2
+ Core type definitions and utility functions for the notification system, including approval-request notifications used by the Mingo AI approval workflow.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `NotificationVariant` | `type` | Union type for notification styles: `default`, `success`, `warning`, `error`, `info` |
9
- | `Notification` | `interface` | Full notification object shape including metadata and state |
10
- | `AddNotificationInput` | `type` | Partial input type for creating notifications, omitting auto-generated fields |
6
+ ### Types & Interfaces
7
+
8
+ | Name | Description |
9
+ |---|---|
10
+ | `Notification` | Core notification shape with display, metadata, and interaction fields |
11
+ | `AddNotificationInput` | Omits auto-generated fields (`id`, `createdAt`) for consumer-facing `addNotification` calls |
12
+ | `NotificationVariant` | Visual style: `default` · `success` · `warning` · `error` · `info` |
13
+ | `NotificationSeverity` | Backend severity level: `INFO` · `SUCCESS` · `WARNING` · `DANGER` |
14
+ | `RenderNotificationTile` | Override callback to replace the default tile renderer per notification |
15
+ | `ApprovalNotificationMeta` | Approval payload stored in `notification.meta` for `ADMIN_APPROVAL_REQUEST` notifications |
16
+ | `ApprovalToolCallMeta` | Single planned tool invocation awaiting admin approval |
17
+
18
+ ### Utility Functions
19
+
20
+ | Name | Description |
21
+ |---|---|
22
+ | `isApprovalNotification` | Guards whether a notification carries an approval request via `meta.contextType` |
23
+ | `getApprovalMeta` | Safely extracts and validates `ApprovalNotificationMeta` from a notification; returns `null` on mismatch |
24
+ | `resolutionToStatus` | Maps backend `ApprovalResolution` strings (`PENDING`, `APPROVED`, `REJECTED`, `CANCELLED`) to `ChatApprovalStatus` |
25
+ | `approvalMetaToBatchData` | Converts `ApprovalNotificationMeta` to an `ApprovalBatchData` payload for chat approval batches |
26
+
27
+ ### Constants
28
+
29
+ - **`ADMIN_APPROVAL_REQUEST_CONTEXT_TYPE`** — discriminator string (`"ADMIN_APPROVAL_REQUEST"`) matched against `notification.meta.contextType`
11
30
 
12
31
  ## Usage Example
13
32
 
14
33
  ```typescript
15
- import type { Notification, AddNotificationInput, NotificationVariant } from './types'
34
+ import {
35
+ isApprovalNotification,
36
+ getApprovalMeta,
37
+ resolutionToStatus,
38
+ approvalMetaToBatchData,
39
+ } from './types'
16
40
 
17
- // Creating a new notification input
18
- const input: AddNotificationInput = {
19
- variant: 'success',
20
- title: 'Ticket Resolved',
21
- description: 'Issue #1042 has been closed successfully.',
22
- meta: { ticketId: '1042' }
23
- }
41
+ // Check and extract approval metadata
42
+ if (isApprovalNotification(notification)) {
43
+ const approval = getApprovalMeta(notification)
44
+
45
+ if (approval) {
46
+ // Map resolution to a UI status
47
+ const status = resolutionToStatus(approval.resolution)
24
48
 
25
- // Full notification object (after system assigns id, createdAt, etc.)
26
- const notification: Notification = {
27
- id: 'notif-abc123',
28
- variant: 'error',
29
- title: 'Connection Failed',
30
- description: 'Unable to reach the RMM agent.',
31
- createdAt: Date.now(),
32
- read: false,
33
- settled: false,
34
- meta: { agentId: 'agent-007' }
49
+ // Build the batch payload for the chat approval component
50
+ const batchData = approvalMetaToBatchData(approval)
51
+ }
35
52
  }
36
53
 
37
- // Using the variant type directly
38
- const variant: NotificationVariant = 'warning'
54
+ // Add a basic notification (id and createdAt are optional)
55
+ const input: AddNotificationInput = {
56
+ title: 'Ticket #1042 Updated',
57
+ variant: 'success',
58
+ severity: 'SUCCESS',
59
+ onClick: () => router.push('/tickets/1042'),
60
+ }
39
61
  ```
40
62
 
41
- ## Notes
63
+ ## Source
42
64
 
43
- - `title` and `description` accept `ReactNode`, allowing rich content (strings, JSX elements).
44
- - `AddNotificationInput` makes `id` and `createdAt` optional, allowing the system to auto-generate them.
45
- - `meta` is an open-ended `Record<string, unknown>` for attaching arbitrary contextual data.
65
+ [`types.ts` on GitHub](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/types.ts)
@@ -0,0 +1,51 @@
1
+ <!-- source-hash: 554e4c4e5d119f255ff40e907298f913 -->
2
+ A drag-and-drop sortable list component for configuring ticket status ordering, built on `@dnd-kit/core` and `@dnd-kit/sortable`.
3
+
4
+ ## Key Components
5
+
6
+ - **`TicketStatusConfigList<T>`** — Generic sortable list container. Accepts any item type with an `id: string` field, manages DnD sensors (pointer with 4px activation threshold + keyboard), and delegates row rendering to a consumer-supplied `renderRow` prop.
7
+ - **`SortableRow`** — Internal render-prop component that wraps each list item with `useSortable`, applies CSS transforms/transitions, and elevates `z-index` while dragging to prevent items from rendering beneath siblings.
8
+ - **`SortableRowRenderArgs`** — Interface exposing `dragHandleProps`, `dragHandleAttributes`, and `isDragging` to the row renderer, allowing custom drag handle placement.
9
+ - **`TicketStatusConfigListProps<T>`** — Props interface for the list component.
10
+
11
+ ## Usage Example
12
+
13
+ ```typescript
14
+ import {
15
+ TicketStatusConfigList,
16
+ type SortableRowRenderArgs,
17
+ } from './ticket-status-config-list'
18
+
19
+ const statuses = [
20
+ { id: 'open', label: 'Open' },
21
+ { id: 'in-progress', label: 'In Progress' },
22
+ { id: 'closed', label: 'Closed' },
23
+ ]
24
+
25
+ function StatusSettings() {
26
+ const [items, setItems] = React.useState(statuses)
27
+
28
+ const handleReorder = (oldIndex: number, newIndex: number) => {
29
+ setItems(prev => {
30
+ const next = [...prev]
31
+ next.splice(newIndex, 0, next.splice(oldIndex, 1)[0])
32
+ return next
33
+ })
34
+ }
35
+
36
+ return (
37
+ <TicketStatusConfigList
38
+ items={items}
39
+ onReorder={handleReorder}
40
+ renderRow={(item, { dragHandleProps, dragHandleAttributes, isDragging }: SortableRowRenderArgs) => (
41
+ <div style={{ opacity: isDragging ? 0.5 : 1 }}>
42
+ <span {...dragHandleProps} {...dragHandleAttributes}>⠿</span>
43
+ {item.label}
44
+ </div>
45
+ )}
46
+ />
47
+ )
48
+ }
49
+ ```
50
+
51
+ The `onReorder` callback receives raw `oldIndex`/`newIndex` values — the parent is responsible for applying the reorder to its own state.