@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,28 +1,29 @@
1
- <!-- source-hash: 5014a5d76cff7f765951023b41048390 -->
2
- Reusable admin content card component that renders a cover image with edge-color fill, title, subtitle, summary, platform badges, meta info, and action buttons in a consistent card layout.
1
+ <!-- source-hash: 90ecdb57b252e70aaadc1195c206d309 -->
2
+ A reusable card component for displaying admin content items (articles, posts, resources) with a cover image, metadata, platform badges, and action slots.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `AdminContentCard`
7
- Main exported component. Renders an `<article>` card with a 3:2 aspect-ratio cover image and a flexible content body.
7
+ The primary exported component rendering a styled card with hover animations and dynamic image handling.
8
8
 
9
9
  ### `AdminContentCardProps`
10
10
  | Prop | Type | Description |
11
11
  |------|------|-------------|
12
12
  | `imageUrl` | `string \| null` | Primary cover image URL |
13
- | `placeholderUrl` | `string \| null` | Fallback image URL when `imageUrl` is missing or errors |
14
- | `title` | `string` | Required heading and image alt text |
15
- | `summary` | `string \| null` | Two-line clamped description |
13
+ | `placeholderUrl` | `string \| null` | Fallback image URL when `imageUrl` is absent or fails |
14
+ | `title` | `string` | Card heading and image alt text |
15
+ | `summary` | `string \| null` | Optional description (2-line clamp) |
16
16
  | `subtitle` | `string \| null` | Secondary line (e.g. customer name) |
17
- | `platforms` | `PlatformInfo[]` | Renders `<PlatformBadge>` chips |
18
- | `badges` | `ReactNode` | Additional status badges after platform chips |
19
- | `meta` | `ReactNode` | Date, views, or other metadata row |
20
- | `actions` | `ReactNode` | Pinned-to-bottom action buttons |
21
- | `className` | `string` | Extra Tailwind classes |
17
+ | `platforms` | `PlatformInfo[]` | Renders `PlatformBadge` entries |
18
+ | `badges` | `ReactNode` | Additional status/info badges |
19
+ | `meta` | `ReactNode` | Date, view count, or other metadata |
20
+ | `actions` | `ReactNode` | Action buttons pinned to the card footer |
21
+ | `className` | `string` | Additional CSS classes |
22
22
 
23
- ### Internal Hooks
24
- - **`useImageEdgeColor`** samples the edge color of `displayUrl` to use as the image container background, blending the cover image seamlessly.
25
- - **`useState / useEffect`** tracks `imageError` and `imageLoaded` states; resets load state on URL change to replay the fade-in.
23
+ **Image handling:**
24
+ - Falls back from `imageUrl` `placeholderUrl` plain background on error
25
+ - Shows a pulse skeleton while the image loads
26
+ - Applies `useImageEdgeColor` to fill the 3:2 image container background with the image's edge color
26
27
 
27
28
  ## Usage Example
28
29
 
@@ -30,14 +31,20 @@ Main exported component. Renders an `<article>` card with a 3:2 aspect-ratio cov
30
31
  import { AdminContentCard } from './admin-content-card'
31
32
 
32
33
  <AdminContentCard
33
- imageUrl="https://cdn.example.com/cover.png"
34
- placeholderUrl="https://cdn.example.com/og-placeholder.png"
35
- title="Quarterly Security Report"
34
+ imageUrl="https://cdn.example.com/post-cover.jpg"
35
+ placeholderUrl="https://cdn.example.com/og-placeholder.jpg"
36
+ title="Automating Patch Management with Flamingo"
36
37
  subtitle="Acme Corp"
37
- summary="Overview of vulnerabilities patched in Q2 2025."
38
- platforms={[{ id: 'azure', name: 'Azure', display_name: 'Microsoft Azure' }]}
39
- badges={<span className="badge">Published</span>}
40
- meta={<span>June 12, 2025 · 142 views</span>}
38
+ summary="A walkthrough of OpenFrame's patch automation workflows for MSPs."
39
+ platforms={[{ platform_id: 'ninja', name: 'NinjaRMM' }]}
40
+ badges={<span className="badge">Featured</span>}
41
+ meta={<span>Apr 2025 · 1.2k views</span>}
41
42
  actions={<button>Edit</button>}
42
43
  />
43
- ```
44
+ ```
45
+
46
+ ## Notes
47
+
48
+ - Uses ODS (OpenFrame Design System) tokens (`ods-border`, `ods-accent`, etc.) for theming
49
+ - Image scaling on hover via `group-hover:scale-[1.03]` requires the parent to carry Tailwind's `group` class (applied internally on `<article>`)
50
+ - View source: [`admin-content-card.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/admin-content-card.tsx)
@@ -1,52 +1,63 @@
1
- <!-- source-hash: 84fe8c9e8dffcbf0ae0ec8ff163a67e2 -->
2
- Pure presentation component for rendering blog post cards in two density modes (`default` and `sm`), with no built-in click/navigation logic — callers supply the resolved `href` and wrap with their own anchor strategy.
1
+ <!-- source-hash: c1cd88e3bedb3ff138c2d63ba69b758b -->
2
+ Pure presentation component for rendering blog post cards in three density modes: full vertical (`default`), compact horizontal (`sm`), and portrait strip (`portrait`).
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `BlogCard`
7
- Main card component supporting two layouts:
8
- - **`default`**: Full vertical card with cover image, title, summary, author avatar, date, and view count
9
- - **`sm`**: Compact horizontal card (~80px tall) designed for chat-inline rendering, showing a thumbnail, title, category, and summary
7
+ Main component that renders a `BlogPostSummary` in one of three layouts. All click/navigation logic is deferred to the caller via `href` and optional `target`/`rel` props.
8
+
9
+ | Size | Layout | Use Case |
10
+ |------|--------|----------|
11
+ | `default` | Full vertical card with cover image, title, summary, author/date footer, and view count | Blog index grids |
12
+ | `sm` | Compact horizontal (~80px) with thumbnail, title, category, summary | Chat inline rendering |
13
+ | `portrait` | Delegates to `EntityPortraitCard` | Mixed-type content rails |
14
+
15
+ **Image fallback chain:** `post.featured_image` → `placeholderUrl` (caller-resolved via `useOgPlaceholderUrl`) → `bg-ods-bg` slot background.
10
16
 
11
17
  ### `BlogCardSkeleton`
12
- Loading placeholder matching both `default` and `sm` density layouts using animated pulse styles.
18
+ Loading placeholder mirroring the shape of each density. Accepts the same `size` prop.
19
+
20
+ ## Key Props
13
21
 
14
- ### `BlogCardProps`
15
22
  | Prop | Type | Description |
16
- |---|---|---|
17
- | `post` | `BlogPostSummary` | Post data (title, image, author, etc.) |
18
- | `href` | `string` | Resolved detail URL from caller |
23
+ |------|------|-------------|
24
+ | `post` | `BlogPostSummary` | Post data |
25
+ | `href` | `string` | Resolved detail URL (caller provides) |
19
26
  | `target` | `'_blank'` | Opens in new tab (set by chat dispatch) |
20
- | `placeholderUrl` | `string \| null` | Fallback image when `featured_image` is missing |
21
- | `size` | `'default' \| 'sm'` | Card density mode |
22
- | `hasEmbeddedVideo` | `boolean` | Surfaces a "Video" badge in compact mode |
23
- | `priority` | `boolean` | Passes LCP priority hint to the cover image |
24
-
25
- **Image fallback chain:** `post.featured_image` → `placeholderUrl` → `bg-ods-bg` background slot
27
+ | `placeholderUrl` | `string \| null` | Fallback image when `featured_image` is absent |
28
+ | `size` | `'default' \| 'sm' \| 'portrait'` | Card density |
29
+ | `showTypeBadge` | `boolean` | Renders content-type chip in portrait mode |
30
+ | `hasEmbeddedVideo` | `boolean` | Shows "Video" badge in `sm` mode |
31
+ | `priority` | `boolean` | Passes Next.js `priority` to the cover `<Image>` |
26
32
 
27
33
  ## Usage Example
28
34
 
29
35
  ```typescript
30
- // Default full card caller wraps with navigation anchor
36
+ // Default vertical card (hub context)
37
+ <NavLinkAnchor href={buildContentURL(post)}>
38
+ <BlogCard
39
+ post={post}
40
+ href={buildContentURL(post)}
41
+ placeholderUrl={useOgPlaceholderUrl(post.title)}
42
+ size="default"
43
+ priority={isAboveFold}
44
+ />
45
+ </NavLinkAnchor>
46
+
47
+ // Compact card for chat inline
31
48
  <BlogCard
32
- post={blogPostSummary}
33
- href={buildContentURL(post.slug)}
34
- placeholderUrl={useOgPlaceholder(post)}
35
- size="default"
36
- priority={true}
37
- />
38
-
39
- // Compact card for chat-inline rendering
40
- <BlogCard
41
- post={blogPostSummary}
42
- href={detailUrl}
49
+ post={post}
50
+ href={resolvedUrl}
43
51
  target="_blank"
44
52
  rel="noopener noreferrer"
45
53
  size="sm"
46
- hasEmbeddedVideo={true}
47
- placeholderUrl={staticFallbackUrl}
54
+ hasEmbeddedVideo={post.has_video}
48
55
  />
49
56
 
50
- // Skeleton while loading
51
- <BlogCardSkeleton size="sm" />
52
- ```
57
+ // Skeleton during load
58
+ <BlogCardSkeleton size="default" />
59
+ ```
60
+
61
+ > **No click logic lives here.** Callers wrap with `<NavLinkAnchor>` (hub) or `<NavLinkAnchorViaRuntime>` (lib) as appropriate.
62
+
63
+ **Source:** [`blog-card.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/blog-card.tsx)
@@ -1,39 +1,41 @@
1
- <!-- source-hash: d68b2db5f05c474ec9bdb96a22e60341 -->
2
- Thin presentation component that renders a blog post cover image (or OG-generated placeholder) with graceful 404 recovery.
1
+ <!-- source-hash: 97c4c0581bb8cb14e23dddcdae3af6f4 -->
2
+ Renders a blog post cover image with graceful error handling returns `null` when no URL is provided and silently hides broken images on load failure.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `BlogImagePlaceholder`
7
- A client-side React component that wraps a cover image in an HTML phrasing-content–safe `<span>`. Key behaviors:
6
+ ### `BlogImagePlaceholder` (exported function component)
8
7
 
9
- - Returns `null` when `imageUrl` is `null`, rendering nothing
10
- - Uses a plain `<img>` tag (bypasses `next/image`) to support query-string–based dynamic placeholder URLs
11
- - Hides the broken-image icon via `onError` when the URL 404s, letting the parent `bg-ods-bg` background show through cleanly
12
- - Wrapped in `<span className="block">` instead of `<div>` for HTML validity when rendered inside markdown `<p>` tags (e.g., compact `BlogCard` in the chat shell)
8
+ | Prop | Type | Description |
9
+ |---|---|---|
10
+ | `imageUrl` | `string \| null` | Pre-resolved cover/OG image URL; component renders nothing if `null` |
11
+ | `title` | `string` | Used in the `alt` attribute for accessibility |
12
+ | `className` | `string?` | Optional additional CSS classes |
13
13
 
14
- ### `BlogImagePlaceholderProps`
14
+ **Notable implementation details:**
15
15
 
16
- | Prop | Type | Description |
17
- |------|------|-------------|
18
- | `imageUrl` | `string \| null` | Pre-resolved cover/OG image URL; `null` renders nothing |
19
- | `title` | `string` | Used for the `alt` attribute |
20
- | `className` | `string` | Optional extra Tailwind classes |
16
+ - Uses `<span className="block">` instead of `<div>` to satisfy HTML phrasing-content rules when rendered inside a markdown `<p>` element (e.g., chat shell's compact `BlogCard` fallback)
17
+ - Bypasses `next/image` in favor of a plain `<img>` tag — appropriate here since the URL is a dynamically-generated placeholder with a query string where Next.js loader config adds no value
18
+ - `onError` hides the broken image element, allowing the parent's `bg-ods-bg` background to show through cleanly
21
19
 
22
20
  ## Usage Example
23
21
 
24
22
  ```typescript
25
23
  import { BlogImagePlaceholder } from './blog-image-placeholder'
26
24
 
27
- // Typical usage in a BlogCard with a pre-resolved OG placeholder URL
25
+ // With a resolved OG placeholder URL
28
26
  <BlogImagePlaceholder
29
- imageUrl="https://og.flamingo.run/placeholder?title=My+Post&category=devops"
27
+ imageUrl="https://example.com/og-image.png?title=My+Post"
30
28
  title="My Post"
31
29
  className="rounded-lg"
32
30
  />
33
31
 
34
- // When imageUrl is null, renders nothing — safe to use unconditionally
32
+ // Renders nothing when imageUrl is null
35
33
  <BlogImagePlaceholder
36
34
  imageUrl={null}
37
35
  title="Draft Post"
38
36
  />
39
- ```
37
+ ```
38
+
39
+ ## Source
40
+
41
+ [`blog-image-placeholder.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/blog-image-placeholder.tsx)
@@ -1,58 +1,49 @@
1
- <!-- source-hash: 02a29dbf8a78be028a2e952b979247a7 -->
2
- Pure presentation component for displaying MSP case studies in two density modes `default` (vertical detail card) and `sm` (compact horizontal for chat-inline rendering).
1
+ <!-- source-hash: d3c2c6a2b8511d1b5bb1d570d788eed4 -->
2
+ Pure presentation component for rendering MSP case study cards in three density variants: `default` (vertical detail), `sm` (compact horizontal for chat-inline), and `portrait` (rail/strip layout via `EntityPortraitCard`).
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `CaseStudyCard`
7
- Main card component. Renders a linked, non-interactive card (no click logic — callers wrap with their own anchor and pass a resolved `href`). Supports:
8
- - **`default` size**: Full vertical layout with OG-ratio cover image (`1200×630`), title, and author/MSP attribution with avatar stack.
9
- - **`sm` size**: Compact horizontal layout for embedding in chat threads.
7
+ The primary export. Renders a case study in one of three layouts based on the `size` prop. Contains no click logic — callers supply `href` directly and wrap with their own anchor. Image resolution follows the fallback chain: `study.featured_image` → `placeholderUrl` → `bg-ods-bg` background.
10
8
 
11
9
  ### `CaseStudyCardSkeleton`
12
- Loading placeholder that mirrors the exact layout and aspect ratios of `CaseStudyCard` for both size variants, using `animate-pulse`.
10
+ Loading placeholder that mirrors the real card's layout zones for each density. The `default` and `portrait` variants share the same skeleton shape (media aspect ratio → 72px title zone → 60px person footer).
13
11
 
14
- ### Image Fallback Chain
15
- ```text
16
- study.featured_image → placeholderUrl (from useOgPlaceholder) → bg-ods-bg background
17
- ```
18
-
19
- ## Key Props (`CaseStudyCardProps`)
12
+ ### Props (`CaseStudyCardProps`)
20
13
 
21
14
  | Prop | Type | Description |
22
- |------|------|-------------|
15
+ |---|---|---|
23
16
  | `study` | `CaseStudy` | Case study data object |
24
- | `href` | `string` | Resolved detail URL (caller-provided) |
25
- | `target` | `'_blank'` | Opens in new tab (set by chat dispatch) |
26
- | `placeholderUrl` | `string \| null` | OG fallback image when `featured_image` is missing |
27
- | `size` | `'default' \| 'sm'` | Card density mode |
17
+ | `href` | `string` | Resolved detail URL (caller-supplied) |
18
+ | `target` | `'_blank'` | Optional new-tab behavior |
19
+ | `placeholderUrl` | `string \| null` | OG placeholder when `featured_image` is absent |
20
+ | `size` | `'default' \| 'sm' \| 'portrait'` | Card density variant |
21
+ | `showTypeBadge` | `boolean` | Portrait only — shows "Case Study" chip in mixed-type rails |
28
22
 
29
23
  ## Usage Example
30
24
 
31
25
  ```typescript
32
26
  import { CaseStudyCard, CaseStudyCardSkeleton } from './case-study-card'
33
- import { useOgPlaceholder } from '../hooks/use-og-placeholder'
27
+ import { useOgPlaceholderUrl } from '../hooks/use-og-placeholder-url'
34
28
 
35
- function CaseStudyGrid({ studies }: { studies: CaseStudy[] }) {
36
- const placeholderUrl = useOgPlaceholder(study.id)
29
+ function CaseStudyRail({ studies, isLoading }) {
30
+ const placeholderUrl = useOgPlaceholderUrl({ aspect: 'wide' })
37
31
 
38
- if (!studies) return <CaseStudyCardSkeleton size="default" />
32
+ if (isLoading) {
33
+ return <CaseStudyCardSkeleton size="portrait" />
34
+ }
39
35
 
40
- return (
36
+ return studies.map((study) => (
41
37
  <CaseStudyCard
38
+ key={study.id}
42
39
  study={study}
43
40
  href={`/case-studies/${study.slug}`}
41
+ size="portrait"
42
+ showTypeBadge={false}
44
43
  placeholderUrl={placeholderUrl}
45
- size="default"
46
44
  />
47
- )
45
+ ))
48
46
  }
47
+ ```
49
48
 
50
- // Chat-inline compact variant
51
- <CaseStudyCard
52
- study={study}
53
- href={`/case-studies/${study.slug}`}
54
- target="_blank"
55
- rel="noopener noreferrer"
56
- size="sm"
57
- />
58
- ```
49
+ **Source:** [`case-study-card.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/case-study-card.tsx)
@@ -1,40 +1,57 @@
1
- <!-- source-hash: 88aa76a71f078b18928be54e60fe0a71 -->
2
- A clickable ticket row component for chat interfaces, rendering ticket details (title, number, category, time), a status tag, an optional linked-work chip, and a chevron affordance.
1
+ <!-- source-hash: ad593d628549abcee57e9fe3d784a504 -->
2
+ A React client component that renders a single ticket row inside a chat/support panel, supporting interactive, loading skeleton, and linked-work states.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `ChatTicketItemData`
7
- Data interface for the ticket row:
8
- - `id`, `title`, `ticketNumber` — core identifiers
9
- - `status` — accepts any known format (`ACTIVE`, `active`, `ACTION_REQUIRED`, etc.)
10
- - `statusLabel?` — overrides the badge text while preserving status variant/icon (e.g. HubSpot pipeline stage labels)
11
- - `linkedTaskLabel?` — when set, renders a wrench-icon "linked work" chip indicating an in-flight delivery task
12
- - `category?`, `timeAgo?` — optional subtitle fields joined with `•`
6
+ ### Interfaces
13
7
 
14
- ### `ChatTicketItemProps`
15
- Extends `ButtonHTMLAttributes` (omitting `onClick`) with a typed `onClick?: (ticketId: string) => void` callback.
8
+ - **`ChatTicketItemData`** — Data model for a ticket row, including `id`, `title`, `ticketNumber`, `status`, `statusLabel`, `statusKind`, `statusColor`, `category`, `timeAgo`, and optional `linkedTaskLabel` (renders a wrench-icon chip when present).
9
+ - **`ChatTicketItemProps`** — Props for the component; extends `HTMLButtonElement` attributes (excluding native `onClick`), accepting `ticket`, a typed `onClick(ticketId: string)` callback, and `isLoading`.
16
10
 
17
- ### `ChatTicketItem`
18
- A `forwardRef` button component that:
19
- - Dims the title (`text-ods-text-secondary`) when the ticket is resolved
20
- - Builds a dot-separated subtitle from `ticketNumber`, `category`, and `timeAgo`
21
- - Renders `Tag` with `WrenchIcon` (hidden on `sm` screens) when `linkedTaskLabel` is present
22
- - Handles focus ring via `focus-visible` to prevent stray white borders after click in jsdom/Chromium
11
+ ### Component
12
+
13
+ - **`ChatTicketItem`** A `forwardRef` button component with three render states:
14
+ - **Loading** (`isLoading=true`): Renders an `aria-hidden` skeleton placeholder sized to match a real row.
15
+ - **No data** (`ticket` is `undefined`): Returns `null`.
16
+ - **Populated**: Renders the ticket title, a subtitle line joining `ticketNumber`, `category`, and `timeAgo` with bullet separators, an optional linked-work `Tag` chip (hidden on `sm` and below), a `TicketStatusTag`, and a chevron navigation indicator.
23
17
 
24
18
  ## Usage Example
25
19
 
26
20
  ```typescript
21
+ import { ChatTicketItem } from './chat-ticket-item'
22
+
23
+ // Loading state
24
+ <ChatTicketItem isLoading />
25
+
26
+ // Populated state
27
27
  <ChatTicketItem
28
28
  ticket={{
29
- id: 'tkt-001',
30
- title: 'Email not syncing after password reset',
29
+ id: 'TKT-001',
30
+ title: 'VPN not connecting after Windows update',
31
31
  ticketNumber: '#1042',
32
32
  status: 'ACTION_REQUIRED',
33
- statusLabel: 'Waiting on contact',
34
- category: 'Email',
33
+ category: 'Network',
35
34
  timeAgo: '2h ago',
36
35
  linkedTaskLabel: 'Waiting on version release',
37
36
  }}
38
37
  onClick={(ticketId) => router.push(`/tickets/${ticketId}`)}
39
38
  />
40
- ```
39
+
40
+ // With custom HubSpot pipeline stage label
41
+ <ChatTicketItem
42
+ ticket={{
43
+ id: 'TKT-002',
44
+ title: 'Email sync issue',
45
+ ticketNumber: '#1043',
46
+ status: 'ACTIVE',
47
+ statusLabel: 'Waiting on contact',
48
+ }}
49
+ onClick={(id) => console.log('opened', id)}
50
+ />
51
+ ```
52
+
53
+ ## Notes
54
+
55
+ - Status resolution delegates to `resolveStatusTagProps` and `resolveTicketStatus`, allowing any status string format (`ACTIVE`, `active`, `ACTION_REQUIRED`, etc.).
56
+ - The linked-work chip (`linkedTaskLabel`) is hidden on small screens via `hidden sm:inline-flex` to prevent row crowding.
57
+ - Focus styles explicitly suppress the post-click outline ring using `focus:outline-none focus:bg-ods-bg-hover` while preserving keyboard-nav visibility via `focus-visible:ring-2`.
@@ -1,53 +1,50 @@
1
- <!-- source-hash: 13f9305f5b11a7a8a688986630bbf7d1 -->
2
- Pure presentation component for displaying customer interview data in two density variants (`default` and `sm`), with no embedded click logic navigation is handled entirely by the caller via `href`.
1
+ <!-- source-hash: be03f9107f1ebb36349ea65aa7f3ebeb -->
2
+ Pure presentation component for rendering customer interview content in three density modes: `default` (full card), `sm` (compact horizontal for chat-inline), and `portrait` (rail/strip layout).
3
3
 
4
4
  ## Key Components
5
5
 
6
+ ### `CustomerInterviewCardProps`
7
+ | Prop | Type | Description |
8
+ |---|---|---|
9
+ | `interview` | `CustomerInterview` | Data model for the interview |
10
+ | `href` | `string` | Resolved detail URL — no click logic inside the card |
11
+ | `target` | `'_blank'` | Optional new-tab behavior |
12
+ | `targetPlatform` | `string \| null` | Passed to `useEntityCardLink` for platform-aware link resolution |
13
+ | `placeholderUrl` | `string \| null` | OG image fallback when `featured_image` is absent |
14
+ | `size` | `'default' \| 'sm' \| 'portrait'` | Render density |
15
+ | `showTypeBadge` | `boolean` | Portrait mode only — renders the "Customer Interview" chip (default: `true`) |
16
+
6
17
  ### `CustomerInterviewCard`
7
- Main card component rendering interview metadata, thumbnail, video indicator, and author/MSP attribution. Accepts an `href` prop for navigation and delegates all routing concerns to the caller.
18
+ Main export. Delegates link resolution to `useEntityCardLink` and placeholder generation to `useEntityCardPlaceholder`. Branches render path by `size`:
19
+ - **`default`** — Full card with 1200×630 aspect image, title, summary, and avatar footer with MSP icon overlay
20
+ - **`sm`** — Compact horizontal layout with square thumbnail and video indicator icon
21
+ - **`portrait`** — Delegates entirely to `EntityPortraitCard`
8
22
 
9
23
  ### `CustomerInterviewCardSkeleton`
10
- Animated loading placeholder that mirrors the layout of `CustomerInterviewCard` for both size variants, preventing layout shift during data fetching.
11
-
12
- ### `CustomerInterviewCardProps`
13
- ```typescript
14
- interface CustomerInterviewCardProps {
15
- interview: CustomerInterview // Core interview data
16
- href: string // Resolved detail URL (caller-provided)
17
- target?: '_blank' // Opens in new tab when set
18
- rel?: 'noopener noreferrer'
19
- placeholderUrl?: string | null // Fallback OG image when featured_image is absent
20
- size?: 'default' | 'sm' // 'sm' = compact horizontal (chat-inline)
21
- className?: string
22
- }
23
- ```
24
+ Loading placeholder matching each density's layout zones, with `animate-pulse` shimmer.
24
25
 
25
26
  ## Usage Example
26
27
 
27
28
  ```typescript
28
- // Default card standalone page listing
29
+ import { CustomerInterviewCard, CustomerInterviewCardSkeleton } from './customer-interview-card'
30
+
31
+ // Default full card
29
32
  <CustomerInterviewCard
30
33
  interview={interviewData}
31
- href={`/interviews/${interviewData.slug}`}
32
- placeholderUrl="/assets/interview-placeholder.jpg"
34
+ href="/interviews/acme-corp-story"
35
+ size="default"
36
+ showTypeBadge={false}
33
37
  />
34
38
 
35
- // Compact variant — inline within chat/AI responses
39
+ // Compact chat-inline variant
36
40
  <CustomerInterviewCard
37
41
  interview={interviewData}
38
- href={`/interviews/${interviewData.slug}`}
42
+ href="/interviews/acme-corp-story"
39
43
  target="_blank"
40
44
  rel="noopener noreferrer"
41
45
  size="sm"
42
46
  />
43
47
 
44
- // Skeleton while fetching
45
- <CustomerInterviewCardSkeleton size="sm" />
46
- ```
47
-
48
- ## Size Variants
49
-
50
- | Variant | Layout | Use Case |
51
- |---------|--------|----------|
52
- | `default` | Vertical card with 1200×630 aspect image, summary, and author row | Grid/list pages |
53
- | `sm` | Compact horizontal row with thumbnail + text column | Chat-inline embeds (Mingo AI / Fae) |
48
+ // Loading state
49
+ <CustomerInterviewCardSkeleton size="default" />
50
+ ```
@@ -1,47 +1,46 @@
1
- <!-- source-hash: f8069e3f963f307b16a2d6ae310496d9 -->
2
- Inline chat card component for rendering Data Room and OpenFrame-docs document references within the Flamingo/OpenFrame AI chat interface. Handles both `/data-room` and `/knowledge-base` route surfaces with a shared presentation layer.
1
+ <!-- source-hash: 9352fa2f2f4a64170a613a49640d8f24 -->
2
+ Presentational inline-chat card for Data Room and OpenFrame-docs document references. Renders `[card://data_room_doc:<id>]` and `[card://markdown:<id>]` markers with a shared UI surface only the `baseRoute` differs between document sources.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `DataRoomDocCard`
7
- Primary card component. Renders as an interactive `<a>` element when `anchorProps` is provided, or a static `<span>` when no link is available. Displays document title, source badge, file path, and a preview excerpt.
7
+ Primary card component. Conditionally renders as an interactive `<a>` element (when `anchorProps` is provided) or a static `<span>` (non-interactive fallback). Displays document title, source badge, optional file path, and a two-line preview excerpt.
8
8
 
9
9
  ### `DataRoomDocCardSkeleton`
10
- Loading state placeholder matching the card's layout used while document data is being fetched.
10
+ Loading state placeholder that mirrors the card's layout with shimmer-style placeholder spans for title, badge, path, and preview lines.
11
11
 
12
- ### `DataRoomDocCardAnchorProps`
13
- Prop bundle interface for pre-composed anchor attributes (`href`, `target`, `rel`, `onClick`). URL composition and routing decisions are handled by the consumer, not this component.
12
+ ### Types
14
13
 
15
- ### `DataRoomDocCardProps`
16
- | Prop | Type | Notes |
17
- |------|------|-------|
18
- | `item` | `DataRoomDocCardItem` | Title, path, and preview text |
19
- | `badgeText` | `string` | Required. Consumer-resolved source label (e.g. "Data Room", "Knowledge Base") |
20
- | `anchorProps` | `DataRoomDocCardAnchorProps?` | When omitted, card renders non-interactive |
21
- | `className` | `string?` | Additional CSS classes |
14
+ | Export | Description |
15
+ |---|---|
16
+ | `DataRoomDocCardProps` | Card props: `item`, `badgeText` (required), optional `anchorProps` and `className` |
17
+ | `DataRoomDocCardAnchorProps` | Subset of `<a>` props: `href`, `target`, `rel`, `onClick` |
22
18
 
23
19
  ## Usage Example
24
20
 
25
21
  ```typescript
26
- // Interactive card (linked)
22
+ import { DataRoomDocCard, DataRoomDocCardSkeleton } from './data-room-doc-card'
23
+
24
+ // Interactive card — consumer resolves routing and badge label
27
25
  <DataRoomDocCard
28
- item={{ title: 'Onboarding Guide', path: '/docs/onboarding.md', preview: 'Step-by-step...' }}
29
- badgeText={getSourceLabel(item.sourceRepo)} // consumer resolves label
26
+ item={{ title: 'Onboarding Guide', path: '/docs/onboarding.md', preview: 'Step-by-step setup...' }}
27
+ badgeText="Knowledge Base"
30
28
  anchorProps={{
31
- href: '/data-room/docs/abc123',
29
+ href: '/knowledge-base/42',
32
30
  target: '_blank',
33
31
  rel: 'noopener noreferrer',
32
+ onClick: (e) => trackCardClick(e),
34
33
  }}
35
34
  />
36
35
 
37
- // Non-interactive card (no link resolved)
36
+ // Static (no link available)
38
37
  <DataRoomDocCard
39
- item={{ title: 'Policy Draft', path: null, preview: null }}
40
- badgeText="Knowledge Base"
38
+ item={{ title: 'Restricted Doc', path: '/data-room/secret.pdf' }}
39
+ badgeText="Data Room"
41
40
  />
42
41
 
43
- // Skeleton while loading
42
+ // Loading state
44
43
  <DataRoomDocCardSkeleton />
45
44
  ```
46
45
 
47
- > **Design note:** `badgeText` is required (no default) to prevent silent mislabeling — a document sourced from `openframe-docs` must never display "Data Room" due to its private/internal connotation. The consumer's `getSourceLabel()` resolver is the single source of truth for provenance labels.
46
+ > **Design note:** `badgeText` is required (no default) to prevent silent mislabeling — a card from `openframe-docs` silently falling back to `"Data Room"` would falsely imply internal/private provenance to end-users. The consumer must explicitly resolve and pass the correct label.