@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,44 +1,42 @@
1
- <!-- source-hash: d70b1713cdb85568acf904d7a2daa162 -->
2
- Renders enhanced chat messages with support for multi-segment content, inline/block entity card markers, tool executions, approval flows, and rich markdown delegating entity resolution and navigation to host-provided callbacks.
1
+ <!-- source-hash: e3aea36595a360e95ddef8fc94d285d3 -->
2
+ Renders an enhanced chat message component that supports rich content including markdown, inline entity cards, mention chips, tool execution displays, approval requests, and context-aware streaming with intelligent segment splitting.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `ChatMessageEnhanced` | `forwardRef` component | Main message renderer with role-aware layout (`user`, `error`, assistant variants) |
9
- | `normalizeContent` | Function | Normalizes `MessageContent` (string or `MessageSegment[]`) to a uniform segment array |
10
- | `CARD_MARKER_REGEX` | Regex | Shared pattern matching `[card://type:id]` markers kept in lockstep with `remarkCardLinks` |
11
- | `renderingPlan` | `useMemo` | Per-message plan splitting text segments at block card markers for accurate streaming position |
12
- | `cardComponentOverrides` | `useMemo` | Overrides `<a>` tags for `card://` URLs, resolving inline/block entity cards via host callbacks |
13
-
14
- ### Supporting Displays (composed internally)
15
- - `ToolExecutionDisplay` renders tool call segments
16
- - `ApprovalRequestMessage` / `ApprovalBatchMessage` approval flow segments
17
- - `ErrorMessageDisplay` — error role messages
18
- - `ContextCompactionDisplay` — context compaction events
19
- - `ThinkingDisplay`streaming thinking segments
6
+ ### `ChatMessageEnhanced`
7
+ The primary `forwardRef` component that handles multi-role message rendering (`user`, `error`, assistant variants) with:
8
+
9
+ - **`renderingPlan`** Memoized plan that splits text segments at `[card://type:id]` markers so block-level entity cards render at exact marker positions during streaming, not at segment end
10
+ - **`renderedCardNodeCache`** `useRef`-backed cache keyed by `type:id` that preserves React element identity across stream chunks, preventing card remounts and preserving open menus/fetch state
11
+ - **`inlineMentionIds`** Scans text segments for `@marker:id` tokens to exclude already-inline-rendered mentions from the chip strip
12
+ - **`stripContextItems`** Filters `contextItems` to only show context NOT already rendered inline
13
+
14
+ ### Regex Constants
15
+ - **`MENTION_MARKER_REGEX`** — Mirrors `remark-mention-chips.ts` left-boundary to avoid stripping tokens the plugin would also skip
16
+ - **`CARD_MARKER_REGEX`** Mirrors `remarkCardLinks` grammar; both must stay in lockstep when the marker syntax changes
17
+
18
+ ### Utilities
19
+ - **`formatMessageTimestamp`**Shows time-only for today's messages; prepends locale date for older ones
20
+ - **`normalizeContent`** — Normalizes `MessageContent` (string or `MessageSegment[]`) to a uniform `MessageSegment[]`
20
21
 
21
22
  ## Usage Example
22
23
 
23
24
  ```typescript
25
+ import { ChatMessageEnhanced } from "@openframe-oss/lib"
26
+
24
27
  <ChatMessageEnhanced
25
28
  role="assistant"
26
29
  assistantType="mingo"
27
- content={[
28
- { type: 'text', text: 'Here is your ticket [card://ticket:123].' },
29
- { type: 'tool_execution', toolName: 'search', result: '...' },
30
- ]}
31
- chatRefs={{
32
- 'ticket:123': { type: 'ticket', id: '123', title: 'Login bug', url: '/tickets/123' },
33
- }}
34
- renderEntityCard={(ref) => <TicketPill ref={ref} />}
35
- NavLinkAnchor={({ href, children }) => <Link href={href}>{children}</Link>}
36
- showAvatar
30
+ content={[{ type: "text", text: "Here is your device: [card://device:abc123]" }]}
31
+ chatRefs={{ "device:abc123": { type: "device", id: "abc123", title: "Laptop A", url: null } }}
32
+ renderEntityCard={(ref) => <MyEntityCard ref={ref} />}
33
+ renderMention={(type, id) => <MentionChip type={type} id={id} />}
34
+ contextItems={contextItems}
35
+ timestamp={new Date()}
37
36
  />
38
37
  ```
39
38
 
40
- ## Notes
41
-
42
- - **Data-agnostic**: the library never imports entity types or routing the host provides `renderEntityCard` and `NavLinkAnchor`.
43
- - Block card markers split their text segment so block payloads render at the marker position during streaming, not appended at the end.
44
- - Three distinct fallbacks for unresolved `card://` hrefs prevent LLM hallucinations from appearing as real cards.
39
+ ## Related Files
40
+ - [`remark-card-links.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/remark-card-links.ts) — Remark plugin; grammar must stay in sync with `CARD_MARKER_REGEX`
41
+ - [`remark-mention-chips.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/remark-mention-chips.ts) Remark plugin; left-boundary must stay in sync with `MENTION_MARKER_REGEX`
42
+ - [`block-card.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/entity-cards/block-card.tsx) Block-level card wrapper used in segment splitting logic
@@ -1,67 +1,57 @@
1
- <!-- source-hash: ddaad2500e41f9ee61eff7435b990d72 -->
2
- A scrollable chat message list component with stick-to-bottom behavior, prepend anchoring for load-older pagination, and streaming indicators.
1
+ <!-- source-hash: bcd59a730239fa164668aa97e210c356 -->
2
+ Renders a scrollable, auto-anchoring chat message list with streaming indicators, infinite scroll upward pagination, and stick-to-bottom physics for AI chat interfaces.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `ChatMessageList` | `forwardRef` Component | Main scrollable message list with auto-scroll management |
9
- | `STREAMING_WORDS` | `const` | Flamingo-themed cycling phrases shown during AI streaming |
10
- | `hasNonEmptyContent` | Helper Function | Checks if a `MessageContent` value carries visible text |
11
- | `disposeAnchorWatcher` | Helper Function | Idempotent teardown for `AnchorWatcher` instances |
12
- | `AnchorWatcher` | Interface | Tracks `ResizeObserver` + timeout for top-anchor settle window |
13
-
14
- ## Key Props (`ChatMessageListProps`)
15
-
16
- | Prop | Description |
17
- |------|-------------|
18
- | `messages` | Array of chat messages to render |
19
- | `dialogId` | Triggers instant scroll-to-bottom on dialog change |
20
- | `isLoading` / `isTyping` | Controls skeleton and streaming indicator visibility |
21
- | `autoScroll` | Enables/disables stick-to-bottom behavior |
22
- | `hasNextPage` / `onLoadMore` | Infinite scroll upward (load-older pagination) |
23
- | `renderEntityCard` | Custom renderer for entity card messages |
6
+ - **`ChatMessageList`** Primary `forwardRef` component wrapping `useStickToBottom` for spring-physics scroll anchoring during token streaming
7
+ - **`STREAMING_WORDS`** — Flamingo-themed cycling phrases displayed alongside the typing/streaming indicator
8
+ - **`hasNonEmptyContent`** Utility predicate that checks whether a `MessageContent` value (string or `MessageSegment[]`) contains visible text
9
+ - **`AnchorWatcher`** / **`disposeAnchorWatcher`** Interface and idempotent teardown helper for the prepend-anchor `ResizeObserver` settle window
10
+ - **`ChatMessageEnhanced`** Per-message renderer (avatars, approval variants, entity cards, context icons, mentions)
11
+ - **`ChatMessageListSkeleton`** Placeholder skeleton shown during initial load
12
+ - **`CyclingPhrase`** Animated word-cycling component used inside the streaming indicator
13
+ - **`DotsLoaderIcon`** — Animated dots icon displayed while `isTyping` is active
14
+
15
+ ## Scroll Architecture
16
+
17
+ | Concern | Owner |
18
+ |---|---|
19
+ | Streaming follow (spring) | `useStickToBottom` |
20
+ | Dialog change / first load / new user message | Force-scroll `useEffect` |
21
+ | Load-older prepend anchoring | `loadOlderAnchorRef` + geometry delta |
22
+ | Top-sentinel infinite scroll | `sentinelRef` + `IntersectionObserver` |
23
+ | Passive demo hard-pin | `pinBottom` prop path |
24
24
 
25
25
  ## Usage Example
26
26
 
27
27
  ```typescript
28
- import { ChatMessageList } from "@/components/chat"
28
+ import { ChatMessageList } from "@openframe/ui"
29
+ import type { ChatMessage } from "@openframe/ui/types"
29
30
 
30
- const messages = [
31
+ const messages: ChatMessage[] = [
31
32
  { id: "1", role: "user", content: "Hello!" },
32
33
  { id: "2", role: "assistant", content: "Hi there!" },
33
34
  ]
34
35
 
35
- export function ChatPanel() {
36
- const listRef = useRef<HTMLDivElement>(null)
37
-
36
+ export function MyChatView() {
38
37
  return (
39
38
  <ChatMessageList
40
- ref={listRef}
41
39
  messages={messages}
42
- dialogId="conv-abc123"
40
+ dialogId="dialog-abc"
43
41
  isTyping={false}
44
- autoScroll={true}
45
- showAvatars={true}
46
- hasNextPage={true}
42
+ autoScroll
43
+ showAvatars
47
44
  onLoadMore={() => fetchOlderMessages()}
45
+ hasNextPage={true}
46
+ isFetchingNextPage={false}
48
47
  />
49
48
  )
50
49
  }
51
50
  ```
52
51
 
53
- ## Scroll Management Strategy
54
-
55
- The component uses [`use-stick-to-bottom`](https://github.com/stackblitz-labs/use-stick-to-bottom) (same library powering bolt.new) with three additional behaviors layered on top:
52
+ ## Notes
56
53
 
57
- ```mermaid
58
- graph TD
59
- A["Message Update"] --> B{"Trigger Type?"}
60
- B -->|"Dialog changed"| C["scrollToBottom instant"]
61
- B -->|"First message"| C
62
- B -->|"New user message"| C
63
- B -->|"Streaming assistant"| D["Library spring physics"]
64
- A --> E{"Content prepended?"}
65
- E -->|"Load-older"| F["Preserve viewport via scrollTop delta"]
66
- E -->|"No prepend"| G["Update scrollHeight snapshot"]
67
- ```
54
+ - Requires `use-stick-to-bottom` (StackBlitz Labs) — the same library used by Vercel AI SDK's `<Conversation>` and bolt.new
55
+ - `initial: false` disables mount-time auto-scroll; the dialog-change `useEffect` owns first-paint positioning
56
+ - Image attachments trigger a `requestAnimationFrame` follow-up scroll to handle Next.js `<Image>` progressive dimensioning
57
+ - `pinBottom` bypasses smart-follow for scripted demos (Fae/Mingo) where no human controls scroll
@@ -0,0 +1,56 @@
1
+ <!-- source-hash: 9c88cf89d89eafde809c83221cb785bc -->
2
+ Renders a single Slack-channel-style message row used across both the OpenMSP community feed and ticket conversation surfaces, ensuring pixel-identical layout on both.
3
+
4
+ ## Key Components
5
+
6
+ ### `ChatMessageRow`
7
+ The primary message row component with avatar, display name, relative timestamp, body text, and an optional footer slot. Handles avatar proxying via `useProxiedImageUrl` and gracefully falls back to an initials box on image load failure, keyed by URL to allow retry on src change.
8
+
9
+ ### `ChatMessageRowSkeleton`
10
+ A loading placeholder with 1:1 structural parity to `ChatMessageRow` — matching wrapper, avatar box dimensions, and bar heights to prevent layout reflow on the loading-to-loaded transition.
11
+
12
+ ### `ChatMessageRowProps`
13
+ ```typescript
14
+ interface ChatMessageRowProps {
15
+ displayName: string // Bold name in header
16
+ avatarUrl?: string | null // Proxied; falls back to initials
17
+ timeLabel?: string | null // Pre-formatted (e.g. "2h ago"); hidden if empty
18
+ body: string // whitespace-pre-wrap message text
19
+ footer?: ReactNode // Surface-specific slot (reply badge / attachments)
20
+ }
21
+ ```
22
+
23
+ ## Usage Example
24
+
25
+ ```typescript
26
+ import { ChatMessageRow, ChatMessageRowSkeleton } from './chat-message-row'
27
+
28
+ // Slack community feed
29
+ <ChatMessageRow
30
+ displayName="Jane Smith"
31
+ avatarUrl="https://cdn.example.com/avatars/jane.jpg"
32
+ timeLabel="2h ago"
33
+ body="Hey team, deployment looks good!"
34
+ footer={<ReplyBadge count={3} />}
35
+ />
36
+
37
+ // Ticket conversation feed
38
+ <ChatMessageRow
39
+ displayName="Support Bot"
40
+ avatarUrl={null} // Renders initials fallback "SB"
41
+ timeLabel={formatRelativeTime(message.createdAt)}
42
+ body={message.text}
43
+ footer={<TicketAttachmentsList attachments={message.attachments} />}
44
+ />
45
+
46
+ // While loading
47
+ <ChatMessageRowSkeleton />
48
+ ```
49
+
50
+ ## Notes
51
+
52
+ - Colors use ODS theme tokens exclusively (`text-ods-text-primary`, `text-ods-text-secondary`, `bg-ods-border`) — no raw color values.
53
+ - Avatar sizing mirrors Slack's layout: `w-8 h-8` (32px) on mobile, `md:w-10 md:h-10` (40px) on desktop, `rounded-lg`, `object-cover`.
54
+ - The `footer` prop is the **only** intentional surface-level variation point; all other markup is shared verbatim.
55
+
56
+ **Source:** [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/chat-message-row.tsx)
@@ -1,40 +1,46 @@
1
- <!-- source-hash: dc7cb2f1d39ceeb5b0684dbef38a8d20 -->
2
- Animated loading skeleton components that simulate the layout of chat messages while content is being fetched, matching the `ChatMessageEnhanced` hanging-avatar layout.
1
+ <!-- source-hash: a6dcb9f785576018e8095625642e2ea3 -->
2
+ Skeleton loading components for chat message rows and lists, mirroring the layout of `ChatMessageEnhanced` and `ChatMessageList` with pulsing placeholder elements.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `ChatMessageSkeleton`
7
- Renders a single animated placeholder message with pulsing blocks for the avatar, sender name, timestamp, and multi-line message content.
7
+ Single message-row skeleton with an inline avatar (assistant only), name/timestamp placeholders, and configurable body lines. Uses percentage-based widths so placeholders reflow correctly on panel resize.
8
8
 
9
+ **Props:**
9
10
  | Prop | Type | Default | Description |
10
- |------|------|---------|-------------|
11
- | `className` | `string` | | Additional CSS classes |
12
- | `showAvatar` | `boolean` | `true` | Whether to render the avatar skeleton |
13
- | `isUser` | `boolean` | `false` | Applies user-message styling (no card background, no avatar) |
14
- | `assistantType` | `'mingo' \| 'fae'` | `'fae'` | Controls avatar gradient — cyan for Mingo, pink for Fae |
11
+ |---|---|---|---|
12
+ | `showAvatar` | `boolean` | `true` | Show circular avatar placeholder |
13
+ | `isUser` | `boolean` | `false` | Hides avatar for user-side messages |
14
+ | `bodyLines` | `number` | `3` | Number of body line placeholders |
15
+ | `className` | `string` | | Additional class names |
15
16
 
16
17
  ### `ChatMessageListSkeleton`
17
- Renders a scrollable list of `ChatMessageSkeleton` items, mimicking a full chat viewport during initial load.
18
+ Renders a configurable list of `ChatMessageSkeleton` rows. Supports two layout modes:
19
+ - **Default** — bottom-anchors rows with inner scroll, matching `ChatMessageList`
20
+ - **Fill mode** (`fill=true`) — top-anchors rows and clips overflow so the entire panel appears to be loading regardless of container height
18
21
 
22
+ **Props:**
19
23
  | Prop | Type | Default | Description |
20
- |------|------|---------|-------------|
21
- | `messageCount` | `number` | `6` | Number of skeleton messages to render |
22
- | `showAvatars` | `boolean` | `true` | Passed through to each `ChatMessageSkeleton` |
23
- | `assistantType` | `'mingo' \| 'fae'` | `'fae'` | Applied to all assistant messages |
24
- | `contentClassName` | `string` | | Overrides default horizontal padding on the content wrapper |
24
+ |---|---|---|---|
25
+ | `messageCount` | `number` | `6` | Number of skeleton rows |
26
+ | `showAvatars` | `boolean` | `true` | Forward avatar visibility to rows |
27
+ | `fullWidth` | `boolean` | `false` | Drops `max-w-ods-content-narrow` column |
28
+ | `bodyLines` | `number` | `3` | Forwarded to each `ChatMessageSkeleton` |
29
+ | `fill` | `boolean` | `false` | Enable fill/clip layout mode |
30
+ | `contentClassName` | `string` | — | Classes on the inner content column |
25
31
 
26
32
  ## Usage Example
27
33
 
28
34
  ```typescript
29
- // Single message skeleton (e.g. while streaming)
30
- <ChatMessageSkeleton assistantType="mingo" showAvatar />
31
-
32
- // Full chat list skeleton on initial page load
33
- <ChatMessageListSkeleton
34
- messageCount={8}
35
- assistantType="fae"
36
- showAvatars={true}
37
- />
38
- ```
39
-
40
- > Every third message (`index % 3 === 0`) is rendered as a user bubble; the rest render as assistant messages with the appropriate Mingo/Fae avatar gradient.
35
+ // Default paragraph-style skeleton list
36
+ <ChatMessageListSkeleton messageCount={5} showAvatars />
37
+
38
+ // Single-line messages (e.g. hero demo turns) prevents oversized skeleton
39
+ <ChatMessageListSkeleton bodyLines={1} messageCount={8} />
40
+
41
+ // Fill mode: whole panel reads as loading
42
+ <ChatMessageListSkeleton fill messageCount={12} fullWidth />
43
+
44
+ // Individual row with one body line
45
+ <ChatMessageSkeleton isUser bodyLines={1} />
46
+ ```
@@ -0,0 +1,46 @@
1
+ <!-- source-hash: b2c65cbe56eb2aa7a9827bd4892f6e34 -->
2
+ Mobile-specific chat panel header component that renders a full-screen-aware header with back navigation, title, contextual actions menu, and a mandatory close button for drawer dismissal.
3
+
4
+ ## Key Components
5
+
6
+ ### `ChatPanelHeaderMobile`
7
+
8
+ The primary export. Renders a vertically-aligned header card with:
9
+
10
+ - **Back chevron** — conditionally shown via `showBack`; uses a 44px outlined `Button` with `Chevron02LeftIcon`
11
+ - **Title** — `text-h2` truncated text, bottom-aligned under a tall header via `xl` top padding
12
+ - **Actions menu (`⋯`)** — an `ActionsMenuDropdown` built from view-dependent items (archive, restore, rename, open archive); hidden entirely when no items apply
13
+ - **Close button** — `XmarkIcon` button; required on mobile since the full-screen drawer has no tappable backdrop
14
+
15
+ ### `ChatPanelHeaderMobileProps`
16
+
17
+ Extends [`ChatPanelHeaderProps`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/chat/chat-panel-header.tsx) and adds an optional `className` for layout overrides.
18
+
19
+ ### Menu item construction
20
+
21
+ Items are conditionally assembled based on current view state:
22
+
23
+ | Condition | Item |
24
+ |---|---|
25
+ | `!showBack && onOpenArchive` | Chat archive |
26
+ | `isArchivedView && onRestore` | Unarchive chat |
27
+ | `!isArchivedView && onRename` | Rename chat |
28
+ | `!isArchivedView && onArchive` | Archive chat |
29
+
30
+ ## Usage Example
31
+
32
+ ```typescript
33
+ import { ChatPanelHeaderMobile } from './chat-panel-header-mobile'
34
+
35
+ <ChatPanelHeaderMobile
36
+ title="Support Session"
37
+ showBack={false}
38
+ isArchivedView={false}
39
+ onClose={() => setDrawerOpen(false)}
40
+ onRename={() => openRenameDialog()}
41
+ onArchive={() => archiveChat(chatId)}
42
+ onOpenArchive={() => navigateTo('archive')}
43
+ />
44
+ ```
45
+
46
+ > The orchestrator renders `ChatPanelHeaderMobile` on mobile viewports and the desktop bar at `md+`. The close button (`onClose`) should always be provided since the full-screen drawer has no visible backdrop.
@@ -0,0 +1,80 @@
1
+ <!-- source-hash: 06fbb4632d6895d92e482f4903daf830 -->
2
+ Responsive top-navigation bar for the chat panel, rendering the correct header layout across list, active-conversation, archived-conversation, and compose views — with adaptive mobile/desktop breakpoints and inline search support.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `ChatPanelHeader` | Component | Main header bar with back navigation, title, avatar, action buttons, and close |
9
+ | `ChatPanelHeaderProps` | Interface | Full prop surface controlling layout, actions, search, and avatar |
10
+
11
+ ## Usage Example
12
+
13
+ ```typescript
14
+ // List view (no back, with search + archive entry)
15
+ <ChatPanelHeader
16
+ title="My Chats"
17
+ onClose={handleClose}
18
+ onOpenArchive={handleOpenArchive}
19
+ onToggleSearch={handleToggleSearch}
20
+ searchActive={isSearchOpen}
21
+ onSearchChange={handleSearchChange}
22
+ searchQuery={currentQuery}
23
+ />
24
+
25
+ // Active conversation view
26
+ <ChatPanelHeader
27
+ showBack
28
+ title="Support Thread"
29
+ subtitle="Jane Smith"
30
+ avatar={{ name: "Jane Smith", avatarUrl: "/avatars/jane.png" }}
31
+ onBack={handleBack}
32
+ onClose={handleClose}
33
+ onRename={handleRename}
34
+ onArchive={handleArchive}
35
+ />
36
+
37
+ // Archived conversation (read-only)
38
+ <ChatPanelHeader
39
+ showBack
40
+ title="Old Thread"
41
+ isArchivedView
42
+ onBack={handleBack}
43
+ onClose={handleClose}
44
+ onRestore={handleRestore}
45
+ />
46
+
47
+ // Embedded/compact mode (skips mobile full-screen layout)
48
+ <ChatPanelHeader
49
+ title="Preview"
50
+ compact
51
+ onClose={handleClose}
52
+ />
53
+ ```
54
+
55
+ ## Layout Behavior
56
+
57
+ ```mermaid
58
+ graph TD
59
+ A[ChatPanelHeader] --> B{compact?}
60
+ B -->|false| C[ChatPanelHeaderMobile on small screens]
61
+ B -->|false| D[Compact bar on md+]
62
+ B -->|true| E[Compact bar at ALL widths]
63
+ D --> F{showBack?}
64
+ F -->|true| G[Back chevron + title + ellipsis menu]
65
+ F -->|false| H[Static title + search + archive clock]
66
+ ```
67
+
68
+ **Right-hand action slots (desktop bar):**
69
+
70
+ | Condition | Rendered control |
71
+ |---|---|
72
+ | `isArchivedView && onRestore` | Refresh/unarchive button |
73
+ | `showBack && !isArchivedView` | ⋯ dropdown (rename / archive) |
74
+ | `!showBack && onToggleSearch` | Search toggle (hidden when inline search open) |
75
+ | `!showBack && onOpenArchive` | Clock/archive entry button |
76
+ | Always | × close button |
77
+
78
+ ## Source
79
+
80
+ [`chat-panel-header.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/chat-panel-header.tsx)
@@ -1,52 +1,53 @@
1
- <!-- source-hash: aae524b6903a622a00d4f048e78ca2ef -->
2
- Skeleton loading components for the chat sidebar UI, providing animated placeholder states while chat dialog data is being fetched.
1
+ <!-- source-hash: 1a8d84383a2cc399dcbc2df528219979 -->
2
+ Loading state skeleton components for the chat sidebar, rendering animated placeholder UI while conversation data is being fetched.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `ChatSidebarSkeleton` | `React.ForwardRefExoticComponent` | Full sidebar skeleton with optional new chat button and configurable dialog count |
9
- | `DialogListItemSkeleton` | `React.ForwardRefExoticComponent` | Individual chat list item skeleton with animated title, timestamp, and chevron placeholders |
6
+ ### `DialogListItemSkeleton`
7
+ A single row skeleton mimicking a chat conversation list item. Renders animated pulse placeholders for the title, timestamp, and chevron icon using `animate-pulse` on `bg-ods-border` elements.
10
8
 
11
- ### Props
9
+ **Props:**
10
+ | Prop | Type | Description |
11
+ |------|------|-------------|
12
+ | `className` | `string?` | Additional CSS classes |
12
13
 
13
- **`ChatSidebarSkeletonProps`**
14
+ ### `ChatSidebarSkeleton`
15
+ Full sidebar skeleton wrapping multiple `DialogListItemSkeleton` rows with an optional disabled "Start New Chat" button header.
14
16
 
17
+ **Props:**
15
18
  | Prop | Type | Default | Description |
16
19
  |------|------|---------|-------------|
17
- | `className` | `string` | — | Additional CSS classes |
18
- | `dialogCount` | `number` | `8` | Number of skeleton dialog items to render |
19
- | `showNewChatButton` | `boolean` | `true` | Toggle the disabled "Start New Chat" button header |
20
-
21
- **`DialogListItemSkeletonProps`**
22
-
23
- | Prop | Type | Default | Description |
24
- |------|------|---------|-------------|
25
- | `className` | `string` | — | Additional CSS classes |
20
+ | `className` | `string?` | — | Additional CSS classes |
21
+ | `dialogCount` | `number` | `8` | Number of skeleton rows to render |
22
+ | `showNewChatButton` | `boolean` | `true` | Whether to render the disabled new chat button |
26
23
 
27
24
  ## Usage Example
28
25
 
29
26
  ```typescript
30
27
  import { ChatSidebarSkeleton, DialogListItemSkeleton } from "./chat-sidebar-skeleton"
31
28
 
32
- // Full sidebar skeleton during data load
29
+ // Full sidebar skeleton during initial load
33
30
  function ChatLayout() {
34
- const { dialogs, isLoading } = useDialogs()
31
+ const { data, isLoading } = useConversations()
35
32
 
36
33
  if (isLoading) {
37
- return (
38
- <ChatSidebarSkeleton
39
- dialogCount={5}
40
- showNewChatButton={true}
41
- />
42
- )
34
+ return <ChatSidebarSkeleton dialogCount={6} showNewChatButton={true} />
43
35
  }
44
36
 
45
- return <ChatSidebar dialogs={dialogs} />
37
+ return <ChatSidebar conversations={data} />
46
38
  }
47
39
 
48
- // Standalone skeleton item for custom lists
49
- function CustomList() {
50
- return <DialogListItemSkeleton className="opacity-50" />
40
+ // Single item skeleton for partial list loading
41
+ function ConversationList() {
42
+ return (
43
+ <div>
44
+ {conversations.map(c => <ConversationItem key={c.id} {...c} />)}
45
+ {isFetchingMore && <DialogListItemSkeleton />}
46
+ </div>
47
+ )
51
48
  }
52
- ```
49
+ ```
50
+
51
+ Both components use `React.forwardRef` for DOM ref forwarding and accept standard `HTMLDivElement` props via spread. Styles follow the ODS design token conventions (`ods-bg`, `ods-border`, `ods-card`).
52
+
53
+ **Source:** [`chat-sidebar-skeleton.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/chat-sidebar-skeleton.tsx)
@@ -1,48 +1,55 @@
1
- <!-- source-hash: eca198ef18bcc431169bc6caeb87161d -->
2
- A sidebar component for chat navigation that displays a list of dialogs, supports infinite scroll pagination, and provides controls for creating new chats.
1
+ <!-- source-hash: 60628db258030b0c522169a464accc8d -->
2
+ Renders a collapsible chat history sidebar with a dialog list, infinite scroll pagination, skeleton loading states, and an empty state view for the OpenFrame chat interface.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `ChatSidebar`
7
- The main container component that renders the sidebar with:
8
- - **New Chat button** triggers `onNewChat` callback
9
- - **Dialog list** scrollable list with infinite scroll via `IntersectionObserver`
10
- - **Empty state** — shown when no dialogs exist and no `children` are provided
11
- - **Custom content slot** — renders `children` instead of the dialog list when provided
12
- - **Loading skeleton** — displays `ChatSidebarSkeleton` when `isLoading` is true and no dialogs are present
13
-
14
- ### `DialogListItem`
15
- A single chat entry in the sidebar list. Displays:
16
- - Chat title (truncated with tooltip)
17
- - Formatted timestamp (`MM/DD/YYYY, HH:MM`)
18
- - Unread message badge (capped at `99+`) or a chevron arrow when no unread messages exist
19
- - Active state with accent border and background highlight
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `ChatSidebar` | `forwardRef` component | Main sidebar container managing dialog list, loading, and empty states |
9
+ | `DialogListItem` | `forwardRef` component | Individual chat entry row with title, timestamp, and unread badge |
10
+
11
+ ### `ChatSidebar` Props
12
+
13
+ | Prop | Type | Description |
14
+ |---|---|---|
15
+ | `dialogs` | `Dialog[]` | List of chat sessions to render |
16
+ | `activeDialogId` | `string` | Highlights the currently selected dialog |
17
+ | `onNewChat` | `() => void` | Callback for the "Start New Chat" button |
18
+ | `onDialogSelect` | `(id: string) => void` | Callback when a dialog row is clicked |
19
+ | `isLoading` | `boolean` | Shows full skeleton when `true` and list is empty |
20
+ | `isCreatingDialog` | `boolean` | Disables the new chat button during creation |
21
+ | `hasNextPage` | `boolean` | Enables the `IntersectionObserver`-based infinite scroll trigger |
22
+ | `isFetchingNextPage` | `boolean` | Shows skeleton rows at the bottom while fetching |
23
+ | `onLoadMore` | `() => void` | Fired when the sentinel element enters the viewport |
24
+ | `children` | `ReactNode` | Replaces the default dialog list with custom content |
20
25
 
21
26
  ## Usage Example
22
27
 
23
28
  ```typescript
24
- import { ChatSidebar } from "./chat-sidebar"
29
+ import { ChatSidebar } from "@openframe-oss-lib/components"
30
+
31
+ const dialogs = [
32
+ { id: "1", title: "Network Issue", timestamp: new Date(), unreadMessagesCount: 3 },
33
+ { id: "2", title: "Printer Setup", timestamp: new Date() },
34
+ ]
35
+
36
+ export function AppLayout() {
37
+ const [activeId, setActiveId] = useState("1")
25
38
 
26
- function App() {
27
39
  return (
28
40
  <ChatSidebar
29
- dialogs={[
30
- { id: "1", title: "Network Issue", timestamp: new Date(), unreadMessagesCount: 3 },
31
- { id: "2", title: "Server Setup", timestamp: new Date() },
32
- ]}
33
- activeDialogId="1"
34
- isLoading={false}
35
- isCreatingDialog={false}
41
+ dialogs={dialogs}
42
+ activeDialogId={activeId}
43
+ onNewChat={() => console.log("new chat")}
44
+ onDialogSelect={(id) => setActiveId(id)}
36
45
  hasNextPage={true}
37
46
  isFetchingNextPage={false}
38
- onNewChat={() => console.log("New chat")}
39
- onDialogSelect={(id) => console.log("Selected:", id)}
40
47
  onLoadMore={() => fetchNextPage()}
41
48
  />
42
49
  )
43
50
  }
44
51
  ```
45
52
 
46
- ## Infinite Scroll
53
+ > **Infinite scroll:** A sentinel `<div>` at the bottom of the list is observed via `IntersectionObserver` with a `100px` root margin. `onLoadMore` fires automatically when it enters the scroll container's viewport, provided `hasNextPage` is `true` and a fetch isn't already in progress.
47
54
 
48
- Pagination is handled automatically using an `IntersectionObserver` anchored to the bottom of the scroll container. When the sentinel element enters the viewport and `hasNextPage` is `true`, `onLoadMore` is called. Skeleton items are shown while `isFetchingNextPage` is active.
55
+ **Source:** [`chat-sidebar.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/chat-sidebar.tsx)