@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
@@ -0,0 +1,45 @@
1
+ <!-- source-hash: 7a62ccb3d8f27e5378b7ce733e2d1ece -->
2
+ Renders rich markdown content with support for Mermaid diagrams, syntax-highlighted code blocks, social media embeds, video players, and OG link previews. Acts as the primary markdown rendering surface for the OpenFrame platform, processing both standard markdown and custom shortcodes before passing content to `react-markdown`.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `RichMarkdownRenderer` | Component | Main renderer wrapping content with runtime context |
9
+ | `MermaidDiagram` | Component | Lazy-loads and renders Mermaid diagram SVGs with dark-mode theming |
10
+ | `processShortcodes` | Function | Pre-processes `{{youtube:ID}}`, `{% youtube %}`, thumbnail links, and bare URLs into embed HTML before markdown parsing |
11
+
12
+ **Plugin stack:**
13
+ - `remark-gfm` — GitHub Flavored Markdown (tables, task lists, strikethrough)
14
+ - `remark-breaks` — Newline-to-`<br>` conversion
15
+ - `rehype-highlight` — Syntax highlighting via highlight.js
16
+ - `rehype-raw` — Allows injected HTML from shortcode processing
17
+
18
+ **Supported embed types:** YouTube, Mux/MP4 video, Reddit, Twitter/X, LinkedIn, Figma, OG link previews, Mermaid diagrams, responsive images.
19
+
20
+ ## Usage Example
21
+
22
+ ```typescript
23
+ import { RichMarkdownRenderer } from './rich-markdown-renderer';
24
+
25
+ // Basic usage
26
+ <RichMarkdownRenderer content={markdownString} />
27
+
28
+ // With runtime overrides
29
+ <RichMarkdownRenderer
30
+ content={markdownString}
31
+ runtime={{ disableEmbeds: false }}
32
+ />
33
+ ```
34
+
35
+ **Supported shortcode formats:**
36
+
37
+ ```text
38
+ {{youtube:dQw4w9WgXcQ}}
39
+ {% youtube id="dQw4w9WgXcQ" /%}
40
+ [![Title](https://img.youtube.com/vi/dQw4w9WgXcQ/maxresdefault.jpg)](https://www.youtube.com/watch?v=dQw4w9WgXcQ)
41
+ ```
42
+
43
+ Bare URLs on their own line are auto-detected and converted to OG preview cards or video embeds at render time.
44
+
45
+ > **Source:** [`rich-markdown-renderer.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/rich-markdown-renderer.tsx)
@@ -0,0 +1,56 @@
1
+ <!-- source-hash: 72d38f3f2a026cc157c5d6ce7d23525f -->
2
+ Provides a scroll-state tracking hook and edge-fade overlay component for adding "scroll shadow" indicators to scrollable containers.
3
+
4
+ ## Key Components
5
+
6
+ ### `useScrollFade<T>()`
7
+
8
+ Hook that observes a scrollable element and reports whether content overflows at the top or bottom edge. Uses `ResizeObserver` to detect container size changes and `MutationObserver` to detect content growth (e.g., appended list items that change `scrollHeight` without resizing the container).
9
+
10
+ **Returns:**
11
+
12
+ | Property | Type | Description |
13
+ |---|---|---|
14
+ | `scrollRef` | `RefObject<T>` | Attach to the scrollable element |
15
+ | `fadeTop` | `boolean` | `true` when scrolled away from the top |
16
+ | `fadeBottom` | `boolean` | `true` when content continues below the visible area |
17
+ | `update` | `() => void` | Manual re-measure; wire to `onScroll` |
18
+
19
+ ### `ScrollFadeOverlay`
20
+
21
+ Absolutely-positioned overlay that renders a gradient fade at a specified edge. Must be placed inside a `relative` wrapper alongside the scrollable element.
22
+
23
+ **Props:**
24
+
25
+ | Prop | Type | Default | Description |
26
+ |---|---|---|---|
27
+ | `edge` | `'top' \| 'bottom'` | — | Which edge to render the fade on |
28
+ | `visible` | `boolean` | — | Controls opacity via CSS transition |
29
+ | `color` | `string` | `var(--color-bg)` | Surface color the gradient fades into |
30
+ | `className` | `string` | — | Additional Tailwind classes |
31
+
32
+ ## Usage Example
33
+
34
+ ```typescript
35
+ import { useScrollFade, ScrollFadeOverlay } from './scroll-fade'
36
+
37
+ function ChatList({ messages }: { messages: string[] }) {
38
+ const { scrollRef, fadeTop, fadeBottom, update } = useScrollFade<HTMLDivElement>()
39
+
40
+ return (
41
+ <div className="relative">
42
+ <ScrollFadeOverlay edge="top" visible={fadeTop} />
43
+
44
+ <div ref={scrollRef} onScroll={update} className="overflow-y-auto h-96">
45
+ {messages.map((msg, i) => (
46
+ <div key={i}>{msg}</div>
47
+ ))}
48
+ </div>
49
+
50
+ <ScrollFadeOverlay edge="bottom" visible={fadeBottom} />
51
+ </div>
52
+ )
53
+ }
54
+ ```
55
+
56
+ > The `color` prop should match the background surface behind the list — override it when the list sits on a card or modal rather than the page background.
@@ -1,48 +1,66 @@
1
- <!-- source-hash: e33f919319929a558fb7204fa5689d69 -->
2
- A client-side search input component with debounced querying, filter chip management, keyboard navigation, and a popover-based results dropdown.
1
+ <!-- source-hash: 58919dce29eb76ba4f2de97d75e7c643 -->
2
+ A client-side search input component with debounced querying, keyboard navigation, grouped results, filter chips, and auto-limiting tag display.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### Types
7
- - **`SearchResult`** — Shape of a single search result (`id`, `title`, `description`, `icon`, `type`, `metadata`)
8
- - **`FilterChipData`** — Inline filter chip definition with optional variant (`selected`, `category`, `subcategory`, `tag`)
9
- - **`SearchInputProps`** — Full prop surface for the component (controlled/uncontrolled, debounce, grouping, chip limits, adornments)
10
-
11
- ### Exported Component
12
- - **`SearchInput`** — Main component combining:
13
- - Debounced input via `useDebounce`
14
- - Auto-limiting visible chips via `useAutoLimitTags`
15
- - Radix UI `Popover` for the results dropdown
16
- - Radix UI `ScrollArea` for scrollable results
17
- - Keyboard navigation (`ArrowUp`, `ArrowDown`, `Enter`, `Escape`, `Backspace`)
18
- - Grouped results support via `groupBy` prop
19
- - Modifier-key-aware result selection (supports cmd/ctrl/middle-click pass-through)
20
- - Hidden chips overflow popup via `HiddenTagsPopup`
6
+ ### Interfaces
7
+ - **`SearchResult`** — Shape of each result item (`id`, `title`, `description`, `icon`, `type`, `metadata`, etc.)
8
+ - **`FilterChipData`** — Filter chip descriptor with `id`, `label`, and optional `variant`
9
+ - **`SearchInputProps`** — Full props interface for the component; see table below
10
+
11
+ ### Helpers
12
+ - **`chipVariantToTagVariant`** — Maps `FilterChipData.variant` to the `Tag` component's `variant` prop
13
+
14
+ ### Main Export
15
+ - **`SearchInput`** The primary component
16
+
17
+ | Prop | Type | Default | Purpose |
18
+ |---|---|---|---|
19
+ | `value` / `defaultValue` | `string` | `""` | Controlled / uncontrolled input value |
20
+ | `debounceMs` | `number` | `300` | Debounce delay before `onChange` fires |
21
+ | `results` | `SearchResult[]` | `[]` | Dropdown result items |
22
+ | `filterChips` | `FilterChipData[]` | `[]` | Inline filter tags before the input |
23
+ | `limitTags` | `number \| "auto"` | `"auto"` | Max visible chips (auto-measures width) |
24
+ | `groupBy` | `(r) => string` | — | Groups results by a derived key |
25
+ | `minQueryLength` | `number` | `2` | Min chars before showing dropdown |
26
+ | `onResultSelect` | `(result, modifiers) => void` | — | Called on row select with modifier-key state |
21
27
 
22
28
  ## Usage Example
23
29
 
24
30
  ```typescript
25
- import { SearchInput, SearchResult } from "./search-input"
31
+ import { SearchInput, SearchResult } from "@openframe/ui"
26
32
 
27
33
  const results: SearchResult[] = [
28
- { id: "1", title: "Ticket #1042", description: "Printer offline", type: "ticket" },
29
- { id: "2", title: "Client: Acme Corp", type: "client" },
34
+ { id: "1", title: "Dashboard", description: "Main view", type: "page" },
35
+ { id: "2", title: "Devices", description: "All endpoints", type: "page" },
30
36
  ]
31
37
 
32
- <SearchInput
33
- placeholder="Search tickets, clients..."
34
- debounceMs={300}
35
- results={results}
36
- minQueryLength={2}
37
- onResultSelect={(result, modifiers) => {
38
- if (modifiers?.metaKey) {
39
- openInNewTab(result.path)
40
- } else {
41
- navigate(result.path)
42
- }
43
- }}
44
- filterChips={[{ id: "open", label: "Status: Open", variant: "selected" }]}
45
- onFilterRemove={(id) => removeFilter(id)}
46
- limitTags="auto"
47
- />
48
- ```
38
+ export function GlobalSearch() {
39
+ const [query, setQuery] = React.useState("")
40
+
41
+ return (
42
+ <SearchInput
43
+ value={query}
44
+ onChange={setQuery}
45
+ results={results}
46
+ debounceMs={300}
47
+ minQueryLength={2}
48
+ onResultSelect={(result, modifiers) => {
49
+ if (modifiers?.metaKey) {
50
+ // Open in background tab
51
+ window.open(`/${result.path}`, "_blank")
52
+ } else {
53
+ router.push(`/${result.path}`)
54
+ }
55
+ }}
56
+ filterChips={[
57
+ { id: "online", label: "Online", variant: "selected" },
58
+ ]}
59
+ onFilterRemove={(id) => console.log("Remove filter", id)}
60
+ groupBy={(r) => r.type ?? "Other"}
61
+ />
62
+ )
63
+ }
64
+ ```
65
+
66
+ **Source:** [`search-input.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/search-input.tsx)
@@ -1,19 +1,20 @@
1
- <!-- source-hash: 223f5a1c3c624e5773b99c85b384c3b9 -->
2
- Accessible, styled select dropdown component built on Radix UI's Select primitive, integrated with the OpenFrame Design System (ODS) token system and `FieldWrapper` for label/error support.
1
+ <!-- source-hash: e68a74e73e3bc8ce916bdb785ba7581e -->
2
+ Accessible, themed Select component built on Radix UI primitives, providing a fully styled dropdown with label, error, and validation state support via `FieldWrapper`.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  | Export | Description |
7
- |--------|-------------|
8
- | `Select` | Root select primitive (Radix `SelectPrimitive.Root`) |
9
- | `SelectTrigger` | Styled trigger button with `invalid`, `label`, and `error` props; wraps in `FieldWrapper` |
10
- | `SelectContent` | Dropdown panel rendered in a portal with open/close animations |
11
- | `SelectItem` | Individual option row with checkmark indicator and hover/disabled states |
12
- | `SelectGroup` | Groups related options (Radix `SelectPrimitive.Group`) |
13
- | `SelectLabel` | Label for an option group |
14
- | `SelectValue` | Displays the currently selected value placeholder |
15
- | `SelectSeparator` | Horizontal divider between options |
16
- | `SelectScrollUpButton` / `SelectScrollDownButton` | Scroll controls for long option lists |
7
+ |---|---|
8
+ | `Select` | Root component (`SelectPrimitive.Root`) — manages open/value state |
9
+ | `SelectTrigger` | Button that opens the dropdown; accepts `label`, `error`, and `invalid` props for form integration via `FieldWrapper` |
10
+ | `SelectContent` | Portal-rendered dropdown panel with enter/exit animations and scroll buttons |
11
+ | `SelectItem` | Individual option row; renders a `CheckIcon` accent indicator when selected |
12
+ | `SelectGroup` | Groups related items; pairs with `SelectLabel` |
13
+ | `SelectLabel` | Section heading within a group |
14
+ | `SelectValue` | Displays the current selected value inside the trigger |
15
+ | `SelectSeparator` | Horizontal divider between items or groups |
16
+ | `SelectScrollUpButton` | Scroll control rendered at the top of an overflowing list |
17
+ | `SelectScrollDownButton` | Scroll control rendered at the bottom of an overflowing list |
17
18
 
18
19
  ## Usage Example
19
20
 
@@ -28,10 +29,10 @@ import {
28
29
  SelectValue,
29
30
  } from "@/components/ui/select"
30
31
 
31
- // Basic usage with label and error validation
32
+ // Basic usage
32
33
  <Select>
33
- <SelectTrigger label="Region" error={errors.region?.message}>
34
- <SelectValue placeholder="Select a region..." />
34
+ <SelectTrigger label="Region" error={errors.region}>
35
+ <SelectValue placeholder="Select a region" />
35
36
  </SelectTrigger>
36
37
  <SelectContent>
37
38
  <SelectGroup>
@@ -42,22 +43,20 @@ import {
42
43
  </SelectContent>
43
44
  </Select>
44
45
 
45
- // Invalid / error state
46
+ // With invalid state
46
47
  <Select>
47
- <SelectTrigger label="Priority" invalid error="Priority is required">
48
- <SelectValue placeholder="Select priority..." />
48
+ <SelectTrigger
49
+ label="Priority"
50
+ error="Priority is required"
51
+ invalid
52
+ >
53
+ <SelectValue placeholder="Select priority" />
49
54
  </SelectTrigger>
50
55
  <SelectContent>
51
- <SelectItem value="low">Low</SelectItem>
52
- <SelectItem value="medium">Medium</SelectItem>
53
56
  <SelectItem value="high">High</SelectItem>
57
+ <SelectItem value="low">Low</SelectItem>
54
58
  </SelectContent>
55
59
  </Select>
56
60
  ```
57
61
 
58
- ## Notes
59
-
60
- - **Validation states**: Pass `error` (string) or `invalid` (boolean) to `SelectTrigger` to apply `ods-error` border and icon tinting.
61
- - **ODS tokens**: All colors use `ods-*` CSS custom properties (`ods-card`, `ods-accent`, `ods-error`, etc.) for consistent theming.
62
- - **Content width**: Dropdown matches trigger width via `--radix-select-trigger-width` CSS variable.
63
- - **Accessibility**: Built on Radix UI — keyboard navigation, ARIA roles, and focus management are handled automatically.
62
+ **Validation states:** The trigger border switches to `ods-error` when `invalid` is truthy or `error` is a non-empty string, and switches to `ods-accent` on open when valid. The dropdown width automatically matches the trigger via the `--radix-select-trigger-width` CSS variable.
@@ -1,20 +1,27 @@
1
- <!-- source-hash: fd0b3b382332c759225974101fb17198 -->
2
- Displays structured service information in a card layout with labeled rows that support copy, reveal (masked secrets), and external link actions.
1
+ <!-- source-hash: 726aed7bdab22617295842e04fb380be -->
2
+ A display card component for presenting service information with labeled rows that support copy-to-clipboard, external link opening, and secret value masking/revealing.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`ServiceCard`** Main card component rendering a header (icon, title, subtitle, tag) and a list of data rows
7
- - **`ServiceCardRowItem`** — Internal row component handling per-row interactivity (reveal/copy/open)
8
- - **`MaskedValue`** Renders a value as bullet dots (`•`) until revealed
9
- - **`ServiceCardProps`** Props interface for the card
10
- - **`ServiceCardRow`** Defines a single row with optional label, secret masking, monospace formatting, href, and action overrides
11
- - **`ServiceCardTag`** Badge displayed in the card header
12
- - **`ServiceCardRowAction`** Flags controlling which actions (`copy`, `open`, `reveal`) appear per row
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `ServiceCard` | Component | Main card with header (icon, title, subtitle, tag) and a list of data rows |
9
+ | `ServiceCardRowItem` | Component (internal) | Individual row with value display and action buttons |
10
+ | `MaskedValue` | Component (internal) | Renders a value as dots or plaintext based on reveal state |
11
+ | `ServiceCardProps` | Interface | Props for `ServiceCard` |
12
+ | `ServiceCardRow` | Type | Row data: label, value, href, secret flag, monospace flag, and per-row action overrides |
13
+ | `ServiceCardTag` | Type | Badge label displayed in the card header |
14
+ | `ServiceCardRowAction` | Type | Flags controlling which actions (`copy`, `open`, `reveal`) are available per row |
15
+
16
+ **Default row action behavior:**
17
+ - `copy` — always enabled
18
+ - `open` — enabled when `row.href` is provided
19
+ - `reveal` — enabled when `row.isSecret` is `true`
13
20
 
14
21
  ## Usage Example
15
22
 
16
23
  ```typescript
17
- import { ServiceCard } from '@your-org/ui'
24
+ import { ServiceCard } from '@openframe/ui'
18
25
 
19
26
  <ServiceCard
20
27
  title="PostgreSQL"
@@ -24,27 +31,26 @@ import { ServiceCard } from '@your-org/ui'
24
31
  {
25
32
  label: 'Host',
26
33
  value: 'db.example.com',
27
- actions: { copy: true },
34
+ actions: { copy: true, open: false },
28
35
  },
29
36
  {
30
37
  label: 'Password',
31
- value: 's3cr3tpassword',
38
+ value: 'super-secret-password',
32
39
  isSecret: true,
33
- copyValue: 's3cr3tpassword',
40
+ monospace: true,
34
41
  },
35
42
  {
36
43
  label: 'Console',
37
44
  value: 'Open dashboard',
38
45
  href: 'https://console.example.com',
39
- actions: { copy: false, open: true },
40
46
  },
41
47
  ]}
42
48
  />
43
49
  ```
44
50
 
45
- ## Behavior Notes
51
+ ## Notes
46
52
 
47
- - **Secrets** default to masked display; `reveal` action toggles visibility
48
- - **Copy** action defaults to `true`; uses `copyValue` if provided, otherwise falls back to `value`
49
- - **Open** action is automatically enabled when a `href` is present
50
- - Falls back to the **OpenFrameLogo** if no `icon` is supplied
53
+ - Defaults to the `OpenFrameLogo` icon when no `icon` prop is supplied.
54
+ - Secret rows display a bullet mask (`••••••••••••`) until the eye toggle is clicked.
55
+ - Copy feedback uses a `CheckIcon` that reverts after a short delay via the `useCopyToClipboard` hook.
56
+ - External links always open with `noopener,noreferrer` for security.
@@ -1,51 +1,51 @@
1
- <!-- source-hash: b12df94d463c0d388bcb0c53bac39207 -->
2
- A slide-out panel component built on top of Radix UI's Dialog primitive, supporting four directional variants (top, bottom, left, right) with animated open/close transitions.
1
+ <!-- source-hash: 907cdfd44e785932b3ad911c463d284f -->
2
+ A slide-out panel component built on Radix UI Dialog primitives, providing accessible sheet/drawer UI with animated entry and exit from any screen edge.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  | Export | Description |
7
- |--------|-------------|
8
- | `Sheet` | Root component wrapping Radix Dialog root |
7
+ |---|---|
8
+ | `Sheet` | Root component wrapping Radix UI Dialog |
9
9
  | `SheetTrigger` | Button/element that opens the sheet |
10
10
  | `SheetClose` | Element that closes the sheet |
11
- | `SheetPortal` | Renders sheet outside DOM hierarchy |
12
- | `SheetOverlay` | Semi-transparent backdrop (`z-[9997]`) |
13
- | `SheetContent` | Main panel container with side variants (`top`, `bottom`, `left`, `right`), defaults to `right` |
14
- | `SheetHeader` | Flex column wrapper for title/description |
15
- | `SheetFooter` | Flex row wrapper for action buttons |
16
- | `SheetTitle` | Styled heading (`text-lg font-semibold`) |
17
- | `SheetDescription` | Styled subtitle (`text-sm text-muted-foreground`) |
11
+ | `SheetPortal` | Renders sheet content outside the DOM hierarchy |
12
+ | `SheetOverlay` | Dimmed backdrop rendered behind the sheet |
13
+ | `SheetContent` | Main panel container; accepts `side` variant (`top`, `bottom`, `left`, `right`) |
14
+ | `SheetHeader` | Layout wrapper for title and description at the top |
15
+ | `SheetFooter` | Layout wrapper for action buttons at the bottom |
16
+ | `SheetTitle` | Accessible title styled with `text-h3` |
17
+ | `SheetDescription` | Accessible description styled with `text-h6 text-muted-foreground` |
18
+
19
+ **Variants (`sheetVariants`):** `side` — `top` | `bottom` | `left` | `right` (default: `right`)
18
20
 
19
21
  ## Usage Example
20
22
 
21
23
  ```typescript
22
24
  import {
23
25
  Sheet,
24
- SheetTrigger,
25
26
  SheetContent,
26
27
  SheetHeader,
27
28
  SheetTitle,
28
29
  SheetDescription,
29
30
  SheetFooter,
30
- SheetClose,
31
- } from "./sheet"
31
+ SheetTrigger,
32
+ } from "@/components/ui/sheet"
33
+ import { Button } from "@/components/ui/button"
32
34
 
33
- export function SettingsPanel() {
35
+ export function SettingsSheet() {
34
36
  return (
35
37
  <Sheet>
36
38
  <SheetTrigger asChild>
37
- <button>Open Settings</button>
39
+ <Button variant="outline">Open Settings</Button>
38
40
  </SheetTrigger>
39
41
  <SheetContent side="right">
40
42
  <SheetHeader>
41
43
  <SheetTitle>Settings</SheetTitle>
42
- <SheetDescription>Manage your preferences.</SheetDescription>
44
+ <SheetDescription>Manage your preferences here.</SheetDescription>
43
45
  </SheetHeader>
44
46
  {/* content */}
45
47
  <SheetFooter>
46
- <SheetClose asChild>
47
- <button>Close</button>
48
- </SheetClose>
48
+ <Button type="submit">Save Changes</Button>
49
49
  </SheetFooter>
50
50
  </SheetContent>
51
51
  </Sheet>
@@ -53,4 +53,4 @@ export function SettingsPanel() {
53
53
  }
54
54
  ```
55
55
 
56
- > The `side` prop on `SheetContent` accepts `"top" | "bottom" | "left" | "right"` and drives both positioning and slide animation direction. The close button (`X` icon) is automatically rendered inside `SheetContent`.
56
+ > **Source:** [`sheet.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/sheet.tsx) Requires Radix UI (`@radix-ui/react-dialog`), `class-variance-authority`, and `lucide-react`.
@@ -1,40 +1,52 @@
1
- <!-- source-hash: cb258dc120396ef8c715487b0cdc1022 -->
2
- Client-side React component that renders LLM-generated markdown safely, combining `react-markdown` with a custom XSS sanitization pipeline and support for GitHub-flavored markdown, syntax highlighting, and embedded media.
1
+ <!-- source-hash: 9a47236bd9fd4f90eece958d3708b946 -->
2
+ A client-side React component that renders Markdown content with GFM support, syntax highlighting, raw HTML passthrough, and a layered XSS sanitization pipeline designed for safe rendering of LLM-generated output.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### Security Pipeline
7
- - **`rehypeStripUnsafe()`** — Custom rehype plugin that strips dangerous HAST nodes after `rehype-raw` parsing. Removes `<script>`, `<style>`, `<object>`, event handler attributes (`on*`), `javascript:` / `data:` URIs, and `iframe srcdoc` vectors.
8
- - **`srcsetHasUnsafeCandidate()`** — Inspects every candidate URL in `srcset` attributes (not just the first), preventing multi-candidate injection attacks.
9
- - **`escapeUnknownHtmlTags()`** — Pre-processes markdown text to escape HTML tags not in the `SAFE_HTML_TAGS` allowlist, preventing LLM-emitted XML-style tags (e.g., `<ticket>`, `<their>`) from reaching React as unrecognized custom elements. Preserves code blocks and inline code spans.
10
- - **`cardAwareUrlTransform()`** — Extends `react-markdown`'s default URL sanitizer to allow the internal `card://` scheme for chat-card markers while keeping all other unsafe schemes blocked.
6
+ ### Rehype Plugins
11
7
 
12
- ### Constants & Regexes
13
- | Export | Purpose |
14
- |--------|---------|
15
- | `SAFE_HTML_TAGS` | Allowlist of permitted HTML5 tags forwarded to React |
16
- | `STRIP_ELEMENTS` | Tags removed entirely at the HAST level |
17
- | `EVENT_HANDLER_ATTR_RE` | Matches `on*` attribute names |
18
- | `JAVASCRIPT_URL_RE` / `DATA_URL_RE` | Detect unsafe URL schemes |
19
- | `TAG_LIKE_REGEX` | Parses HTML-like tags in markdown source |
8
+ - **`rehypeStripUnsafe()`** Custom HAST sanitizer that runs after `rehype-raw`. Strips dangerous elements (`<script>`, `<style>`, `<object>`, etc.), removes `on*` event handler attributes, and blocks `javascript:` / `data:` URI schemes on all URL-bearing attributes including multi-candidate `srcset`.
20
9
 
21
- ### Mermaid Support
22
- - `mermaidStyles` — Responsive CSS for Mermaid SVG diagrams using DM Sans font.
10
+ - **`srcsetHasUnsafeCandidate(srcset)`** — Helper that splits `srcset` attribute values by comma and validates each URL candidate individually to prevent injection via secondary candidates.
11
+
12
+ - **`escapeUnknownHtmlT...` (truncated)** — Pre-pass that escapes unrecognized HTML-like tags in raw markdown text before `rehype-raw` processes them, preventing React warnings/errors from LLM-emitted pseudo-XML tags like `<ticket>` or `<their>`.
13
+
14
+ ### URL Transform
15
+
16
+ - **`cardAwareUrlTransform(url, key)`** — Extends `react-markdown`'s default URL sanitizer to allow `card://` and `mention://` internal schemes on `href` attributes only (used by `remarkCardLinks` and `remarkMentionChips` plugins), while keeping all other dangerous schemes blocked.
17
+
18
+ ### Constants
19
+
20
+ - **`SAFE_HTML_TAGS`** — Allowlist of permitted HTML tag names forwarded to React. Explicitly excludes `<video>` (handled by a separate pipeline component).
21
+ - **`TAG_LIKE_REGEX`** — ReDoS-safe regex (CodeQL-hardened, bounded quantifiers) for matching HTML-like tags in markdown source.
23
22
 
24
23
  ## Usage Example
25
24
 
26
25
  ```typescript
27
26
  import { SimpleMarkdownRenderer } from './simple-markdown-renderer';
28
27
 
29
- // Basic usage content is sanitized automatically
28
+ // Basic rendering with safe LLM output
29
+ <SimpleMarkdownRenderer content="## Hello\n\nThis is **markdown** with `code`." />
30
+
31
+ // With authenticated image sources and link resolution
30
32
  <SimpleMarkdownRenderer
31
- content="## Hello\n\nThis is **LLM-generated** markdown with `code`."
33
+ content={llmMarkdownOutput}
34
+ resolveLink={(href) => ({ url: href, label: href })}
32
35
  />
36
+ ```
37
+
38
+ ## Security Model
39
+
40
+ The sanitization runs in two layers:
33
41
 
34
- // The sanitizer prevents XSS from LLM output automatically:
35
- // "<script>alert(1)</script>" → stripped
36
- // "<their> tag" escaped to &lt;their&gt;
37
- // "javascript:alert(1)" href removed
42
+ ```mermaid
43
+ graph TD
44
+ A[Raw Markdown] --> B[escapeUnknownHtmlTags pre-pass]
45
+ B --> C[remark-gfm / remark-breaks]
46
+ C --> D[rehype-raw]
47
+ D --> E[rehypeStripUnsafe HAST sanitizer]
48
+ E --> F[rehype-highlight]
49
+ F --> G[Safe React Output]
38
50
  ```
39
51
 
40
- > **Note:** This renderer is designed specifically for untrusted LLM output. The sanitization pipeline runs in layers: text pre-processing → `rehype-raw` → `rehypeStripUnsafe` → `rehype-highlight`, ensuring no XSS vectors survive even if one layer is bypassed. Community support is available on the [OpenMSP Slack](https://join.slack.com/t/openmsp/shared_invite/zt-36bl7mx0h-3~U2nFH6nqHqoTPXMaHEHA).
52
+ > **Source:** [`simple-markdown-renderer.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/simple-markdown-renderer.tsx)
@@ -0,0 +1,49 @@
1
+ <!-- source-hash: d746a22911a18c216f0712e84500c22e -->
2
+ Inline UI chip that renders a Slack icon alongside a channel name, optionally wrapped in a hyperlink to the channel's web deep link.
3
+
4
+ ## Key Components
5
+
6
+ ### `SlackChannelChip`
7
+ A server-component-safe React functional component with no hooks or state. Composes a `SlackIcon` with a formatted channel label and conditionally wraps the output in an anchor tag.
8
+
9
+ ### `SlackChannelChipProps`
10
+ | Prop | Type | Description |
11
+ |------|------|-------------|
12
+ | `name` | `string \| null` | Channel name without `#` prefix. Falls back to `"Slack"` when absent. |
13
+ | `href` | `string \| null` | Web deep link (e.g. `https://app.slack.com/client/T…/C…`). Omit to render unlinked. |
14
+ | `className` | `string` | Extra classes merged onto the chip `<span>`. |
15
+
16
+ ## Usage Example
17
+
18
+ ```typescript
19
+ import { SlackChannelChip } from './slack-channel-chip';
20
+
21
+ // Linked chip with channel name
22
+ <SlackChannelChip
23
+ name="general"
24
+ href="https://app.slack.com/client/T01234/C56789"
25
+ />
26
+ // Renders: 🔗 [<SlackIcon> #general]
27
+
28
+ // Unlinked fallback (no href)
29
+ <SlackChannelChip name="alerts" />
30
+ // Renders: <SlackIcon> #alerts
31
+
32
+ // Minimal fallback (no name, no href)
33
+ <SlackChannelChip />
34
+ // Renders: <SlackIcon> Slack
35
+
36
+ // With custom styling
37
+ <SlackChannelChip
38
+ name="incidents"
39
+ href="https://app.slack.com/client/T01234/C99999"
40
+ className="text-sm font-medium"
41
+ />
42
+ ```
43
+
44
+ ## Behavior Notes
45
+
46
+ - **No `href`** → renders a plain `<span>`, no anchor tag.
47
+ - **No `name`** → label falls back to `"Slack"` (no `#` prefix).
48
+ - **Linked** → opens in a new tab with `rel="noopener noreferrer"` and adds `hover:underline`.
49
+ - Safe to use in React Server Components — contains no client-side hooks or state.