@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,55 +1,56 @@
1
- <!-- source-hash: 31fb4dc0d85de6bd77dd4c3210fe1592 -->
2
- Reusable React component for interactive image cropping, supporting drag/resize, zoom, rotation, circular crop mode, and PNG export via canvas.
1
+ <!-- source-hash: 64a37d9b4443b9cc418e861a38bf66ff -->
2
+ Interactive image cropping component built on `react-easy-crop`, supporting drag/resize, zoom, rotation, circular (avatar) mode, and PNG export with automatic downscaling.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `ImageCropperResult`
7
- Return type from a confirmed crop operation.
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `ImageCropper` | `React.FC` | Main cropper component |
9
+ | `ImageCropperProps` | `interface` | Component prop contract |
10
+ | `ImageCropperResult` | `interface` | Shape of the confirmed crop output |
8
11
 
9
- | Field | Type | Description |
10
- |-------|------|-------------|
11
- | `dataUrl` | `string` | Cropped PNG as a data URI |
12
- | `blob` | `Blob` | Corresponding PNG Blob |
13
-
14
- ### `ImageCropperProps`
12
+ **Props**
15
13
 
16
14
  | Prop | Type | Default | Description |
17
- |------|------|---------|-------------|
15
+ |---|---|---|---|
18
16
  | `src` | `string` | — | Source image URL or data URI |
19
- | `onComplete` | `(result) => void` | — | Fired when user confirms crop |
20
- | `onCancel` | `() => void` | — | Fired when user cancels |
21
- | `aspectRatio` | `number` | free-form | Width/height ratio |
22
- | `circular` | `boolean` | `false` | Circular overlay for avatars |
23
- | `maxSizePx` | `number` | `512` | Max exported image dimension |
17
+ | `onComplete` | `(result) => void` | — | Called with PNG data URL + Blob on confirm |
18
+ | `onCancel` | `() => void` | — | Called when user cancels |
19
+ | `aspectRatio` | `number` | free-form | Width / height ratio |
20
+ | `circular` | `boolean` | `false` | Circular overlay for avatar crops |
21
+ | `maxSizePx` | `number` | `512` | Maximum exported image dimension |
24
22
  | `className` | `string` | — | Wrapper class override |
25
23
 
26
- ### `ImageCropper`
27
- Main component. Internally manages crop position, zoom (1–3×), and rotation (0–360°). On confirm, renders the crop to an off-screen `<canvas>`, scales it to `maxSizePx`, optionally clips to a circle, then resolves a PNG `Blob` + data URL.
28
-
29
- **Keyboard shortcuts:** `Enter` confirms, `Escape` cancels.
30
-
31
24
  ## Usage Example
32
25
 
33
26
  ```typescript
34
27
  import { ImageCropper, ImageCropperResult } from "@/components/image-cropper"
35
28
 
36
- function AvatarEditor({ imageUrl }: { imageUrl: string }) {
37
- const handleCropComplete = (result: ImageCropperResult) => {
38
- // Upload the blob or set preview via dataUrl
39
- console.log("PNG data URL:", result.dataUrl)
40
- uploadAvatar(result.blob)
29
+ function AvatarUploader({ imageUrl }: { imageUrl: string }) {
30
+ const handleComplete = (result: ImageCropperResult) => {
31
+ // Upload the Blob or use the data URL directly
32
+ console.log(result.dataUrl) // "data:image/png;base64,..."
33
+ uploadToServer(result.blob)
41
34
  }
42
35
 
43
36
  return (
44
37
  <ImageCropper
45
38
  src={imageUrl}
46
- aspectRatio={1}
47
- circular
48
- maxSizePx={256}
49
- onComplete={handleCropComplete}
50
- onCancel={() => console.log("Cancelled")}
51
- className="max-w-lg"
39
+ onComplete={handleComplete}
40
+ onCancel={() => console.log("cancelled")}
41
+ circular // avatar mode — circular clip mask
42
+ aspectRatio={1} // 1:1 square
43
+ maxSizePx={256} // export capped at 256×256 px
52
44
  />
53
45
  )
54
46
  }
55
- ```
47
+ ```
48
+
49
+ **Keyboard shortcuts:** `Enter` confirms the crop, `Escape` triggers `onCancel`.
50
+
51
+ ## Notes
52
+
53
+ - Exported images are always **PNG**; the canvas is scaled so neither dimension exceeds `maxSizePx`.
54
+ - The `crossOrigin="anonymous"` attribute on the internal image loader prevents canvas tainting for cross-origin sources.
55
+ - Depends on `react-easy-crop`, `lucide-react`, and shadcn/ui `Button` / `Slider` primitives.
56
+ - Source: [`components/image-cropper.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/components/image-cropper.tsx)
@@ -1,42 +1,38 @@
1
- <!-- source-hash: 6641c546041f6054d9c547ffd4f0f173 -->
2
- Central barrel export file for the Flamingo/OpenFrame shared UI component library. Re-exports all components, hooks, and utilities from the component subdirectories and individual component modules, enabling single-import access across the platform.
1
+ <!-- source-hash: bd76de4698013e75e9f84d74a5ff3420 -->
2
+ Central barrel export file for the `openframe-oss-lib` component library, aggregating all client-side React components, utilities, and shared modules under a single `"use client"` boundary.
3
3
 
4
4
  ## Key Components
5
5
 
6
- The file organizes exports into logical groups:
7
-
8
- | Group | Source |
9
- |---|---|
10
- | **Component Directories** | `chat`, `features`, `icons`, `navigation`, `platform`, `ui` |
11
- | **Individual Components** | `announcement-bar`, `media-carousel`, `pricing-display`, `vendor-display-button`, etc. |
12
- | **Shared Modules** | `onboarding`, `product-release`, `dev-section`, `roadmap`, `delivery`, `legal-document` |
13
- | **Utilities** | `unified-filter-logic`, `unified-pagination`, `persistent-filter-controls` |
14
- | **Auth & Loading** | `auth-stub`, `loading` |
15
- | **Date/Time** | `date-time-picker` |
16
-
17
- Notable named export: `DetailPageSkeleton` and its `DetailPageSkeletonProps` type are explicitly re-exported from `./shared/detail-page-skeleton`.
6
+ | Export Group | Source Path | Description |
7
+ |---|---|---|
8
+ | Core UI modules | `./chat`, `./docs`, `./embeds`, `./features`, `./icons`, `./navigation`, `./platform`, `./ui` | Top-level feature category barrels |
9
+ | Individual components | `./announcement-bar`, `./footer`, `./pagination`, `./pricing-display`, etc. | Standalone presentational components |
10
+ | Shared modules | `./shared/onboarding`, `./shared/doc-search`, `./shared/dev-section`, `./shared/roadmap`, `./shared/legal-document` | Cross-host reusable feature slices |
11
+ | Named exports | `DetailPageSkeleton`, `ArticleAuthorByline`, `MediaGalleryStrip`, `AuthorDetailView`, `EntityIcon` | Explicit exports for disambiguation or prop-type co-location |
12
+ | `MediaItem` type | `../utils/media-carousel-utils-stub` | Canonical carousel item shape (overrides features barrel collision) |
18
13
 
19
14
  ## Usage Example
20
15
 
21
16
  ```typescript
22
- // Instead of deep imports across many paths:
23
- import { VendorIcon } from '@flamingo/components/vendor-icon'
24
- import { Pagination } from '@flamingo/components/pagination'
25
-
26
- // Import everything from the single barrel:
17
+ // Import any component directly from the package root
27
18
  import {
28
- VendorIcon,
19
+ Footer,
29
20
  Pagination,
21
+ EntityIcon,
22
+ type EntityIconValue,
23
+ ArticleAuthorByline,
24
+ type ArticleAuthorBylineProps,
25
+ MediaGalleryStrip,
26
+ type MediaGalleryStripProps,
30
27
  DetailPageSkeleton,
31
- type DetailPageSkeletonProps,
32
- MspDisplay,
33
- MediaCarousel,
34
- UnifiedFilterLogic,
35
- } from '@flamingo/components'
28
+ } from '@openframe-oss-lib/components'
36
29
  ```
37
30
 
38
- ## Notes
31
+ ## Important Notes
32
+
33
+ - **Client boundary**: The entire barrel is marked `"use client"` — avoid importing into React Server Components.
34
+ - **Server-safe JSON-LD**: For FAQ structured data in RSC contexts, import from the dedicated subpath `./components/faq/json-ld` instead of this barrel.
35
+ - **`MediaItem` disambiguation**: This barrel exports `MediaItem` as the carousel item shape. The gallery-manager variant remains accessible via `./components/features`.
36
+ - **`faq` subpath**: Also exposed as a standalone package.json subpath export, but it is equally client-only — not server-safe.
39
37
 
40
- - Marked `"use client"` — all exported components are React Client Components (Next.js App Router compatible).
41
- - `PageContainer` is intentionally not re-exported here; it is already available via `./ui/page-container`.
42
- - Duplicate `chat` export exists in the file; only one is resolved at runtime.
38
+ **Source:** [`components/index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/components/index.ts)
@@ -1,56 +1,60 @@
1
- <!-- source-hash: a6c222ce8e1ab58308ac9ed1a6a4776e -->
2
- A scrollable log viewer component that renders a list of `LogEntry` items with severity indicators, timestamps, and optional tool icons, connected by visual timeline connectors.
1
+ <!-- source-hash: 40c14f07658d894c96ba17a8967af646 -->
2
+ Scrollable log feed component that renders a list of `LogEntry` items with severity indicators, timestamps, and optional tool icons with loading and empty states.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `LogsList` | `React.ForwardRefExoticComponent` | Main container that renders a scrollable, bordered list of log entries |
9
- | `LogCard` | `React.FC` (internal) | Individual log row with severity dot, title, formatted timestamp, and optional tool icon |
10
- | `formatTimestamp` | `function` (internal) | Formats a `string \| Date` into `YYYY/MM/DD,HH:mm` display format |
7
+ |---|---|---|
8
+ | `LogsList` | `React.ForwardRefExoticComponent` | Main scrollable log list container |
9
+ | `LogCard` | `React.FC` (internal) | Individual log entry row with click/keyboard support |
10
+ | `formatTimestamp` | `function` (internal) | UTC-safe timestamp formatter preventing React hydration mismatch (#418) |
11
11
 
12
- ### `LogsList` Props (`LogsListProps`)
12
+ **`LogsList` Props** (`LogsListProps`):
13
13
 
14
14
  | Prop | Default | Description |
15
- |------|---------|-------------|
16
- | `logs` | — | Array of `LogEntry` items to display |
17
- | `maxHeight` | `'400px'` | Container max height; use `'100%'` for full-height flex layout |
18
- | `showConnector` | `true` | Renders vertical timeline connector lines between entries |
15
+ |---|---|---|
16
+ | `logs` | — | Array of `LogEntry` items to render |
17
+ | `maxHeight` | `'400px'` | Container max height; use `'100%'` for full-height mode |
18
+ | `showConnector` | `true` | Draws a vertical line connecting sequential log entries |
19
19
  | `onLogClick` | — | Callback fired with the clicked `LogEntry` |
20
- | `loading` | `false` | Shows a loading state placeholder |
20
+ | `loading` | `false` | Shows a loading placeholder when `true` |
21
21
  | `emptyMessage` | `'No logs to display'` | Message shown when `logs` is empty |
22
- | `className` | — | Additional Tailwind classes for the container |
22
+ | `className` | — | Additional CSS classes for the outer container |
23
23
 
24
24
  ## Usage Example
25
25
 
26
26
  ```typescript
27
- import { LogsList } from './components/logs-list'
28
- import { LogEntry } from './types/logs.types'
27
+ import { LogsList } from '@openframe-oss-lib/components'
28
+ import type { LogEntry } from '@openframe-oss-lib/types'
29
29
 
30
30
  const logs: LogEntry[] = [
31
31
  {
32
32
  id: '1',
33
- title: 'Agent task completed successfully',
33
+ title: 'Backup job completed',
34
34
  severity: 'info',
35
35
  timestamp: new Date(),
36
- toolType: 'bash',
36
+ toolType: 'backup',
37
37
  },
38
38
  {
39
39
  id: '2',
40
- title: 'Connection timeout detected',
40
+ title: 'Disk usage above 90%',
41
41
  severity: 'warning',
42
- timestamp: '2024-01-15T10:30:00Z',
42
+ timestamp: '2025-01-15T08:30:00Z',
43
43
  },
44
44
  ]
45
45
 
46
- export default function LogsPanel() {
46
+ export default function AuditPanel() {
47
47
  return (
48
48
  <LogsList
49
49
  logs={logs}
50
- maxHeight="500px"
51
- showConnector={true}
50
+ maxHeight="600px"
51
+ showConnector
52
52
  onLogClick={(log) => console.log('Selected:', log.id)}
53
53
  />
54
54
  )
55
55
  }
56
- ```
56
+ ```
57
+
58
+ > **Hydration note:** `formatTimestamp` uses UTC getters (`getUTCFullYear`, etc.) to ensure timestamps are identical between SSR and client rendering, preventing React hydration error #418.
59
+
60
+ **Source:** [`logs-list.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/logs-list.tsx)
@@ -1,48 +1,69 @@
1
- <!-- source-hash: 3e808df6d9836b82a787de725d9821af -->
2
- A responsive, accessible media carousel component supporting images, videos (MP4/HLS via MuxPlayer), and YouTube embeds with thumbnail navigation, swipe gestures, and keyboard controls.
1
+ <!-- source-hash: 8512b2544239a58f8faa59a6fd3794a7 -->
2
+ Accessible, memoized React carousel component for displaying mixed media (images, videos, YouTube embeds) with dot pagination, keyboard navigation, touch swipe support, and broken-image fallback handling.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `MediaCarousel` (default export)
7
- A memoized React component with the following props:
7
+ A `memo`-wrapped component implementing the canonical slide viewer used across OpenFrame homepage categories, vendor screenshots, profiles, and Reddit embeds.
8
+
9
+ **Props (`MediaCarouselProps`):**
8
10
 
9
11
  | Prop | Type | Default | Description |
10
- |------|------|---------|-------------|
11
- | `media` | `MediaItem[]` | — | Array of media items to display |
12
- | `className` | `string` | — | Additional CSS classes |
12
+ |---|---|---|---|
13
+ | `media` | `MediaItem[]` | — | Array of slide descriptors |
13
14
  | `aspectRatio` | `'16/9' \| '4/3' \| '3/2' \| '1/1'` | `'16/9'` | Container aspect ratio |
14
- | `showThumbnails` | `boolean` | `true` | Toggle thumbnail strip |
15
- | `autoPlay` | `boolean` | `false` | Auto-advance slides |
16
- | `objectFit` | `'contain' \| 'cover'` | `'contain'` | Image fit behavior |
15
+ | `showArrows` | `boolean` | `true` | Hover-revealed prev/next arrows |
16
+ | `objectFit` | `'contain' \| 'cover'` | `'contain'` | Image fit within container |
17
+ | `posterPriority` | `boolean` | `false` | Eager-loads first slide (LCP optimization) |
18
+ | `transformImageSrc` | `(url: string) => string` | — | URL rewrite hook (e.g. proxy `http://` sources) |
19
+ | `reserveDotRow` | `boolean` | `false` | Always reserves dot-row height to prevent layout shift on media set swaps |
20
+
21
+ ### Internal Helpers
17
22
 
18
- ### Internal Renderers
19
- - `renderImage` — renders images with lazy loading and error fallback
20
- - `renderVideo` delegates to `<Video>` (MuxPlayer facade) for MP4/HLS
21
- - `renderYouTubeEmbed` delegates to `<Video>` with `kind="youtube"` for lite-youtube embed
22
- - `renderThumbnail` clickable thumbnail with active indicator and video play overlay
23
+ | Function | Description |
24
+ |---|---|
25
+ | `renderVideo` | Routes `video`/`youtube` items through the `<Video>` SSoT component |
26
+ | `renderImage` | Renders images with skeleton loading, opacity fade-in, and broken-URL fallback UI |
27
+ | `renderImageUnavailable` | Fallback UI with `ImageOffIcon` and original URL link when image 404s |
28
+ | `renderMainMedia` | Dispatches to `renderVideo` or `renderImage` based on `item.type` |
29
+ | `getAspectRatioClass` | Maps `aspectRatio` prop to Tailwind aspect-ratio class |
23
30
 
24
31
  ## Usage Example
25
32
 
26
33
  ```typescript
27
34
  import { MediaCarousel } from './media-carousel';
28
- import { MediaItem } from '../utils/media-carousel-utils-stub';
35
+ import type { MediaItem } from '../utils/media-carousel-utils-stub';
29
36
 
30
- const items: MediaItem[] = [
31
- { type: 'image', src: 'https://example.com/photo.jpg', alt: 'Photo' },
32
- { type: 'youtube', src: 'https://youtube.com/watch?v=dQw4w9WgXcQ', alt: 'Demo' },
33
- { type: 'video', src: 'https://example.com/clip.mp4', poster: 'https://example.com/thumb.jpg' },
37
+ const slides: MediaItem[] = [
38
+ { type: 'image', src: 'https://cdn.example.com/screenshot.png', alt: 'Dashboard' },
39
+ { type: 'youtube', src: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ', alt: 'Demo' },
40
+ { type: 'video', src: 'https://stream.mux.com/video.m3u8', poster: 'https://cdn.example.com/poster.jpg' },
34
41
  ];
35
42
 
43
+ // Vendor detail page — prioritize first image for LCP, proxy mixed content
36
44
  <MediaCarousel
37
- media={items}
45
+ media={slides}
38
46
  aspectRatio="16/9"
39
- showThumbnails={true}
40
47
  objectFit="contain"
48
+ posterPriority
49
+ transformImageSrc={(url) => url.replace('http://', 'https://proxy.example.com/')}
50
+ />
51
+
52
+ // Categories showcase — reserve dot row so 1-vs-N-slide swap never shifts layout
53
+ <MediaCarousel
54
+ media={categorySlides}
55
+ reserveDotRow
56
+ showArrows={false}
41
57
  />
42
58
  ```
43
59
 
44
- ## Interaction Support
45
- - **Keyboard**: `←` / `→` arrow keys when carousel is focused
46
- - **Touch/Swipe**: 50px minimum swipe distance triggers slide change
47
- - **Hover**: Navigation arrows reveal on hover; hidden for single-item carousels
48
- - **Accessibility**: `role="region"` and `aria-label` applied when multiple items exist
60
+ ## Interaction Model
61
+
62
+ - **Touch:** Swipe threshold of 50px triggers `nextSlide`/`prevSlide`; edge-case `clientX === 0` handled via explicit `null` checks (not truthiness).
63
+ - **Keyboard:** `ArrowLeft`/`ArrowRight` when the carousel `<div>` has focus; disabled for single-slide sets.
64
+ - **Index safety:** `currentIndex` is clamped via `useEffect` whenever `media.length` shrinks at runtime.
65
+ - **Image loading:** Each image is keyed by URL (`loadedImageSrc`), preventing a late `onLoad` from a previous slide from revealing the current image prematurely.
66
+
67
+ ## Source
68
+
69
+ [`media-carousel.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/media-carousel.tsx)
@@ -1,37 +1,40 @@
1
- <!-- source-hash: 4ad98f6815de9109cf1a167244731e12 -->
2
- A React component that displays a metric value with an associated label in a clean, inline format. The main value is prominently displayed with a smaller, muted label to provide context.
1
+ <!-- source-hash: 386c4083aa6f39bec5016b7561a578c9 -->
2
+ Renders a styled metric display pairing a prominent primary value with a smaller secondary label, suitable for dashboards and stat blocks.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **MetricValue**: Main component that renders a value-label pair
7
- - **MetricValueProps**: TypeScript interface defining the component's props
8
- - `value`: The primary metric value (string or number)
9
- - `label`: Descriptive text shown in smaller, muted styling
10
- - `className`: Optional CSS classes for customization
6
+ **`MetricValue`** Named export functional component
7
+
8
+ | Prop | Type | Required | Description |
9
+ |---|---|---|---|
10
+ | `value` | `string \| number` | ✅ | The primary metric to display (e.g., `30`, `"99%"`) |
11
+ | `label` | `string` | ✅ | Descriptive label rendered below/beside the value (e.g., `"Generation Time"`) |
12
+ | `className` | `string` | ❌ | Optional class overrides via `cn()` utility |
11
13
 
12
14
  ## Usage Example
13
15
 
14
16
  ```typescript
15
- import { MetricValue } from './metric-value';
17
+ import { MetricValue } from '@/components/metric-value';
16
18
 
17
- // Display generation time metric
18
- <MetricValue
19
- value="30s"
20
- label="Generation Time"
21
- />
19
+ // Basic numeric stat
20
+ <MetricValue value={30} label="s Generation Time" />
22
21
 
23
- // Display numeric metrics with custom styling
24
- <MetricValue
25
- value={1249}
26
- label="Total Requests"
27
- className="text-xl font-bold"
22
+ // String percentage with custom class
23
+ <MetricValue
24
+ value="99.9%"
25
+ label="Uptime"
26
+ className="mt-4"
28
27
  />
29
28
 
30
- // Display percentage values
31
- <MetricValue
32
- value="94.2%"
33
- label="Success Rate"
34
- />
29
+ // Inside a stat grid
30
+ <div className="flex gap-8">
31
+ <MetricValue value={142} label="Tickets Resolved" />
32
+ <MetricValue value="4.8" label="Avg CSAT Score" />
33
+ </div>
35
34
  ```
36
35
 
37
- The component uses a horizontal flex layout with the value displayed in primary text color and the label in secondary (muted) text. It's styled with the DM Sans font family and includes whitespace-nowrap to prevent line breaks, making it ideal for dashboard metrics and status displays.
36
+ ## Notes
37
+
38
+ - Uses `text-h4` for the value and `text-h6 text-ods-text-secondary` for the label, following the ODS (OpenFrame Design System) typography scale.
39
+ - `whitespace-nowrap` prevents wrapping on tight layouts.
40
+ - Composes with [`cn()`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/utils/cn.ts) for safe Tailwind class merging.
@@ -1,36 +1,42 @@
1
- <!-- source-hash: 277daefc2a9ad48ff5ace711df4ffcf5 -->
2
- A React component that displays MSP (Managed Service Provider) information with a logo avatar and truncated name display.
1
+ <!-- source-hash: a699424bd0f8d631d337d18d2000076d -->
2
+ Renders an MSP (Managed Service Provider) identity display combining a square avatar logo with the MSP's name in a flex layout.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **MSPDisplay**: Main component that renders an MSP with their logo and name
7
- - **MSPDisplayProps**: TypeScript interface defining component props
8
- - `name`: MSP name (required)
9
- - `logoUrl`: Optional logo image URL
10
- - `size`: Avatar size in pixels (defaults to 40px)
11
- - `className`: Additional CSS classes
6
+ ### `MSPDisplay`
7
+ A client-side React component that displays an MSP's branding with a fallback-aware avatar and truncated name label.
8
+
9
+ **Props (`MSPDisplayProps`):**
10
+
11
+ | Prop | Type | Default | Description |
12
+ |---|---|---|---|
13
+ | `name` | `string` | — | MSP display name (used as avatar fallback and `alt` text) |
14
+ | `logoUrl` | `string \| null` | `undefined` | Optional logo URL, run through the image proxy |
15
+ | `size` | `number` | `40` | Avatar dimensions in pixels (square) |
16
+ | `className` | `string` | — | Additional CSS classes for the wrapper |
17
+
18
+ **Internal dependencies:**
19
+ - [`SquareAvatar`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/ui/square-avatar.tsx) — renders the square avatar with fallback initials
20
+ - [`getProxiedImageUrl`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/utils/image-proxy.ts) — proxies external logo URLs to avoid CORS/mixed-content issues
21
+ - [`cn`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/utils/cn.ts) — utility for conditional class merging
12
22
 
13
23
  ## Usage Example
14
24
 
15
25
  ```typescript
16
- import { MSPDisplay } from './msp-display';
17
-
18
- // Basic MSP display
19
- <MSPDisplay name="TechCorp Solutions" />
26
+ import { MSPDisplay } from '@flamingo-stack/openframe-oss-lib';
20
27
 
21
- // With logo and custom size
22
- <MSPDisplay
23
- name="Acme IT Services"
24
- logoUrl="https://example.com/logo.png"
25
- size={60}
28
+ // With a logo
29
+ <MSPDisplay
30
+ name="Acme IT Solutions"
31
+ logoUrl="https://acme.example.com/logo.png"
32
+ size={48}
26
33
  />
27
34
 
28
- // With custom styling
29
- <MSPDisplay
30
- name="Global Tech Partners"
31
- logoUrl="/logos/global-tech.png"
32
- className="bg-gray-100 p-3 rounded-lg"
35
+ // Name-only fallback (renders initials avatar)
36
+ <MSPDisplay
37
+ name="Acme IT Solutions"
38
+ className="border-b pb-4"
33
39
  />
34
40
  ```
35
41
 
36
- The component uses a `SquareAvatar` for the logo display with automatic fallback to initials if no logo is provided. The name is truncated with ellipsis if it overflows the container width. The layout uses flexbox with a 2-unit gap and ensures proper text truncation with `min-w-0`.
42
+ > **Note:** If `logoUrl` is provided but `getProxiedImageUrl` returns `null` or an empty string, the component falls back to the original `logoUrl` directly. If no URL is available at all, `SquareAvatar` renders initials derived from `name`.
@@ -1,28 +1,30 @@
1
- <!-- source-hash: 86b90e3350490d5e683b6b4b06497f43 -->
2
- A Next.js client component that renders a responsive marketing section showcasing OpenFrame's open-source value propositions as a 4-column feature card grid.
1
+ <!-- source-hash: 3a6d55ae1b91e13e9941c8273186b79b -->
2
+ A client-side React section component that renders a responsive grid of feature cards highlighting OpenFrame's open-source value proposition.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`FeatureCard`** — Reusable card component accepting an icon, title, and description; renders with hover transition styling using ODS design tokens
7
- - **`OpenSourceFeatures`** Main section component that composes the feature grid with a headline and four predefined feature entries
8
- - **`features` array** — Static data defining the four pillars: *Built on FOSS*, *Own Your Stack*, *Modular by Design*, and *Community-Powered*
9
-
10
- ## Props
11
-
12
- ### `FeatureCardProps`
6
+ ### `FeatureCard` (internal)
7
+ A styled card component displaying an icon, title, and description. Accepts `FeatureCardProps`:
13
8
 
14
9
  | Prop | Type | Description |
15
10
  |------|------|-------------|
16
- | `icon` | `React.ReactNode` | Lucide icon element rendered in the card header |
17
- | `title` | `string` | Feature headline text |
18
- | `description` | `string` | Supporting body copy |
11
+ | `icon` | `React.ReactNode` | Lucide icon element |
12
+ | `title` | `string` | Feature heading |
13
+ | `description` | `string` | Feature body text |
14
+
15
+ ### `OpenSourceFeatures` (default export)
16
+ The main section component. Renders four hardcoded feature cards in a responsive 1→2→4 column grid:
17
+
18
+ - **Built on FOSS** — `Terminal` icon
19
+ - **Own Your Stack** — `DollarSign` icon
20
+ - **Modular by Design** — `Network` icon
21
+ - **Community-Powered** — `Users` icon
19
22
 
20
23
  ## Usage Example
21
24
 
22
25
  ```typescript
23
- import OpenSourceFeatures from '@/components/open-source-features';
26
+ import OpenSourceFeatures from './open-source-features';
24
27
 
25
- // Drop into any page layout — no props required
26
28
  export default function LandingPage() {
27
29
  return (
28
30
  <main>
@@ -32,17 +34,12 @@ export default function LandingPage() {
32
34
  }
33
35
  ```
34
36
 
35
- To add a custom feature card standalone:
37
+ ## Notes
36
38
 
37
- ```typescript
38
- import { FeatureCard } from '@/components/open-source-features';
39
- import { Shield } from 'lucide-react';
40
-
41
- <FeatureCard
42
- icon={<Shield className="w-6 h-6" />}
43
- title="Secure by Default"
44
- description="Auditable code with no vendor lock-in."
45
- />
46
- ```
39
+ - Marked `"use client"` — requires a Next.js App Router client boundary.
40
+ - Icons sourced from `lucide-react` (`Terminal`, `DollarSign`, `Network`, `Users`).
41
+ - Section heading style imported from `./layout/page-heading` via `SECTION_HEADING_CLASS`.
42
+ - Hover states and transitions handled via Tailwind utility classes (`hover:bg-ods-bg-hover`, `transition-colors`).
43
+ - Feature list is statically defined inside the component; to make it data-driven, extract the `features` array to a separate constants file.
47
44
 
48
- > **Note:** `FeatureCard` is not a named export by default — export it explicitly if reuse outside this component is needed. The section uses ODS design tokens (`ods-card`, `ods-border`, `ods-accent`) from the OpenFrame design system.
45
+ **Source:** [`open-source-features.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/open-source-features.tsx)