@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flamingo-stack/openframe-frontend-core",
3
- "version": "0.0.481",
3
+ "version": "0.0.482",
4
4
  "description": "Shared design system and components for all Flamingo platforms",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -120,6 +120,12 @@
120
120
  "require": "./dist/components/features/mux-origins.cjs",
121
121
  "default": "./dist/components/features/mux-origins.js"
122
122
  },
123
+ "./components/features/captions-url": {
124
+ "types": "./dist/components/features/captions-url.d.ts",
125
+ "import": "./dist/components/features/captions-url.js",
126
+ "require": "./dist/components/features/captions-url.cjs",
127
+ "default": "./dist/components/features/captions-url.js"
128
+ },
123
129
  "./components/features/video-bites-shared": {
124
130
  "types": "./dist/components/features/video-bites-shared.d.ts",
125
131
  "import": "./dist/components/features/video-bites-shared.js",
@@ -367,7 +373,7 @@
367
373
  },
368
374
  "devDependencies": {
369
375
  "@biomejs/biome": "2.4.4",
370
- "@hookform/resolvers": "^5.4.0",
376
+ "@hookform/resolvers": "~5.2.2",
371
377
  "@storybook/nextjs-vite": "^10.1.11",
372
378
  "@svgr/cli": "^8.1.0",
373
379
  "@testing-library/jest-dom": "^6.9.1",
package/src/.index.md CHANGED
@@ -1,43 +1,50 @@
1
- <!-- source-hash: d4303f00cc142a2cc9865685967f362b -->
2
- Main export barrel file for the `@flamingo/ui-kit` package, aggregating and re-exporting all components, hooks, utilities, types, and assets from the library.
1
+ <!-- source-hash: 862fd90b3a9c67e41d15d6c3cc9b05fe -->
2
+ The main barrel export file for the `@flamingo/ui-kit` package, re-exporting all public components, hooks, utilities, and types from their respective submodules into a single entry point.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Source | Description |
7
- |--------|--------|-------------|
8
- | `ui` | `./components/ui` | Base UI primitives (buttons, inputs, modals, etc.) |
9
- | `features` | `./components/features` | Feature-specific composite components |
10
- | `icons` | `./components/icons` | Icon set components |
11
- | `navigation` | `./components/navigation` | Navigation components (sidebars, menus, breadcrumbs) |
12
- | `platform` | `./components/platform` | Platform-level layout components |
13
- | `chat` | `./components/chat` | Chat/messaging UI components (Mingo AI, Fae) |
14
- | `onboarding` | `./components/shared/onboarding` | Onboarding flow components |
15
- | `LogsList` | `./components/logs-list` | Renders a list of log entries |
16
- | `LogSeverityDot` | `./components/log-severity-dot` | Visual severity indicator dot for logs |
17
- | `ToolIcon` | `./components/tool-icon` | Icon component for tool representations |
18
- | `logs.types` | `./types/logs.types` | TypeScript types for log data structures |
19
- | `hooks` | `./hooks` | Shared React hooks |
20
- | `utils` | `./utils` | Utility/helper functions |
21
- | `types` | `./types` | Global TypeScript type definitions |
22
- | `assets` | `./assets` | Static assets (images, SVGs, fonts) |
6
+ **Component Exports**
7
+ - `./components/ui` — Base UI primitives
8
+ - `./components/features` Feature-specific components
9
+ - `./components/icons` Icon set
10
+ - `./components/navigation` Navigation components
11
+ - `./components/platform` Platform-level components
12
+ - `./components/chat` Chat components and payload types
13
+ - `./components/shared/onboarding` Onboarding flow components
23
14
 
24
- ## Usage Example
15
+ **Named Component Exports**
16
+ - `LogsList` — Renders a list of log entries
17
+ - `LogSeverityDot` — Visual indicator for log severity levels
18
+ - `ToolIcon` — Icon component for tool representations
25
19
 
26
- ```typescript
27
- // Import UI primitives
28
- import { Button, Input, Modal } from '@flamingo/ui-kit'
20
+ **Non-Component Exports**
21
+ - `./hooks` Shared React hooks
22
+ - `./utils` Utility functions
23
+ - `./types` — CMS domain types (canonical source)
24
+ - `./types/logs.types` — Log-specific type definitions
25
+ - `./assets` — Static assets
29
26
 
30
- // Import chat components for Mingo AI / Fae
31
- import { ChatWindow, ChatMessage } from '@flamingo/ui-kit'
27
+ **Disambiguation Block**
32
28
 
33
- // Import log components
34
- import { LogsList, LogSeverityDot } from '@flamingo/ui-kit'
29
+ Explicit `export type` re-exports for CMS domain types that would otherwise be silently dropped by TypeScript (`TS2308`) due to naming conflicts with identically-named types in `./components/chat`. The following are explicitly resolved to their `./types` (CMS) origin:
35
30
 
36
- // Import types
37
- import type { LogEntry } from '@flamingo/ui-kit'
31
+ `BlogAuthor`, `BlogCategory`, `BlogPost`, `BlogPostSummary`, `CaseStudy`, `CustomerInterview`, and related filter/response/config shapes.
38
32
 
39
- // Import hooks and utilities
40
- import { useTheme, formatDate } from '@flamingo/ui-kit'
33
+ ## Usage Example
34
+
35
+ ```typescript
36
+ // Consuming the full kit from the barrel
37
+ import {
38
+ LogsList,
39
+ LogSeverityDot,
40
+ ToolIcon,
41
+ type BlogPost,
42
+ type CaseStudy,
43
+ type CustomerInterview,
44
+ } from '@flamingo/ui-kit'
45
+
46
+ // Chat subpath still exposes its own payload variants
47
+ import type { BlogPost as ChatBlogPost } from '@flamingo/ui-kit/components/chat'
41
48
  ```
42
49
 
43
- > This is a barrel file import directly from `@flamingo/ui-kit` rather than from deep subpaths to ensure consistent access and tree-shaking compatibility.
50
+ > **Note:** If you need the chat-specific payload variants of `BlogPost`, `CaseStudy`, etc., import them directly from the `@flamingo/ui-kit/components/chat` subpath rather than the root barrel to avoid ambiguity.
@@ -0,0 +1,65 @@
1
+ <!-- source-hash: 788b2f31d1bae5bb48d44855c468c228 -->
2
+ Defines the single source of truth for all platform domain registrations and derives host resolution, cookie base-domain sets, URL normalization, and preview detection from one central registry table.
3
+
4
+ ## Key Components
5
+
6
+ ### Types & Registry
7
+
8
+ - **`PlatformDomainKey`** — Union of `PlatformName` plus the forward-only `'openframe-dashboard'`
9
+ - **`PlatformDomainEntry`** — Shape of each registry row: `key`, `defaultUrl`, `envVar`, optional `aliasHostnames`, optional `pseudo` flag
10
+ - **`PLATFORM_DOMAINS`** — Readonly registry array; ordering is load-bearing (`flamingo` must precede `flamingo-teaser` and `universal`)
11
+
12
+ ### URL Resolution
13
+
14
+ - **`getPlatformProductionUrl(platform)`** — Returns the effective URL: env override → `defaultUrl` → flamingo fallback; always scheme-safe
15
+ - **`ensureScheme(url)`** — Normalizes bare-host or protocol-relative env overrides to `https://`; exported as the single owner of this rule
16
+ - **`byKey(key)`** — Looks up a registry entry by platform key
17
+
18
+ ### Host Utilities
19
+
20
+ - **`hostOf(value)`** — Parses a URL to its lowercase, port-stripped hostname; returns `null` on failure
21
+ - **`expandWwwApex(host)`** — Expands a host to its `www.`/apex pair for reverse matching
22
+ - **`toRegistrableBaseDomain(host)`** — Extracts the registrable base domain (e.g. `flamingo.run`)
23
+ - **`getPlatformByHostname(hostname)`** — Reverse resolves a hostname to a platform key (first-wins, non-pseudo only)
24
+
25
+ ### Preview Detection
26
+
27
+ - **`isPreviewEnv()`** — Checks `VERCEL_ENV === 'preview'`
28
+ - **`isPreviewHost(hostname)`** — Checks for `*.vercel.app` suffix
29
+
30
+ ### Cookie SSO
31
+
32
+ - **`getAllPlatformBaseDomains()`** — ⚠️ Non-pure. Returns the cross-subdomain SSO cookie domain set; branches on localhost, Vercel preview, and production
33
+
34
+ ## Usage Example
35
+
36
+ ```typescript
37
+ import {
38
+ getPlatformProductionUrl,
39
+ getPlatformByHostname,
40
+ getAllPlatformBaseDomains,
41
+ ensureScheme,
42
+ } from './platform-domains'
43
+
44
+ // Resolve the effective URL for a platform (env override or default)
45
+ const url = getPlatformProductionUrl('openframe')
46
+ // → 'https://openframe.ai' (or NEXT_PUBLIC_OPENFRAME_URL if set)
47
+
48
+ // Normalize a bare-host env override
49
+ ensureScheme('hub.openframe.ai')
50
+ // → 'https://hub.openframe.ai'
51
+
52
+ // Reverse-resolve an incoming request hostname to a platform key
53
+ getPlatformByHostname('www.openframe.ai')
54
+ // → 'openframe'
55
+
56
+ // Get all cookie base domains for cross-hub SSO (client-side only)
57
+ getAllPlatformBaseDomains()
58
+ // → ['.flamingo.run', 'flamingo.run', '.openframe.ai', 'openframe.ai', ...]
59
+ ```
60
+
61
+ ## Notes
62
+
63
+ - **Edge-safe and pure** — no React, no Node builtins, no `server-only`; safe in middleware (`proxy.ts`), `'use client'` providers, and `server-only` modules simultaneously
64
+ - **Compile-time guards** — `satisfies` checks enforce bidirectional consistency between `PLATFORM_DOMAINS` and `ENV_OVERRIDES`; a missing or stale env var fails the build
65
+ - **Ordering invariant** — `flamingo` must appear before `flamingo-teaser` and `universal` in the registry; a module-load self-check enforces this at runtime
@@ -0,0 +1,33 @@
1
+ <!-- source-hash: 9af84fb2f937986a14b04c717b822451 -->
2
+ Base64-encoded PNG data URI for Fae's avatar — the AI helpdesk agent's brand mark, self-contained for zero-asset-serving dependency.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `FAE_AVATAR_DATA_URI` | `string` | Base64 PNG data URI (160×160px, ~37 KB) representing Fae's avatar mark |
9
+
10
+ ## Usage Example
11
+
12
+ ```typescript
13
+ import { FAE_AVATAR_DATA_URI } from './fae-avatar';
14
+
15
+ // Use directly in an <img> tag — no CDN or host assets needed
16
+ const avatar = document.createElement('img');
17
+ avatar.src = FAE_AVATAR_DATA_URI;
18
+ avatar.alt = 'Fae avatar';
19
+ document.body.appendChild(avatar);
20
+
21
+ // Or in React/Vue component props
22
+ <AgentMark src={FAE_AVATAR_DATA_URI} alt="Fae" />
23
+ ```
24
+
25
+ ## Notes
26
+
27
+ - **Self-contained**: The full PNG is inlined as a `data:image/png;base64,...` URI, so no external hosting or asset pipeline is required.
28
+ - **Fae-specific**: Fae has no separate vector icon — this avatar IS the brand mark (see `AgentMark` component).
29
+ - **Source spec**: 160×160 PNG, approximately 37 KB before base64 encoding.
30
+
31
+ ## Source
32
+
33
+ [`fae-avatar.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/fae-avatar.ts)
@@ -1,20 +1,26 @@
1
- <!-- source-hash: 60869445354e1580c9ff2b1a134284dd -->
2
- A minimal assets module that provides a centralized export point for static assets like fonts and other resources, with platform utilities planned for future implementation.
1
+ <!-- source-hash: 0b3ff07887f7e19514fd9f0b3902113d -->
2
+ Barrel export file that aggregates and re-exports all assets from the `assets` module, including static resources and the Fae avatar component.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`assets`** - A frozen empty object that serves as a placeholder for future asset exports
6
+ - **`assets`** An empty, frozen constant object (`as const`) serving as a namespace placeholder for future static assets (fonts, icons, etc.)
7
+ - **`fae-avatar`** — Re-exports everything from the `./fae-avatar` module
7
8
 
8
9
  ## Usage Example
9
10
 
10
11
  ```typescript
11
- import { assets } from './index';
12
+ import { assets, FaeAvatar } from '@openframe-oss-lib/assets';
12
13
 
13
- // Currently returns an empty object
14
- console.log(assets); // {}
14
+ // Use re-exported Fae avatar
15
+ <FaeAvatar size="md" />;
15
16
 
16
- // Future usage might look like:
17
- // const { fonts, images, icons } = assets;
17
+ // Access the assets namespace (reserved for future use)
18
+ console.log(assets); // {}
18
19
  ```
19
20
 
20
- This module follows a placeholder pattern, establishing the infrastructure for asset management while keeping the current implementation minimal. The `as const` assertion ensures type safety and immutability of the exported object structure.
21
+ ## Notes
22
+
23
+ - The `assets` object is intentionally empty and typed `as const` — it acts as a stable, extensible namespace for future platform utilities and static assets (e.g., fonts, images).
24
+ - All public exports from `./fae-avatar` are surfaced directly from this index, making it the single entry point for asset-related imports.
25
+
26
+ **Source:** [`assets/index.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/assets/index.ts)
@@ -0,0 +1,31 @@
1
+ <!-- source-hash: a03e06ae468a977ee1c26dabab767bac -->
2
+ Renders the visual mark (glyph) for either the Mingo or Fae AI agent — the single source of truth for how each agent is visually represented. Mingo renders as a vector icon; Fae renders as an avatar image bundled as a base64 data URI so no host asset is required.
3
+
4
+ ## Key Components
5
+
6
+ - **`AgentName`** — Union type `'fae' | 'mingo'` identifying supported agents.
7
+ - **`AgentMarkProps`** — Props interface controlling which agent to render, sizing classes, and an optional Fae avatar source override.
8
+ - **`AgentMark`** — Main component. Delegates to `MingoIcon` for Mingo and an `<img>` tag for Fae. Both branches are decorative (no accessible text).
9
+
10
+ ## Usage Example
11
+
12
+ ```typescript
13
+ import { AgentMark } from '@flamingo-stack/openframe-oss-lib';
14
+
15
+ // Render Mingo's vector mark at 20×20
16
+ <AgentMark agent="mingo" className="w-5 h-5" />
17
+
18
+ // Render Fae's bundled avatar at 20×20
19
+ <AgentMark agent="fae" className="w-5 h-5" />
20
+
21
+ // Override Fae's avatar with a hosted asset
22
+ <AgentMark
23
+ agent="fae"
24
+ className="w-5 h-5"
25
+ faeAvatarSrc="https://cdn.example.com/fae-avatar.png"
26
+ />
27
+ ```
28
+
29
+ > **Note:** `className` controls all sizing and positioning. The component renders only the glyph — wrapping, backgrounds, and layout are the caller's responsibility.
30
+
31
+ **Source:** [`agent-mark.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/agent-mark.tsx)
@@ -1,42 +1,54 @@
1
- <!-- source-hash: pending-regeneration -->
2
- A dismissible platform announcement bar with DUAL MODE support: SSR-seeded (Next hosts) and client-only (bare React apps without SSR). Single-line 44px strip, contrast handled by scoping content with the ODS theme classes, event-driven freshness (no polling).
1
+ <!-- source-hash: bce846e08704bc1bed6ac9dfbae8c900 -->
2
+ Renders the platform-wide announcement bar in both SSR (Next.js) and client-only (Vite/CRA embed) modes, handling fetch, dismissal state, animations, and XSS-safe CTA navigation.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export/Function | Description |
7
- |----------------|-------------|
8
- | `AnnouncementBar` | Main component — renders the bar or `null` when there is nothing to show |
9
- | `initialAnnouncement` prop | SSR mode seed (nullable): server resolved announcement + dismissal cookie; skips the mount fetch |
10
- | `previewMode` prop | Render-only (admin live preview): no fetch, inert dismiss, no storage side effects |
11
-
12
- ## Modes
13
-
14
- - **SSR mode** (hub / any Next host): the server passes `initialAnnouncement` (already dismissal-filtered via the cookie helpers in `announcement-storage.ts`). The bar is in the first HTML byte — zero layout shift, no flash for dismissed users, zero mount fetch.
15
- - **Client-only mode** (Vite/CRA embeds, no SSR — the react-embedding-example structure): mount the bar PROP-LESS inside an EndpointsRuntime provider; `announcementsUrl` is a fixed suffix under the embedder's one content base (`${CONTENT}/announcements/active`). No provider → renders nothing, never fetches. Appearance animates in (grid `0fr -> 1fr`). Deliberately NO per-component URL or platform knobs: the platform is never sent as a parameter — each server returns its own announcement via `currentPlatform()`.
16
-
17
- ## Behavior Notes
18
-
19
- - **No polling**: freshness is visibility-driven `useSelfFetch`'s `revalidateOnVisibleAfterMs` refetches on tab refocus when held data is older than 60s. Idle tabs make zero requests.
20
- - **Dismissal**: cookie is the SSOT (`<platform>-announcement-dismissed=<id>`, id-match); localStorage is read-only legacy. Storage reads happen only in effects (hydration safety).
21
- - **Contrast**: the admin background's tone selects `.theme-light`/`.theme-dark` around the content; all colors resolve from the active ODS theme's Tier-1 primitives.
22
- - **Responsive**: single truncating line (description hidden < sm); CTA is desktop-only, the whole bar is the tap target on mobile.
23
-
24
- ## Usage Examples
6
+ ### `AnnouncementBar` (default export)
7
+ The primary component accepting these props (`AnnouncementBarProps`):
8
+
9
+ | Prop | Type | Description |
10
+ |---|---|---|
11
+ | `initialAnnouncement` | `Announcement \| null \| undefined` | SSR-seeded announcement; omit for client-only self-fetch |
12
+ | `previewMode` | `boolean` | Admin draft preview — disables fetch, storage, and dismiss |
13
+ | `dismissible` | `boolean` | Whether the user can dismiss the bar |
14
+ | `className` | `string` | Optional wrapper class |
15
+
16
+ ### Internal Utilities Used
17
+ - **`useSelfFetch`** — visibility-driven revalidation (refocuses after 60s stale); no polling
18
+ - **`useEndpointsRuntime`** — resolves `announcementsUrl`; absent provider = silent no-op
19
+ - **`isAnnouncementDismissed` / `dismissAnnouncement`** cookie-based dismissal SSOT
20
+ - **`pickReadableTextColor`** selects `theme-light` / `theme-dark` ODS scope from background color
21
+ - **`EntityIcon`** renders uploaded image URL or library glyph by name
22
+ - **`AnnouncementBarView`** pure presentational shell (44px strip, `text-h6`, compact CTA)
23
+
24
+ ## Usage Example
25
+
26
+ ```typescript
27
+ // SSR mode (Next.js layout — zero flash, no CLS)
28
+ import { AnnouncementBar } from '@openframe/ui';
29
+
30
+ export default async function RootLayout({ children }) {
31
+ const announcement = await resolveAnnouncement(); // server-side
32
+ return (
33
+ <html>
34
+ <body>
35
+ <AnnouncementBar initialAnnouncement={announcement} />
36
+ {children}
37
+ </body>
38
+ </html>
39
+ );
40
+ }
25
41
 
26
- ```tsx
27
- // SSR mode (Next server component resolves the seed):
28
- <AnnouncementBar initialAnnouncement={announcementOrNull} />
42
+ // Client-only mode (Vite / CRA embed — self-fetches from provider URL)
43
+ import { AnnouncementBar, EndpointsRuntimeProvider } from '@openframe/ui';
29
44
 
30
- // Client-only mode (react-embedding-example structure): one content base,
31
- // endpoints built once, bar mounted prop-less inside the provider.
32
- const endpointsRuntime: EndpointsRuntime = {
33
- announcementsUrl: `${CONTENT}/announcements/active`,
34
- accessCode: { validateUrl: `${CONTENT}/validate-access-code`, consumeUrl: `${CONTENT}/consume-access-code` },
35
- contactUrl: `${CONTENT}/contact`,
45
+ function App() {
46
+ return (
47
+ <EndpointsRuntimeProvider announcementsUrl="/api/announcements">
48
+ <AnnouncementBar />
49
+ </EndpointsRuntimeProvider>
50
+ );
36
51
  }
37
-
38
- <EndpointsRuntimeContext.Provider value={endpointsRuntime}>
39
- <AnnouncementBar />
40
- <main>{/* app content */}</main>
41
- </EndpointsRuntimeContext.Provider>
42
52
  ```
53
+
54
+ > **Design freeze notice:** The bar's visual spec (44px height, `text-h6`, 20/24px icon, compact CTA, ghost-icon dismiss) is owner-approved and must not be altered without explicit written sign-off. See [`ui/announcement-bar-view.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/ui/announcement-bar-view.tsx) for the full warning.
@@ -1,11 +1,11 @@
1
- <!-- source-hash: f8ae158ddc696cfb68419e4860069278 -->
2
- A styled calendar component wrapping `react-day-picker`'s `DayPicker` with Flamingo/Tailwind design tokens and accessible navigation icons.
1
+ <!-- source-hash: 7de87dc45992b08ca9f6ea49ee42b409 -->
2
+ A styled calendar component wrapping `react-day-picker`'s `DayPicker` with Flamingo's design system tokens, Tailwind utility classes, and Lucide navigation icons.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`Calendar`** — Main export; a thin wrapper around `DayPicker` that applies consistent Tailwind class names for layout, navigation, day cells, selected/range/today states, and outside-day visibility.
7
- - **`CalendarProps`** — Re-exported type alias for `React.ComponentProps<typeof DayPicker>`, allowing full passthrough of any `DayPicker` prop.
8
- - **`Chevron` override** — Replaces the default DayPicker navigation icon with `lucide-react`'s `ChevronLeft` at a fixed `h-4 w-4` size.
6
+ - **`Calendar`** — Primary export; a configured `DayPicker` wrapper with pre-applied `classNames` for layout, selection states, range highlighting, and navigation
7
+ - **`CalendarProps`** — Re-exported type alias for `React.ComponentProps<typeof DayPicker>`, allowing full passthrough of `react-day-picker` props
8
+ - **Chevron navigation** — Uses `ChevronLeft` from `lucide-react` via the `components.Chevron` slot override
9
9
 
10
10
  ## Usage Example
11
11
 
@@ -14,31 +14,32 @@ import { Calendar } from "@/components/calendar"
14
14
  import { useState } from "react"
15
15
 
16
16
  export function DatePicker() {
17
- const [selected, setSelected] = useState<Date>()
17
+ const [date, setDate] = useState<Date | undefined>(undefined)
18
18
 
19
19
  return (
20
20
  <Calendar
21
21
  mode="single"
22
- selected={selected}
23
- onSelect={setSelected}
24
- showOutsideDays={false}
22
+ selected={date}
23
+ onSelect={setDate}
24
+ showOutsideDays={true}
25
25
  />
26
26
  )
27
27
  }
28
28
  ```
29
29
 
30
30
  ```typescript
31
- // Date range selection
31
+ // Range selection example
32
32
  import { DateRange } from "react-day-picker"
33
33
 
34
- export function RangePicker() {
35
- const [range, setRange] = useState<DateRange>()
34
+ export function DateRangePicker() {
35
+ const [range, setRange] = useState<DateRange | undefined>(undefined)
36
36
 
37
37
  return (
38
38
  <Calendar
39
39
  mode="range"
40
40
  selected={range}
41
41
  onSelect={setRange}
42
+ numberOfMonths={2}
42
43
  />
43
44
  )
44
45
  }
@@ -46,6 +47,9 @@ export function RangePicker() {
46
47
 
47
48
  ## Notes
48
49
 
49
- - `showOutsideDays` defaults to `true`; pass `false` to hide days from adjacent months.
50
- - Custom `classNames` are merged via spread (`...classNames`), so individual slot styles can be overridden per instance.
51
- - The `Chevron` component override is cast with `as any` to satisfy DayPicker's internal component map typing.
50
+ - `showOutsideDays` defaults to `true` days from adjacent months are visible but styled with `text-muted-foreground`
51
+ - All `classNames` props are merged via spread (`...classNames`), so individual class overrides are supported
52
+ - Uses `buttonVariants` from the internal button primitive for consistent focus/hover states on nav and day cells
53
+ - The `Chevron` component override uses `ChevronLeft` for both directions; swap to conditional `ChevronRight` if directional icons are needed
54
+
55
+ **Source:** [`calendar.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/calendar.tsx)
@@ -1,42 +1,46 @@
1
- <!-- source-hash: 7161864532df5559c1bd18aba5ddcb23 -->
2
- A clickable card component that displays a product/vendor category with its associated vendor icons, subcategory count, and product count, linking to a filtered vendor listing page.
1
+ <!-- source-hash: 6da745f71200af5947581734733c0a33 -->
2
+ A card component that renders a single vendor category with its associated vendor icons, subcategory count, and product count, linking to a filtered vendor listing page.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`CategoriesCart`** — Main exported component accepting `RealCategoryCardProps`
7
- - `category` — Category object with `slug`, `name`, and `description`
8
- - `vendors` — Array of vendor objects to display as icons (default: `[]`)
9
- - `vendorCount` — Total number of products in the category (default: `0`)
10
- - `subcategoryCount` — Number of subcategories (default: `0`)
11
- - `isLoading` — Toggles skeleton loading state (default: `false`)
12
- - `className` — Optional additional CSS classes
13
-
14
- ## Key Behaviors
15
-
16
- | State | Behavior |
17
- |-------|----------|
18
- | `isLoading: true` | Renders 20 animated pulse skeleton placeholders |
19
- | Vendors present | Renders `VendorIcon` components in grayscale/muted style |
20
- | No vendors | Renders 6 grey placeholder icon blocks |
21
-
22
- - Navigates to `/vendors?category={slug}` on click
23
- - Highlights border and arrow button in `#FFC008` (Flamingo yellow) on hover
24
- - Applies left/right gradient overlays to fade the vendor icon row
6
+ **`CategoriesCart`** (`RealCategoryCardProps`) — Main exported component with props:
7
+ - `category` — Category object with `slug`, `name`, and `description`
8
+ - `vendors` — Array of vendor objects to display as icon thumbnails
9
+ - `vendorCount` — Total product count displayed in the subtitle
10
+ - `subcategoryCount` — Total subcategory count displayed in the subtitle
11
+ - `isLoading` — Toggles animated skeleton placeholders for vendor icons
12
+ - `className` — Optional additional CSS classes
25
13
 
26
14
  ## Usage Example
27
15
 
28
16
  ```typescript
29
17
  import { CategoriesCart } from './categories-cart';
30
18
 
19
+ const category = {
20
+ slug: 'security',
21
+ name: 'Security',
22
+ description: 'Endpoint protection, SIEM, and threat detection tools.',
23
+ };
24
+
31
25
  <CategoriesCart
32
- category={{
33
- slug: 'rmm-tools',
34
- name: 'RMM Tools',
35
- description: 'Remote monitoring and management platforms for MSPs.',
36
- }}
37
- vendors={[{ id: '1', name: 'NinjaRMM', logo: '/logos/ninja.png' }]}
38
- vendorCount={12}
39
- subcategoryCount={3}
26
+ category={category}
27
+ vendors={vendorList}
28
+ vendorCount={42}
29
+ subcategoryCount={8}
40
30
  isLoading={false}
41
31
  />
42
- ```
32
+ ```
33
+
34
+ ## Rendering States
35
+
36
+ | State | Behavior |
37
+ |---|---|
38
+ | `isLoading: true` | 20 pulsing skeleton rectangles replace vendor icons |
39
+ | `vendors.length > 0` | Renders grayscale `VendorIcon` thumbnails in a scrollable row |
40
+ | `vendors.length === 0` | 6 muted placeholder squares with inner icon stubs |
41
+
42
+ Vendor icons are displayed inside a horizontally clipped row with left/right gradient fade overlays for a soft scroll-edge effect. The entire card is wrapped in a `Link` that navigates to `/vendors?category={slug}`.
43
+
44
+ ---
45
+
46
+ **Source:** [`categories-cart.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/categories-cart.tsx)
@@ -1,46 +1,46 @@
1
- <!-- source-hash: b7066469baad9b1425fac7c4d9d108dd -->
2
- A React card component that displays category information with icons, counts, and navigation functionality in a dark-themed layout. The component is designed for displaying product category overviews with visual hierarchy and interactive elements.
1
+ <!-- source-hash: 0c73c0168a5cf11103870e0bcf2eb7ff -->
2
+ A client-side React card component for displaying a product category with its metadata, icon grid, and a navigation button.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **CategoryCard**: Main component that renders a category information card
7
- - **CategoryCardProps**: TypeScript interface defining the component's props structure
8
- - **Icon display area**: Flexible grid that shows category-related icons with fallback placeholders
9
- - **Interactive button**: Navigation element with hover effects and accessibility features
6
+ ### `CategoryCard`
7
+
8
+ A presentational card component that renders category information in a structured layout.
9
+
10
+ **Props (`CategoryCardProps`):**
11
+
12
+ | Prop | Type | Description |
13
+ |---|---|---|
14
+ | `name` | `string` | Category display name |
15
+ | `description` | `string` | Short description text |
16
+ | `categoryCount` | `number` | Number of subcategories |
17
+ | `productCount` | `number` | Number of products in the category |
18
+ | `icons` | `React.ReactNode[]` | Optional array of icon nodes; renders 10 skeleton placeholders if empty |
10
19
 
11
20
  ## Usage Example
12
21
 
13
22
  ```typescript
14
- import { CategoryCard } from './category-card';
15
- import { DatabaseIcon, ServerIcon, CloudIcon } from './icons';
16
-
17
- function CategoryGrid() {
18
- const icons = [
19
- <DatabaseIcon key="db" />,
20
- <ServerIcon key="server" />,
21
- <CloudIcon key="cloud" />
22
- ];
23
+ import { CategoryCard } from "./category-card";
24
+ import { ServerIcon, DatabaseIcon } from "lucide-react";
23
25
 
26
+ export default function Page() {
24
27
  return (
25
- <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
26
- <CategoryCard
27
- name="Data Management"
28
- description="Comprehensive tools for database administration and data analytics"
29
- categoryCount={5}
30
- productCount={23}
31
- icons={icons}
32
- />
33
-
34
- {/* Card without custom icons - will show 10 placeholder icons */}
35
- <CategoryCard
36
- name="Security Tools"
37
- description="Essential security and monitoring solutions"
38
- categoryCount={3}
39
- productCount={15}
40
- />
41
- </div>
28
+ <CategoryCard
29
+ name="Infrastructure"
30
+ description="Tools for managing servers, networking, and cloud resources."
31
+ categoryCount={5}
32
+ productCount={42}
33
+ icons={[<ServerIcon />, <DatabaseIcon />]}
34
+ />
42
35
  );
43
36
  }
44
37
  ```
45
38
 
46
- The component features a responsive design with dark theme styling, automatic icon fallbacks, and smooth hover transitions for enhanced user experience.
39
+ ## Notes
40
+
41
+ - **Client Component** — marked with `"use client"` for React interactivity.
42
+ - **Icon grid** — renders up to the provided icons; falls back to 10 skeleton placeholder slots when `icons` is empty or omitted.
43
+ - **Navigation button** — includes an accessible `aria-label` using the category `name`; intended to trigger navigation to a category detail view (wire up an `onClick` or wrap in a link as needed).
44
+ - Styled with OpenDS design tokens (`ods-*`) for consistent theming across the OpenFrame UI.
45
+
46
+ **Source:** [`category-card.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/category-card.tsx)