@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,60 +1,52 @@
1
- <!-- source-hash: 8d3da3a7c730a952779ad08cf7640368 -->
2
- Shared row chrome components for `DevSectionPage` list surfaces (delivery, tickets, etc.), providing a consistent two-column layout with fixed min-height blocks for vertical alignment across grid rows, plus a thread-style conversation variant for ticket detail drawers.
1
+ <!-- source-hash: 0c00c0d0fde761ce69fdbcdde8644ab9 -->
2
+ Shared layout component for `DevSectionPage` list rows, providing a consistent two-column structure (title/subtitle/description left, badges right) with matching skeleton states to prevent layout shift during loading.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `DevCardRowContent` | Component | Two-column card row: left (title/subtitle/description) + right (caller-supplied badges) |
9
- | `DevCardRowSkeleton` | Component | Loading skeleton mirroring `DevCardRowContent` min-heights |
10
- | `ConversationCardRow` | Component | Thread-style message row with avatar, author header, body, and attachments |
11
- | `ConversationCardRowSkeleton` | Component | Loading skeleton for a single `ConversationCardRow` |
12
- | `ConversationCardRowSkeletonList` | Component | Multi-row skeleton list (default: 2 rows) for conversation timeline loading state |
13
- | `DevCardRowContentProps` | Interface | Props for `DevCardRowContent` |
14
- | `ConversationCardRowProps` | Interface | Props for `ConversationCardRow` |
7
+ |---|---|---|
8
+ | `DevCardRowContent` | Component | Main row layout with fixed min-height blocks for title, subtitle, and description columns |
9
+ | `DevCardRowContentProps` | Interface | Props contract for `DevCardRowContent` |
10
+ | `DevCardRowSkeleton` | Component | Single animated skeleton row mirroring `DevCardRowContent` min-heights |
11
+ | `DevCardRowSkeletonList` | Component | Bordered card wrapping `n` skeleton rows (default: 5); used by delivery and tickets list shells |
15
12
 
16
13
  ## Usage Example
17
14
 
18
15
  ```typescript
19
- // Static delivery card row (wrapped in a div)
20
- <div className="border-b border-ods-border p-[12px] md:p-[16px]">
16
+ // Static row (e.g. delivery surface)
17
+ <div>
21
18
  <DevCardRowContent
22
- title="Deploy v2.4.1 to production"
19
+ title="Deploy to production"
23
20
  subtitle="UPDATED today, #4271, Code review"
24
- description="Bumps the API gateway to support new webhook endpoints."
21
+ description="Automated deployment pipeline triggered by merge to main."
22
+ emptyDescription="No deployment notes available."
25
23
  rightBadges={
26
24
  <>
27
25
  <StatusBadge status="in-progress" />
28
- <PriorityBadge priority="high" />
26
+ <EnvironmentBadge env="production" />
29
27
  </>
30
28
  }
31
29
  />
32
30
  </div>
33
31
 
34
- // Clickable ticket card row (wrapped in a button)
35
- <button onClick={openTicket}>
32
+ // Clickable row (e.g. tickets surface)
33
+ <button onClick={handleSelect}>
36
34
  <DevCardRowContent
37
- title="Login page throws 502 on Safari"
38
- subtitle="OPEN · #1042 · Bug"
39
- description=""
40
- emptyDescription="No description provided for this ticket."
41
- rightBadges={<SeverityBadge level="critical" />}
35
+ title="Login page broken on Safari"
36
+ subtitle="OPEN, #1042, Bug"
37
+ description="Users on Safari 17 cannot submit the login form."
38
+ rightBadges={<PriorityBadge level="high" />}
42
39
  />
43
40
  </button>
44
41
 
45
- // Conversation thread row
46
- <ConversationCardRow
47
- author="Jane Smith"
48
- role="Resolution"
49
- avatarSrc="https://cdn.example.com/avatars/jane.png"
50
- timestamp="2026-01-15T14:32:00Z"
51
- body="The issue has been resolved by restarting the gateway service."
52
- attachments={[{ name: "fix-log.txt", url: "/files/fix-log.txt" }]}
53
- variant="support"
54
- />
55
-
56
- // Loading state
57
- <ConversationCardRowSkeletonList rows={3} />
42
+ // Loading state — swap in before data arrives
43
+ <DevCardRowSkeletonList rows={5} />
58
44
  ```
59
45
 
60
- > **Design note:** `DevCardRowContent` is layout-only — no click behavior is baked in. Wrap in `<div>` for static rows or `<button>` for interactive ones. `rightBadges` accepts any `ReactNode`, keeping badge composition flexible per surface.
46
+ ## Notes
47
+
48
+ - `rightBadges` accepts any `ReactNode` — the caller controls badge count and type; no badge logic is embedded here.
49
+ - Ticket conversation rows are intentionally excluded; they use the shared `<ChatMessageRow>` component (`components/chat/chat-message-row.tsx`).
50
+ - Skeleton min-heights mirror content min-heights exactly to prevent reflow on data load.
51
+
52
+ **Source:** [`dev-card-row.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/dev-card-row.tsx)
@@ -1,48 +1,59 @@
1
- <!-- source-hash: 0de96ea9df1ea6a28df1ff674cfc5e14 -->
2
- Full-page wrapper component for dev-center sections (`/roadmap`, `/bug-fixes-and-enhancements`, `/releases`) in the OpenFrame platform. It composes `PageShell → PageLayout → DevSectionView` to deliver a consistent hero icon, search, and filter pill layout across all dev sections.
1
+ <!-- source-hash: 74cc123810f84748ea66fdf5666e6ad6 -->
2
+ Full-page wrapper component for dev-center sections (`/roadmap`, `/bug-fixes-and-enhancements`, `/releases`) in the OpenFrame lib, composing `PageShell → PageLayout → DevSectionView list body` into a single reusable factory.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `DevSectionPage` | Component | Main page wrapper factory for any `OpenframeDevSectionKey` section |
9
- | `DevSectionPageProps` | Interface | Props contract for `sectionKey`, `children`, `preControls`, and `backButton` |
10
- | `SECTION_HERO_ICON_CLASS` | Constant | Tailwind class applied uniformly to all section hero icons |
6
+ ### `DevSectionPage` (default export)
11
7
 
12
- ### Props
8
+ The primary component. Resolves section metadata from `OPENFRAME_DEV_SECTIONS` by `sectionKey`, wires the back-button navigation, and renders the page hierarchy.
13
9
 
14
- | Prop | Type | Description |
15
- |------|------|-------------|
16
- | `sectionKey` | `OpenframeDevSectionKey` | Looks up section metadata from `OPENFRAME_DEV_SECTIONS` |
17
- | `children` | `ReactNode` | Page-specific list body (e.g. `<RoadmapList />`) |
18
- | `preControls` | `ReactNode` (optional) | Slot rendered between the hero and search/filter controls |
19
- | `backButton` | `{ label?, href? } \| false` (optional) | Configures or hides the back button; defaults to `Back to home → /` |
10
+ ### `DevSectionPageProps`
11
+
12
+ | Prop | Type | Default | Description |
13
+ |---|---|---|---|
14
+ | `sectionKey` | `OpenframeDevSectionKey` | required | Key into `OPENFRAME_DEV_SECTIONS` config |
15
+ | `children` | `ReactNode` | required | List body (e.g. `<RoadmapList />`) |
16
+ | `preControls` | `ReactNode` | — | Slot rendered between hero and search/filter controls |
17
+ | `backButton` | `{ label?, href? } \| false` | `{ label: 'Back to home', href: '/' }` | Back-button config; `false` hides it |
18
+ | `title` | `string` | section hero title | Override hero title for non-OpenFrame embeds |
19
+ | `subtitle` | `string` | section hero description | Override hero subtitle |
20
+ | `shell` | `boolean` | `true` | Wraps in `<PageShell>` (`<main>`); set `false` when host layout already provides the container |
20
21
 
21
22
  ## Usage Example
22
23
 
23
24
  ```typescript
24
- // Adding a new section page is a single mount:
25
- import { DevSectionPage } from '@/components/dev-center/dev-section-page';
25
+ // Standard standalone page (e.g. app/roadmap/page.tsx)
26
+ import { DevSectionPage } from '@/components/dev-sections/dev-section-page';
27
+ import { RoadmapList } from '@/components/roadmap/roadmap-list';
26
28
 
27
29
  export default function RoadmapPage() {
28
30
  return (
29
- <DevSectionPage
30
- sectionKey="roadmap"
31
- backButton={{ label: 'Back to home', href: '/' }}
32
- >
31
+ <DevSectionPage sectionKey="roadmap">
33
32
  <RoadmapList />
34
33
  </DevSectionPage>
35
34
  );
36
35
  }
37
36
 
38
- // With a preControls slot (e.g. Help Center ticket form above filters):
37
+ // Embedded inside a host app that already provides <main>
39
38
  <DevSectionPage
40
- sectionKey="help-center"
39
+ sectionKey="releases"
40
+ shell={false}
41
+ backButton={{ label: 'Back to dashboard', href: '/dashboard' }}
41
42
  preControls={<OpenTicketForm />}
42
- backButton={false} // hide back button
43
43
  >
44
- <TicketList />
44
+ <ReleasesList />
45
+ </DevSectionPage>
46
+
47
+ // Hide back button entirely
48
+ <DevSectionPage sectionKey="bug-fixes-and-enhancements" backButton={false}>
49
+ <BugFixList />
45
50
  </DevSectionPage>
46
51
  ```
47
52
 
48
- > **Extensibility:** Adding a new dev-center section requires only one entry in `OPENFRAME_DEV_SECTIONS` plus a single page file mounting `DevSectionPage` with the new key. Design system changes to `BackButton` or `TitleBlock` propagate automatically via the shared `PageLayout`.
53
+ ## Adding a New Section
54
+
55
+ Register one entry in `OPENFRAME_DEV_SECTIONS` with the new key, then create a single-line page file mounting `DevSectionPage` with that key — no changes to this component required.
56
+
57
+ ---
58
+
59
+ **Source:** [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib)
@@ -1,43 +1,53 @@
1
- <!-- source-hash: 508a1c69dd2d082f4bed6cb98c63998b -->
2
- Canonical chrome wrapper for dev-center sections (Roadmap, Delivery, Releases), handling title rendering, inline search, filter pills, and URL-param wiring in both tabbed and full-page layout modes.
1
+ <!-- source-hash: 688a1a5f1e7d29524e457ab234690ffe -->
2
+ Canonical chrome wrapper for dev-center sections (Roadmap, Delivery, Releases) that owns title rendering, inline search input, filter pill row, and URL parameter wiring. Designed for dual-mode use: tabbed compact headings or full-page hero layouts.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `DevSectionView`
7
- The single shared layout shell consumed by every dev-center section page. Supports two display modes:
8
- - **Hero mode** — full-page layout with icon, `<h1>`, and description (pass `hero` prop)
9
- - **Compact mode** — tab-context `<h2>` heading only (omit `hero`)
10
7
 
11
- ### `DevSectionViewProps`
8
+ The primary export. A client component that renders section-level chrome and delegates list rendering to `children`.
9
+
10
+ **Props (`DevSectionViewProps`):**
11
+
12
12
  | Prop | Type | Description |
13
- |------|------|-------------|
14
- | `sectionKey` | `OpenframeDevSectionKey` | Registry key driving title, search, and filter config |
15
- | `hero` | `{ icon: ReactNode, description: string }` | Enables full-page hero rendering |
13
+ |---|---|---|
14
+ | `sectionKey` | `OpenframeDevSectionKey` | Drives title, search, and filter config via the registry |
15
+ | `hero` | `{ icon, title?, description }` | Enables full-page hero mode with icon + h1 + description |
16
16
  | `preControls` | `ReactNode` | Optional slot between hero and search/filter controls |
17
- | `children` | `ReactNode` | Section-specific list body; reads URL params set by this component |
17
+ | `children` | `ReactNode` | List body; reads URL params set by this component |
18
+ | `showHeading` | `boolean` | Defaults `true`; pass `false` when host renders the title elsewhere |
18
19
 
19
- ### URL Contract
20
- - Search commits to `?<paramKey>=...` on **Enter only** (not every keystroke)
21
- - Filter changes are applied immediately via `router.replace` with `scroll: false`
22
- - Default filter values are omitted from the URL (cleaned via `params.delete`)
23
- - `searchValue` is lazy-initialized from URL params to prevent stale flash on tab switch
20
+ **Internal behavior:**
21
+
22
+ - Search input is **controlled** commits to URL only on Enter (not every keystroke), preventing excessive navigation events
23
+ - Filter changes write immediately to URL params via `router.replace` with `scroll: false`
24
+ - Default filter value removes the param from the URL entirely (clean URLs)
25
+ - `useEffect` syncs controlled search state from URL on param changes (e.g., tab switches)
24
26
 
25
27
  ## Usage Example
26
28
 
27
29
  ```typescript
28
- // Hero (full-page) mode
30
+ // Full-page hero mode (e.g. /roadmap route)
29
31
  <DevSectionView
30
32
  sectionKey="roadmap"
31
- hero={{ icon: <RoadmapIcon />, description: "Track upcoming features." }}
32
- preControls={<NewTicketForm />}
33
+ hero={{
34
+ icon: <RoadmapIcon />,
35
+ title: "Product Roadmap",
36
+ description: "See what's coming next across the platform.",
37
+ }}
33
38
  >
34
39
  <RoadmapList />
35
40
  </DevSectionView>
36
41
 
37
- // Compact (tabbed) mode
38
- <DevSectionView sectionKey="releases">
39
- <ReleasesList />
42
+ // Compact tab mode (e.g. inside /roadmap-and-releases tabbed view)
43
+ <DevSectionView
44
+ sectionKey="roadmap"
45
+ showHeading={false}
46
+ >
47
+ <RoadmapList />
40
48
  </DevSectionView>
41
49
  ```
42
50
 
43
- Children read filter/search state directly from URL params via `useSearchParams()` — no prop drilling required.
51
+ ## Source
52
+
53
+ [`dev-section-view.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/dev-section-view.tsx)
@@ -0,0 +1,58 @@
1
+ <!-- source-hash: 07409d514305754ffc933394824594aa -->
2
+ A presentation-layer wrapper that connects `<SearchInput>` with `<DocSearchResultRow>` to deliver a consistent RAG-search dropdown across all doc-search surfaces (data-room sidebar, onboarding guide catalog, etc.).
3
+
4
+ ## Key Components
5
+
6
+ ### `DocSearchBar` (default export)
7
+
8
+ A controlled, stateless component that delegates data-fetching entirely to the caller's hook (`useDocSearch`, hub-side). Renders `<SearchInput>` pre-wired with the standard `<DocSearchResultRow>` so the dropdown UI stays identical across every consumer.
9
+
10
+ ### `DocSearchBarProps`
11
+
12
+ | Prop | Type | Default | Description |
13
+ |---|---|---|---|
14
+ | `placeholder` | `string` | — | Input placeholder text |
15
+ | `query` | `string` | — | Controlled query value |
16
+ | `onQueryChange` | `(value: string) => void` | — | Query change handler |
17
+ | `results` | `SearchResult[]` | — | Hook-fetched results |
18
+ | `isLoading` | `boolean` | — | Loading state |
19
+ | `onResultSelect` | `(result, modifiers?) => void` | — | Selection handler; preserves `cmd/ctrl/shift/alt` click modifiers for new-tab behavior |
20
+ | `showDropdown` | `boolean \| undefined` | `undefined` | Force dropdown open after internal navigation |
21
+ | `minQueryLength` | `number` | `2` | Minimum chars before search fires |
22
+ | `debounceMs` | `number` | `0` | Debounce delay (consumers typically debounce in the hook) |
23
+ | `className` | `string` | `"w-full"` | Root element class |
24
+ | `renderResult` | `(result, isHighlighted) => ReactNode` | `<DocSearchResultRow>` | Custom row renderer override |
25
+
26
+ ## Usage Example
27
+
28
+ ```typescript
29
+ // Minimal usage — hub hook provides data, component handles display
30
+ function DocSidebarSearch() {
31
+ const { query, setQuery, results, isLoading, handleSelect } = useDocSearch()
32
+
33
+ return (
34
+ <DocSearchBar
35
+ placeholder="Search docs..."
36
+ query={query}
37
+ onQueryChange={setQuery}
38
+ results={results}
39
+ isLoading={isLoading}
40
+ onResultSelect={handleSelect}
41
+ />
42
+ )
43
+ }
44
+
45
+ // With custom row renderer override
46
+ <DocSearchBar
47
+ {...searchProps}
48
+ renderResult={(result, isHighlighted) => (
49
+ <MyCustomRow result={result} highlighted={isHighlighted} />
50
+ )}
51
+ />
52
+ ```
53
+
54
+ ## Design Notes
55
+
56
+ The hook (`useDocSearch`) intentionally lives hub-side — it depends on hub-only context (`useDocNavigation`, the RAG-table-config registry, `decideNewTab`). This component accepts hook output as plain props, keeping both consumers to ~5 lines while the dropdown chrome stays canonical.
57
+
58
+ **Source:** [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/doc-search-bar.tsx)
@@ -0,0 +1,50 @@
1
+ <!-- source-hash: fcada161400f637c1d8ff032c7fc20dd -->
2
+ Renders a single search result row inside `<SearchInput>` dropdowns, providing a consistent visual layout for all doc-search surfaces (data-room sidebar, onboarding-guide catalog, etc.).
3
+
4
+ ## Key Components
5
+
6
+ ### Interfaces
7
+
8
+ - **`DocSearchResultRowEntry`** — Minimal result shape; compatible with any `useDocSearch` hook result exposing `{ title?, path?, metadata? }`.
9
+ - **`DocSearchResultRowProps`** — Props for the row: a `DocSearchResultRowEntry` and a boolean `isHighlighted` flag.
10
+
11
+ ### Component
12
+
13
+ - **`DocSearchResultRow`** — Renders a flex row with:
14
+ - A source icon resolved via `resolveSourceIcon()` (same registry used by inline chat-card refs, preventing cross-surface icon drift).
15
+ - A truncating title/path label styled with `text-ods-accent` when highlighted.
16
+ - An optional relative path subtitle (hidden for group entries or single-segment paths), formatted via `formatRelativePath()`.
17
+
18
+ ## Usage Example
19
+
20
+ ```typescript
21
+ import { DocSearchResultRow } from './doc-search-result-row'
22
+
23
+ // Inside a SearchInput dropdown list:
24
+ results.map((result, index) => (
25
+ <DocSearchResultRow
26
+ key={result.path}
27
+ result={result}
28
+ isHighlighted={index === highlightedIndex}
29
+ />
30
+ ))
31
+
32
+ // Result shape — satisfied by useDocSearch hook output:
33
+ const result = {
34
+ title: 'Getting Started Guide',
35
+ path: 'onboarding/getting-started',
36
+ metadata: {
37
+ documentType: 'onboarding-guide',
38
+ sourceRepo: 'internal-docs',
39
+ isGroup: false,
40
+ },
41
+ }
42
+ ```
43
+
44
+ ## Notes
45
+
46
+ - **Single source of truth** — centralises row appearance so all search dropdowns are visually identical.
47
+ - Icon resolution is shared with the chat-card ref system via `resolveSourceIcon()`, ensuring glyph consistency (e.g. `<GraduationCap>` for onboarding guides) across every surface.
48
+ - Group entries (`metadata.isGroup === true`) suppress the path subtitle.
49
+
50
+ **Source:** [`doc-search-result-row.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/doc-search-result-row.tsx)
@@ -0,0 +1,30 @@
1
+ <!-- source-hash: ab6e8805ed4afb72f4daaf8533fb546d -->
2
+ Formats a full document path into a human-readable breadcrumb trail, showing only parent folder segments (excluding the filename).
3
+
4
+ ## Key Components
5
+
6
+ - **`formatRelativePath(fullPath: string): string`** — Strips the `.md` extension, splits on `/`, drops the last segment (filename), then capitalizes and hyphen-decodes each folder name before joining with ` / `.
7
+
8
+ ## Usage Example
9
+
10
+ ```typescript
11
+ import { formatRelativePath } from './format-relative-path'
12
+
13
+ formatRelativePath('openframe-oss-tenant/architecture/api-controllers.md')
14
+ // → 'Openframe oss tenant / Architecture'
15
+
16
+ formatRelativePath('getting-started.md')
17
+ // → 'Getting started'
18
+
19
+ formatRelativePath('')
20
+ // → ''
21
+ ```
22
+
23
+ ## Behavior Notes
24
+
25
+ | Input | Output |
26
+ |---|---|
27
+ | Multi-segment path | Parent folders only, title-cased, hyphens → spaces |
28
+ | Single segment (no `/`) | That segment formatted (no parent to strip) |
29
+ | Empty string | Returns `''` immediately |
30
+ | `.md` extension | Stripped before processing |
@@ -0,0 +1,46 @@
1
+ <!-- source-hash: 1a3cdf4f2baf4c14c3068d549bbbc83a -->
2
+ Public API barrel file for the `doc-search` package, re-exporting all components, hooks, utilities, and types needed to embed document search functionality in consuming applications.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Source | Description |
7
+ |---|---|---|
8
+ | `DocSearchBar` / `DocSearchBarProps` | `./doc-search-bar` | Search input component |
9
+ | `DocSearchResultRow` / props + entry types | `./doc-search-result-row` | Renders a single search result |
10
+ | `formatRelativePath` | `./format-relative-path` | Path formatting utility |
11
+ | `useDocSearch` / `UseDocSearchConfig` | `./use-doc-search` | Debounced fetch + result navigation hook |
12
+ | `resolveSearchResultAction` / `SearchResultAction` | `./resolve-search-result-action` | Determines the action for a given result |
13
+ | `mapDocSearchResults` | `./map-doc-search-results` | Transforms raw API results into UI-ready shape |
14
+ | `DocSearchResult` | `./types` | Shared result type |
15
+
16
+ ## Usage Example
17
+
18
+ ```typescript
19
+ import {
20
+ DocSearchBar,
21
+ DocSearchResultRow,
22
+ useDocSearch,
23
+ type UseDocSearchConfig,
24
+ type DocSearchResult,
25
+ } from '@openframe/doc-search'
26
+
27
+ const config: UseDocSearchConfig = {
28
+ endpoint: '/api/docs/search',
29
+ debounceMs: 300,
30
+ }
31
+
32
+ function MySearchPanel() {
33
+ const { query, setQuery, results, navigate } = useDocSearch(config)
34
+
35
+ return (
36
+ <>
37
+ <DocSearchBar query={query} onChange={setQuery} />
38
+ {results.map((result: DocSearchResult) => (
39
+ <DocSearchResultRow key={result.id} entry={result} onSelect={navigate} />
40
+ ))}
41
+ </>
42
+ )
43
+ }
44
+ ```
45
+
46
+ > **Note for embedders:** `useDocSearch` bundles the debounced fetch and result navigation logic previously in `hub/hooks/use-docs.ts`, so you do not need to re-implement it when mounting `DocSearchBar` outside the hub.
@@ -0,0 +1,44 @@
1
+ <!-- source-hash: 0432b27945c1f7d64624ec15662b0110 -->
2
+ Transforms raw RAG `/api/docs/search` API results into typed `SearchResult` rows for the `<DocSearchBar>` dropdown, collapsing multiple financial entity-table rows into a single grouped result.
3
+
4
+ ## Key Components
5
+
6
+ ### Constants
7
+
8
+ - **`SEARCH_GROUP_REPOS`** — `Set<string>` of source repos whose rows should be collapsed into grouped results (financial tables only: cap table, KPIs, P&L, balance sheet, cash flow)
9
+ - **`ENTITY_LABELS`** — Display label map from `sourceRepo` key to human-readable string (e.g. `'financial-cap-table'` → `'Cap Table'`)
10
+
11
+ ### Exports
12
+
13
+ - **`mapDocSearchResults(docs: DocSearchResult[]): SearchResult[]`** — Pure transform function; groups financial entity rows by `sourceRepo` while preserving insertion order, then maps each entry to the dropdown's `SearchResult` shape
14
+
15
+ ## Usage Example
16
+
17
+ ```typescript
18
+ import { mapDocSearchResults } from './map-doc-search-results'
19
+
20
+ const rawResults = await fetchDocSearch(query)
21
+ const dropdownRows = mapDocSearchResults(rawResults)
22
+
23
+ // Financial table rows are collapsed:
24
+ // 12 cap-table rows → { title: "Cap Table (12 records)", metadata: { isGroup: true, items: [...] } }
25
+
26
+ // Regular docs remain individual:
27
+ // { id: '/docs/setup.md', title: 'Setup Guide', description: '...snippet...' }
28
+ ```
29
+
30
+ ## Grouping Behavior
31
+
32
+ | Source repo | Behavior |
33
+ |---|---|
34
+ | `financial-*` repos | Collapsed → single group row with record count |
35
+ | `blog-posts`, `webinars`, etc. | Individual rows (each has a unique URL) |
36
+ | All other docs | Individual rows with snippet as description |
37
+
38
+ Grouped results carry a `metadata.isGroup: true` flag and a `metadata.items` array of the collapsed records. Non-markdown individual results use `doc.name` as description instead of the snippet.
39
+
40
+ > **Note:** This is a pure transform with no side effects. Callers that need telemetry or navigation should wrap this function rather than importing hub-specific logic.
41
+
42
+ ## Source
43
+
44
+ [`map-doc-search-results.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/map-doc-search-results.ts)
@@ -0,0 +1,52 @@
1
+ <!-- source-hash: f287f0ffda0699577d87fde5f21130f1 -->
2
+ Resolves what action to take when a user selects a search result, returning one of five typed discriminated union variants for the caller to handle via a single `switch`.
3
+
4
+ ## Key Components
5
+
6
+ ### `SearchResultAction` (type)
7
+
8
+ Discriminated union with five variants:
9
+
10
+ | Kind | Payload | Triggered when |
11
+ |---|---|---|
12
+ | `navigate-same-tab` | `href: string` | External URL, same-platform navigation |
13
+ | `navigate-new-tab` | `href: string` | External URL, cross-platform navigation |
14
+ | `ask-ai` | `{ source, ref: ChatRef }` | Row has `id`, `sourceRepo`, and `documentType` |
15
+ | `route` | `path: string` | Row has only a `path` (legacy fallback) |
16
+ | `noop` | — | Nothing actionable found |
17
+
18
+ ### `resolveSearchResultAction(result, source, runtimeMode?)` (function)
19
+
20
+ Pure function — no React, no side effects, no telemetry. Evaluates `result.metadata` in priority order:
21
+
22
+ 1. **`externalUrl`** → delegates to `decideNewTab` using `targetPlatform`, `runtimeMode`, and `source` as `currentSource`
23
+ 2. **`id` + `sourceRepo` + `documentType`** → returns `ask-ai` with a `ChatRef` entity reference
24
+ 3. **`result.path`** → returns `route` for legacy path-based navigation
25
+ 4. **Fallthrough** → returns `noop`
26
+
27
+ ## Usage Example
28
+
29
+ ```typescript
30
+ import { resolveSearchResultAction } from './resolve-search-result-action'
31
+
32
+ const action = resolveSearchResultAction(searchResult, 'my-source', 'host')
33
+
34
+ switch (action.kind) {
35
+ case 'navigate-same-tab':
36
+ router.push(action.href)
37
+ break
38
+ case 'navigate-new-tab':
39
+ window.open(action.href, '_blank')
40
+ break
41
+ case 'ask-ai':
42
+ chat.openWithRef(action.detail.ref)
43
+ break
44
+ case 'route':
45
+ router.push(action.path)
46
+ break
47
+ case 'noop':
48
+ break
49
+ }
50
+ ```
51
+
52
+ > **Source:** [`resolve-search-result-action.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/resolve-search-result-action.ts) — lifted from the hub's `hooks/use-docs.ts` and extracted as a standalone pure utility.
@@ -0,0 +1,49 @@
1
+ <!-- source-hash: 537733be76caba7ce3819410ae7e37fd -->
2
+ Wire type for a single search result row returned by `/api/docs/search`, shared between the hub's RAG layer and the lib's search hook.
3
+
4
+ ## Key Components
5
+
6
+ ### `DocSearchResult` Interface
7
+
8
+ | Field | Type | Description |
9
+ |---|---|---|
10
+ | `path` | `string` | Document path identifier |
11
+ | `name` | `string` | Display name of the result |
12
+ | `type` | `'file' \| 'folder'` | Whether the result is a file or folder |
13
+ | `snippet` | `string` | Short excerpt from the matched content |
14
+ | `matchType` | `'title' \| 'content'` | Whether the match occurred in title or body |
15
+ | `documentType` | `string?` | Optional content type classification |
16
+ | `externalUrl` | `string?` | External URL when result links outside the hub |
17
+ | `targetPlatform` | `string \| null \| undefined` | Platform owning `externalUrl`; drives same-tab vs. new-tab logic via `decideNewTab` |
18
+ | `sourceRepo` | `string?` | Repository the document originates from |
19
+ | `entityId` | `string?` | Primary key value for RAG table rows; enables chat panel drill-in via `entityIdFilter` for entities with no public viewer |
20
+
21
+ ## Usage Example
22
+
23
+ ```typescript
24
+ import type { DocSearchResult } from '@openframe-oss-lib/types'
25
+
26
+ const result: DocSearchResult = {
27
+ path: '/docs/billing/cap-table',
28
+ name: 'Cap Table Overview',
29
+ type: 'file',
30
+ snippet: '...equity breakdown by shareholder...',
31
+ matchType: 'content',
32
+ documentType: 'financial',
33
+ entityId: 'row_abc123',
34
+ }
35
+
36
+ // Use entityId to open chat panel instead of navigating to a URL
37
+ if (result.entityId && !result.externalUrl) {
38
+ openChatPanel({ entityIdFilter: result.entityId })
39
+ } else {
40
+ navigate(result.externalUrl, { newTab: decideNewTab(result.targetPlatform) })
41
+ }
42
+ ```
43
+
44
+ ## Notes
45
+
46
+ - Must remain **field-for-field identical** with `lib/data/doc-search-utils.ts:DocSearchResult` in the hub — changes to either side must be mirrored.
47
+ - `entityId` is specifically intended for RAG table rows (e.g. `cap_table`, `financial-kpis`) that have no public viewer URL; consumers should prefer chat-panel drill-in over synthesizing a potentially invalid path URL.
48
+
49
+ **Source:** [`types.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/types.ts)
@@ -0,0 +1,66 @@
1
+ <!-- source-hash: ae4b7ed4a0dc9b425085be368f8c0a0e -->
2
+ Debounced RAG-powered search hook that queries `/api/docs/search` and resolves result navigation across hub, embed, and bare-embedder contexts.
3
+
4
+ ## Key Components
5
+
6
+ ### `UseDocSearchConfig`
7
+
8
+ Configuration interface with the following fields:
9
+
10
+ | Field | Type | Description |
11
+ |---|---|---|
12
+ | `source` | `string` | Discriminator forwarded as `?source=` to the search endpoint |
13
+ | `baseRoute` | `string` | Route prefix used to detect in-page swappable results |
14
+ | `onNavigate` | `(path: string) => void` | Imperative fallback navigation (e.g. `router.push`) |
15
+ | `tableIds` | `string[]` | Optional RAG table IDs to narrow the search scope |
16
+ | `onInPageSwap` | `(path: string) => boolean` | Optional callback for in-page doc-tree swaps |
17
+ | `searchEndpoint` | `string` | Endpoint override; defaults to `/api/docs/search` |
18
+
19
+ ### `useDocSearch(config)`
20
+
21
+ Returns:
22
+
23
+ | Return | Description |
24
+ |---|---|
25
+ | `query` / `setQuery` | Controlled input state |
26
+ | `results` | Mapped `SearchResult[]` from the API |
27
+ | `isLoading` | True while debounce is pending or fetch is in-flight |
28
+ | `handleResultSelect` | Click/keyboard handler resolving one of four action kinds: `navigate-same-tab`, `navigate-new-tab`, `ask-ai`, or `route` |
29
+ | `keepDropdownOpen` | Stays `true` after new-tab navigations so the user can pick another result |
30
+
31
+ ## Usage Example
32
+
33
+ ```typescript
34
+ import { useDocSearch } from './use-doc-search'
35
+ import { useRouter } from 'next/navigation'
36
+
37
+ function DocsSearchBar() {
38
+ const router = useRouter()
39
+
40
+ const { query, setQuery, results, isLoading, handleResultSelect } =
41
+ useDocSearch({
42
+ source: 'openframe',
43
+ baseRoute: '/onboarding-guides',
44
+ tableIds: ['onboarding-guides'],
45
+ onNavigate: (path) => router.push(path),
46
+ onInPageSwap: (path) => {
47
+ // Return true if handled in-page; false to fall through to router.push
48
+ return docTreeNavigate(path)
49
+ },
50
+ })
51
+
52
+ return (
53
+ <SearchInput
54
+ value={query}
55
+ onChange={setQuery}
56
+ results={results}
57
+ isLoading={isLoading}
58
+ onSelect={handleResultSelect}
59
+ />
60
+ )
61
+ }
62
+ ```
63
+
64
+ ## Navigation Resolution
65
+
66
+ The `handleResultSelect` handler respects modifier keys (`metaKey`, `ctrlKey`, `shiftKey`, middle-click) to force new-tab behavior, mirroring native anchor semantics on non-anchor rows. In `embed` mode, all same-tab results are routed through `resolveExternalNavigation` instead.