@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,39 +1,32 @@
1
- <!-- source-hash: 6164b984e1688be647fedf5037a794eb -->
2
- Brief description of the file's purpose: This hook encapsulates all ticket write operations (create, update, close, reopen, reply) for the Flamingo/OpenFrame tickets UI, routing them through a single `/api/chat/agent/ticket-action` endpoint with single-flight protection, per-row mutexes, a serialization queue, and mirror-sync retry logic.
1
+ <!-- source-hash: 972f5fe6b007673ab1eb81a819bd300b -->
2
+ Orchestrates all ticket write operations (create, update, close, reopen, reply) through a single POST endpoint, with optimistic UI updates, per-row mutex guards, a serialized mutation queue, and mirror-sync retry logic.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `useTicketActions(options: UseTicketActionsOptions): UseTicketActionsReturn`
7
- The primary exported hook. Accepts callback options from the parent and returns ticket action handlers plus loading state selectors.
8
-
9
- ### `UseTicketActionsOptions`
10
- Configuration interface injected by the parent component:
11
- - `prependOptimistic` — adds an optimistic placeholder row to the QueryClient cache before the server roundtrip
12
- - `removeOptimistic` removes the placeholder on mirror-sync failure or real ticket arrival
13
- - `removeTicketFromCache` — silent cache removal on `TICKET_NOT_FOUND`
14
- - `toast` notification helper (injected for testability)
15
- - `onSupportSystemDown` called on `412 HUBSPOT_DISCONNECTED`
16
-
17
- ### `UseTicketActionsReturn`
18
- Returned handler surface:
19
- - `submitTicket(input)` — creates a new ticket with subject, content, and optional attachments
20
- - `sendMessage(ticket, text, attachments)` — sends a combined reply note
21
- - `closeTicket(ticket, resolution?)` — closes a ticket
22
- - `reopenTicket(ticket)` — reopens a closed ticket
23
- - `isSubmittingForm` — boolean loading state for form-level submission
24
- - `isRowBusy(localId)` — per-row busy predicate for UI disabling
25
-
26
- ### `TicketRef`
27
- Decouples the local mirror UUID (`id`) from the HubSpot external id (`external_id`), both required for correct mutex and server routing.
6
+ ### Hook
7
+
8
+ **`useTicketActions(options)`** — Returns all ticket mutation helpers and associated state selectors.
9
+
10
+ ### Interfaces
11
+
12
+ | Interface | Purpose |
13
+ |---|---|
14
+ | `UseTicketActionsOptions` | Inbound callbacks: `prependOptimistic`, `removeOptimistic`, `removeTicketFromCache`, `toast`, `onSupportSystemDown` |
15
+ | `UseTicketActionsReturn` | Outbound actions and state selectors |
16
+ | `TicketRef` | Decouples the local mirror UUID (`id`) from the HubSpot external ID (`external_id`) |
17
+ | `TicketActionResponse` | Flat wire shape from `/api/chat/agent/ticket-action` |
28
18
 
29
19
  ### Internal Mechanisms
30
- | Mechanism | Purpose |
20
+
21
+ | Mechanism | Description |
31
22
  |---|---|
32
- | `formInFlightRef` + `isSubmittingForm` | Prevents duplicate form submits across async ticks |
33
- | `busyRowsRef` + `busyRows` | Per-row mutex preventing fan-out on the same ticket row |
34
- | `queueRef` / `enqueue` | Depth-1 serial queue preventing server rate-limit stampedes |
35
- | `watchMirrorSync` | 3s/6s/12s backoff refetch loop when `mirror_synced === false`; drops placeholder after 30s cap |
36
- | `watcherControllersRef` | `AbortController` map; aborted on unmount and on duplicate-submit replacement |
23
+ | `formInFlightRef` + `isSubmittingForm` | Ref/state split prevents duplicate form submits in the same tick |
24
+ | `busyRowsRef` + `busyRows` | Per-row `Set<string>` mutex; `isRowBusy(localId)` drives row-level UI disable |
25
+ | `enqueue()` | Depth-1 promise queue serializes all mutations; prevents server rate-limit stampedes |
26
+ | `watcherControllersRef` | Tracks `AbortController` per placeholder for mirror-sync backoff refetches; cleaned up on unmount |
27
+ | `replyErrorByTicket` | Persisted `Map<externalId, error>` powers the inline reply-failure banner in `<TicketDetailDrawer>` |
28
+ | `REPLY_BANNER_CODES` | Subset of `TicketActionErrorCode` values that surface in the inline banner vs. toast-only |
29
+ | `MIRROR_SYNC_BACKOFF_MS` | `[3000, 6000, 12000]` ms retry schedule (~21s cumulative); drops placeholder after exhaustion |
37
30
 
38
31
  ## Usage Example
39
32
 
@@ -45,33 +38,53 @@ const {
45
38
  reopenTicket,
46
39
  isSubmittingForm,
47
40
  isRowBusy,
41
+ replyErrorFor,
42
+ clearReplyError,
48
43
  } = useTicketActions({
49
44
  prependOptimistic: (placeholder) => {
50
- queryClient.setQueryData(['tickets'], (old: TicketData) => ({
51
- ...old,
52
- tickets: [placeholder, ...(old?.tickets ?? [])],
53
- }))
54
- },
55
- removeOptimistic: (id) => {
56
- queryClient.setQueryData(['tickets'], (old: TicketData) => ({
57
- ...old,
58
- tickets: old?.tickets.filter((t) => t.id !== id) ?? [],
45
+ queryClient.setQueryData(['tickets'], (prev: TicketData) => ({
46
+ ...prev,
47
+ tickets: [placeholder, ...prev.tickets],
59
48
  }))
60
49
  },
61
- removeTicketFromCache: (ticketId) => { /* cache mutation */ },
50
+ removeOptimistic: (placeholderId) => { /* remove from cache */ },
51
+ removeTicketFromCache: (ticketId) => { /* evict row */ },
62
52
  toast,
63
53
  onSupportSystemDown: () => setSupportSystemDown(true),
64
54
  })
65
55
 
66
- // Create a ticket
56
+ // Create a new ticket
67
57
  const ok = await submitTicket({
68
- subject: 'VPN not connecting',
69
- content: 'Unable to connect since this morning.',
58
+ subject: 'Outlook keeps crashing',
59
+ content: 'Happens on every launch since the last update.',
60
+ attachments: [],
70
61
  })
71
62
 
72
- // Close a ticket
63
+ // Reply with text + attachments in one HubSpot Note
64
+ await sendMessage(
65
+ { id: 'uuid-123', external_id: 'hs-456' },
66
+ 'Reproduced — pushing a fix now.',
67
+ [attachment],
68
+ )
69
+
70
+ // Close with resolution note
73
71
  await closeTicket(
74
- { id: ticket.id, external_id: ticket.external_id },
75
- 'Resolved by restarting the VPN client.'
72
+ { id: 'uuid-123', external_id: 'hs-456' },
73
+ 'Resolved by rolling back the update.',
76
74
  )
77
- ```
75
+
76
+ // Disable a row while its action is in flight
77
+ <button disabled={isRowBusy(ticket.id)}>Close</button>
78
+
79
+ // Show inline reply error banner
80
+ const replyError = replyErrorFor(ticket.external_id)
81
+ {replyError && (
82
+ <ReplyErrorBanner error={replyError} onDismiss={() => clearReplyError(ticket.external_id)} />
83
+ )}
84
+ ```
85
+
86
+ ## Notes
87
+
88
+ - All mutations route through `executeTicketAction()`, which calls `embedAuthedFetch` with bearer/act-as headers — the same auth path as the chat agent.
89
+ - `TicketRef.id` (UUID) and `TicketRef.external_id` (HubSpot numeric ID) must be kept distinct; swapping them causes either a React mutex miss or a HubSpot 404.
90
+ - Source: [`use-ticket-actions.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/use-ticket-actions.ts)
@@ -1,42 +1,42 @@
1
- <!-- source-hash: 14e8fee946105e4d0d83a53313cfd255 -->
2
- Fetches the conversation timeline (notes, messages, and attachments) for a single HubSpot ticket, powering the ticket drawer's timeline view. Intentionally separate from the ticket list hook since engagements require expensive multi-stage API calls and are only loaded on demand.
1
+ <!-- source-hash: 0e3b0537d223c117b5e9ba85795c3235 -->
2
+ Fetches and manages the conversation timeline (Note engagements and attachments) for a single ticket, powering the drawer's timeline view with optional live-polling support.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### Interfaces
7
7
 
8
- | Interface | Description |
9
- |---|---|
10
- | `TicketEngagementFile` | Attachment metadata: `id`, `name`, `url`, `mime`, `size` |
11
- | `TicketEngagement` | A single timeline entry with body, author info (`authorRole`, `authorName`, `authorEmail`, `authorAvatarUrl`), timestamp, and attachments |
12
- | `UseTicketEngagementsReturn` | Return shape: `engagements`, `isLoading`, `isFetching`, `error`, `refetch` |
8
+ - **`TicketEngagementFile`** Attachment metadata: `id`, `name`, `url`, `mime`, `size`
9
+ - **`TicketEngagement`** — A single timeline entry with `body`, `authorRole` (`'customer' | 'support'`), resolved `authorName`/`authorEmail`/`authorAvatarUrl`, `createdAt`, and `attachments`
10
+ - **`UseTicketEngagementsReturn`** Hook return shape: `engagements`, `isLoading`, `isFetching`, `error`, `refetch`
13
11
 
14
12
  ### Hook
15
13
 
16
- **`useTicketEngagements(externalTicketId, enabled?)`** — Queries `/api/chat/agent/list-engagements` via `embedAuthedFetch`. Skips execution for anonymous users, missing ticket IDs, and optimistic `temp-*` placeholders. Caching is intentionally disabled (`staleTime: 0`, `gcTime: 0`) so every drawer-open reflects live HubSpot state.
14
+ **`useTicketEngagements(externalTicketId, enabled?, refetchInterval?)`**
15
+
16
+ - Skips fetching for optimistic (`temp-*`) ticket IDs and unauthenticated (`anon`) identities
17
+ - Posts to `/api/chat/agent/list-engagements` via `embedAuthedFetch`
18
+ - Disables all caching (`staleTime: 0`, `gcTime: 0`) to ensure HubSpot truth on every drawer open
19
+ - Supports configurable live-polling via `refetchInterval`; polling automatically stops when the drawer unmounts
20
+ - Fixes a skeleton double-flash by treating a fetchable ticket as "loading" from the very first render, even before `useChatIdentity` resolves
17
21
 
18
22
  ## Usage Example
19
23
 
20
24
  ```typescript
21
- const { engagements, isLoading, error, refetch } = useTicketEngagements(ticket.externalId)
22
-
23
- if (isLoading) return <Spinner />
24
- if (error) return <ErrorBanner message={error.message} />
25
-
26
- return (
27
- <Timeline>
28
- {engagements.map(e => (
29
- <TimelineEntry
30
- key={e.id}
31
- body={e.body}
32
- role={e.authorRole} // 'customer' | 'support'
33
- author={e.authorName}
34
- avatarUrl={e.authorAvatarUrl}
35
- attachments={e.attachments}
36
- />
37
- ))}
38
- </Timeline>
25
+ // Basic usage fetch once when drawer opens
26
+ const { engagements, isLoading, error } = useTicketEngagements(ticket.externalId)
27
+
28
+ // Live-polling variant refresh every 15 seconds while drawer is open
29
+ const TICKET_LIVE_POLL_MS = 15_000
30
+
31
+ const { engagements, isFetching, refetch } = useTicketEngagements(
32
+ ticket.externalId,
33
+ true,
34
+ TICKET_LIVE_POLL_MS,
39
35
  )
40
36
  ```
41
37
 
42
- > **Security note:** The server-side route enforces ticket ownership via `ticketBelongsToCustomer` before returning notes — customers cannot enumerate another customer's timeline by guessing ticket IDs.
38
+ ## Notes
39
+
40
+ - Server enforces ticket ownership via `ticketBelongsToCustomer` before returning notes — customers cannot enumerate another customer's timeline by guessing ticket IDs
41
+ - `authorName` for `support` engagements is resolved by matching the HubSpot owner email against the `profiles` table; returns `null` for non-Flamingo employees
42
+ - For `customer` messages, `authorName`/`authorAvatarUrl` are `null` on the wire; the drawer reads live identity values for the current user's own messages
@@ -1,36 +1,29 @@
1
- <!-- source-hash: 9effa67e5fd33a6782ade58cc9bf19ec -->
2
- Customer-scoped ticket list hook that wraps `POST /api/chat/agent/find-ticket`, supporting free-text search, status filtering, and server-side pagination with a single round-trip returning both rows and total count.
1
+ <!-- source-hash: 6260376ea77bd4ce957bd2534ddcd997 -->
2
+ Customer-scoped ticket list hook that wraps `POST /api/chat/agent/find-ticket`, returning paginated results with filtering support for search text and ticket status.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `useTicketsList(filters)`
7
- Main exported hook. Accepts a `UseTicketsListFilters` object and returns `UseTicketsListReturn`.
8
-
9
6
  ### `UseTicketsListFilters`
10
- | Field | Type | Description |
11
- |-------|------|-------------|
12
- | `customerEmail` | `string` | Resolved identity from parent **must** be drilled in, not re-fetched |
13
- | `search` | `string?` | Free-text FTS query; empty = list all tickets |
14
- | `status` | `string?` | `'open'` \| `'closed'` \| `'all'` empty/`'all'` skips filter |
15
- | `page` | `number?` | 1-based page number, defaults to `1` |
16
- | `pageSize` | `number?` | Items per page, server-capped at `100`, defaults to `20` |
7
+ Input interface controlling the query:
8
+ - `customerEmail` — required identity (drilled from parent to avoid race conditions with `useChatIdentity`)
9
+ - `search` free-text FTS filter; empty string returns all tickets
10
+ - `status` `'open'` | `'closed'` | `'all'` (empty/`'all'` omits the filter)
11
+ - `page` / `pageSize` 1-based pagination; server caps `pageSize` at 100
12
+ - `refetchInterval` optional polling interval (ms) for live status updates; paused on hidden tabs
17
13
 
18
14
  ### `UseTicketsListReturn`
19
- | Field | Type | Description |
20
- |-------|------|-------------|
21
- | `tickets` | `TicketData[]` | Current page of tickets |
22
- | `totalCount` | `number` | Total across all pages (drives pagination) |
23
- | `totalPages` | `number` | Pre-computed, clamped to ≥1 |
24
- | `page` / `pageSize` | `number` | Server-echoed values |
25
- | `isLoading` | `boolean` | `true` when no data exists for the current query slot |
26
- | `isFetching` | `boolean` | `true` during any background refetch |
27
- | `lastUpdatedAt` | `number \| null` | Wall-clock timestamp of last successful fetch |
15
+ Output shape:
16
+ - `tickets` — current page rows
17
+ - `isLoading` true when `data === undefined` or fetching with zero results (avoids TanStack v5 flag race conditions)
18
+ - `totalCount` / `page` / `pageSize` / `totalPages` server-echoed pagination metadata; `totalPages` is clamped to ≥ 1
19
+ - `lastUpdatedAt` wall-clock timestamp of last successful fetch
28
20
 
29
- ## Cache Behavior
30
-
31
- - **Key:** `['tickets', 'self', identity, search, status, page, pageSize]` each filter+page combo occupies its own slot
32
- - **Caching disabled** (`staleTime: 0`, `gcTime: 0`)always fetches fresh data on mount, focus, and navigation
33
- - **Invalidation:** `useTicketActions` calls `queryClient.invalidateQueries({ queryKey: ['tickets'] })` after mutations, refreshing all slots
21
+ ### `useTicketsList(filters)`
22
+ Core hook. Key behaviors:
23
+ - Disabled when `customerEmail` is falsy (short-circuits the fetch)
24
+ - Cache keyed by `['tickets', 'self', identity, search, status, page, pageSize]` — each filter/page combo gets its own slot
25
+ - `staleTime: 0`, `gcTime: 0`, `refetchOnMount: 'always'` deliberately no caching (live customer data)
26
+ - Endpoint resolved from `useRequiredChatRuntime()` for reverse-proxy compatibility
34
27
 
35
28
  ## Usage Example
36
29
 
@@ -41,14 +34,15 @@ const {
41
34
  totalCount,
42
35
  totalPages,
43
36
  page,
44
- pageSize,
37
+ refetch,
45
38
  } = useTicketsList({
46
39
  customerEmail: identity.user.email,
47
- search: 'printer not working',
40
+ search: searchQuery,
48
41
  status: 'open',
49
- page: 1,
42
+ page: currentPage,
50
43
  pageSize: 20,
44
+ refetchInterval: isDrawerOpen ? 10_000 : false,
51
45
  })
52
46
  ```
53
47
 
54
- > **Note:** Never call `useChatIdentity` inside this hook. Always drill `customerEmail` from the parent to avoid a null-identity race that causes an `EmptyState` flash before the first fetch fires.
48
+ > Invalidate all ticket slots after mutations via `queryClient.invalidateQueries({ queryKey: ['tickets'] })`.
@@ -1,37 +1,39 @@
1
- <!-- source-hash: 81d02993dbe561b42733bf91b8d62a0e -->
2
- A React accordion component built on top of Radix UI primitives with custom styling and animations. This provides a fully accessible, keyboard-navigable accordion interface with smooth expand/collapse animations.
1
+ <!-- source-hash: 22ee9a9634992447bd91b4c524998d3b -->
2
+ Accessible accordion component built on Radix UI primitives, providing collapsible content sections with animated expand/collapse transitions and a rotating chevron indicator.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`Accordion`** - Root container component (alias for `AccordionPrimitive.Root`)
7
- - **`AccordionItem`** - Individual accordion item wrapper with border styling
8
- - **`AccordionTrigger`** - Clickable header with chevron icon that rotates on expand
9
- - **`AccordionContent`** - Collapsible content area with custom accordion animations
6
+ | Export | Description |
7
+ |--------|-------------|
8
+ | `Accordion` | Root container (re-export of `AccordionPrimitive.Root`); accepts `type="single"` or `type="multiple"` |
9
+ | `AccordionItem` | Individual collapsible section with a bottom border |
10
+ | `AccordionTrigger` | Clickable header with a `ChevronDown` icon that rotates 180° when open |
11
+ | `AccordionContent` | Animated content panel using `animate-accordion-up/down` Tailwind keyframes |
10
12
 
11
13
  ## Usage Example
12
14
 
13
15
  ```typescript
14
- import {
15
- Accordion,
16
- AccordionItem,
17
- AccordionTrigger,
18
- AccordionContent
19
- } from "./accordion"
20
-
21
- export function FAQSection() {
16
+ import {
17
+ Accordion,
18
+ AccordionItem,
19
+ AccordionTrigger,
20
+ AccordionContent,
21
+ } from "@/components/ui/accordion"
22
+
23
+ export function FAQAccordion() {
22
24
  return (
23
- <Accordion type="single" collapsible className="w-full">
25
+ <Accordion type="single" collapsible defaultValue="item-1">
24
26
  <AccordionItem value="item-1">
25
- <AccordionTrigger>What is your return policy?</AccordionTrigger>
27
+ <AccordionTrigger>What is OpenFrame?</AccordionTrigger>
26
28
  <AccordionContent>
27
- We offer a 30-day return policy for all items in original condition.
29
+ OpenFrame is a unified AI-driven platform for MSP operations.
28
30
  </AccordionContent>
29
31
  </AccordionItem>
30
-
32
+
31
33
  <AccordionItem value="item-2">
32
- <AccordionTrigger>How long does shipping take?</AccordionTrigger>
34
+ <AccordionTrigger>How does Mingo AI work?</AccordionTrigger>
33
35
  <AccordionContent>
34
- Standard shipping takes 3-5 business days within the US.
36
+ Mingo AI automates IT support tasks for technicians.
35
37
  </AccordionContent>
36
38
  </AccordionItem>
37
39
  </Accordion>
@@ -39,4 +41,9 @@ export function FAQSection() {
39
41
  }
40
42
  ```
41
43
 
42
- The component includes built-in hover effects, smooth animations via CSS custom properties (`animate-accordion-up/down`), and automatic chevron rotation when items expand or collapse.
44
+ ## Notes
45
+
46
+ - **`type="single"`** allows only one open item at a time; **`type="multiple"`** allows several.
47
+ - Pass `collapsible` on a `single` accordion to allow closing the active item.
48
+ - All components forward refs and accept standard Radix UI props alongside `className` for Tailwind customization.
49
+ - Source: [`accordion.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/accordion.tsx)
@@ -1,31 +1,15 @@
1
- <!-- source-hash: 342a87b9f572574fd4c65a58c52361ef -->
2
- A flexible, accessible dropdown actions menu component built on Radix UI primitives, supporting grouped items, checkboxes, submenus, navigation links, and secondary icon actions.
1
+ <!-- source-hash: d6f4857e4f0fccaffff7c8abd70a2f28 -->
2
+ A flexible, grouped actions menu component supporting inline display and dropdown trigger modes, with items that can be plain actions, checkboxes, submenus, separators, or navigation links each optionally enhanced with a secondary icon action.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### Exported Components
7
-
8
- | Component | Description |
9
- |-----------|-------------|
10
- | `ActionsMenu` | Standalone menu panel (no trigger) renders grouped items directly |
11
- | `ActionsMenuDropdown` | Full dropdown with a configurable trigger button and Radix-powered popover |
12
-
13
- ### Internal Components
14
-
15
- | Component | Description |
16
- |-----------|-------------|
17
- | `MenuItem` | Renders a single item — handles `item`, `checkbox`, `submenu`, `separator`, and link variants |
18
- | `SecondaryAction` | 40px secondary icon button/link on the right side of a row, independently clickable |
19
- | `GroupSeparator` | Visual divider rendered between groups when `separator: true` |
20
-
21
- ### Key Interfaces
22
-
23
- | Interface | Purpose |
24
- |-----------|---------|
25
- | `ActionsMenuItem` | Single menu item with optional `href`, `submenu`, `iconAction`, `checked` |
26
- | `ActionsMenuGroup` | Collection of items with optional separator |
27
- | `ActionsMenuProps` | Props for `ActionsMenu` — `groups`, `className`, `onItemClick` |
28
- | `ActionsMenuDropdownProps` | Extends `ActionsMenuProps` with trigger, alignment, and popover controls |
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `ActionsMenu` | Component | Standalone menu panel rendering grouped `ActionsMenuItem` rows |
9
+ | `ActionsMenuDropdown` | Component | Wraps `ActionsMenu` in a Radix UI dropdown with a configurable trigger button |
10
+ | `ActionsMenuItemIconAction` | Interface | Secondary icon button/link rendered on the right edge of a menu row |
11
+ | `ActionsMenuItem` | Interface | Single menu row supports `item`, `checkbox`, `submenu`, and `separator` types |
12
+ | `ActionsMenuGroup` | Interface | Ordered collection of items with an optional visual separator |
29
13
 
30
14
  ## Usage Example
31
15
 
@@ -39,49 +23,47 @@ const groups = [
39
23
  id: "edit",
40
24
  label: "Edit",
41
25
  icon: <EditIcon />,
42
- onClick: () => console.log("Edit clicked"),
26
+ onClick: () => console.log("edit"),
43
27
  },
44
- {
45
- id: "open",
46
- label: "Open in new tab",
47
- href: "/resource/123",
48
- iconAction: {
49
- icon: <ExternalLinkIcon />,
50
- "aria-label": "Open in new tab",
51
- href: "/resource/123",
52
- openInNewTab: true,
53
- },
54
- },
55
- ],
56
- separator: true,
57
- },
58
- {
59
- items: [
60
28
  {
61
29
  id: "notify",
62
30
  label: "Notifications",
63
- type: "checkbox",
31
+ type: "checkbox" as const,
64
32
  checked: true,
65
33
  onClick: () => toggleNotifications(),
66
34
  },
67
- { id: "sep", label: "", type: "separator" },
35
+ ],
36
+ },
37
+ {
38
+ separator: true,
39
+ items: [
68
40
  {
69
41
  id: "delete",
70
42
  label: "Delete",
71
- disabled: true,
72
- onClick: () => handleDelete(),
43
+ danger: true,
44
+ onClick: () => confirmDelete(),
73
45
  },
74
46
  ],
75
47
  },
76
48
  ];
77
49
 
78
- <ActionsMenuDropdown
79
- groups={groups}
80
- align="end"
81
- side="bottom"
82
- triggerAriaLabel="More actions"
83
- onItemClick={(item) => console.log("Clicked:", item.id)}
84
- />
50
+ export function MyComponent() {
51
+ return (
52
+ <ActionsMenuDropdown
53
+ groups={groups}
54
+ align="end"
55
+ side="bottom"
56
+ triggerAriaLabel="Row actions"
57
+ />
58
+ );
59
+ }
85
60
  ```
86
61
 
87
- > **Note:** The dropdown auto-closes after selecting a regular item but stays open for `checkbox` and `submenu` types, allowing toggling and nested navigation.
62
+ ## Notes
63
+
64
+ - `closeOnSelect` defaults to closing the dropdown; set to `false` to keep it open (useful for multi-select scenarios).
65
+ - `ActionsMenuDropdown` supports **controlled open state** via `open` + `onOpenChange`.
66
+ - Items with `href` render as Next.js `<Link>` elements; `iconAction` renders an independent secondary `<Link>` or `<button>` on the row's right edge.
67
+ - Submenus use Radix `DropdownMenuPrimitive.Sub` and support recursive `MenuItem` rendering.
68
+
69
+ **Source:** [`actions-menu.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/actions-menu.tsx)
@@ -0,0 +1,25 @@
1
+ <!-- source-hash: 8efc6e7d680013ff739aca49651afb03 -->
2
+ Renders a standardized "AI Generated" badge with a Sparkles icon, serving as the single source of truth for AI-generated content indicators across the application.
3
+
4
+ ## Key Components
5
+
6
+ - **`AIGeneratedBadge`** — A functional component that wraps the `Badge` component with a fixed `secondary` variant, a `Sparkles` icon (12×12px), and the label "AI Generated". Accepts an optional `className` prop for additional styling.
7
+
8
+ ## Usage Example
9
+
10
+ ```typescript
11
+ import { AIGeneratedBadge } from '@/components/ui/ai-generated-badge';
12
+
13
+ // Basic usage
14
+ <AIGeneratedBadge />
15
+
16
+ // With custom positioning class
17
+ <AIGeneratedBadge className="absolute top-2 right-2" />
18
+ ```
19
+
20
+ ## Notes
21
+
22
+ - Replaces repeated inline `<Badge variant="secondary"><Sparkles/> AI Generated</Badge>` patterns previously copy-pasted across summary, video, and SEO editors.
23
+ - The `className` prop is appended to the base flex layout classes, allowing layout overrides without losing default styling.
24
+
25
+ **Source:** [`ai-generated-badge.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/ai-generated-badge.tsx)
@@ -1,21 +1,21 @@
1
- <!-- source-hash: 6146e5c92352e7744ffcf239f861beb3 -->
2
- Accessible alert dialog component built on Radix UI's `AlertDialogPrimitive`, providing a modal confirmation pattern with animated overlay, centered content panel, and styled action/cancel buttons using Tailwind CSS.
1
+ <!-- source-hash: 987a3c72b70286ca2d2102e429fad6b4 -->
2
+ Accessible alert dialog component built on Radix UI primitives, providing a modal confirmation dialog with overlay, animations, and styled action/cancel buttons using the OpenFrame design system.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  | Export | Description |
7
- |--------|-------------|
8
- | `AlertDialog` | Root component (Radix `Root`) managing open/close state |
7
+ |---|---|
8
+ | `AlertDialog` | Root component wrapping Radix `AlertDialogPrimitive.Root` |
9
9
  | `AlertDialogTrigger` | Element that opens the dialog |
10
- | `AlertDialogPortal` | Renders dialog outside the DOM hierarchy |
11
- | `AlertDialogOverlay` | Fixed dark backdrop with fade animations |
12
- | `AlertDialogContent` | Centered modal panel with zoom/slide entrance animations |
10
+ | `AlertDialogPortal` | Renders dialog outside the DOM tree |
11
+ | `AlertDialogOverlay` | Fixed backdrop with fade animations |
12
+ | `AlertDialogContent` | Centered modal panel with slide/zoom animations |
13
13
  | `AlertDialogHeader` | Layout wrapper for title and description |
14
- | `AlertDialogFooter` | Responsive action button row (stacked on mobile, inline on md+) |
15
- | `AlertDialogTitle` | Semibold heading (`text-lg font-semibold`) |
16
- | `AlertDialogDescription` | Muted body text (`text-sm text-muted-foreground`) |
17
- | `AlertDialogAction` | Confirm button styled with default `buttonVariants()` |
18
- | `AlertDialogCancel` | Dismiss button styled with `buttonVariants({ variant: "outline" })` |
14
+ | `AlertDialogFooter` | Layout wrapper for action buttons (stacked on mobile, inline on desktop) |
15
+ | `AlertDialogTitle` | Styled title using `text-h3` |
16
+ | `AlertDialogDescription` | Muted subtitle using `text-h6` |
17
+ | `AlertDialogAction` | Confirm button using default `buttonVariants()` |
18
+ | `AlertDialogCancel` | Dismiss button using `outline` button variant |
19
19
 
20
20
  ## Usage Example
21
21
 
@@ -40,13 +40,13 @@ export function DeleteConfirmDialog() {
40
40
  <AlertDialogHeader>
41
41
  <AlertDialogTitle>Are you sure?</AlertDialogTitle>
42
42
  <AlertDialogDescription>
43
- This will permanently remove the device from your fleet.
43
+ This action cannot be undone. The device will be permanently removed.
44
44
  </AlertDialogDescription>
45
45
  </AlertDialogHeader>
46
46
  <AlertDialogFooter>
47
47
  <AlertDialogCancel>Cancel</AlertDialogCancel>
48
- <AlertDialogAction onClick={() => handleDelete()}>
49
- Confirm
48
+ <AlertDialogAction onClick={handleDelete}>
49
+ Confirm Delete
50
50
  </AlertDialogAction>
51
51
  </AlertDialogFooter>
52
52
  </AlertDialogContent>
@@ -55,4 +55,9 @@ export function DeleteConfirmDialog() {
55
55
  }
56
56
  ```
57
57
 
58
- > **Accessibility:** Inherits full Radix UI ARIA semantics — focus is trapped within the dialog when open, and keyboard (`Escape`) dismissal is handled automatically.
58
+ ## Notes
59
+
60
+ - Requires a client component context (`"use client"`)
61
+ - Overlay uses `bg-ods-overlay` from the OpenFrame design token system
62
+ - Animations use Tailwind `animate-in`/`animate-out` data-state classes
63
+ - Source: [`alert-dialog.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/alert-dialog.tsx)