@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,58 +1,65 @@
1
- <!-- source-hash: 898258d76810df35b3a9175ed9b09824 -->
2
- Responsive application header component for the OpenFrame platform, providing navigation controls, search, organization filtering, notifications, and user account management across mobile and desktop breakpoints.
1
+ <!-- source-hash: 569a7a0949370aa9107f6c577d74779f -->
2
+ Responsive application header component for the OpenFrame shell, providing navigation controls, search, organization filtering, notifications, time tracking, Mingo AI access, and user account management across desktop and mobile breakpoints.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `AppHeader` | `React.memo` component | Main header component with full prop-driven configuration |
9
- | `AppHeaderProps` | Interface | Full prop contract for the header |
10
- | `NotificationsHeaderButton` | Internal component | Bell icon button with unread badge, integrates with `NotificationsContext` |
6
+ ### `AppHeader`
11
7
 
12
- ## Props Overview
8
+ The primary exported component — a memoized `<header>` element that composes all header controls based on feature flags passed via props.
9
+
10
+ **`AppHeaderProps`** — full prop surface:
13
11
 
14
12
  | Prop | Type | Description |
15
- |------|------|-------------|
16
- | `isMobileMenuOpen` | `boolean` | Required; controls burger menu icon state |
17
- | `onToggleMobileMenu` | `() => void` | Callback to toggle the mobile sidebar |
18
- | `disabled` | `boolean` | Dims all controls except the mobile burger toggle |
19
- | `showSearch` | `boolean` | Renders global search (desktop) or search button (mobile) |
20
- | `showOrganizations` | `boolean` | Renders org filter dropdown (large screens only) |
21
- | `showNotifications` | `boolean` | Renders notification bell with unread badge |
22
- | `showUser` | `boolean` | Renders user avatar + dropdown (desktop only) |
13
+ |---|---|---|
14
+ | `showSearch` | `boolean` | Renders global search (desktop) or search icon (mobile) |
15
+ | `showOrganizations` | `boolean` | Renders org filter dropdown (desktop only) |
16
+ | `showNotifications` | `boolean` | Renders notifications bell with unread badge |
17
+ | `showTimeTracker` | `boolean` | Renders time-tracker button; requires `<TimeTrackerProvider>` |
18
+ | `showMingoAI` | `boolean` | Renders Mingo AI launcher button |
19
+ | `isMingoAIActive` | `boolean` | Pressed state for the Mingo AI drawer toggle |
20
+ | `showUser` | `boolean` | Renders user avatar with profile/logout dropdown (desktop only) |
21
+ | `isMobileMenuOpen` | `boolean` | Controls burger icon state |
22
+ | `disabled` | `boolean` | Dims and disables all controls except the mobile burger toggle |
23
+
24
+ ### `NotificationsHeaderButton` (internal)
25
+
26
+ Reads live state from `useOptionalNotifications()` context; falls back to `fallbackUnreadCount` when no provider is present. Toggles between a bell icon (with unread dot) and a close icon when the panel is open.
23
27
 
24
28
  ## Usage Example
25
29
 
26
30
  ```typescript
27
- import { AppHeader } from './app-header'
31
+ import { AppHeader } from '@openframe-oss-lib/ui'
28
32
 
29
- export function Shell() {
30
- const [mobileOpen, setMobileOpen] = React.useState(false)
33
+ function Shell() {
34
+ const [mobileMenuOpen, setMobileMenuOpen] = React.useState(false)
35
+ const [mingoOpen, setMingoOpen] = React.useState(false)
31
36
 
32
37
  return (
33
38
  <AppHeader
34
- isMobileMenuOpen={mobileOpen}
35
- onToggleMobileMenu={() => setMobileOpen(prev => !prev)}
36
39
  showSearch
37
- onSearch={(query) => console.log(query)}
38
40
  showOrganizations
39
41
  organizations={[{ id: 'org-1', name: 'Acme Corp' }]}
40
42
  selectedOrgId="org-1"
41
- onOrgChange={(id) => console.log(id)}
43
+ onOrgChange={(id) => console.log('org changed', id)}
42
44
  showNotifications
43
45
  unreadCount={3}
46
+ showTimeTracker
47
+ showMingoAI
48
+ onMingoAI={() => setMingoOpen((v) => !v)}
49
+ isMingoAIActive={mingoOpen}
44
50
  showUser
45
- userName="Jane Doe"
51
+ userName="Jane Smith"
46
52
  userEmail="jane@acme.com"
53
+ userAvatarUrl={null}
47
54
  onProfile={() => router.push('/profile')}
48
55
  onLogout={() => signOut()}
56
+ isMobileMenuOpen={mobileMenuOpen}
57
+ onToggleMobileMenu={() => setMobileMenuOpen((v) => !v)}
49
58
  />
50
59
  )
51
60
  }
52
61
  ```
53
62
 
54
- ## Behavior Notes
63
+ > **Note:** `showTimeTracker` requires wrapping your app in `<TimeTrackerProvider>`. `showMingoAI` pairs with an `AppLayoutDrawer` positioned at `z-[103]`; the user dropdown renders at `z-[104]` to stay above it.
55
64
 
56
- - **Responsive layout:** Mobile renders a burger icon + logo; desktop shows the full search bar and org filter
57
- - **Disabled state:** Setting `disabled={true}` applies `pointer-events-none opacity-50` to all controls except the mobile menu toggle
58
- - **Notifications:** Prefers live unread count from `NotificationsContext` when available, falls back to the `unreadCount` prop; switches between `BellIcon` and `BellRingingIcon` based on count
65
+ **Source:** [`app-header.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/app-header.tsx)
@@ -0,0 +1,48 @@
1
+ <!-- source-hash: 68a6be14b0f426e8391409d08ace02ec -->
2
+ Provides React context primitives for `AppLayout`'s drawer portal targeting and multi-panel open/close coordination, intentionally isolated to prevent circular module imports.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `AppLayoutDrawerContainerContext` | `Context<HTMLElement \| null>` | Reference to the `<main>` wrapper element used as the portal mount target for `AppLayoutDrawer` |
9
+ | `useAppLayoutDrawerContainer` | Hook | Consumes `AppLayoutDrawerContainerContext`; returns `null` outside of `AppLayout` |
10
+ | `AppLayoutDrawerHandle` | Interface | Shape each panel must expose — a single `close()` method |
11
+ | `AppLayoutDrawerCoordination` | Interface | Coordination contract: `notifyDrawerDidOpen` and `registerDrawer` |
12
+ | `AppLayoutDrawerCoordinationContext` | `Context<AppLayoutDrawerCoordination \| null>` | Shared bus enforcing the one-panel-at-a-time rule |
13
+ | `useAppLayoutDrawerCoordination` | Hook | Consumes `AppLayoutDrawerCoordinationContext`; returns `null` outside of `AppLayout` |
14
+
15
+ ## Usage Example
16
+
17
+ ```typescript
18
+ // Inside a drawer panel (e.g. AppLayoutDrawer or NotificationDrawer)
19
+ import {
20
+ useAppLayoutDrawerContainer,
21
+ useAppLayoutDrawerCoordination,
22
+ type AppLayoutDrawerHandle,
23
+ } from './app-layout-context'
24
+
25
+ function MyDrawer() {
26
+ const container = useAppLayoutDrawerContainer()
27
+ const coordination = useAppLayoutDrawerCoordination()
28
+
29
+ const handle: AppLayoutDrawerHandle = { close: () => setOpen(false) }
30
+
31
+ useEffect(() => {
32
+ if (!coordination) return
33
+ // Register so other panels can close this one
34
+ return coordination.registerDrawer(handle)
35
+ }, [coordination])
36
+
37
+ function open() {
38
+ // Closes the burger menu + every other registered panel
39
+ coordination?.notifyDrawerDidOpen(handle)
40
+ setOpen(true)
41
+ }
42
+
43
+ if (!container) return null
44
+ return createPortal(<div>Drawer content</div>, container)
45
+ }
46
+ ```
47
+
48
+ > **Why a separate module?** `AppLayout` renders `AppLayoutDrawer`, `NotificationDrawer`, and `TimeTrackerHeaderButton`. If those panels imported `AppLayout` to access these contexts, a module cycle would form. Keeping contexts here breaks the cycle.
@@ -0,0 +1,56 @@
1
+ <!-- source-hash: 1cd276668c638c6cf3605fa41bf21802 -->
2
+ Renders a drawer panel anchored inside the `AppLayout` main content area (rather than the viewport), keeping the header and sidebar visible and interactive while the drawer is open.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `AppLayoutDrawerRoot` | Component | Root wrapper; manages open state, coordination with other layout panels, and `DialogPrimitive.Root` in non-modal mode |
9
+ | `AppLayoutDrawerTrigger` | Component | Re-export of `DialogPrimitive.Trigger` |
10
+ | `AppLayoutDrawerClose` | Component | Re-export of `DialogPrimitive.Close` |
11
+ | `AppLayoutDrawerResizeHandle` | Component | Drag handle for resizing the drawer panel via pointer events |
12
+ | `useContainedResizableSize` | Hook | Manages panel size state with localStorage persistence and container-aware clamping |
13
+ | `appLayoutDrawerVariants` | CVA | Tailwind variants for the outer positioning wrapper (`side`, `flush`) |
14
+ | `appLayoutDrawerPanelVariants` | CVA | Tailwind variants for the inner panel surface (`side`, `flush`) |
15
+ | `DrawerOpenContext` | Context | Exposes the current open state to descendant components for animation control |
16
+ | `PERSIST_CLOSED_HOLD` | Constant | Tailwind class that pins `fill-mode: forwards` on exit animations when `forceMount` is used |
17
+
18
+ Re-exported from `ui/drawer`: `DrawerBody`, `DrawerDescription`, `DrawerFooter`, `DrawerHeader`, `DrawerTitle`.
19
+
20
+ ## Usage Example
21
+
22
+ ```typescript
23
+ import {
24
+ AppLayoutDrawerRoot,
25
+ AppLayoutDrawerTrigger,
26
+ AppLayoutDrawerClose,
27
+ } from "./app-layout-drawer"
28
+ import { DrawerHeader, DrawerTitle, DrawerBody, DrawerFooter } from "../ui/drawer"
29
+
30
+ export function ExamplePanel() {
31
+ const [open, setOpen] = React.useState(false)
32
+
33
+ return (
34
+ <AppLayoutDrawerRoot open={open} onOpenChange={setOpen}>
35
+ <AppLayoutDrawerTrigger asChild>
36
+ <button>Open details</button>
37
+ </AppLayoutDrawerTrigger>
38
+
39
+ {/* Content is portalled into the AppLayout container, not document.body */}
40
+ <AppLayoutDrawerContent side="right" resizable storageKey="details-panel-width">
41
+ <DrawerHeader>
42
+ <DrawerTitle>Details</DrawerTitle>
43
+ </DrawerHeader>
44
+ <DrawerBody>Panel content here</DrawerBody>
45
+ <DrawerFooter>
46
+ <AppLayoutDrawerClose asChild>
47
+ <button>Close</button>
48
+ </AppLayoutDrawerClose>
49
+ </DrawerFooter>
50
+ </AppLayoutDrawerContent>
51
+ </AppLayoutDrawerRoot>
52
+ )
53
+ }
54
+ ```
55
+
56
+ > **Note:** `modal={false}` is set by default so clicks outside the drawer do not block the header or sidebar. A custom overlay div is rendered as a portal sibling to catch pointer events and prevent close-and-reopen flicker on trigger elements.
@@ -1,39 +1,42 @@
1
- <!-- source-hash: 4a7aa4db8bec1fcce07d28f27fea4092 -->
2
- Orchestrates the top-level application shell, combining the sidebar, header, mobile menu, and notification drawer into a single full-screen layout with managed mobile menu state.
1
+ <!-- source-hash: 037ca5a09298f549d1712277264f7348 -->
2
+ The root shell component that composes the full application chrome sidebar, header, mobile burger menu, notification drawer, and a drawer portal target into a responsive, context-driven layout.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `AppLayout` | Component | Root layout wrapper rendering all chrome elements and the main content area |
9
- | `AppLayoutProps` | Interface | Configuration interface for the layout component |
10
-
11
- **Key props:**
12
- - `sidebarConfig` Navigation structure passed to both `NavigationSidebar` and `MobileBurgerMenu`
13
- - `headerProps` — Forwarded to `AppHeader` (mobile menu state/toggle are managed internally)
14
- - `mobileBurgerMenuProps` — Forwarded to `MobileBurgerMenu` (open/close/config are managed internally)
15
- - `disabled` — Freezes header and sidebar interactions without affecting `children`
16
- - `loadingFallback` Custom `Suspense` fallback for the main content area
7
+ |---|---|---|
8
+ | `AppLayout` | Component | Main layout shell wrapping all page chrome and content |
9
+ | `AppLayoutProps` | Interface | Full prop surface for `AppLayout` |
10
+ | `useAppLayoutDrawerContainer` | Hook (re-export) | Access the drawer portal container element |
11
+ | `useAppLayoutDrawerCoordination` | Hook (re-export) | Access drawer open/close coordination context |
12
+ | `AppLayoutDrawerHandle` | Type (re-export) | Handle type for registering a drawer with the layout |
13
+
14
+ ### Notable Props
15
+
16
+ | Prop | Type | Description |
17
+ |---|---|---|
18
+ | `topBar` | `ReactNode` | Optional full-width banner pinned above sidebar and header |
19
+ | `drawer` | `ReactNode` | Slot for an `AppLayoutDrawer` that portals into the main area |
20
+ | `disabled` | `boolean` | Freezes nav/header chrome while keeping `children` interactive |
21
+ | `loadingFallback` | `ReactNode` | `Suspense` fallback rendered inside `<main>` |
17
22
 
18
23
  ## Usage Example
19
24
 
20
25
  ```typescript
21
26
  import { AppLayout } from './app-layout'
22
- import { sidebarConfig } from '../config/navigation'
23
27
 
24
28
  export default function RootLayout({ children }: { children: React.ReactNode }) {
25
29
  return (
26
30
  <AppLayout
27
- sidebarConfig={sidebarConfig}
31
+ sidebarConfig={navigationConfig}
28
32
  headerProps={{
29
33
  logo: <Logo />,
30
34
  actions: <UserMenu />,
31
35
  }}
32
- mobileBurgerMenuProps={{
33
- footerContent: <SupportLink />,
34
- }}
35
- loadingFallback={<PageSkeleton />}
36
- mainClassName="p-6"
36
+ mobileBurgerMenuProps={{ footer: <SupportLink /> }}
37
+ topBar={<OnboardingBanner />}
38
+ drawer={<AppLayoutDrawer />}
39
+ mainClassName="bg-white"
37
40
  >
38
41
  {children}
39
42
  </AppLayout>
@@ -41,8 +44,6 @@ export default function RootLayout({ children }: { children: React.ReactNode })
41
44
  }
42
45
  ```
43
46
 
44
- ## Notes
47
+ ## Drawer Coordination
45
48
 
46
- - Mobile menu open/close state is fully self-contained consumers only provide content-level props via `mobileBurgerMenuProps`
47
- - `children` are wrapped in `Suspense`, enabling async page transitions out of the box
48
- - `disabled` is intended for loading or onboarding states where navigation should be temporarily locked
49
+ The layout enforces a **single open drawer** policy via `AppLayoutDrawerCoordinationContext`. When a drawer opens, all other registered drawers are closed programmatically. Opening the mobile burger menu also closes any active drawer (and vice versa), preventing layering conflicts where the menu would render invisibly beneath an open drawer.
@@ -0,0 +1,46 @@
1
+ <!-- source-hash: 167c9c053052f1a347bb1bb0405477b2 -->
2
+ Accessible launcher button for the Mingo AI drawer within `AppHeader`, toggling between a branded icon+wordmark and a close affordance based on active and display state.
3
+
4
+ ## Key Components
5
+
6
+ ### `HeaderMingoButton`
7
+
8
+ A styled `<button>` that integrates the Mingo AI branding into the app header. Implements the `HeaderButton` visual contract (full sticky-header height, `ods-card` rest / `ods-bg-hover` hover) and exposes open state via `aria-pressed`.
9
+
10
+ **Props (`HeaderMingoButtonProps`):**
11
+
12
+ | Prop | Type | Default | Description |
13
+ |---|---|---|---|
14
+ | `isActive` | `boolean` | `false` | Marks the button as pressed while the Mingo drawer is open |
15
+ | `iconOnly` | `boolean` | `false` | Hides the "Mingo AI" wordmark; collapses to icon-only for narrow viewports |
16
+ | `className` | `string` | — | Additional classes merged via `cn()` |
17
+
18
+ **Behavior:**
19
+ - When `iconOnly && isActive`: renders an `XmarkIcon` and sets `aria-label` to `"Close Mingo AI"`
20
+ - Otherwise: renders `MingoIcon` with ODS cyan accent colors
21
+ - When `!iconOnly`: appends the bold `"Mingo AI"` wordmark
22
+
23
+ ## Usage Example
24
+
25
+ ```typescript
26
+ import { HeaderMingoButton } from '@openframe/ui'
27
+
28
+ // Full button with wordmark (default)
29
+ <HeaderMingoButton
30
+ isActive={isMingoOpen}
31
+ onClick={() => setIsMingoOpen(prev => !prev)}
32
+ />
33
+
34
+ // Icon-only mode for mobile/narrow layouts
35
+ <HeaderMingoButton
36
+ iconOnly
37
+ isActive={isMingoOpen}
38
+ onClick={() => setIsMingoOpen(prev => !prev)}
39
+ />
40
+ ```
41
+
42
+ ## Notes
43
+
44
+ - Designed for use inside `AppHeader`'s `divide-x` divider layout; no standalone active background is applied.
45
+ - Figma reference: `7532:222103 — button-full`
46
+ - Source: [`header-mingo-button.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/header-mingo-button.tsx)
@@ -1,36 +1,50 @@
1
- <!-- source-hash: dec1eb29c513b449612c49f5b36f6f9d -->
2
- A client-side dropdown filter component for switching between organizations in the OpenFrame header, displaying the selected organization's name and device count.
1
+ <!-- source-hash: 6379158ce442c1637f43fff8dfba4467 -->
2
+ A client-side dropdown component for filtering content by organization in the OpenFrame header, displaying the selected organization name and device count.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### Interfaces
7
- - **`HeaderOrganizationFilterOrganization`** — Shape for each organization entry (`id`, `name`, `deviceCount?`)
8
- - **`HeaderOrganizationFilterProps`** — Component props including `organizations`, `selectedOrgId`, `onOrgChange`, `totalDeviceCount`, and `className`
7
+
8
+ - **`HeaderOrganizationFilterOrganization`** — Shape for each organization entry (`id`, `name`, optional `deviceCount`)
9
+ - **`HeaderOrganizationFilterProps`** — Props for the filter component
9
10
 
10
11
  ### Component
11
- - **`HeaderOrganizationFilter`** — Renders a styled trigger button with a filter icon, organization name, and device count, wired to a dropdown menu listing all organizations plus an "All Organizations" reset option
12
+
13
+ - **`HeaderOrganizationFilter`** — Renders a styled trigger button with a filter icon, organization name, and device count, backed by a dropdown menu of selectable organizations
14
+
15
+ ### Behavior
16
+
17
+ - Defaults to `"All Organizations"` when no `selectedOrgId` matches
18
+ - Shows `totalDeviceCount` when no specific org is selected; shows org-level `deviceCount` when one is selected
19
+ - Calls `onOrgChange('')` to reset to all organizations; calls `onOrgChange(org.id)` on selection
12
20
 
13
21
  ## Usage Example
14
22
 
15
23
  ```typescript
16
- import { HeaderOrganizationFilter } from './header-organization-filter'
24
+ import {
25
+ HeaderOrganizationFilter,
26
+ HeaderOrganizationFilterOrganization
27
+ } from './header-organization-filter'
17
28
 
18
- const orgs = [
29
+ const orgs: HeaderOrganizationFilterOrganization[] = [
19
30
  { id: 'org-1', name: 'Acme Corp', deviceCount: 42 },
20
31
  { id: 'org-2', name: 'Globex Inc', deviceCount: 17 },
21
32
  ]
22
33
 
23
- <HeaderOrganizationFilter
24
- organizations={orgs}
25
- selectedOrgId="org-1"
26
- totalDeviceCount={59}
27
- onOrgChange={(id) => console.log('Selected org:', id)}
28
- />
34
+ function Header() {
35
+ const [selectedOrgId, setSelectedOrgId] = useState('')
36
+
37
+ return (
38
+ <HeaderOrganizationFilter
39
+ organizations={orgs}
40
+ selectedOrgId={selectedOrgId}
41
+ onOrgChange={setSelectedOrgId}
42
+ totalDeviceCount={59}
43
+ />
44
+ )
45
+ }
29
46
  ```
30
47
 
31
- ## Behavior Notes
48
+ ## Source
32
49
 
33
- - When no `selectedOrgId` matches, defaults to **"All Organizations"** and shows `totalDeviceCount`
34
- - Selecting "All Organizations" from the dropdown calls `onOrgChange('')`
35
- - Device count is formatted with `toLocaleString()` (e.g., `1,234 Devices`)
36
- - Fixed width of `240px` with `border-l` separator, designed for header toolbar placement
50
+ [`header-organization-filter.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/header-organization-filter.tsx)
@@ -1,62 +1,55 @@
1
- <!-- source-hash: 1a8c2c67117a2cb265b878e7d99e1a25 -->
2
- A responsive, sticky navigation header component with auto-hide on scroll, dropdown menus, and configurable layout zones (logo, navigation, actions).
1
+ <!-- source-hash: b45b42d2833c6191aa9bdecbae716475 -->
2
+ Renders a sticky, auto-hiding site header with configurable logo, navigation items, dropdown menus, and action slots for the OpenFrame platform shell.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `Header`
7
- The primary exported component that renders a full-width sticky header. Accepts a `HeaderConfig` object to control all visual and behavioral aspects.
7
+ The main exported component. Accepts a `HeaderConfig` object and optional `platform` string to render a full application header with:
8
8
 
9
- **Props:**
10
- | Prop | Type | Description |
11
- |------|------|-------------|
12
- | `config` | `HeaderConfig` | Full layout/behavior configuration |
13
- | `platform` | `string` | Optional platform identifier |
9
+ - **Auto-hide on scroll** — hides when scrolling down past 50px, re-appears on scroll up (opt-in via `config.autoHide`)
10
+ - **Dropdown menus** custom-built dropdowns using `inert` for accessibility-safe show/hide (avoids `aria-hidden` focus retention bugs)
11
+ - **Click-outside / Escape dismissal** — event listeners attached only while a dropdown is open
12
+ - **Navigation rendering** `renderNavigationItem` handles four cases: custom elements, dropdown parents, link/action buttons, and plain action buttons
14
13
 
15
- ### Behaviors
14
+ ### Exported Types
16
15
 
17
- - **Auto-hide on scroll** — Hides when scrolling down past 50px, reappears on scroll up. Controlled via `config.autoHide`.
18
- - **Dropdown menus** — Custom-built dropdowns using `inert` (not `aria-hidden`) for proper a11y/focus management. Closes on outside click or `Escape`.
19
- - **Mobile menu toggle** Shows a hamburger icon button on small screens, hidden on `md+` breakpoints.
20
-
21
- ### Layout Zones
22
- | Zone | Description |
23
- |------|-------------|
24
- | Left | Logo link + optional `config.actions.left` slot |
25
- | Center/Right | Navigation items (positioned via `config.navigation.position`) |
26
- | Right | Desktop action slot + mobile menu toggle |
16
+ | Export | Description |
17
+ |---|---|
18
+ | `HeaderProps` | `{ config: HeaderConfig; platform?: string }` |
19
+ | `HeaderConfig` | Re-exported from `../../types/navigation` for consumer convenience |
27
20
 
28
21
  ## Usage Example
29
22
 
30
23
  ```typescript
31
- import { Header, HeaderConfig } from './header'
24
+ import { Header } from './header'
25
+ import type { HeaderConfig } from './header'
32
26
 
33
27
  const config: HeaderConfig = {
34
28
  logo: {
35
29
  href: '/',
36
30
  element: <img src="/logo.svg" alt="Flamingo" />,
37
31
  },
32
+ autoHide: true,
33
+ backgroundColor: 'bg-ods-card',
38
34
  navigation: {
39
35
  position: 'center',
40
36
  items: [
41
37
  { id: 'docs', label: 'Docs', href: '/docs' },
42
38
  {
43
- id: 'products',
44
- label: 'Products',
39
+ id: 'community',
40
+ label: 'Community',
45
41
  children: [
46
- { id: 'openframe', label: 'OpenFrame', href: '/openframe' },
47
- { id: 'mingo', label: 'Mingo AI', href: '/mingo' },
42
+ { id: 'slack', label: 'Slack', href: 'https://www.openmsp.ai/', isExternal: true },
48
43
  ],
49
44
  },
50
45
  ],
51
46
  },
52
- actions: {
53
- right: <Button href="/login">Sign In</Button>,
54
- },
55
- autoHide: true,
56
- mobile: { enabled: true, onToggle: () => setMenuOpen(v => !v) },
47
+ mingo: { enabled: true },
57
48
  }
58
49
 
59
50
  export default function Layout() {
60
- return <Header config={config} />
51
+ return <Header config={config} platform="openframe" />
61
52
  }
62
- ```
53
+ ```
54
+
55
+ > **Accessibility note:** Dropdowns use the HTML `inert` attribute (React 19 native) instead of `aria-hidden` to fully remove hidden content from the tab order and accessibility tree simultaneously.
@@ -1,65 +1,51 @@
1
- <!-- source-hash: c04d31cdc4af8b84cec9f6c825727d97 -->
2
- Main entry point for the navigation component library, providing a clean public API with comprehensive exports for headers, sidebars, mobile navigation, and layout components along with their TypeScript type definitions.
1
+ <!-- source-hash: a398abbb0ec4fa945ec8435f34cfbc15 -->
2
+ Barrel export file for the navigation component library, aggregating all navigation-related components, hooks, constants, and TypeScript types into a single `"use client"` entry point.
3
3
 
4
4
  ## Key Components
5
5
 
6
- **Core Navigation Components:**
7
- - `Header` - Main header component with configuration support
8
- - `AppHeader` - Application-level header implementation
9
- - `AppLayout` - Full page layout wrapper with navigation
10
- - `NavigationSidebar` - Primary sidebar navigation component
11
-
12
- **Mobile Navigation:**
13
- - `MobileNavPanel` - Mobile-optimized navigation panel
14
- - `MobileBurgerMenu` - Hamburger menu for mobile devices
15
- - `ClientOnlyHeader` - Header that only renders on client-side
16
-
17
- **Interactive Elements:**
18
- - `SlidingSidebar` - Animated sidebar with slide transitions
19
- - `StickySectionNav` - Section navigation with scroll tracking
20
- - `HeaderGlobalSearch` - Global search functionality in header
21
- - `HeaderOrganizationFilter` - Organization filtering component
22
-
23
- **Utility Components:**
24
- - `HeaderSkeleton` - Loading placeholder for header
25
- - `HeaderButton` - Styled button component for header actions
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `Header` / `AppHeader` | Component | Primary and application-level header components |
9
+ | `ClientOnlyHeader` | Component | Header rendered exclusively on the client side |
10
+ | `HeaderSkeleton` | Component | Loading placeholder for the header |
11
+ | `AppLayout` | Component | Top-level layout wrapper with drawer support |
12
+ | `AppLayoutDrawer` + sub-components | Components | Composable drawer primitives (trigger, close, content, header, title, description, body, footer) |
13
+ | `SlidingSidebar` / `NavigationSidebar` | Components | Persistent sidebar navigation surfaces |
14
+ | `MobileNavPanel` | Component | Mobile slide-out navigation panel |
15
+ | `MobileBurgerMenu` | Component | Hamburger toggle for mobile navigation |
16
+ | `StickySectionNav` | Component | In-page section navigation with scroll tracking |
17
+ | `MultiLevelNavigation` / `MobileNavigationDropdown` | Components | Tree-shaped navigation for doc viewers and nested content |
18
+ | `MingoAiButton` / `HeaderMingoButton` | Components | Mingo AI access buttons in the header |
19
+ | `HeaderGlobalSearch` | Component | Global search trigger in the header |
20
+ | `HeaderOrganizationFilter` | Component | Organization switcher/filter in the header |
21
+ | `useAppLayoutDrawerContainer` | Hook | Accesses the drawer container context |
22
+ | `useSectionNavigation` | Hook | Drives active-section tracking for `StickySectionNav` |
23
+ | `MOBILE_NAV_PANEL_ID` | Constant | DOM ID for the mobile nav panel |
26
24
 
27
25
  ## Usage Example
28
26
 
29
27
  ```typescript
30
- import {
31
- AppLayout,
32
- Header,
28
+ import {
29
+ AppLayout,
30
+ AppHeader,
33
31
  NavigationSidebar,
32
+ AppLayoutDrawer,
33
+ AppLayoutDrawerTrigger,
34
+ AppLayoutDrawerContent,
35
+ useAppLayoutDrawerContainer,
34
36
  type AppLayoutProps,
35
- type HeaderConfig
36
- } from '@/components/navigation'
37
-
38
- // Basic layout setup
39
- function MyApp() {
40
- const headerConfig: HeaderConfig = {
41
- showSearch: true,
42
- showOrgFilter: true
43
- }
37
+ type NavigationSidebarConfig,
38
+ } from '@openframe/ui/navigation'
44
39
 
40
+ export function Shell({ children }: AppLayoutProps) {
45
41
  return (
46
- <AppLayout
47
- header={<Header config={headerConfig} />}
48
- sidebar={<NavigationSidebar items={navItems} />}
49
- >
50
- <main>Your app content</main>
42
+ <AppLayout>
43
+ <AppHeader />
44
+ <NavigationSidebar config={sidebarConfig} />
45
+ {children}
51
46
  </AppLayout>
52
47
  )
53
48
  }
49
+ ```
54
50
 
55
- // Mobile-responsive header
56
- import { ClientOnlyHeader, MobileNavPanel } from '@/components/navigation'
57
-
58
- function ResponsiveHeader() {
59
- return (
60
- <ClientOnlyHeader>
61
- <MobileNavPanel items={mobileNavItems} />
62
- </ClientOnlyHeader>
63
- )
64
- }
65
- ```
51
+ > **Source:** [`packages/ui/navigation/index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/packages/ui/navigation/index.ts)
@@ -0,0 +1,41 @@
1
+ <!-- source-hash: 265a30408590dca0bb0f521e12abe9bf -->
2
+ Stateless marketing-header launcher button for the Mingo AI chat panel. Dispatches an `ask-ai:open` CustomEvent on click, allowing the mounted `EmbeddableChat` to respond without tight coupling.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `MingoAiButton` | `React.FC` | The launcher button component |
9
+ | `MingoAiButtonProps` | `interface` | Extends `React.ButtonHTMLAttributes<HTMLButtonElement>` |
10
+
11
+ ### Props
12
+
13
+ | Prop | Type | Default | Description |
14
+ |---|---|---|---|
15
+ | `source` | `string` | `undefined` | Identifies the chat panel instance; coalesced to `''` when dispatching |
16
+ | `icon` | `React.ReactNode` | `undefined` | Custom identity glyph; falls back to the packaged `MingoIcon` |
17
+ | `label` | `string` | `'Mingo AI'` | Wordmark text and `aria-label`; pass the server-configured assistant name |
18
+ | `className` | `string` | `undefined` | Additional classes merged via `cn()` |
19
+ | `onClick` | `MouseEventHandler` | `undefined` | Optional callback called after the CustomEvent is dispatched |
20
+
21
+ ## Usage Example
22
+
23
+ ```typescript
24
+ import { MingoAiButton } from '@openframe/ui'
25
+
26
+ // Basic usage — falls back to packaged MingoIcon and 'Mingo AI' label
27
+ <MingoAiButton source="marketing-header" />
28
+
29
+ // With server-configured identity (recommended)
30
+ <MingoAiButton
31
+ source="marketing-header"
32
+ icon={<EntityIcon assistantIcon={config.mingo.assistantIcon} />}
33
+ label={config.mingo.assistantName}
34
+ />
35
+ ```
36
+
37
+ > **Note:** This component is distinct from `HeaderMingoButton` (the dashboard `AppHeader` toggle). They serve different surfaces with different layout contracts — do not merge them.
38
+
39
+ The button fires `new CustomEvent('ask-ai:open', { detail: { source } })` on `window`. Any `EmbeddableChat` mounted with a matching `source` will open in response.
40
+
41
+ **Source:** [`mingo-ai-button.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/mingo-ai-button.tsx)