@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,37 +1,34 @@
1
- <!-- source-hash: 0a032d083c46e509f8e9dcfa0550baef -->
2
- A modal dialog component for sorting and filtering table data, combining checkbox filter groups, column sorting, and tag key-value filters into a unified UI with loading and empty states.
1
+ <!-- source-hash: ca205bda020052993b18624b8ae80fb9 -->
2
+ A modal dialog component for sorting and filtering table data, supporting checkbox filter groups, column sorting, tag key-value filters, and date range filtering with draft state management.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `FilterModal`
7
- Main exported component that renders a `ModalV2`-based dialog with three content sections and footer action buttons.
6
+ ### Interfaces
8
7
 
9
- ### Exported Types
10
-
11
- | Type | Description |
12
- |------|-------------|
8
+ | Interface | Description |
9
+ |---|---|
13
10
  | `FilterModalOption` | Single filter option with `id`, `label`, and optional `count` |
14
11
  | `FilterGroup` | Named group of `FilterModalOption` items |
15
- | `FilterModalProps` | Full props interface for `FilterModal` |
16
- | `SortConfig`, `SortDirection`, `SortableColumn` | Re-exported from `sort-column-item` |
17
- | `TagKeyConfig`, `TagValueOption` | Re-exported from `tag-key-value-filter` |
12
+ | `FilterModalProps` | Full props definition for the modal |
13
+
14
+ ### Exported Types (re-exported)
15
+
16
+ - `SortableColumn`, `SortConfig`, `SortDirection` — from `sort-column-item`
17
+ - `TagKeyConfig`, `TagValueOption` — from `tag-key-value-filter`
18
18
 
19
- ### Internal Behavior
20
- - **Local state** (`selectedFilters`, `pendingTags`) buffers user selections until **Apply** is clicked
21
- - **Reset** clears all filters and tags immediately via `onFilterChange({})` and `onTagsChange?.([])`
22
- - **Sync on open** — `useEffect` resets local state to `currentFilters`/`selectedTags` whenever the modal opens
23
- - **Empty state** renders when no sort columns, filter groups, or tag filters are present
24
- - **Loading state** renders skeleton placeholders when `isLoading` is `true`
19
+ ### Behavior
20
+
21
+ - **Draft state**: All selections are held locally and only committed on **Apply**; **Reset** clears all filters to defaults and closes the modal.
22
+ - **Scroll shadows**: `useScrollFade` adds top/bottom fade overlays as the filter list scrolls.
23
+ - **Loading state**: When `isLoading` is true, renders skeleton rows instead of filter content.
24
+ - **Empty state**: Renders an icon + message when no sort columns, filter groups, tag filters, or date filter are provided.
25
25
 
26
26
  ## Usage Example
27
27
 
28
28
  ```typescript
29
- const [filters, setFilters] = useState<TableFilters>({})
30
- const [tags, setTags] = useState<string[]>([])
31
-
32
29
  <FilterModal
33
- isOpen={isModalOpen}
34
- onClose={() => setIsModalOpen(false)}
30
+ isOpen={isFilterOpen}
31
+ onClose={() => setFilterOpen(false)}
35
32
  filterGroups={[
36
33
  {
37
34
  id: 'status',
@@ -42,18 +39,19 @@ const [tags, setTags] = useState<string[]>([])
42
39
  ],
43
40
  },
44
41
  ]}
42
+ currentFilters={activeFilters}
43
+ onFilterChange={(filters) => setActiveFilters(filters)}
45
44
  sortConfig={{
46
45
  title: 'Sort By',
47
- sortBy: 'name',
48
- sortDirection: 'asc',
49
- columns: [{ key: 'name', label: 'Name' }],
46
+ sortBy: 'createdAt',
47
+ sortDirection: 'desc',
48
+ columns: [{ key: 'createdAt', label: 'Created Date' }],
49
+ }}
50
+ onSort={(column, direction) => handleSort(column, direction)}
51
+ dateFilter={{
52
+ title: 'Created Date',
53
+ sort: 'desc',
54
+ onChange: ({ sort, range }) => handleDateFilter(sort, range),
50
55
  }}
51
- onSort={(column, direction) => console.log(column, direction)}
52
- onFilterChange={setFilters}
53
- currentFilters={filters}
54
- tagFilterKeys={[{ key: 'env', label: 'Environment', values: [] }]}
55
- selectedTags={tags}
56
- onTagsChange={setTags}
57
- isLoading={false}
58
56
  />
59
57
  ```
@@ -0,0 +1,58 @@
1
+ <!-- source-hash: a577052f327703a1df3f43615b02c000 -->
2
+ A responsive filter pill row component that renders a labeled set of toggle buttons inside a card container, used to filter catalog views by status, platform, section, or other dimensions.
3
+
4
+ ## Key Components
5
+
6
+ ### Interfaces
7
+
8
+ | Interface | Description |
9
+ |---|---|
10
+ | `FilterPillRowOption` | Shape for each filter option: `value` (key) and `label` (display text) |
11
+ | `FilterPillRowProps` | Full props contract for `FilterPillRow` |
12
+
13
+ ### `FilterPillRow` (named export)
14
+
15
+ Renders a flex-wrap card containing:
16
+ - A `Filter` icon + label on the left
17
+ - A pill button per option (active pill uses `accent` variant, inactive uses `outline`)
18
+ - An optional `countLabel` right-aligned (e.g. `"Showing 1-10 of 42 items"`)
19
+ - Optional `children` to replace the default pill buttons with custom filter content
20
+
21
+ ## Usage Example
22
+
23
+ ```typescript
24
+ import { FilterPillRow } from '@openframe-oss-lib/ui'
25
+
26
+ const PLATFORM_OPTIONS = [
27
+ { value: 'all', label: 'All' },
28
+ { value: 'windows', label: 'Windows' },
29
+ { value: 'mac', label: 'macOS' },
30
+ { value: 'linux', label: 'Linux' },
31
+ ]
32
+
33
+ export function ToolCatalogFilters() {
34
+ const [platform, setPlatform] = useState('all')
35
+
36
+ return (
37
+ <FilterPillRow
38
+ label="Platform"
39
+ selectedValue={platform}
40
+ onValueChange={setPlatform}
41
+ options={PLATFORM_OPTIONS}
42
+ countLabel="Showing 12 of 48 tools"
43
+ />
44
+ )
45
+ }
46
+ ```
47
+
48
+ **Custom content via `children`:**
49
+
50
+ ```typescript
51
+ <FilterPillRow label="Status" selectedValue="" onValueChange={() => {}}>
52
+ <MyCustomToggleGroup />
53
+ </FilterPillRow>
54
+ ```
55
+
56
+ > **Note:** When `children` is provided it replaces the auto-generated pill buttons entirely; `options` is ignored.
57
+
58
+ **Source:** [`components/filter-pill-row.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/components/filter-pill-row.tsx)
@@ -1,36 +1,24 @@
1
- <!-- source-hash: c7355b336531eeee83c49994040e5cbf -->
2
- A floating tooltip component built with `@floating-ui/react` that supports smart positioning, directional arrows, and inline color markup parsing.
1
+ <!-- source-hash: 2b8cdba1cd5071a00b33994ad26e4c91 -->
2
+ Accessible, positioned tooltip component built on `@floating-ui/react` that supports smart viewport-aware placement, overflow scrolling, and inline color markup parsing.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `FloatingTooltip`
7
- The main exported component. Renders a portal-based tooltip with:
8
- - **Auto-positioning** via `flip`, `shift`, and `offset` middleware — avoids viewport clipping
9
- - **Arrow indicator** that dynamically repositions based on the resolved placement
10
- - **Hover interaction** with configurable open delay and safe polygon close detection
11
- - **`disabled` prop** — suppresses tooltip without unmounting the trigger wrapper
7
+ The main exported component. Renders a hover-triggered tooltip using Floating UI's positioning engine with auto-update, flipping, shifting, and viewport-capped height.
12
8
 
13
- ### `parseColoredText` (internal)
14
- Parses `[COLOR]text[/COLOR]` markup within string content and maps it to ODS CSS classes:
15
-
16
- | Tag | Tailwind Class |
17
- |-----|----------------|
18
- | `[YELLOW]` | `text-ods-accent` |
19
- | `[GREEN]` | `text-ods-success` |
20
- | `[RED]` | `text-ods-error` |
21
- | `[BLUE]` / `[CYAN]` | `text-ods-info` |
22
- | `[PINK]` | `text-ods-accent` |
23
-
24
- ### `FloatingTooltipProps`
9
+ **Props:**
25
10
 
26
11
  | Prop | Type | Default | Description |
27
- |------|------|---------|-------------|
28
- | `content` | `React.ReactNode` | — | Tooltip body; strings support color markup |
29
- | `children` | `React.ReactNode` | — | Trigger element |
12
+ |---|---|---|---|
13
+ | `content` | `React.ReactNode` | — | Tooltip content; strings support color markup |
14
+ | `children` | `React.ReactNode` | — | The trigger element |
30
15
  | `side` | `"top" \| "right" \| "bottom" \| "left"` | `"right"` | Preferred placement |
31
- | `delayDuration` | `number` | `0` | Open delay in ms |
32
- | `disabled` | `boolean` | `false` | Suppresses tooltip |
33
- | `className` | `string` | | Extra classes on the tooltip panel |
16
+ | `className` | `string` | | Additional classes for the tooltip panel |
17
+ | `delayDuration` | `number` | `0` | Hover open delay in ms |
18
+ | `disabled` | `boolean` | `false` | Disables tooltip without unmounting the trigger |
19
+
20
+ ### `parseColoredText` (internal)
21
+ Parses `[COLOR]text[/COLOR]` markup within string content into styled `<span>` elements mapped to ODS design tokens. Supported color tags: `YELLOW`, `GREEN`, `RED`, `BLUE`, `PINK`, `CYAN`.
34
22
 
35
23
  ## Usage Example
36
24
 
@@ -38,21 +26,28 @@ Parses `[COLOR]text[/COLOR]` markup within string content and maps it to ODS CSS
38
26
  import { FloatingTooltip } from "./floating-tooltip"
39
27
 
40
28
  // Basic usage
41
- <FloatingTooltip content="Save changes">
29
+ <FloatingTooltip content="Save your changes before leaving.">
42
30
  <button>Save</button>
43
31
  </FloatingTooltip>
44
32
 
45
- // With color markup and delay
33
+ // With color markup and custom placement
46
34
  <FloatingTooltip
47
- content="Status: [GREEN]Online[/GREEN] — [YELLOW]1 warning[/YELLOW]"
35
+ content="Status: [GREEN]Online[/GREEN] — latency [YELLOW]elevated[/YELLOW]"
48
36
  side="top"
49
37
  delayDuration={300}
50
38
  >
51
39
  <span>Hover me</span>
52
40
  </FloatingTooltip>
53
41
 
54
- // Disabled (wrapper renders, tooltip suppressed)
55
- <FloatingTooltip content="Hidden tip" disabled>
56
- <button>No tooltip</button>
42
+ // Conditionally disabled
43
+ <FloatingTooltip content="Not available" disabled={!featureEnabled}>
44
+ <button>Feature</button>
57
45
  </FloatingTooltip>
58
- ```
46
+ ```
47
+
48
+ ## Behavior Notes
49
+
50
+ - Tooltip is rendered into a `FloatingPortal` at `z-index: 2147483647` to avoid stacking context issues
51
+ - The `size` middleware caps tooltip height to available viewport space; tall content becomes scrollable via the inner wrapper
52
+ - Arrow position is computed automatically and adjusts with placement flipping
53
+ - `safePolygon()` prevents accidental dismissal when moving the cursor toward the tooltip
@@ -1,49 +1,47 @@
1
- <!-- source-hash: cc1ede727d1bab8a8e8ff3b969595614 -->
2
- A floating popup component that displays a list of hidden tag items with optional remove functionality, typically used in multi-select inputs when tags overflow the visible area.
1
+ <!-- source-hash: 710e86ff076bce6ef45b86d10ed1ec51 -->
2
+ A floating popup component that displays a list of hidden/overflow tags with optional removal capability, typically used when tag inputs have more items than visible space allows.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### Interfaces
7
7
 
8
- | Interface | Description |
9
- |-----------|-------------|
10
- | `HiddenTagItem` | Defines a tag item with a `label` (ReactNode) and `value` (unknown) |
11
- | `HiddenTagsPopupProps` | Props for the popup including `items`, `onRemove`, `disabled`, `className`, and `style` |
8
+ - **`HiddenTagItem`** Describes a single tag entry with a `label` (`ReactNode`) and `value` (`unknown`)
9
+ - **`HiddenTagsPopupProps`** — Props for the popup component:
10
+ - `items` Array of `HiddenTagItem` to render
11
+ - `onRemove` Optional callback fired with the item's `value` when the remove button is clicked
12
+ - `disabled` — Hides remove buttons when `true`
13
+ - `className` / `style` — For positioning overrides (consumers set `style.left` or `className` for alignment)
12
14
 
13
- ### Exports
15
+ ### Component
14
16
 
15
- - **`HiddenTagsPopup`** — A `forwardRef` component rendering an absolutely-positioned dropdown card listing overflow tags. Each item shows a truncated uppercase label and an optional remove button (`XmarkCircleIcon`) when `onRemove` is provided and `disabled` is false.
17
+ - **`HiddenTagsPopup`** — A `forwardRef` div that renders absolutely below its anchor (`top-full`), with an animated entrance (`animate-in fade-in-0 zoom-in-95`). Each item row shows a truncated, uppercase label and an `XmarkCircleIcon` remove button (when not disabled).
16
18
 
17
19
  ## Usage Example
18
20
 
19
21
  ```typescript
20
- import { HiddenTagsPopup, HiddenTagItem } from "./hidden-tags-popup"
22
+ import { HiddenTagsPopup } from "./hidden-tags-popup"
21
23
 
22
- const overflowTags: HiddenTagItem[] = [
24
+ const overflowTags = [
23
25
  { label: "Engineering", value: "engineering" },
24
26
  { label: "Design", value: "design" },
25
27
  ]
26
28
 
27
- function TagSelector() {
29
+ function TagInput() {
28
30
  const handleRemove = (value: unknown) => {
29
- console.log("Remove tag:", value)
31
+ console.log("Removing tag:", value)
30
32
  }
31
33
 
32
34
  return (
33
- <div style={{ position: "relative" }}>
35
+ <div className="relative">
36
+ {/* anchor element */}
34
37
  <HiddenTagsPopup
35
38
  items={overflowTags}
36
39
  onRemove={handleRemove}
37
- disabled={false}
40
+ style={{ left: 0 }}
38
41
  />
39
42
  </div>
40
43
  )
41
44
  }
42
45
  ```
43
46
 
44
- ## Notes
45
-
46
- - Renders with `z-50` and `top-full` positioning — expects a relatively-positioned parent container.
47
- - Includes entrance animation via `animate-in fade-in-0 zoom-in-95`.
48
- - Remove button uses `e.stopPropagation()` to prevent unintended parent click events.
49
- - Accessible via `aria-label` on each remove button.
47
+ > **Note:** Wrap the popup in a relatively positioned container. Use `style.left` or a `className` override to control horizontal alignment.
@@ -1,43 +1,56 @@
1
- <!-- source-hash: a7601384671770e4376abbdab7aed0bf -->
2
- A React component system for displaying highlighted text cards with categories and responsive grid layouts.
1
+ <!-- source-hash: 9562b3fbd93d3258fdb8884c703e1606 -->
2
+ Renders a styled card with a colored highlight behind a category label, and a grid layout component for displaying multiple highlight cards with responsive borders.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`HighlightCard`** - Individual card component with responsive highlight backgrounds and styled category text
7
- - **`HighlightCardGrid`** - Grid container for multiple highlight cards with configurable columns (2 or 3)
8
- - **`HighlightCardItem`** - Interface defining card data structure (category, colors, description)
9
- - **`HighlightCardProps`** - Props interface for individual cards
10
- - **`HighlightCardGridProps`** - Props interface for grid layout configuration
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `HighlightCardItem` | Interface | Data shape for a single card: `category`, `categoryColor`, `highlightBg`, `description` |
9
+ | `HighlightCardProps` | Interface | Props for `HighlightCard`: `item` + optional `className` |
10
+ | `HighlightCard` | Component | Single card with a color-highlighted category label and description text |
11
+ | `HighlightCardGridProps` | Interface | Props for `HighlightCardGrid`: `items`, `columns` (2 or 3), `className`, `cardClassName` |
12
+ | `HighlightCardGrid` | Component | Responsive grid of `HighlightCard` components with automatic border management |
11
13
 
12
14
  ## Usage Example
13
15
 
14
16
  ```typescript
15
- import { HighlightCard, HighlightCardGrid, HighlightCardItem } from './highlight-card';
17
+ import { HighlightCardGrid, HighlightCardItem } from './highlight-card';
16
18
 
17
- const highlightItems: HighlightCardItem[] = [
19
+ const items: HighlightCardItem[] = [
18
20
  {
19
- category: 'data',
21
+ category: 'Network',
20
22
  categoryColor: '#3B82F6',
21
23
  highlightBg: '#DBEAFE',
22
- description: 'visualization needs'
24
+ description: 'infrastructure is monitored 24/7',
23
25
  },
24
26
  {
25
- category: 'workflow',
26
- categoryColor: '#10B981',
27
- highlightBg: '#D1FAE5',
28
- description: 'automation solution'
29
- }
27
+ category: 'Security',
28
+ categoryColor: '#EF4444',
29
+ highlightBg: '#FEE2E2',
30
+ description: 'posture is always up to date',
31
+ },
30
32
  ];
31
33
 
32
- // Single card
33
- <HighlightCard item={highlightItems[0]} />
34
+ // 2-column grid (default)
35
+ <HighlightCardGrid items={items} columns={2} />
34
36
 
35
- // Grid layout
36
- <HighlightCardGrid
37
- items={highlightItems}
38
- columns={2}
37
+ // 3-column grid with custom wrapper styles
38
+ <HighlightCardGrid
39
+ items={items}
40
+ columns={3}
39
41
  className="my-8"
42
+ cardClassName="border border-gray-200 rounded-xl overflow-hidden"
43
+ />
44
+
45
+ // Single card
46
+ <HighlightCard
47
+ item={items[0]}
48
+ className="rounded-lg"
40
49
  />
41
50
  ```
42
51
 
43
- The component features responsive highlight backgrounds that scale with text length, custom typography using Azeret Mono font, and intelligent border management for grid layouts across mobile and desktop viewports.
52
+ ## Notes
53
+
54
+ - Category highlight width is calculated dynamically from `category.length` (`×12px` mobile, `×14px` desktop).
55
+ - `HighlightCardGrid` handles responsive border placement automatically — right borders appear only on desktop, bottom borders are suppressed on the last item/row per breakpoint.
56
+ - Styling relies on Tailwind CSS with custom design tokens (`ods-bg`, `ods-text-primary`, `ods-border`, etc.) from the OpenFrame Design System.
@@ -0,0 +1,41 @@
1
+ <!-- source-hash: 6f5652850fde2ac3f712e1ec49012b20 -->
2
+ An invisible decoy input component for bot detection in React forms. It renders an off-screen, zero-size input that real users never interact with — bots that fill every visible field will trigger it, allowing the server to reject the submission.
3
+
4
+ ## Key Components
5
+
6
+ - **`HoneypotField`** — A `forwardRef` component accepting a `name` prop, used to wire the input into form submission data and connect the ref from `useHumanitySignals`.
7
+
8
+ ## Usage Example
9
+
10
+ ```typescript
11
+ import { HoneypotField } from './honeypot-field'
12
+ import { useHumanitySignals } from '@/hooks/use-humanity-signals'
13
+
14
+ function ContactForm() {
15
+ const { honeypotInputProps } = useHumanitySignals()
16
+
17
+ return (
18
+ <form action={submitAction}>
19
+ <input name="email" type="email" />
20
+ {/* Invisible to users; bots that fill it are blocked server-side */}
21
+ <HoneypotField {...honeypotInputProps} />
22
+ <button type="submit">Send</button>
23
+ </form>
24
+ )
25
+ }
26
+ ```
27
+
28
+ ## Bot Detection Strategy
29
+
30
+ The field is hidden using CSS layout utilities only (no `display:none`, `visibility:hidden`, or `type="hidden"`), since sophisticated bots skip those patterns. Instead it uses:
31
+
32
+ | Technique | Purpose |
33
+ |---|---|
34
+ | `absolute w-px h-px -m-px overflow-hidden` | Off-screen, zero effective size |
35
+ | `aria-hidden="true"` | Excluded from accessibility tree |
36
+ | `tabIndex={-1}` | Excluded from tab order |
37
+ | `pointer-events-none opacity-0` | Not clickable or visible |
38
+ | `autoComplete="off"` | Prevents browser autofill from triggering it |
39
+ | No `<label>` | Avoids id coupling and screen reader exposure |
40
+
41
+ **Server-side:** reject any submission where this field's value is non-empty.
@@ -1,24 +1,31 @@
1
- <!-- source-hash: eee1f55a6c5cf2349c0897b18c2dfcf1 -->
2
- A reusable hover-triggered dropdown component that displays a list of clickable items. Uses fixed positioning via `getBoundingClientRect` to render correctly inside overflow-hidden containers like modals and sheets.
1
+ <!-- source-hash: 5c15b5ebe13ad3bb647655980a430fb0 -->
2
+ A hover-triggered dropdown component that renders a list of clickable items with smart viewport-aware positioning using `getBoundingClientRect` and fixed positioning designed to escape `overflow: hidden` containers like modals and sheets.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### Interfaces
6
+ ### Exports
7
7
 
8
- | Export | Description |
9
- |--------|-------------|
10
- | `HoverDropdownItem` | Defines each row: `label`, optional `icon`, `href`, `onClick`, `targetPlatform`, `path`, and an independent `secondaryAction` button |
11
- | `HoverDropdownRenderAnchorArgs` | Arguments passed to the `renderAnchor` slot for custom link routing |
12
- | `HoverDropdownProps` | Component props: `items`, `side`, `hideDelay`, `className`, `renderAnchor` |
8
+ | Export | Type | Description |
9
+ |---|---|---|
10
+ | `HoverDropdown` | Component | Main dropdown component, triggered on hover (and click/tap) |
11
+ | `HoverDropdownItem` | Interface | Shape for each dropdown row item |
12
+ | `HoverDropdownRenderAnchorArgs` | Interface | Args passed to the `renderAnchor` slot |
13
13
 
14
- ### Component
14
+ ### `HoverDropdownItem` Fields
15
15
 
16
- **`HoverDropdown`** Main export. Wraps any trigger element and shows a positioned dropdown on hover (or tap). Each row supports three render modes:
17
- - **Link row** — rendered via `renderAnchor` (defaults to plain `<a>`)
18
- - **Button row** rendered as `<button>` when `onClick` is provided
19
- - **Non-interactive row** — rendered as `<span>` when neither `href` nor `onClick` is present (useful when only a `secondaryAction` applies)
16
+ | Field | Description |
17
+ |---|---|
18
+ | `label` | Display text for the row |
19
+ | `icon` | Optional leading icon node |
20
+ | `href` | Makes the row a link; routed via `renderAnchor` |
21
+ | `targetPlatform` | Forwarded to `renderAnchor` for routing decisions |
22
+ | `path` | In-app doc-tree path forwarded to `renderAnchor` for chat nav |
23
+ | `onClick` | Fallback click handler when no `href` is present |
24
+ | `secondaryAction` | Independent icon-button at the row's right edge |
20
25
 
21
- The dropdown auto-positions right → left → above/below based on available viewport space.
26
+ ### Positioning Logic
27
+
28
+ The dropdown prefers placement **right** of the trigger, falls back **left**, then falls back **above/below** based on the `side` prop and available viewport space.
22
29
 
23
30
  ## Usage Example
24
31
 
@@ -28,27 +35,33 @@ The dropdown auto-positions right → left → above/below based on available vi
28
35
  <span>Blog Posts (3)</span>
29
36
  </HoverDropdown>
30
37
 
31
- // With custom anchor renderer (e.g., chat runtime routing)
32
- <HoverDropdown
33
- items={[
34
- {
35
- label: 'Design Doc',
36
- href: '/docs/design',
37
- path: 'docs/design',
38
- targetPlatform: 'markdown',
39
- secondaryAction: {
40
- icon: <AskIcon />,
41
- label: 'Ask about this',
42
- onClick: () => handleAsk('design'),
43
- },
38
+ // Chat consumer with custom anchor renderer and secondary action
39
+ const items: HoverDropdownItem[] = [
40
+ {
41
+ label: 'Q3 Report',
42
+ href: '/docs/q3-report',
43
+ targetPlatform: 'markdown',
44
+ path: '/reports/q3',
45
+ secondaryAction: {
46
+ icon: <AskIcon />,
47
+ label: 'Ask about this',
48
+ onClick: () => handleAsk('q3-report'),
44
49
  },
45
- ]}
46
- renderAnchor={({ href, className, children }) => (
47
- <NavLinkAnchorViaRuntime href={href} className={className}>
50
+ },
51
+ ]
52
+
53
+ <HoverDropdown
54
+ items={items}
55
+ side="bottom"
56
+ hideDelay={300}
57
+ renderAnchor={({ href, path, className, children }) => (
58
+ <NavLinkAnchorViaRuntime href={href} path={path} className={className}>
48
59
  {children}
49
60
  </NavLinkAnchorViaRuntime>
50
61
  )}
51
62
  >
52
63
  <Chip>Documents</Chip>
53
64
  </HoverDropdown>
54
- ```
65
+ ```
66
+
67
+ > **Source:** [`hover-dropdown.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/hover-dropdown.tsx)
@@ -1,59 +1,57 @@
1
- <!-- source-hash: 7ceb686fa07cb2b79511a1e43f5bce1a -->
2
- A full-screen image gallery modal component with keyboard navigation, prev/next controls, and an image counter. Extracted as a reusable component from the TMCG event detail page.
1
+ <!-- source-hash: c830a3a2150d037a47f9fe653ca5eac0 -->
2
+ Full-screen image gallery modal component with keyboard navigation, prev/next controls, and image counter display.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `ImageGalleryModal`
7
- The primary export — a React client component wrapping the base `Modal` with gallery-specific behavior.
7
+
8
+ The primary (and only) export. Renders a full-screen modal wrapping an image carousel.
8
9
 
9
10
  **Props (`ImageGalleryModalProps`):**
10
11
 
11
- | Prop | Type | Description |
12
- |------|------|-------------|
13
- | `images` | `string[]` | Array of image URLs to display |
14
- | `isOpen` | `boolean` | Controls modal visibility |
15
- | `onClose` | `() => void` | Callback fired on close or `Escape` key |
16
- | `initialIndex` | `number` | Starting image index (default: `0`) |
12
+ | Prop | Type | Default | Description |
13
+ |------|------|---------|-------------|
14
+ | `images` | `string[]` | — | Array of image URLs to display |
15
+ | `isOpen` | `boolean` | — | Controls modal visibility |
16
+ | `onClose` | `() => void` | — | Callback fired on close |
17
+ | `initialIndex` | `number` | `0` | Starting image index when modal opens |
17
18
 
18
- **Features:**
19
- - **Keyboard navigation** — `ArrowLeft`, `ArrowRight` to navigate; `Escape` to close
20
- - **Prev/Next buttons** — conditionally rendered based on current index boundaries
21
- - **Image counter** — shown when gallery has more than one image (e.g. `2 / 5`)
22
- - **Error handling** — gracefully handles unsupported formats (HEIC) with a download fallback
23
- - **Index reset** — resets to `initialIndex` each time the modal opens
19
+ **Behaviors:**
20
+ - **Keyboard navigation** — `ArrowLeft` / `ArrowRight` cycle through images; `Escape` closes the modal
21
+ - **Error handling** — Detects unsupported formats (e.g. HEIC) and renders a fallback download link in place of broken images
22
+ - **Index reset** — Resets to `initialIndex` whenever the modal re-opens
23
+ - **Conditional controls** — Prev/next buttons and counter only render when `images.length > 1`
24
24
 
25
25
  ## Usage Example
26
26
 
27
27
  ```typescript
28
- import { ImageGalleryModal } from './image-gallery-modal';
28
+ import { ImageGalleryModal } from '@/components/ui/image-gallery-modal';
29
29
 
30
30
  const screenshots = [
31
- 'https://cdn.example.com/img1.jpg',
32
- 'https://cdn.example.com/img2.jpg',
33
- 'https://cdn.example.com/img3.heic',
31
+ 'https://cdn.example.com/photo-1.jpg',
32
+ 'https://cdn.example.com/photo-2.jpg',
33
+ 'https://cdn.example.com/photo-3.heic',
34
34
  ];
35
35
 
36
36
  export function EventDetail() {
37
- const [isOpen, setIsOpen] = useState(false);
37
+ const [galleryOpen, setGalleryOpen] = useState(false);
38
38
  const [startIndex, setStartIndex] = useState(0);
39
39
 
40
40
  return (
41
41
  <>
42
- {screenshots.map((src, i) => (
43
- <img
44
- key={src}
45
- src={src}
46
- onClick={() => { setStartIndex(i); setIsOpen(true); }}
47
- />
48
- ))}
42
+ <button onClick={() => { setStartIndex(0); setGalleryOpen(true); }}>
43
+ View Photos
44
+ </button>
49
45
 
50
46
  <ImageGalleryModal
51
47
  images={screenshots}
52
- isOpen={isOpen}
53
- onClose={() => setIsOpen(false)}
48
+ isOpen={galleryOpen}
49
+ onClose={() => setGalleryOpen(false)}
54
50
  initialIndex={startIndex}
55
51
  />
56
52
  </>
57
53
  );
58
54
  }
59
- ```
55
+ ```
56
+
57
+ > **Source:** [`components/ui/image-gallery-modal.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/components/ui/image-gallery-modal.tsx)