@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,50 +1,56 @@
1
- <!-- source-hash: 3706922a9df0493d5342fee857818e2a -->
2
- Unified page component for rendering markdown-backed legal documents (privacy policy, terms of service, etc.), replacing duplicate per-document hub components with a single configurable abstraction.
1
+ <!-- source-hash: 4d38aabccf09a05e49d7f4a234d30fbd -->
2
+ Unified React page component for rendering markdown-backed legal documents (privacy policy, terms of service, etc.), replacing duplicate per-document page components with a single configurable implementation.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `LegalDocumentPage`
7
- Main exported component that handles the full page lifecycle loading skeleton, error state, empty state, and rendered markdown content driven entirely by props.
7
+ Main exported component. Fetches and renders a legal document via `useLegalDocs`, handling loading skeletons, error states, and empty states. Conditionally wraps output in `PageShell` based on the `shell` prop.
8
8
 
9
9
  ### `LegalDocumentPageProps`
10
- Configuration interface covering:
11
- - **`docType`** — drives the default `/api/legal/<docType>` endpoint and error-log prefix
12
- - **`title` / `fallbackDescription`**heading and subtitle text
13
- - **`contactEmail` / `errorContactPrompt` / `errorTitle` / `emptyStateMessage`** per-document copy strings
14
- - **`initialData` / `initialLastUpdatedLabel`** — SSR hydration-safe pre-fetched data
15
- - **`apiEndpoint`**optional override for reverse-proxy or alternate API paths
16
- - **`MarkdownRenderer`**injectable renderer (defaults to `SimpleMarkdownRenderer`); pass a richer renderer for embeds/video/OG previews
17
- - **`backButton`**configurable back-nav; pass `false` to hide in embed mode
10
+ Full configuration interface including:
11
+ - `docType` — drives the default `/api/legal/<docType>` endpoint
12
+ - `title`, `fallbackDescription`, `contactEmail` display copy
13
+ - `errorTitle`, `errorContactPrompt`, `emptyStateMessage` — state-specific messaging
14
+ - `initialData` / `initialLastUpdatedLabel` — SSR hydration support
15
+ - `MarkdownRenderer`injectable renderer component (defaults to `RichMarkdownRenderer`)
16
+ - `backButton`configurable back navigation or `false` to hide
17
+ - `shell`toggle `PageShell` wrapper for embed contexts
18
18
 
19
19
  ### `LegalDocumentMarkdownRendererProps`
20
- Renderer contract interface with `content`, `sectionIds`, and `demoteMarkdownH1ToH2`.
20
+ Interface for the pluggable `MarkdownRenderer` component contract: `content`, optional `sectionIds`, and `demoteMarkdownH1ToH2`.
21
21
 
22
22
  ## Usage Example
23
23
 
24
24
  ```typescript
25
- // Privacy Policy page
25
+ import { LegalDocumentPage } from './legal-document-page';
26
+
27
+ // Basic usage (Privacy Policy)
26
28
  <LegalDocumentPage
27
29
  docType="privacy"
28
30
  title="Privacy Policy"
29
- fallbackDescription="Our privacy policy and data protection practices."
31
+ fallbackDescription="Our privacy policy and data protection practices"
30
32
  contactEmail="privacy@openframe.io"
31
33
  errorContactPrompt="For privacy-related questions, please contact:"
32
34
  errorTitle="Unable to load privacy policy"
33
35
  emptyStateMessage="Privacy policy content is not available at this time."
34
36
  initialData={ssrDocument}
35
- initialLastUpdatedLabel="January 15, 2025"
37
+ initialLastUpdatedLabel={ssrLabel}
36
38
  />
37
39
 
38
- // Embed mode with custom renderer and no back button
40
+ // Embedded mode host provides layout, custom renderer
39
41
  <LegalDocumentPage
40
42
  docType="terms"
41
43
  title="Terms of Service"
42
- fallbackDescription="Terms governing use of our platform."
44
+ fallbackDescription="Our terms and conditions"
43
45
  contactEmail="legal@openframe.io"
44
46
  errorContactPrompt="For legal questions, please contact:"
45
47
  errorTitle="Unable to load terms of service"
46
- emptyStateMessage="Terms of service content is not available at this time."
47
- MarkdownRenderer={RichMarkdownRenderer}
48
+ emptyStateMessage="Terms of service content is not available."
49
+ shell={false}
48
50
  backButton={false}
51
+ apiEndpoint="/proxy/api/legal/terms"
52
+ MarkdownRenderer={MyRichRenderer}
49
53
  />
50
- ```
54
+ ```
55
+
56
+ **Source:** [`legal-document-page.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/legal-document-page.tsx)
@@ -1,42 +1,48 @@
1
- <!-- source-hash: 8cc6f0cadfbca233ed799a57d6b4388c -->
2
- A React hook that fetches markdown-backed legal documents (privacy policy, terms of service, etc.) from a hub API endpoint, with support for SSR/RSC pre-fetched data and manual refetching.
1
+ <!-- source-hash: ee50746d44329588b4ebfaeeb2bd0d9c -->
2
+ Fetches a legal document (privacy policy, terms of service, or any markdown-backed legal page) from a hub API endpoint, with SSR/RSC hydration support via optional `initialData`.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### Interfaces
7
7
 
8
- | Interface | Description |
9
- |-----------|-------------|
10
- | `LegalDocument` | Shape of the fetched document includes title, markdown content, GitHub sync metadata, and parsed section headings |
11
- | `UseLegalDocsOptions` | Hook configuration — optional `initialData` for SSR hydration and `apiEndpoint` override for reverse-proxy embedders |
12
- | `UseLegalDocsReturn` | Hook return value — `data`, `isLoading`, `error`, and `refetch` |
8
+ - **`LegalDocument`** Shape of the fetched legal document, mirroring the hub's server-side `LegalDocument` type to avoid server-side import dependencies.
9
+ - **`UseLegalDocsOptions`** — Hook configuration: optional `initialData` for SSR hydration and `apiEndpoint` override for reverse-proxy embedders.
10
+ - **`UseLegalDocsReturn`**Hook return shape: `data`, `isLoading`, `error`, and `refetch`.
13
11
 
14
- ### `useLegalDocs(docType, options?)`
12
+ ### Hook
15
13
 
16
- Core hook that manages fetch lifecycle for a legal document. Key behaviors:
17
-
18
- - **Default endpoint:** `/api/legal/<docType>` — overridable via `apiEndpoint`
19
- - **SSR-safe:** When `initialData` is provided, the initial client fetch is skipped entirely
20
- - **`docType` reset guard:** When `docType` changes, stale data is cleared immediately before the new fetch resolves — prevents flash of wrong content in embedders cycling through document types
21
- - **Error handling:** Propagates HTTP errors and empty-content responses as human-readable strings via the `error` state
14
+ - **`useLegalDocs(docType, options)`** — Core hook. Resolves the effective endpoint (`/api/legal/<docType>` by default), manages fetch lifecycle state, resets state on `docType` change, and skips the initial client fetch when `initialData` is provided.
22
15
 
23
16
  ## Usage Example
24
17
 
25
18
  ```typescript
19
+ import { useLegalDocs } from './use-legal-docs';
20
+
26
21
  // Basic client-side fetch
27
- const { data, isLoading, error, refetch } = useLegalDocs('privacy');
28
-
29
- // SSR hydration — skip initial client fetch
30
- const { data } = useLegalDocs('terms', {
31
- initialData: serverFetchedDoc,
32
- });
33
-
34
- // Reverse-proxy embedder overriding the endpoint
35
- const { data, isLoading } = useLegalDocs('privacy', {
36
- apiEndpoint: '/proxy/legal/privacy',
37
- });
38
-
39
- if (isLoading) return <Spinner />;
40
- if (error) return <ErrorBanner message={error} onRetry={refetch} />;
41
- return <MarkdownRenderer content={data?.content} />;
42
- ```
22
+ function PrivacyPage() {
23
+ const { data, isLoading, error, refetch } = useLegalDocs('privacy');
24
+
25
+ if (isLoading) return <p>Loading…</p>;
26
+ if (error) return <p>Error: {error}</p>;
27
+ return <article>{data?.content}</article>;
28
+ }
29
+
30
+ // With SSR-prefetched data (skips initial client fetch)
31
+ function TermsPage({ serverData }: { serverData: LegalDocument }) {
32
+ const { data } = useLegalDocs('terms', { initialData: serverData });
33
+ return <article>{data?.content}</article>;
34
+ }
35
+
36
+ // With a proxied endpoint (embedder override)
37
+ function EmbedPrivacy() {
38
+ const { data } = useLegalDocs('privacy', {
39
+ apiEndpoint: '/proxy/legal/privacy',
40
+ });
41
+ return <article>{data?.content}</article>;
42
+ }
43
+ ```
44
+
45
+ ## Notes
46
+
47
+ - `docType` is treated as an opaque string and intentionally kept out of `console.error`'s format-string argument to prevent CodeQL `js/tainted-format-string` findings.
48
+ - State resets on `docType` change prevent stale content from briefly rendering during sequential document loads.
@@ -1,25 +1,31 @@
1
- <!-- source-hash: a586fc7eef91717f42e06b54e7cb5290 -->
2
- A React client component that renders a single onboarding step as an interactive card, supporting completed, skipped, pending, and loading states with appropriate actions.
1
+ <!-- source-hash: 90ed7a4de133a1c00403aa5d89978252 -->
2
+ A React client component that renders a single onboarding step as an interactive card, displaying step metadata and contextual action buttons based on completion/skip state.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `OnboardingStepCard`
7
- The primary exported component. Renders a responsive card with a title/description column and a dynamic action column based on step state.
8
-
9
- **Props (`OnboardingStepCardProps`):**
7
+ The primary exported component. Renders a responsive card (stacked on mobile, horizontal on `md+`) with two columns:
8
+ - **Left column** — step title and description (truncated with tooltip)
9
+ - **Right column** — state-driven action area
10
10
 
11
+ ### `OnboardingStepCardProps`
11
12
  | Prop | Type | Description |
12
- |------|------|-------------|
13
- | `step` | `object` | Step metadata including title, description, icons, action text, and callbacks |
14
- | `isCompleted` | `boolean` | Shows a success badge and re-run action button |
15
- | `isSkipped` | `boolean` | Shows a neutral "SKIPPED" badge |
13
+ |---|---|---|
14
+ | `step` | `object` | Step metadata: id, title, description, action handlers, and icon factory |
15
+ | `isCompleted` | `boolean` | Shows COMPLETED badge + secondary action button |
16
+ | `isSkipped` | `boolean` | Shows SKIPPED badge, no actions |
16
17
  | `isCheckingCompletion` | `boolean` | Renders animated skeleton placeholders |
17
- | `onAction` | `() => void \| Promise<void>` | Primary action handler (async-safe) |
18
+ | `onAction` | `() => void \| Promise<void>` | Primary action handler |
18
19
  | `onSkip` | `() => void` | Skip step handler |
19
20
  | `className` | `string?` | Optional additional CSS classes |
20
21
 
21
- **Internal state:**
22
- - `isProcessing` Tracks in-flight async action calls to disable the button and prevent double-submission.
22
+ ### State Machine (Right Column)
23
+ | Condition | Rendered UI |
24
+ |---|---|
25
+ | `isCheckingCompletion` | Pulsing skeleton loaders |
26
+ | `isCompleted` | COMPLETED badge + repeat-action button |
27
+ | `isSkipped` | SKIPPED badge only |
28
+ | default | Skip + primary action buttons |
23
29
 
24
30
  ## Usage Example
25
31
 
@@ -30,15 +36,17 @@ The primary exported component. Renders a responsive card with a title/descripti
30
36
  title: 'Connect your PSA',
31
37
  description: 'Link your ticketing system to get started',
32
38
  actionIcon: (color) => <PlugIcon color={color} />,
33
- actionText: 'Connect Now',
39
+ actionText: 'Connect',
34
40
  completedText: 'Reconnect',
35
41
  onAction: () => router.push('/integrations/psa'),
36
- onSkip: () => console.log('skipped'),
42
+ onSkip: () => markSkipped('connect-psa'),
37
43
  }}
38
44
  isCompleted={false}
39
45
  isSkipped={false}
40
46
  isCheckingCompletion={false}
41
47
  onAction={() => router.push('/integrations/psa')}
42
- onSkip={() => markStepSkipped('connect-psa')}
48
+ onSkip={() => markSkipped('connect-psa')}
43
49
  />
44
- ```
50
+ ```
51
+
52
+ > **Note:** `handleAction` uses internal `isProcessing` state to disable the button during async operations, preventing duplicate submissions. Both handlers call `e.stopPropagation()` to prevent card-level click bubbling.
@@ -1,47 +1,61 @@
1
- <!-- source-hash: 89208f0119005a51561aa80d8594f307 -->
2
- Renders a multi-step onboarding walkthrough UI that syncs external completion status with local storage state, prevents race conditions via refs, and displays dismissible step cards.
1
+ <!-- source-hash: 7a7aa5f6a5049b0fd0108b153da19ff8 -->
2
+ Orchestrates a multi-step onboarding walkthrough UI, managing step completion state, skip/dismiss interactions, and syncing external completion checks to persistent localStorage state.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`OnboardingWalkthrough`** Main exported component that orchestrates step rendering, completion tracking, and dismissal
7
- - **`OnboardingWalkthroughProps`** Interface defining the component's props
8
- - **`useOnboardingState`** — Hook managing persistent onboarding state (completed/skipped/dismissed) via `localStorage`
9
- - **`OnboardingStepCard`** — Child component rendering individual step cards
10
- - **Race condition guards** Three refs (`hasAutoMarkedRef`, `autoMarkingInProgressRef`, `actionInProgressRef`) prevent duplicate or concurrent state mutations
6
+ ### `OnboardingWalkthrough` (default export)
7
+ Main component that renders a header with dismiss/close controls and a list of `OnboardingStepCard` items.
8
+
9
+ ### `OnboardingWalkthroughProps`
10
+ | Prop | Type | Default | Description |
11
+ |------|------|---------|-------------|
12
+ | `steps` | `OnboardingStepConfig[]` | — | Step definitions to render |
13
+ | `onDismiss` | `() => void` | — | Callback fired after dismissal |
14
+ | `storageKey` | `string` | `'openframe-onboarding-state'` | localStorage key for persisted state |
15
+ | `completionStatus` | `Record<string, boolean>` | — | External hook-driven completion map |
16
+ | `isLoadingCompletion` | `boolean` | `false` | Suppresses auto-marking while checks are in flight |
17
+ | `className` / `spacing` | `string` | — | Layout overrides |
18
+
19
+ ### Internal Behaviors
20
+ - **Auto-sync** (`useEffect`): Detects changes in `completionStatus` and bulk-marks newly completed steps via `markMultipleComplete`, guarded by refs to prevent race conditions.
21
+ - **`handleStepAction`** (`useCallback`): Runs `step.onAction()`, then optionally calls `step.checkComplete()` to verify and mark completion; `knowledge-base` steps are auto-completed without verification.
22
+ - **`handleStepSkip`** / **`handleDismiss`**: Delegate to `useOnboardingState` and fire optional callbacks.
11
23
 
12
24
  ## Usage Example
13
25
 
14
26
  ```typescript
15
27
  import { OnboardingWalkthrough } from './onboarding-walkthrough'
16
- import type { OnboardingStepConfig } from '../../../hooks/ui/use-onboarding-state'
28
+ import { useOnboardingCompletion } from '../../../hooks/ui/use-onboarding-completion'
17
29
 
18
- const steps: OnboardingStepConfig[] = [
30
+ const steps = [
19
31
  {
20
32
  id: 'knowledge-base',
21
- title: 'Set up Knowledge Base',
22
- description: 'Upload your documentation.',
23
- onAction: async () => { /* open modal or navigate */ },
33
+ title: 'Add Knowledge Base',
34
+ description: 'Upload your docs.',
35
+ onAction: async () => router.push('/knowledge'),
24
36
  },
25
37
  {
26
38
  id: 'connect-psa',
27
- title: 'Connect your PSA',
28
- description: 'Integrate your ticketing system.',
29
- onAction: async () => { /* trigger integration flow */ },
30
- checkComplete: async () => await checkPsaConnected(),
39
+ title: 'Connect PSA',
40
+ description: 'Link your ticketing system.',
41
+ onAction: async () => router.push('/integrations'),
42
+ checkComplete: async () => !!(await fetchPsaStatus()),
43
+ onSkip: () => console.log('PSA skipped'),
31
44
  },
32
45
  ]
33
46
 
34
- <OnboardingWalkthrough
35
- steps={steps}
36
- storageKey="my-app-onboarding"
37
- completionStatus={{ 'connect-psa': true }}
38
- isLoadingCompletion={false}
39
- onDismiss={() => console.log('dismissed')}
40
- />
47
+ function Dashboard() {
48
+ const { completionStatus, isLoading } = useOnboardingCompletion()
49
+
50
+ return (
51
+ <OnboardingWalkthrough
52
+ steps={steps}
53
+ completionStatus={completionStatus}
54
+ isLoadingCompletion={isLoading}
55
+ onDismiss={() => console.log('dismissed')}
56
+ />
57
+ )
58
+ }
41
59
  ```
42
60
 
43
- ## Behavior Notes
44
-
45
- - **Auto-sync**: When `completionStatus` prop changes, steps flagged `true` are automatically marked complete via `markMultipleComplete`, guarded by a JSON-stringified status key to avoid re-processing identical data.
46
- - **Action deduplication**: `actionInProgressRef` tracks in-flight step actions per `step.id`, silently skipping duplicate triggers.
47
- - **All hooks called unconditionally** — the `state.dismissed` early return happens *after* all hooks and refs are initialized, satisfying React's Rules of Hooks.
61
+ > **Source:** [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/onboarding-walkthrough.tsx)
@@ -1,38 +1,47 @@
1
- <!-- source-hash: b0b73e639c7dda545193a2a31fafd1ca -->
2
- Barrel export file for the **product release** UI component family, re-exporting all public components, skeletons, and related TypeScript types from the `product-release` feature directory.
1
+ <!-- source-hash: 60b9ca8b719e2a8ed7836247d6f859d9 -->
2
+ Public barrel module for the product release UI component suite, marked as a client component boundary (`"use client"`).
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `ProductReleaseCard` | Component | Card UI for displaying a product release |
9
- | `ProductReleaseCardSkeleton` | Component | Loading skeleton for `ProductReleaseCard` |
10
- | `ReleaseDetailPage` | Component | Full release detail page layout |
11
- | `ReleaseDetailSkeleton` | Component | Loading skeleton for `ReleaseDetailPage` |
12
- | `DeliveryResponse` | Type | Canonical delivery response type (sourced from `types/delivery`) |
13
- | `ProductReleaseCardProps` | Type | Props for `ProductReleaseCard` |
14
- | `ReleaseDetailPageProps` | Type | Props for `ReleaseDetailPage` |
15
- | `VideoDisplaySectionProps` | Type | Props for the video display section slot |
16
- | `MarkdownRendererProps` | Type | Props for the markdown renderer slot |
17
- | `RoadmapItem` | Type | Individual roadmap item type |
18
-
19
- > **Note:** `RoadmapSectionProps` and `DeliverySectionProps` are intentionally **not** re-exported here to avoid TS2308 ambiguous re-export conflicts with the concrete `<RoadmapGrid>` / `<DeliverySection>` components. Import them directly from the `release-detail-page` module if needed.
6
+ | Export | Description |
7
+ |---|---|
8
+ | `ProductReleaseCard` | Card component for displaying a single product release |
9
+ | `ProductReleaseCardSkeleton` | Loading skeleton for `ProductReleaseCard` |
10
+ | `ProductReleasesView` | List/grid view rendering multiple release cards |
11
+ | `ReleaseDetailPage` | Full detail page for a single release, with injectable component slots |
12
+ | `ReleaseDetailSkeleton` | Loading skeleton for `ReleaseDetailPage` |
13
+ | `DeliveryResponse` | Re-exported type from the canonical types module for downstream consumers |
14
+
15
+ ### Notable Type Exports
16
+
17
+ - `ProductReleaseCardProps`, `ProductReleaseCardSkeletonProps`, `ProductReleasesViewProps`
18
+ - `ProductReleaseCardExtras` — extra data shape passed into release cards
19
+ - `ReleaseDetailPageProps`, `VideoDisplaySectionProps`, `MarkdownRendererProps`, `RoadmapItem`
20
+
21
+ > **⚠️ Intentional Omissions:** `RoadmapSectionProps` and `DeliverySectionProps` are **not** re-exported here. They conflict with identically-named prop types on `<RoadmapGrid>` and `<DeliverySection>` causing `TS2308` ambiguous re-export errors at the top-level barrel. Import them directly:
22
+
23
+ ```typescript
24
+ import type { RoadmapSectionProps } from '@flamingo-stack/openframe-frontend-core/components/shared/product-release/release-detail-page'
25
+ ```
20
26
 
21
27
  ## Usage Example
22
28
 
23
29
  ```typescript
24
30
  import {
25
- ProductReleaseCard,
26
- ProductReleaseCardSkeleton,
31
+ ProductReleasesView,
27
32
  ReleaseDetailPage,
28
33
  ReleaseDetailSkeleton,
29
- type ReleaseDetailPageProps,
34
+ type ProductReleaseCardExtras,
30
35
  type DeliveryResponse,
31
36
  } from '@flamingo-stack/openframe-frontend-core/components/shared/product-release'
32
37
 
33
- // Render a release card
34
- <ProductReleaseCard title="v2.1.0" date="2025-06-01" />
38
+ // Render a list of releases
39
+ <ProductReleasesView releases={releases} />
35
40
 
36
- // Deep import for internal slot types
37
- import type { RoadmapSectionProps } from '@flamingo-stack/openframe-frontend-core/components/shared/product-release/release-detail-page'
38
- ```
41
+ // Render a full release detail page with a suspense fallback
42
+ <Suspense fallback={<ReleaseDetailSkeleton />}>
43
+ <ReleaseDetailPage release={release} />
44
+ </Suspense>
45
+ ```
46
+
47
+ **Source:** [`components/shared/product-release/index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/components/shared/product-release/index.ts)
@@ -1,44 +1,38 @@
1
- <!-- source-hash: 35eb2dca49e5c1311632535a7cffdf8b -->
2
- Pixel-perfect loading skeleton for `ProductReleaseCard` that prevents layout shift by mirroring the loaded card's exact dimensions in both `lg` and `sm` variants.
1
+ <!-- source-hash: c2128eeaf09cf16a3c77d41f2e6d9b86 -->
2
+ Animated loading skeleton for `ProductReleaseCard` that prevents layout shift by precisely matching the loaded card's dimensions in both `lg` and `sm` size variants.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `ProductReleaseCardSkeleton`
7
-
8
- A client-side animated pulse skeleton component with two size branches:
9
-
10
- | Branch | Matches | Structure |
11
- |--------|---------|-----------|
12
- | `lg` | `ProductReleaseCard size="lg"` | Hero image + version pill + title + summary + changelog strip + 4-cell metadata grid |
13
- | `sm` | `ProductReleaseCard size="sm"` | Thumbnail + title row + date row + summary row |
14
-
15
6
  ### `ProductReleaseCardSkeletonProps`
16
7
 
17
8
  | Prop | Type | Default | Description |
18
9
  |------|------|---------|-------------|
19
10
  | `className` | `string` | — | Additional CSS classes |
20
- | `size` | `'lg' \| 'sm'` | `'lg'` | Must match the target card's `size` prop to prevent layout shift on resolve |
11
+ | `size` | `'lg' \| 'sm'` | `'lg'` | Must match the target `ProductReleaseCard` size prop |
12
+
13
+ ### `ProductReleaseCardSkeleton`
14
+
15
+ The exported component renders two structurally distinct skeletons:
16
+
17
+ - **`size='lg'`** — Full card with hero section (16:9 image + version pill + title + summary), a changelog strip placeholder, and a 4-cell metadata grid (3 stat cells + 1 author avatar cell). All inner element heights are pinned to match the resolved card's `min-h` reservations.
18
+ - **`size='sm'`** — Compact inline card (used in chat contexts) with a square thumbnail, title row with version pill, date row, and summary row. Uses `<span>` elements to remain valid inside inline containers.
19
+
20
+ Both branches apply `animate-pulse` and throw defensively if an unsupported `size` value is passed at runtime.
21
21
 
22
22
  ## Usage Example
23
23
 
24
24
  ```typescript
25
25
  import { ProductReleaseCardSkeleton } from './product-release-card-skeleton'
26
26
 
27
- // Full release card placeholder (e.g. in ReleasesList grid)
28
- function ReleasesListLoading() {
29
- return (
30
- <div className="grid grid-cols-1 gap-4">
31
- {Array.from({ length: 5 }).map((_, i) => (
32
- <ProductReleaseCardSkeleton key={i} size="lg" />
33
- ))}
34
- </div>
35
- )
36
- }
37
-
38
- // Compact inline placeholder (e.g. inside a chat message)
39
- function ChatReleaseLoading() {
40
- return <ProductReleaseCardSkeleton size="sm" />
41
- }
27
+ // Full card — use while fetching release data for the main releases list
28
+ <ProductReleaseCardSkeleton size="lg" />
29
+
30
+ // Compact card — use while fetching release data in a chat message slot
31
+ <ProductReleaseCardSkeleton size="sm" className="mt-2" />
42
32
  ```
43
33
 
44
- > **Important:** Always pass the same `size` value as the `ProductReleaseCard` it replaces. Mismatched sizes cause measurable layout shift when the loaded card resolves, since placeholder heights are calibrated to match each variant's exact rendered metrics.
34
+ > **Layout shift note:** The `size` prop on this skeleton **must** match the `size` prop passed to the resolved `ProductReleaseCard`. Mismatching causes a measurable reflow when the skeleton is replaced because `lg` and `sm` produce different pixel heights.
35
+
36
+ ## Source
37
+
38
+ [`product-release-card-skeleton.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/product-release-card-skeleton.tsx)
@@ -1,56 +1,55 @@
1
- <!-- source-hash: 46c409eeb72da32ccf9384919a0c8ba0 -->
2
- React card component for displaying product release information in two density variants (`lg` and `sm`), used across OpenFrame's releases catalog, Flamingo's DevCenter, and related-content rails.
1
+ <!-- source-hash: 2ffaa5e5c7023bbeed7803f954f2f327 -->
2
+ React component that renders product release cards in two density variants (`lg` and `sm`) for displaying software release information across OpenFrame and Flamingo MSP platform surfaces.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### Types & Interfaces
7
7
 
8
- | Export | Description |
9
- |--------|-------------|
10
- | `ProductReleaseCardSize` | Union type `'lg' \| 'sm'` controlling card density |
11
- | `ProductReleaseCardAnchorProps` | Structural `<a>` prop bundle for consumer-controlled routing (href, target, rel, onClick) |
12
- | `ProductReleaseCardProps` | Full prop surface for the card component |
8
+ - **`ProductReleaseCardSize`** — Union type `'lg' | 'sm'` controlling card density
9
+ - **`ProductReleaseCardAnchorProps`** — Structural `<a>` prop bundle (`href`, `target`, `rel`, `onClick`) for consumer-composed navigation; shape-compatible with the hub's `useNavLink` hook
10
+ - **`ProductReleaseCardProps`** Full prop surface including title, summary, version, changelog counts, author, cover image, and release metadata
13
11
 
14
12
  ### `ProductReleaseCard`
15
13
 
16
- The primary export. Renders in two layout modes:
14
+ Main export. Renders one of two layouts based on the `size` prop (defaults to `'lg'`):
17
15
 
18
- - **`lg` (default):** Three-zone rich card — hero (16:9 cover + version pill + title + summary), changelog stats strip (features/fixes/improvements/breaking counts), and a 4-cell metadata grid (Type · Status · Released · Author). Author cell falls back to an `EMPTY_AUTHOR_PLACEHOLDER` shape to prevent skeleton reflow.
19
- - **`sm`:** Compact horizontal layout (~80px tall) for chat messages and tight inline surfaces. Replaces `<h3>` with `<span>`, uses a `<span>`-anchored link wrapper, and renders: 56px icon + 1-line title + version/date meta.
16
+ - **`lg`** Three-zone layout: hero (16:9 cover image + version pill + title + summary), changelog stats strip (feature/fix/improvement/breaking counts), and a fixed 4-cell metadata grid (Type · Status · Released · Author). Renders as an `<InteractiveCard>` with hover/focus states.
17
+ - **`sm`** Compact horizontal layout (~80px tall) for inline chat and tight surfaces. Uses `<span>` elements instead of block-level tags (safe inside markdown `<p>`), 56px icon, 1-line title, and condensed meta (version · date).
18
+
19
+ Navigation is handled via `anchorProps` (preferred) or legacy `onClick` for back-compat.
20
20
 
21
21
  ## Usage Example
22
22
 
23
23
  ```typescript
24
- import { ProductReleaseCard } from './product-release-card'
24
+ import { ProductReleaseCard } from '@openframe/ui'
25
25
 
26
26
  // Large catalog card with full metadata
27
27
  <ProductReleaseCard
28
28
  size="lg"
29
- title="OpenFrame 2.1.0"
30
- summary="Unified AI-driven interface improvements and new automation hooks."
31
- version="2.1.0"
32
- formattedDate="May 2026"
33
- coverImage="https://cdn.flamingo.run/releases/2.1.0.jpg"
29
+ title="OpenFrame 2.4.0"
30
+ summary="Adds AI-powered ticket triage and bulk automation rules."
31
+ version="2.4.0"
32
+ formattedDate="Jun 12, 2025"
33
+ coverImage="https://cdn.example.com/releases/2.4.0-cover.png"
34
34
  releaseType="minor"
35
35
  releaseStatus="stable"
36
36
  releaseTypeBadgeColor="success"
37
- changelogCounts={{ features: 8, fixes: 5, improvements: 3, breaking: 0 }}
38
- author={{ full_name: "Jane Doe", avatar_url: null, job_title: "Engineer" }}
39
- anchorProps={{ href: "/releases/2.1.0", onClick: handleNav }}
37
+ changelogCounts={{ features: 8, fixes: 14, improvements: 5, breaking: 0 }}
38
+ author={{ full_name: "Ada Lovelace", avatar_url: "/avatars/ada.png", job_title: "Staff Engineer" }}
39
+ anchorProps={{
40
+ href: "/releases/2.4.0",
41
+ onClick: (e) => router.push("/releases/2.4.0"),
42
+ }}
40
43
  />
41
44
 
42
- // Compact inline card (e.g., inside a chat message)
45
+ // Compact inline card for chat surfaces
43
46
  <ProductReleaseCard
44
47
  size="sm"
45
- title="OpenFrame 2.1.0"
46
- version="2.1.0"
47
- formattedDate="May 2026"
48
- anchorProps={{ href: "/releases/2.1.0" }}
48
+ title="OpenFrame 2.4.0"
49
+ version="2.4.0"
50
+ formattedDate="Jun 12, 2025"
51
+ anchorProps={{ href: "/releases/2.4.0" }}
49
52
  />
50
53
  ```
51
54
 
52
- ## Notes
53
-
54
- - **Routing:** Prefer `anchorProps` (from the hub's `useNavLink`) over the legacy `onClick` prop. When both are provided, `anchorProps` wins.
55
- - **Author cell:** Always rendered using `effectiveAuthor` (falls back to `{ full_name: '—', avatar_url: null, job_title: 'Unknown' }`) to maintain a fixed 4-column grid and prevent skeleton reflow.
56
- - **Inline duplication policy:** The `lg` metadata grid intentionally duplicates the hub's `<EntityAuthorCard>` visuals — the OSS lib carries zero hub imports by design. Keep both in lockstep when cell padding, divider styles, or avatar sizes change.
55
+ **Source:** [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/product-release-card.tsx)
@@ -0,0 +1,49 @@
1
+ <!-- source-hash: 12df6264efd81d55770e0ad3e4556641 -->
2
+ Self-contained list view for product releases that handles fetching, filtering, pagination, and card rendering. Designed to be embedded with minimal configuration — the host provides an API endpoint and base path; all URL param reading, data fetching, and state management are handled internally.
3
+
4
+ ## Key Components
5
+
6
+ ### `ProductReleasesView` (default export)
7
+ Main list surface. Reads search/status/page URL params written by the section chrome, fetches from the configured endpoint via `useSelfFetch`, and renders a stable slot-count layout to prevent height shifts during loading.
8
+
9
+ ### `ReleaseRow`
10
+ Internal per-release component that isolates per-item hook calls (`useChatRuntime`, `useEntityCardLink`, `useRouter`) outside the parent `.map()` loop to comply with Rules of Hooks. Resolves the card's navigation href via `resolveContentHref` and delegates navigation to `executeNavigationImperative`.
11
+
12
+ ### `ProductReleaseCardExtras`
13
+ Exported type describing the per-release prop bundle the `buildCardProps` callback must return — all `ProductReleaseCardProps` fields except those the view supplies directly (`title`, `summary`, `version`, `size`, `anchorProps`, `onClick`, `className`).
14
+
15
+ ## Usage Example
16
+
17
+ ```typescript
18
+ // Minimal — uses all defaults (endpoint, basePath, rich card builder)
19
+ <ProductReleasesView />
20
+
21
+ // Custom endpoint + SSR hydration
22
+ <ProductReleasesView
23
+ endpoint="/api/platform/releases"
24
+ initialData={serverFetchedData}
25
+ itemsPerPage={10}
26
+ basePath="/updates"
27
+ />
28
+
29
+ // Custom card props builder
30
+ <ProductReleasesView
31
+ buildCardProps={(release) => ({
32
+ formattedDate: formatDate(release.released_at),
33
+ releaseType: release.type,
34
+ })}
35
+ />
36
+ ```
37
+
38
+ ## Configuration
39
+
40
+ | Prop | Default | Description |
41
+ |---|---|---|
42
+ | `endpoint` | `/api/releases` | GET endpoint; view appends `limit`, `offset`, `search`, `release_status` |
43
+ | `initialData` | — | SSR hydration payload; skips initial client fetch |
44
+ | `itemsPerPage` | `5` | Fixed slot count for stable layout |
45
+ | `basePath` | `/releases` | Fallback href prefix when `composeContentUrl` is not wired |
46
+ | `buildCardProps` | `buildProductReleaseCardProps` | Derive per-card metadata from a release object |
47
+ | `searchParamKey` | `'search'` | Must match the URL param written by the section chrome |
48
+ | `statusParamKey` | `'release_status'` | Status filter URL param key |
49
+ | `pageParamKey` | `'page'` | Pagination URL param key |