@flamingo-stack/openframe-frontend-core 0.0.481 → 0.0.482

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (838) hide show
  1. package/dist/{chunk-H6DFCF44.cjs → chunk-22AED5IC.cjs} +82 -82
  2. package/dist/{chunk-H6DFCF44.cjs.map → chunk-22AED5IC.cjs.map} +1 -1
  3. package/dist/{chunk-MGKCS6KS.js → chunk-3WCARCI4.js} +2 -2
  4. package/dist/{chunk-LNKWY74S.cjs → chunk-4HL6UENH.cjs} +5 -5
  5. package/dist/{chunk-LNKWY74S.cjs.map → chunk-4HL6UENH.cjs.map} +1 -1
  6. package/dist/{chunk-Y3Y2DLNO.js → chunk-6UGYBCEN.js} +3 -3
  7. package/dist/{chunk-BBUEY73L.js → chunk-7I5B5PQ4.js} +6269 -5339
  8. package/dist/chunk-7I5B5PQ4.js.map +1 -0
  9. package/dist/{chunk-PSPWT2Q5.js → chunk-7LWXWXEY.js} +4 -4
  10. package/dist/{chunk-M7O74OWG.cjs → chunk-ACOU5YJI.cjs} +31 -31
  11. package/dist/{chunk-M7O74OWG.cjs.map → chunk-ACOU5YJI.cjs.map} +1 -1
  12. package/dist/{chunk-INDFIVDV.cjs → chunk-AHGSN4AT.cjs} +12 -12
  13. package/dist/{chunk-INDFIVDV.cjs.map → chunk-AHGSN4AT.cjs.map} +1 -1
  14. package/dist/{chunk-VTSRDC4W.js → chunk-CKC3EAYT.js} +2 -2
  15. package/dist/{chunk-SASR7SK5.js → chunk-GZK7FWJJ.js} +20 -4
  16. package/dist/chunk-GZK7FWJJ.js.map +1 -0
  17. package/dist/{chunk-ZRANZNEA.js → chunk-JJE5TUZK.js} +2 -2
  18. package/dist/{chunk-66BNAFO6.js → chunk-JQIUBFHL.js} +4 -4
  19. package/dist/{chunk-MMCBQJKE.cjs → chunk-KUBJHB6I.cjs} +11 -11
  20. package/dist/{chunk-MMCBQJKE.cjs.map → chunk-KUBJHB6I.cjs.map} +1 -1
  21. package/dist/{chunk-ZV6E3U3C.cjs → chunk-MRGTMMJ3.cjs} +30 -30
  22. package/dist/{chunk-ZV6E3U3C.cjs.map → chunk-MRGTMMJ3.cjs.map} +1 -1
  23. package/dist/{chunk-OZJN54R5.cjs → chunk-NWVKG7QC.cjs} +37 -37
  24. package/dist/{chunk-OZJN54R5.cjs.map → chunk-NWVKG7QC.cjs.map} +1 -1
  25. package/dist/{chunk-AN47EIIJ.cjs → chunk-PHTSSHIQ.cjs} +59 -59
  26. package/dist/{chunk-AN47EIIJ.cjs.map → chunk-PHTSSHIQ.cjs.map} +1 -1
  27. package/dist/{chunk-N2JZ33V7.cjs → chunk-RUA3OXSJ.cjs} +26 -26
  28. package/dist/{chunk-N2JZ33V7.cjs.map → chunk-RUA3OXSJ.cjs.map} +1 -1
  29. package/dist/{chunk-LK623WCC.cjs → chunk-RZPF7MJ2.cjs} +9 -9
  30. package/dist/{chunk-LK623WCC.cjs.map → chunk-RZPF7MJ2.cjs.map} +1 -1
  31. package/dist/{chunk-G3UN2DXU.cjs → chunk-STYA77PH.cjs} +20 -4
  32. package/dist/chunk-STYA77PH.cjs.map +1 -0
  33. package/dist/{chunk-JUJY3HQS.cjs → chunk-U37UTLP7.cjs} +19 -19
  34. package/dist/{chunk-JUJY3HQS.cjs.map → chunk-U37UTLP7.cjs.map} +1 -1
  35. package/dist/{chunk-2DIOV7BR.js → chunk-UPN6EFOM.js} +4 -4
  36. package/dist/{chunk-OWMLWJQY.cjs → chunk-VPVOJD5X.cjs} +2432 -1502
  37. package/dist/chunk-VPVOJD5X.cjs.map +1 -0
  38. package/dist/{chunk-4SMRQ4SN.js → chunk-WBL5Y4PS.js} +3 -3
  39. package/dist/{chunk-FP4H6Y5O.js → chunk-WPYPSIY2.js} +3 -3
  40. package/dist/{chunk-R5WJJL4V.js → chunk-X5X43HFV.js} +5 -5
  41. package/dist/{chunk-DEHZ5CTC.js → chunk-XTWKDMCG.js} +2 -2
  42. package/dist/components/case-studies/index.cjs +9 -9
  43. package/dist/components/case-studies/index.js +3 -3
  44. package/dist/components/chat/index.cjs +3 -3
  45. package/dist/components/chat/index.js +2 -2
  46. package/dist/components/contact/index.cjs +4 -4
  47. package/dist/components/contact/index.js +3 -3
  48. package/dist/components/docs/index.cjs +6 -6
  49. package/dist/components/docs/index.js +5 -5
  50. package/dist/components/embeds/index.cjs +4 -4
  51. package/dist/components/embeds/index.js +3 -3
  52. package/dist/components/faq/index.cjs +4 -4
  53. package/dist/components/faq/index.js +3 -3
  54. package/dist/components/features/captions-url.cjs +12 -0
  55. package/dist/components/features/captions-url.cjs.map +1 -0
  56. package/dist/components/features/captions-url.js +10 -0
  57. package/dist/components/features/captions-url.js.map +1 -0
  58. package/dist/components/features/card-hit-layer.d.ts +40 -0
  59. package/dist/components/features/card-hit-layer.d.ts.map +1 -0
  60. package/dist/components/features/floating-walkthrough-video.d.ts +71 -0
  61. package/dist/components/features/floating-walkthrough-video.d.ts.map +1 -0
  62. package/dist/components/features/index.cjs +11 -3
  63. package/dist/components/features/index.cjs.map +1 -1
  64. package/dist/components/features/index.d.ts +4 -0
  65. package/dist/components/features/index.d.ts.map +1 -1
  66. package/dist/components/features/index.js +12 -4
  67. package/dist/components/features/use-walkthrough-video.d.ts +16 -0
  68. package/dist/components/features/use-walkthrough-video.d.ts.map +1 -0
  69. package/dist/components/features/video-bites-strip.d.ts.map +1 -1
  70. package/dist/components/features/video-center-badge.d.ts.map +1 -1
  71. package/dist/components/features/video-hover-preview.d.ts +68 -0
  72. package/dist/components/features/video-hover-preview.d.ts.map +1 -0
  73. package/dist/components/features/video.d.ts +78 -40
  74. package/dist/components/features/video.d.ts.map +1 -1
  75. package/dist/components/form.d.ts +0 -1
  76. package/dist/components/form.d.ts.map +1 -1
  77. package/dist/components/help-center-pages/index.cjs +21 -21
  78. package/dist/components/help-center-pages/index.js +12 -12
  79. package/dist/components/index.cjs +163 -155
  80. package/dist/components/index.cjs.map +1 -1
  81. package/dist/components/index.js +18 -10
  82. package/dist/components/index.js.map +1 -1
  83. package/dist/components/navigation/index.cjs +3 -3
  84. package/dist/components/navigation/index.js +2 -2
  85. package/dist/components/onboarding-guides/index.cjs +6 -6
  86. package/dist/components/onboarding-guides/index.js +5 -5
  87. package/dist/components/related-content/index.cjs +4 -4
  88. package/dist/components/related-content/index.js +3 -3
  89. package/dist/components/tickets/index.cjs +6 -6
  90. package/dist/components/tickets/index.js +5 -5
  91. package/dist/components/ui/button/button-styles.d.ts +2 -0
  92. package/dist/components/ui/button/button-styles.d.ts.map +1 -1
  93. package/dist/components/ui/button/button.d.ts +2 -2
  94. package/dist/components/ui/button/button.d.ts.map +1 -1
  95. package/dist/components/ui/file-manager/index.cjs +50 -50
  96. package/dist/components/ui/file-manager/index.js +1 -1
  97. package/dist/components/ui/index.cjs +3 -3
  98. package/dist/components/ui/index.js +2 -2
  99. package/dist/components/ui/page-actions.d.ts +2 -1
  100. package/dist/components/ui/page-actions.d.ts.map +1 -1
  101. package/dist/index.cjs +27 -3
  102. package/dist/index.cjs.map +1 -1
  103. package/dist/index.js +28 -4
  104. package/dist/types/supabase.d.ts +80 -0
  105. package/dist/types/supabase.d.ts.map +1 -1
  106. package/dist/types/video-processing.d.ts +1 -1
  107. package/dist/types/video-processing.d.ts.map +1 -1
  108. package/dist/utils/announcement-storage.d.ts +1 -1
  109. package/dist/utils/announcement-storage.d.ts.map +1 -1
  110. package/dist/utils/dismiss-cookie.d.ts +27 -0
  111. package/dist/utils/dismiss-cookie.d.ts.map +1 -0
  112. package/dist/utils/dismissal-storage.d.ts +19 -0
  113. package/dist/utils/dismissal-storage.d.ts.map +1 -0
  114. package/dist/utils/index.cjs +48 -10
  115. package/dist/utils/index.cjs.map +1 -1
  116. package/dist/utils/index.d.ts +2 -0
  117. package/dist/utils/index.d.ts.map +1 -1
  118. package/dist/utils/index.js +41 -11
  119. package/dist/utils/index.js.map +1 -1
  120. package/package.json +8 -2
  121. package/src/.index.md +39 -32
  122. package/src/.platform-domains.md +65 -0
  123. package/src/assets/.fae-avatar.md +33 -0
  124. package/src/assets/.index.md +15 -9
  125. package/src/components/.agent-mark.md +31 -0
  126. package/src/components/.announcement-bar.md +47 -35
  127. package/src/components/.calendar.md +19 -15
  128. package/src/components/.categories-cart.md +34 -30
  129. package/src/components/.category-card.md +33 -33
  130. package/src/components/.chart.md +38 -40
  131. package/src/components/.command.md +47 -23
  132. package/src/components/.comment-card.md +31 -26
  133. package/src/components/.content-loading-container.md +45 -20
  134. package/src/components/.context-menu.md +45 -31
  135. package/src/components/.date-time-picker.md +36 -30
  136. package/src/components/.empty-state.md +31 -31
  137. package/src/components/.faq-accordion.md +20 -30
  138. package/src/components/.filter-chip.md +36 -33
  139. package/src/components/.footer-waitlist-button.md +27 -21
  140. package/src/components/.footer.md +39 -24
  141. package/src/components/.form.md +32 -20
  142. package/src/components/.hero-image-uploader.md +35 -31
  143. package/src/components/.icon-display.md +53 -0
  144. package/src/components/.image-cropper.md +34 -33
  145. package/src/components/.index.md +25 -29
  146. package/src/components/.logs-list.md +27 -23
  147. package/src/components/.media-carousel.md +47 -26
  148. package/src/components/.metric-value.md +27 -24
  149. package/src/components/.msp-display.md +29 -23
  150. package/src/components/.open-source-features.md +23 -26
  151. package/src/components/.pagination.md +44 -39
  152. package/src/components/.persistent-filter-controls.md +61 -28
  153. package/src/components/.pricing-display.md +34 -33
  154. package/src/components/.results-count.md +33 -20
  155. package/src/components/.smooth-accordion.md +24 -20
  156. package/src/components/.social-icon-row.md +33 -21
  157. package/src/components/.sonner.md +40 -25
  158. package/src/components/.steps.md +39 -25
  159. package/src/components/.tool-icon.md +34 -21
  160. package/src/components/.unified-filter-logic.md +32 -36
  161. package/src/components/.user-display.md +33 -28
  162. package/src/components/.user-summary-stub.md +40 -33
  163. package/src/components/.vendor-display-button.md +17 -15
  164. package/src/components/.vendor-icon.md +17 -25
  165. package/src/components/.vendor-tag.md +39 -34
  166. package/src/components/.why-it-matters.md +15 -11
  167. package/src/components/.yes-no-display.md +36 -31
  168. package/src/components/authors/.author-detail-view.md +50 -0
  169. package/src/components/case-studies/.index.md +26 -0
  170. package/src/components/case-studies/.share-experience-section.md +45 -0
  171. package/src/components/chat/.approval-batch-message.md +48 -33
  172. package/src/components/chat/.approval-request-message.md +37 -26
  173. package/src/components/chat/.chat-archive-page.md +56 -0
  174. package/src/components/chat/.chat-attachment-bar.md +32 -40
  175. package/src/components/chat/.chat-composer.md +43 -0
  176. package/src/components/chat/.chat-container.md +41 -25
  177. package/src/components/chat/.chat-context-memory-bar.md +53 -0
  178. package/src/components/chat/.chat-context-picker.md +89 -0
  179. package/src/components/chat/.chat-header-icon-button.md +43 -0
  180. package/src/components/chat/.chat-header-search-field.md +51 -0
  181. package/src/components/chat/.chat-input.md +63 -30
  182. package/src/components/chat/.chat-list-empty-state.md +44 -0
  183. package/src/components/chat/.chat-message-enhanced.md +29 -31
  184. package/src/components/chat/.chat-message-list.md +34 -44
  185. package/src/components/chat/.chat-message-row.md +56 -0
  186. package/src/components/chat/.chat-message-skeleton.md +32 -26
  187. package/src/components/chat/.chat-panel-header-mobile.md +46 -0
  188. package/src/components/chat/.chat-panel-header.md +80 -0
  189. package/src/components/chat/.chat-sidebar-skeleton.md +31 -30
  190. package/src/components/chat/.chat-sidebar.md +36 -29
  191. package/src/components/chat/.chat-ticket-list.md +38 -23
  192. package/src/components/chat/.chat-typing-indicator.md +37 -19
  193. package/src/components/chat/.context-compaction-display.md +19 -15
  194. package/src/components/chat/.context-items-list.md +57 -0
  195. package/src/components/chat/.embeddable-chat.md +57 -66
  196. package/src/components/chat/.error-message-display.md +40 -22
  197. package/src/components/chat/.guide-mode-banner.md +41 -0
  198. package/src/components/chat/.guide-welcome.md +43 -0
  199. package/src/components/chat/.index.md +26 -21
  200. package/src/components/chat/.mingo-chat-history.md +63 -0
  201. package/src/components/chat/.mingo-chat-modals.md +44 -0
  202. package/src/components/chat/.mingo-history-rail.md +63 -0
  203. package/src/components/chat/.mingo-info-card.md +59 -0
  204. package/src/components/chat/.mingo-onboarding-card.md +21 -27
  205. package/src/components/chat/.mingo-welcome.md +60 -0
  206. package/src/components/chat/.model-display.md +33 -25
  207. package/src/components/chat/.msp-organization-card-skeleton.md +44 -0
  208. package/src/components/chat/.msp-organization-card.md +51 -0
  209. package/src/components/chat/.nav-link-anchor-via-runtime.md +36 -25
  210. package/src/components/chat/.quick-action-chip.md +60 -0
  211. package/src/components/chat/.quick-action-marquee.md +53 -0
  212. package/src/components/chat/.quick-action-wall.md +68 -0
  213. package/src/components/chat/.remark-mention-chips.md +41 -0
  214. package/src/components/chat/.slash-command-suggestions.md +30 -36
  215. package/src/components/chat/.source-action-button.md +28 -25
  216. package/src/components/chat/.tool-call-blocks.md +18 -30
  217. package/src/components/chat/.tool-execution-display.md +29 -34
  218. package/src/components/chat/entity-cards/.admin-content-card.md +29 -22
  219. package/src/components/chat/entity-cards/.blog-card.md +44 -33
  220. package/src/components/chat/entity-cards/.blog-image-placeholder.md +20 -18
  221. package/src/components/chat/entity-cards/.case-study-card.md +24 -33
  222. package/src/components/chat/entity-cards/.chat-ticket-item.md +39 -22
  223. package/src/components/chat/entity-cards/.customer-interview-card.md +29 -32
  224. package/src/components/chat/entity-cards/.data-room-doc-card.md +21 -22
  225. package/src/components/chat/entity-cards/.dispatch.md +41 -24
  226. package/src/components/chat/entity-cards/.entity-author-card.md +36 -33
  227. package/src/components/chat/entity-cards/.entity-portrait-card.md +47 -0
  228. package/src/components/chat/entity-cards/.generic-entity-card.md +26 -25
  229. package/src/components/chat/entity-cards/.github-activity-card.md +35 -41
  230. package/src/components/chat/entity-cards/.hubspot-ticket-card.md +22 -28
  231. package/src/components/chat/entity-cards/.index.md +33 -44
  232. package/src/components/chat/entity-cards/.investor-update-card.md +36 -25
  233. package/src/components/chat/entity-cards/.onboarding-guide-card.md +20 -29
  234. package/src/components/chat/entity-cards/.product-release-card-defaults.md +26 -19
  235. package/src/components/chat/entity-cards/.program-card.md +30 -33
  236. package/src/components/chat/entity-cards/.roadmap-card.md +40 -31
  237. package/src/components/chat/entity-cards/.roadmap-vote-button.md +33 -36
  238. package/src/components/chat/entity-cards/.slack-message-card.md +31 -32
  239. package/src/components/chat/entity-cards/.use-cover-image-fallback.md +47 -0
  240. package/src/components/chat/entity-cards/.use-entity-card-link.md +51 -0
  241. package/src/components/chat/entity-cards/.use-entity-card-placeholder.md +47 -0
  242. package/src/components/chat/entity-cards/.what-i-shipped-card.md +43 -0
  243. package/src/components/chat/hooks/.index.md +33 -30
  244. package/src/components/chat/hooks/.use-chat-card-item.md +30 -17
  245. package/src/components/chat/hooks/.use-chat-dialog-manager.md +59 -0
  246. package/src/components/chat/hooks/.use-chat-identity.md +37 -25
  247. package/src/components/chat/hooks/.use-chunk-catchup.md +53 -36
  248. package/src/components/chat/hooks/.use-empty-state-config.md +39 -0
  249. package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +65 -30
  250. package/src/components/chat/hooks/.use-nats-chat-adapter.md +55 -36
  251. package/src/components/chat/hooks/.use-nats-dialog-subscription.md +66 -50
  252. package/src/components/chat/hooks/.use-realtime-chunk-processor.md +58 -31
  253. package/src/components/chat/hooks/.use-scripted-stream.md +46 -0
  254. package/src/components/chat/hooks/.use-slash-commands.md +32 -25
  255. package/src/components/chat/hooks/.use-sse-chat-adapter.md +32 -21
  256. package/src/components/chat/hooks/.use-unified-chat.md +45 -35
  257. package/src/components/chat/types/.api.types.md +49 -41
  258. package/src/components/chat/types/.chat.types.md +56 -34
  259. package/src/components/chat/types/.component.types.md +36 -36
  260. package/src/components/chat/types/.context-item.types.md +61 -0
  261. package/src/components/chat/types/.index.md +32 -17
  262. package/src/components/chat/types/.message.types.md +44 -45
  263. package/src/components/chat/types/.network.types.md +46 -46
  264. package/src/components/chat/types/.processing.types.md +49 -37
  265. package/src/components/chat/types/.unified-chat-state.types.md +41 -26
  266. package/src/components/chat/types/entities/.content-ref.md +20 -31
  267. package/src/components/chat/types/entities/.investor-update.md +14 -16
  268. package/src/components/chat/types/entities/.onboarding-guide.md +35 -34
  269. package/src/components/chat/types/entities/.program-types.md +55 -43
  270. package/src/components/chat/utils/.chip-action-class.md +17 -19
  271. package/src/components/chat/utils/.chip-styles.md +18 -18
  272. package/src/components/chat/utils/.chunk-parser.md +48 -37
  273. package/src/components/chat/utils/.compact-card-classes.md +33 -35
  274. package/src/components/chat/utils/.execute-navigation.md +49 -0
  275. package/src/components/chat/utils/.extract-incomplete-message-state.md +9 -12
  276. package/src/components/chat/utils/.history-merge.md +65 -0
  277. package/src/components/chat/utils/.icon-library.md +33 -31
  278. package/src/components/chat/utils/.icon-registry.md +44 -0
  279. package/src/components/chat/utils/.index.md +37 -33
  280. package/src/components/chat/utils/.is-cross-origin-url.md +26 -22
  281. package/src/components/chat/utils/.message-segment-accumulator.md +46 -25
  282. package/src/components/chat/utils/.nav-anchor-props.md +29 -34
  283. package/src/components/chat/utils/.nav-click-handler.md +29 -33
  284. package/src/components/chat/utils/.process-historical-messages.md +29 -33
  285. package/src/components/chat/utils/.scripted-stream.md +52 -0
  286. package/src/components/chat/utils/.source-row-cta.md +32 -31
  287. package/src/components/chat/utils/.tool-call-helpers.md +25 -17
  288. package/src/components/contact/.contact-form.md +24 -19
  289. package/src/components/docs/.doc-navigation-context.md +49 -0
  290. package/src/components/docs/.doc-viewer.md +64 -0
  291. package/src/components/docs/.docs-hub-page.md +49 -0
  292. package/src/components/docs/.index.md +51 -0
  293. package/src/components/docs/.skeletons.md +47 -0
  294. package/src/components/docs/.use-docs-resolve-link.md +61 -0
  295. package/src/components/docs/.use-document-tree.md +83 -0
  296. package/src/components/docs/.use-scroll-spy.md +58 -0
  297. package/src/components/embeds/.embed-container.md +45 -0
  298. package/src/components/embeds/.embed-iframe.md +51 -0
  299. package/src/components/embeds/.figma-embed.md +43 -0
  300. package/src/components/embeds/.file-download-card.md +47 -0
  301. package/src/components/embeds/.google-sheets-viewer.md +40 -0
  302. package/src/components/embeds/.index.md +58 -0
  303. package/src/components/embeds/.linkedin-embed-client.md +50 -0
  304. package/src/components/embeds/.markdown-image.md +40 -0
  305. package/src/components/embeds/.og-link-preview.md +54 -0
  306. package/src/components/embeds/.pdf-viewer.md +43 -0
  307. package/src/components/embeds/.reddit-embed-client.md +40 -0
  308. package/src/components/embeds/.rich-markdown-runtime.md +53 -0
  309. package/src/components/embeds/.twitter-embed-client.md +44 -0
  310. package/src/components/faq/.faq-document-page.md +68 -0
  311. package/src/components/faq/.faq-section.md +55 -0
  312. package/src/components/faq/.index.md +29 -0
  313. package/src/components/faq/.json-ld.md +48 -0
  314. package/src/components/features/.array-entry-manager.md +32 -24
  315. package/src/components/features/.auth-providers-list.md +33 -32
  316. package/src/components/features/.captions-url.md +43 -0
  317. package/src/components/features/.cards-strip.md +48 -0
  318. package/src/components/features/.changelog-manager.md +17 -20
  319. package/src/components/features/.command-box.md +11 -16
  320. package/src/components/features/.entity-summary-editor.md +20 -15
  321. package/src/components/features/.entity-tag-badges.md +43 -0
  322. package/src/components/features/.entity-video-section.md +31 -41
  323. package/src/components/features/.figma-prototype-viewer.md +55 -37
  324. package/src/components/features/.filters-dropdown.md +14 -13
  325. package/src/components/features/.highlight-config-section.md +19 -16
  326. package/src/components/features/.highlight-video-combined-section.md +28 -19
  327. package/src/components/features/.highlight-video-preview.md +13 -11
  328. package/src/components/features/.highlight-video-section.md +26 -22
  329. package/src/components/features/.index.md +40 -36
  330. package/src/components/features/.media-gallery-manager.md +37 -35
  331. package/src/components/features/.mux-origins.md +46 -0
  332. package/src/components/features/.og-editor-preview.md +29 -24
  333. package/src/components/features/.os-type-badge-group.md +26 -18
  334. package/src/components/features/.os-type-badge.md +41 -24
  335. package/src/components/features/.paths-display.md +42 -25
  336. package/src/components/features/.platform-badge.md +26 -17
  337. package/src/components/features/.policy-configuration-panel.md +33 -31
  338. package/src/components/features/.provider-button.md +29 -20
  339. package/src/components/features/.push-button-selector.md +39 -41
  340. package/src/components/features/.release-media-manager.md +41 -34
  341. package/src/components/features/.section-selector.md +27 -16
  342. package/src/components/features/.select-button.md +21 -32
  343. package/src/components/features/.seo-editor-preview.md +49 -36
  344. package/src/components/features/.social-links-manager.md +40 -18
  345. package/src/components/features/.start-with-openframe-button.md +30 -32
  346. package/src/components/features/.status-filter-component.md +29 -38
  347. package/src/components/features/.tags-selector.md +25 -29
  348. package/src/components/features/.transcript-summary-editor.md +24 -18
  349. package/src/components/features/.use-video-warmup.md +47 -0
  350. package/src/components/features/.video-bites-display.md +36 -37
  351. package/src/components/features/.video-bites-shared.md +44 -0
  352. package/src/components/features/.video-bites-strip.md +63 -0
  353. package/src/components/features/.video-center-badge.md +38 -0
  354. package/src/components/features/.video-ratio-tabs.md +38 -31
  355. package/src/components/features/.video-source-selector.md +24 -27
  356. package/src/components/features/.video.md +35 -27
  357. package/src/components/features/.waitlist-form.md +39 -33
  358. package/src/components/features/.warning-block.md +53 -0
  359. package/src/components/features/ai-enrich/.AIEnrichSection.md +24 -25
  360. package/src/components/features/ai-enrich/.AIRequiredBadge.md +22 -21
  361. package/src/components/features/ai-enrich/.AIStatusIndicator.md +42 -35
  362. package/src/components/features/ai-enrich/.AIWarningsSection.md +23 -20
  363. package/src/components/features/ai-enrich/.ConfidenceBadge.md +35 -20
  364. package/src/components/features/auth/.auth-benefits-panel.md +48 -0
  365. package/src/components/features/auth/.auth-branding.md +51 -0
  366. package/src/components/features/auth/.auth-shell.md +51 -0
  367. package/src/components/features/auth/.back-to-login-link.md +48 -0
  368. package/src/components/features/auth/.complete-account-form.md +45 -0
  369. package/src/components/features/auth/.create-organization-form.md +53 -0
  370. package/src/components/features/auth/.index.md +48 -0
  371. package/src/components/features/auth/.invite-link-invalid-modal.md +42 -0
  372. package/src/components/features/auth/.login-form.md +42 -0
  373. package/src/components/features/auth/.openframe-sso-login-form.md +46 -0
  374. package/src/components/features/auth/.openframe-sso-signup-form.md +51 -0
  375. package/src/components/features/auth/.password-reset-form.md +57 -0
  376. package/src/components/features/auth/.sso-auth-shell.md +35 -0
  377. package/src/components/features/auth/.sso-providers.md +42 -0
  378. package/src/components/features/auth/.terms-agreement-label.md +28 -0
  379. package/src/components/features/board/.board-column-header.md +24 -18
  380. package/src/components/features/board/.board-column.md +32 -32
  381. package/src/components/features/board/.board-ticket-approval.md +42 -0
  382. package/src/components/features/board/.board.md +38 -38
  383. package/src/components/features/board/.index.md +35 -38
  384. package/src/components/features/board/.ticket-card.md +33 -36
  385. package/src/components/features/board/.types.md +38 -31
  386. package/src/components/features/card-hit-layer.tsx +84 -0
  387. package/src/components/features/floating-walkthrough-video.tsx +891 -0
  388. package/src/components/features/index.ts +4 -0
  389. package/src/components/features/notifications/.approval-request-notification-tile.md +45 -0
  390. package/src/components/features/notifications/.index.md +35 -31
  391. package/src/components/features/notifications/.notification-drawer.md +32 -19
  392. package/src/components/features/notifications/.notification-popups.md +51 -0
  393. package/src/components/features/notifications/.notification-tile.md +43 -27
  394. package/src/components/features/notifications/.notifications-context.md +42 -45
  395. package/src/components/features/notifications/.types.md +51 -31
  396. package/src/components/features/ticket-status-config-list/.ticket-status-config-list.md +51 -0
  397. package/src/components/features/time-tracker/.index.md +48 -0
  398. package/src/components/features/time-tracker/.time-tracker-context.md +55 -0
  399. package/src/components/features/time-tracker/.time-tracker-header-button.md +51 -0
  400. package/src/components/features/time-tracker/.time-tracker-panel.md +58 -0
  401. package/src/components/features/time-tracker/.types.md +51 -0
  402. package/src/components/features/time-tracker/.use-tracker-clock.md +32 -0
  403. package/src/components/features/use-walkthrough-video.ts +70 -0
  404. package/src/components/features/video-bites-strip.tsx +46 -146
  405. package/src/components/features/video-center-badge.tsx +11 -2
  406. package/src/components/features/video-hover-preview.tsx +201 -0
  407. package/src/components/features/video.tsx +368 -73
  408. package/src/components/help-center-pages/.delivery-page.md +51 -0
  409. package/src/components/help-center-pages/.index.md +51 -0
  410. package/src/components/help-center-pages/.onboarding-guides-catalog-page.md +53 -0
  411. package/src/components/help-center-pages/.product-releases-list-page.md +51 -0
  412. package/src/components/help-center-pages/.roadmap-page.md +46 -0
  413. package/src/components/icons/.figma-icon.md +13 -7
  414. package/src/components/icons/.index.md +26 -22
  415. package/src/components/icons/.vendor-directory-icon.md +30 -18
  416. package/src/components/icons/.x-logo.md +26 -10
  417. package/src/components/icons-v2-generated/.index.md +30 -41
  418. package/src/components/icons-v2-generated/brand-logos/.index.md +25 -19
  419. package/src/components/icons-v2-generated/communication/.index.md +26 -30
  420. package/src/components/icons-v2-generated/logos/.flamingo-logo-icon.md +41 -0
  421. package/src/components/layout/.article-detail-layout.md +32 -21
  422. package/src/components/layout/.page-container.md +25 -23
  423. package/src/components/layout/.page-heading.md +48 -0
  424. package/src/components/layout/.page-layout.md +30 -25
  425. package/src/components/layout/.title-block.md +43 -24
  426. package/src/components/loading/.card-skeleton.md +28 -35
  427. package/src/components/loading/.category-card-skeleton.md +25 -23
  428. package/src/components/loading/.device-card-skeleton.md +22 -15
  429. package/src/components/loading/.margin-report-skeleton.md +30 -35
  430. package/src/components/loading/.openmsp-heartbeat.md +30 -32
  431. package/src/components/loading/.organization-card-skeleton.md +22 -25
  432. package/src/components/loading/.organization-icon-skeleton.md +39 -27
  433. package/src/components/loading/.page-layout-skeleton.md +50 -28
  434. package/src/components/loading/.unified-skeleton.md +37 -40
  435. package/src/components/loading/.users-grid-skeleton.md +19 -38
  436. package/src/components/navigation/.app-header.md +35 -28
  437. package/src/components/navigation/.app-layout-context.md +48 -0
  438. package/src/components/navigation/.app-layout-drawer.md +56 -0
  439. package/src/components/navigation/.app-layout.md +24 -23
  440. package/src/components/navigation/.header-mingo-button.md +46 -0
  441. package/src/components/navigation/.header-organization-filter.md +32 -18
  442. package/src/components/navigation/.header.md +24 -31
  443. package/src/components/navigation/.index.md +36 -50
  444. package/src/components/navigation/.mingo-ai-button.md +41 -0
  445. package/src/components/navigation/.mobile-burger-menu.md +29 -29
  446. package/src/components/navigation/.mobile-nav-panel.md +41 -49
  447. package/src/components/navigation/.multi-level-navigation.md +76 -0
  448. package/src/components/navigation/.navigation-sidebar-item.md +14 -14
  449. package/src/components/navigation/.navigation-sidebar.md +30 -23
  450. package/src/components/navigation/.sliding-sidebar.md +30 -25
  451. package/src/components/navigation/.sticky-section-nav.md +23 -21
  452. package/src/components/onboarding-guides/.index.md +40 -0
  453. package/src/components/onboarding-guides/.onboarding-guide-detail-view.md +55 -0
  454. package/src/components/onboarding-guides/.onboarding-guides-catalog-skeleton.md +33 -0
  455. package/src/components/onboarding-guides/.onboarding-guides-catalog-view.md +50 -0
  456. package/src/components/onboarding-guides/hooks/.use-onboarding-guides.md +54 -0
  457. package/src/components/platform/.CveLink.md +28 -17
  458. package/src/components/platform/.ScriptArguments.md +18 -23
  459. package/src/components/platform/.ScriptInfoSection.md +27 -21
  460. package/src/components/platform/.ShellTypeBadge.md +34 -18
  461. package/src/components/platform/.SoftwareInfo.md +23 -21
  462. package/src/components/platform/.ToolBadge.md +18 -16
  463. package/src/components/profile/.ProfileLoadingSkeleton.md +24 -23
  464. package/src/components/related-content/.index.md +41 -0
  465. package/src/components/related-content/.related-content-section.md +62 -0
  466. package/src/components/shared/.article-author-byline.md +56 -0
  467. package/src/components/shared/.detail-page-skeleton.md +32 -43
  468. package/src/components/shared/.media-gallery-strip.md +43 -0
  469. package/src/components/shared/delivery/.delivery-lists.md +20 -19
  470. package/src/components/shared/delivery/.delivery-row.md +24 -20
  471. package/src/components/shared/delivery/.delivery-table.md +20 -22
  472. package/src/components/shared/dev-section/.dev-card-row.md +28 -36
  473. package/src/components/shared/dev-section/.dev-section-page.md +36 -25
  474. package/src/components/shared/dev-section/.dev-section-view.md +32 -22
  475. package/src/components/shared/doc-search/.doc-search-bar.md +58 -0
  476. package/src/components/shared/doc-search/.doc-search-result-row.md +50 -0
  477. package/src/components/shared/doc-search/.format-relative-path.md +30 -0
  478. package/src/components/shared/doc-search/.index.md +46 -0
  479. package/src/components/shared/doc-search/.map-doc-search-results.md +44 -0
  480. package/src/components/shared/doc-search/.resolve-search-result-action.md +52 -0
  481. package/src/components/shared/doc-search/.types.md +49 -0
  482. package/src/components/shared/doc-search/.use-doc-search.md +66 -0
  483. package/src/components/shared/legal-document/.legal-document-page.md +26 -20
  484. package/src/components/shared/legal-document/.use-legal-docs.md +36 -30
  485. package/src/components/shared/onboarding/.onboarding-step-card.md +24 -16
  486. package/src/components/shared/onboarding/.onboarding-walkthrough.md +42 -28
  487. package/src/components/shared/product-release/.index.md +33 -24
  488. package/src/components/shared/product-release/.product-release-card-skeleton.md +22 -28
  489. package/src/components/shared/product-release/.product-release-card.md +28 -29
  490. package/src/components/shared/product-release/.product-releases-view.md +49 -0
  491. package/src/components/shared/product-release/.release-detail-page.md +30 -15
  492. package/src/components/shared/roadmap/.index.md +29 -24
  493. package/src/components/shared/roadmap/.roadmap-grid.md +43 -54
  494. package/src/components/shared/roadmap/.roadmap-view.md +41 -0
  495. package/src/components/shared/roadmap/.use-roadmap-voting.md +27 -17
  496. package/src/components/switch.tsx +1 -1
  497. package/src/components/tickets/.help-center-card.md +32 -28
  498. package/src/components/tickets/.help-center-create-form.md +34 -22
  499. package/src/components/tickets/.help-center-list.md +36 -25
  500. package/src/components/tickets/.index.md +30 -45
  501. package/src/components/tickets/.ticket-center.md +31 -38
  502. package/src/components/tickets/.ticket-detail-drawer.md +20 -30
  503. package/src/components/tickets/.ticket-open-form.md +24 -26
  504. package/src/components/tickets/.ticket-reply-composer.md +51 -0
  505. package/src/components/tickets/.ticket-row.md +26 -11
  506. package/src/components/tickets/.types.md +56 -38
  507. package/src/components/tickets/hooks/.use-ticket-actions.md +60 -47
  508. package/src/components/tickets/hooks/.use-ticket-engagements.md +27 -27
  509. package/src/components/tickets/hooks/.use-tickets-list.md +24 -30
  510. package/src/components/ui/.accordion.md +28 -21
  511. package/src/components/ui/.actions-menu.md +36 -54
  512. package/src/components/ui/.ai-generated-badge.md +25 -0
  513. package/src/components/ui/.alert-dialog.md +21 -16
  514. package/src/components/ui/.alert.md +30 -25
  515. package/src/components/ui/.allowed-domains-input.md +26 -15
  516. package/src/components/ui/.announcement-bar-view.md +46 -0
  517. package/src/components/ui/.autocomplete.md +40 -27
  518. package/src/components/ui/.badge.md +34 -31
  519. package/src/components/ui/.brand-association-card.md +22 -18
  520. package/src/components/ui/.breadcrumb.md +18 -14
  521. package/src/components/ui/.bullet-list.md +35 -23
  522. package/src/components/ui/.card.md +47 -30
  523. package/src/components/ui/.checkbox-block.md +34 -22
  524. package/src/components/ui/.checkbox-with-description.md +18 -20
  525. package/src/components/ui/.chevron-button.md +29 -29
  526. package/src/components/ui/.circular-progress.md +30 -41
  527. package/src/components/ui/.color-preset-select.md +54 -0
  528. package/src/components/ui/.color-swatch.md +37 -0
  529. package/src/components/ui/.content-loader.md +34 -27
  530. package/src/components/ui/.crossfade-panels.md +50 -0
  531. package/src/components/ui/.cursor-pagination.md +38 -26
  532. package/src/components/ui/.dashboard-info-card.md +46 -27
  533. package/src/components/ui/.date-picker.md +52 -36
  534. package/src/components/ui/.device-card-compact.md +23 -20
  535. package/src/components/ui/.device-card.md +39 -30
  536. package/src/components/ui/.dialog.md +14 -14
  537. package/src/components/ui/.drawer.md +45 -39
  538. package/src/components/ui/.dropdown-button.md +41 -33
  539. package/src/components/ui/.dropdown-menu.md +40 -23
  540. package/src/components/ui/.duration-input.md +41 -0
  541. package/src/components/ui/.entity-image.md +32 -28
  542. package/src/components/ui/.error-state.md +30 -26
  543. package/src/components/ui/.fade-preview.md +44 -0
  544. package/src/components/ui/.field-wrapper.md +34 -23
  545. package/src/components/ui/.file-upload.md +30 -18
  546. package/src/components/ui/.filter-modal.md +30 -32
  547. package/src/components/ui/.filter-pill-row.md +58 -0
  548. package/src/components/ui/.floating-tooltip.md +27 -32
  549. package/src/components/ui/.hidden-tags-popup.md +18 -20
  550. package/src/components/ui/.highlight-card.md +36 -23
  551. package/src/components/ui/.honeypot-field.md +41 -0
  552. package/src/components/ui/.hover-dropdown.md +44 -31
  553. package/src/components/ui/.image-gallery-modal.md +28 -30
  554. package/src/components/ui/.image-uploader.md +39 -22
  555. package/src/components/ui/.index.md +33 -31
  556. package/src/components/ui/.info-card-row.md +50 -0
  557. package/src/components/ui/.info-card.md +27 -20
  558. package/src/components/ui/.info-row.md +30 -24
  559. package/src/components/ui/.info-section.md +63 -0
  560. package/src/components/ui/.input.md +29 -28
  561. package/src/components/ui/.label.md +34 -26
  562. package/src/components/ui/.markdown-editor.md +26 -25
  563. package/src/components/ui/.marquee-wall.md +64 -0
  564. package/src/components/ui/.menubar.md +50 -16
  565. package/src/components/ui/.modal-v2.md +41 -27
  566. package/src/components/ui/.modal.md +22 -19
  567. package/src/components/ui/.more-actions-menu.md +30 -24
  568. package/src/components/ui/.navigation-menu.md +40 -25
  569. package/src/components/ui/.organization-card.md +46 -27
  570. package/src/components/ui/.page-actions.md +55 -41
  571. package/src/components/ui/.page-loader.md +40 -23
  572. package/src/components/ui/.password-input.md +30 -0
  573. package/src/components/ui/.phone-input.md +20 -22
  574. package/src/components/ui/.portal-container.md +43 -0
  575. package/src/components/ui/.progress-bar.md +40 -27
  576. package/src/components/ui/.release-changelog-section.md +32 -26
  577. package/src/components/ui/.rich-markdown-renderer.md +45 -0
  578. package/src/components/ui/.scroll-fade.md +56 -0
  579. package/src/components/ui/.search-input.md +55 -37
  580. package/src/components/ui/.select.md +25 -26
  581. package/src/components/ui/.service-card.md +25 -19
  582. package/src/components/ui/.sheet.md +21 -21
  583. package/src/components/ui/.simple-markdown-renderer.md +36 -24
  584. package/src/components/ui/.slack-channel-chip.md +49 -0
  585. package/src/components/ui/.square-avatar.md +29 -26
  586. package/src/components/ui/.stacked-rows-panel.md +61 -0
  587. package/src/components/ui/.status-badge.md +30 -24
  588. package/src/components/ui/.status-indicator.md +35 -21
  589. package/src/components/ui/.tab-content.md +34 -22
  590. package/src/components/ui/.tab-navigation.md +40 -50
  591. package/src/components/ui/.tab-selector.md +48 -31
  592. package/src/components/ui/.tabs.md +34 -21
  593. package/src/components/ui/.tag-search-input.md +20 -20
  594. package/src/components/ui/.tag-select-dropdown.md +59 -0
  595. package/src/components/ui/.tag.md +25 -43
  596. package/src/components/ui/.tags-input.md +31 -31
  597. package/src/components/ui/.textarea.md +32 -30
  598. package/src/components/ui/.ticket-attachments-list.md +36 -29
  599. package/src/components/ui/.ticket-info-section.md +37 -42
  600. package/src/components/ui/.ticket-status-config-row.md +66 -0
  601. package/src/components/ui/.ticket-status-tag.md +39 -35
  602. package/src/components/ui/.toaster.md +21 -15
  603. package/src/components/ui/.toggle.md +38 -37
  604. package/src/components/ui/.tooltip.md +16 -13
  605. package/src/components/ui/button/.button-styles.md +17 -18
  606. package/src/components/ui/button/.button.md +30 -37
  607. package/src/components/ui/button/.split-button.md +46 -23
  608. package/src/components/ui/button/button-styles.ts +13 -0
  609. package/src/components/ui/button/button.tsx +5 -0
  610. package/src/components/ui/data-table/.data-table-body.md +50 -35
  611. package/src/components/ui/data-table/.data-table-empty.md +17 -33
  612. package/src/components/ui/data-table/.data-table-header.md +43 -40
  613. package/src/components/ui/data-table/.data-table-row.md +31 -31
  614. package/src/components/ui/data-table/.types.md +23 -28
  615. package/src/components/ui/file-manager/.file-manager-breadcrumb.md +16 -24
  616. package/src/components/ui/file-manager/.file-manager-empty.md +23 -15
  617. package/src/components/ui/file-manager/.file-manager-skeleton.md +34 -36
  618. package/src/components/ui/file-manager/.file-manager-table-row.md +29 -29
  619. package/src/components/ui/file-manager/.file-manager-table.md +39 -24
  620. package/src/components/ui/no-data/.index.md +22 -0
  621. package/src/components/ui/no-data/.no-data-actions.md +29 -0
  622. package/src/components/ui/no-data/.no-data-message.md +37 -0
  623. package/src/components/ui/no-data/.no-data-styles.md +39 -0
  624. package/src/components/ui/no-data/.no-data.md +59 -0
  625. package/src/components/ui/page-actions.tsx +2 -1
  626. package/src/components/ui/query-report-table/.query-report-table-header.md +15 -15
  627. package/src/components/ui/query-report-table/.query-report-table-row.md +16 -16
  628. package/src/components/ui/query-report-table/.query-report-table.md +39 -24
  629. package/src/components/ui/table/.table-column-filter-dropdown.md +15 -9
  630. package/src/components/ui/table/.table-description-cell.md +13 -12
  631. package/src/components/ui/table/.table-empty-state.md +19 -20
  632. package/src/components/ui/table/.table-row.md +30 -20
  633. package/src/components/ui/table/.table-skeleton.md +32 -27
  634. package/src/components/ui/table/.table-timestamp-cell.md +24 -23
  635. package/src/components/ui/table/.table.md +43 -30
  636. package/src/components/ui/table/.types.md +49 -45
  637. package/src/components/ui/table/.use-table-motion.md +45 -0
  638. package/src/contexts/.chat-runtime-context.md +55 -26
  639. package/src/contexts/.endpoints-runtime-context.md +40 -44
  640. package/src/embed-shims/.next-navigation.md +38 -31
  641. package/src/hooks/.api-hooks.md +28 -21
  642. package/src/hooks/.index.md +30 -25
  643. package/src/hooks/.use-authed-image-src.md +38 -0
  644. package/src/hooks/.use-contact-submission.md +35 -36
  645. package/src/hooks/.use-humanity-signals.md +47 -0
  646. package/src/hooks/.use-near-viewport.md +30 -30
  647. package/src/hooks/.use-og-placeholder-url.md +57 -0
  648. package/src/hooks/.use-scroll-to-hash.md +46 -0
  649. package/src/hooks/.use-self-fetch.md +52 -0
  650. package/src/hooks/state/.flatten-schema.md +37 -29
  651. package/src/hooks/ui/.index.md +37 -25
  652. package/src/hooks/ui/.use-auto-limit-tags.md +55 -38
  653. package/src/hooks/ui/.use-deferred-error.md +44 -0
  654. package/src/hooks/ui/.use-focus-trap.md +59 -0
  655. package/src/hooks/ui/.use-header-height.md +37 -0
  656. package/src/hooks/ui/.use-horizontal-scrollbar.md +25 -34
  657. package/src/hooks/ui/.use-marquee-engine.md +73 -0
  658. package/src/hooks/ui/.use-notification-permission.md +49 -0
  659. package/src/hooks/ui/.use-reset-on-page-hidden.md +40 -0
  660. package/src/hooks/ui/.use-suppress-clone-focus.md +41 -0
  661. package/src/nats/.index.md +39 -0
  662. package/src/nats/.nats-provider.md +46 -0
  663. package/src/nats/.nats.md +38 -28
  664. package/src/nats/.shared-connection.md +56 -0
  665. package/src/nats/.use-nats-subscription.md +57 -0
  666. package/src/stories/.ActionsMenu.stories.md +57 -0
  667. package/src/stories/.Alert.stories.md +46 -0
  668. package/src/stories/.AnnouncementBar.stories.md +59 -32
  669. package/src/stories/.AppLayoutDrawer.stories.md +60 -0
  670. package/src/stories/.AppLayoutSidebar.stories.md +45 -0
  671. package/src/stories/.ApprovalBatchMessage.stories.md +46 -0
  672. package/src/stories/.ApprovalBatchMessageClient.stories.md +55 -0
  673. package/src/stories/.ApprovalRequestMessage.stories.md +50 -0
  674. package/src/stories/.ApprovalRequestMessageClient.stories.md +41 -0
  675. package/src/stories/.BlogCard.stories.md +52 -0
  676. package/src/stories/.Board.stories.md +25 -20
  677. package/src/stories/.Button.stories.md +35 -40
  678. package/src/stories/.CampaignCardAdmin.stories.md +38 -0
  679. package/src/stories/.CardsStrip.stories.md +39 -0
  680. package/src/stories/.CaseStudyCard.stories.md +41 -0
  681. package/src/stories/.ChatContainer.stories.md +41 -0
  682. package/src/stories/.ChatInlineVideoPill.stories.md +36 -0
  683. package/src/stories/.ChatMessageEnhanced.stories.md +51 -0
  684. package/src/stories/.ChatMingoInfoCards.stories.md +30 -0
  685. package/src/stories/.ChatTicketList.stories.md +38 -22
  686. package/src/stories/.ChatTypingIndicator.stories.md +47 -0
  687. package/src/stories/.CheckboxBlock.stories.md +34 -35
  688. package/src/stories/.ContextCompactionDisplay.stories.md +28 -0
  689. package/src/stories/.CustomerInterviewCard.stories.md +36 -0
  690. package/src/stories/.DashboardInfoCard.stories.md +40 -33
  691. package/src/stories/.DataRoomDocCard.stories.md +42 -0
  692. package/src/stories/.DataTable.stories.md +37 -32
  693. package/src/stories/.DatePicker.stories.md +34 -30
  694. package/src/stories/.EmbeddableChat.stories.md +45 -28
  695. package/src/stories/.EmptyState.stories.md +55 -0
  696. package/src/stories/.ErrorMessageDisplay.stories.md +45 -0
  697. package/src/stories/.FilterModal.stories.md +28 -22
  698. package/src/stories/.GenericEntityCard.stories.md +50 -0
  699. package/src/stories/.GitHubActivityCard.stories.md +41 -0
  700. package/src/stories/.GuideWelcome.stories.md +38 -0
  701. package/src/stories/.Header.stories.md +32 -22
  702. package/src/stories/.HubspotTicketCard.stories.md +41 -0
  703. package/src/stories/.InfoCard.stories.md +37 -26
  704. package/src/stories/.InfoCardRow.stories.md +48 -0
  705. package/src/stories/.InfoSection.stories.md +55 -0
  706. package/src/stories/.Input.stories.md +45 -35
  707. package/src/stories/.InvestorUpdateCard.stories.md +41 -0
  708. package/src/stories/.MarqueeWall.stories.md +53 -0
  709. package/src/stories/.MingoAiButton.stories.md +31 -0
  710. package/src/stories/.MingoChatModals.stories.md +47 -0
  711. package/src/stories/.MingoInfoCard.stories.md +50 -0
  712. package/src/stories/.MingoOnboardingCard.stories.md +19 -19
  713. package/src/stories/.MingoWelcome.stories.md +41 -0
  714. package/src/stories/.MobileNavPanel.stories.md +52 -0
  715. package/src/stories/.Modal.stories.md +19 -16
  716. package/src/stories/.MspOrganizationCard.stories.md +45 -0
  717. package/src/stories/.NotificationDrawer.stories.md +39 -28
  718. package/src/stories/.OSTypeBadge.stories.md +34 -25
  719. package/src/stories/.OnboardingGuideCard.stories.md +41 -0
  720. package/src/stories/.PageActions.stories.md +21 -21
  721. package/src/stories/.PageContainer.stories.md +29 -24
  722. package/src/stories/.PageLayout.stories.md +18 -35
  723. package/src/stories/.PolicyConfigurationPanel.stories.md +58 -0
  724. package/src/stories/.ProductReleaseCard.stories.md +39 -0
  725. package/src/stories/.ProgramCard.stories.md +51 -0
  726. package/src/stories/.QuickActionChip.stories.md +59 -0
  727. package/src/stories/.QuickActionMarquee.stories.md +51 -0
  728. package/src/stories/.QuickActionWall.stories.md +58 -0
  729. package/src/stories/.RoadmapCard.stories.md +41 -0
  730. package/src/stories/.ShellTypeBadge.stories.md +42 -22
  731. package/src/stories/.SlackMessageCard.stories.md +42 -0
  732. package/src/stories/.SlashCommandSuggestions.stories.md +21 -31
  733. package/src/stories/.SplitButton.stories.md +23 -25
  734. package/src/stories/.StackedRowsPanel.stories.md +65 -0
  735. package/src/stories/.TabSelector.stories.md +26 -38
  736. package/src/stories/.Tag.stories.md +32 -27
  737. package/src/stories/.ThinkingDisplay.stories.md +43 -0
  738. package/src/stories/.TicketCard.stories.md +60 -0
  739. package/src/stories/.TicketInfoSection.stories.md +28 -20
  740. package/src/stories/.TimeTracker.stories.md +35 -0
  741. package/src/stories/.Toaster.stories.md +26 -20
  742. package/src/stories/.ToolBadge.stories.md +34 -24
  743. package/src/stories/.ToolExecutionDisplay.stories.md +22 -20
  744. package/src/stories/.ToolExecutionDisplayClient.stories.md +33 -0
  745. package/src/stories/.VideoBitesStrip.stories.md +37 -0
  746. package/src/stories/.WarningBlock.stories.md +51 -0
  747. package/src/stories/__fixtures__/.chat-card-decorator.md +39 -0
  748. package/src/stories/__fixtures__/.chat-cards.md +57 -0
  749. package/src/stories/auth/.CompleteAccount.stories.md +36 -0
  750. package/src/stories/auth/.CreateOrganization.stories.md +52 -0
  751. package/src/stories/auth/.InviteLinkInvalid.stories.md +21 -0
  752. package/src/stories/auth/.Login.stories.md +32 -0
  753. package/src/stories/auth/.OpenFrameSso.stories.md +58 -0
  754. package/src/stories/auth/.PasswordReset.stories.md +49 -0
  755. package/src/styles/ods-interaction-states.css +32 -0
  756. package/src/types/.announcement.md +67 -35
  757. package/src/types/.blog.md +44 -41
  758. package/src/types/.case-study.md +31 -17
  759. package/src/types/.content-ref.md +37 -0
  760. package/src/types/.customer-interview.md +38 -38
  761. package/src/types/.doc-source.md +87 -0
  762. package/src/types/.entity-author.md +53 -0
  763. package/src/types/.entity-platform.md +40 -0
  764. package/src/types/.index.md +23 -17
  765. package/src/types/.marketing.md +32 -35
  766. package/src/types/.navigation.md +31 -19
  767. package/src/types/.os.types.md +30 -31
  768. package/src/types/.permissions.md +49 -35
  769. package/src/types/.platform.md +44 -28
  770. package/src/types/.product-release.md +59 -42
  771. package/src/types/.shell.types.md +46 -30
  772. package/src/types/.supabase.md +43 -29
  773. package/src/types/.tool.types.md +43 -23
  774. package/src/types/.video-processing.md +40 -31
  775. package/src/types/supabase.ts +80 -0
  776. package/src/types/video-processing.ts +1 -0
  777. package/src/utils/.announcement-storage.md +49 -17
  778. package/src/utils/.app-config.md +22 -18
  779. package/src/utils/.brand-marks.md +46 -0
  780. package/src/utils/.cn.md +40 -29
  781. package/src/utils/.color-analysis.md +34 -25
  782. package/src/utils/.common.md +43 -23
  783. package/src/utils/.content-href.md +64 -0
  784. package/src/utils/.content-ref-groups.md +51 -0
  785. package/src/utils/.date-utils.md +46 -35
  786. package/src/utils/.doc-path-utils.md +38 -0
  787. package/src/utils/.doc-tree-nav.md +51 -0
  788. package/src/utils/.embed-authed-fetch.md +48 -32
  789. package/src/utils/.embed-content-fetch.md +36 -0
  790. package/src/utils/.embed-url-converters.md +52 -0
  791. package/src/utils/.extract-items.md +49 -0
  792. package/src/utils/.faq-anchor.md +48 -0
  793. package/src/utils/.format.md +73 -55
  794. package/src/utils/.humanity-signals.md +59 -0
  795. package/src/utils/.index.md +73 -31
  796. package/src/utils/.list-url.md +43 -0
  797. package/src/utils/.markdown-section-extractor.md +57 -0
  798. package/src/utils/.markdown-to-plain.md +51 -0
  799. package/src/utils/.media-carousel-utils-stub.md +42 -31
  800. package/src/utils/.ods-color-utils.md +84 -43
  801. package/src/utils/.og-placeholder.md +45 -0
  802. package/src/utils/.page-header-constants.md +26 -0
  803. package/src/utils/.platform-config.md +34 -34
  804. package/src/utils/.release-badge.md +47 -0
  805. package/src/utils/.release-cover.md +45 -0
  806. package/src/utils/.same-page-hash-nav.md +45 -0
  807. package/src/utils/.scroll-into-view.md +32 -25
  808. package/src/utils/.seo-description.md +37 -0
  809. package/src/utils/.seo-title.md +25 -0
  810. package/src/utils/.social-embed-cache.md +37 -0
  811. package/src/utils/.source-icons.md +30 -34
  812. package/src/utils/.suggestion-url.md +46 -0
  813. package/src/utils/.tool-utils.md +39 -24
  814. package/src/utils/.tree-builder.md +64 -0
  815. package/src/utils/.video-bite-id.md +42 -0
  816. package/src/utils/announcement-storage.ts +9 -18
  817. package/src/utils/dev-sections/.dev-section-param-keys.md +51 -0
  818. package/src/utils/dev-sections/.openframe-dev-sections.md +40 -28
  819. package/src/utils/dismiss-cookie.ts +55 -0
  820. package/src/utils/dismissal-storage.ts +38 -0
  821. package/src/utils/index.ts +3 -0
  822. package/dist/chunk-BBUEY73L.js.map +0 -1
  823. package/dist/chunk-G3UN2DXU.cjs.map +0 -1
  824. package/dist/chunk-OWMLWJQY.cjs.map +0 -1
  825. package/dist/chunk-SASR7SK5.js.map +0 -1
  826. package/src/components/chat/utils/.onboarding-icons.md +0 -28
  827. package/src/hooks/.use-og-placeholder.md +0 -51
  828. /package/dist/{chunk-MGKCS6KS.js.map → chunk-3WCARCI4.js.map} +0 -0
  829. /package/dist/{chunk-Y3Y2DLNO.js.map → chunk-6UGYBCEN.js.map} +0 -0
  830. /package/dist/{chunk-PSPWT2Q5.js.map → chunk-7LWXWXEY.js.map} +0 -0
  831. /package/dist/{chunk-VTSRDC4W.js.map → chunk-CKC3EAYT.js.map} +0 -0
  832. /package/dist/{chunk-ZRANZNEA.js.map → chunk-JJE5TUZK.js.map} +0 -0
  833. /package/dist/{chunk-66BNAFO6.js.map → chunk-JQIUBFHL.js.map} +0 -0
  834. /package/dist/{chunk-2DIOV7BR.js.map → chunk-UPN6EFOM.js.map} +0 -0
  835. /package/dist/{chunk-4SMRQ4SN.js.map → chunk-WBL5Y4PS.js.map} +0 -0
  836. /package/dist/{chunk-FP4H6Y5O.js.map → chunk-WPYPSIY2.js.map} +0 -0
  837. /package/dist/{chunk-R5WJJL4V.js.map → chunk-X5X43HFV.js.map} +0 -0
  838. /package/dist/{chunk-DEHZ5CTC.js.map → chunk-XTWKDMCG.js.map} +0 -0
@@ -0,0 +1,39 @@
1
+ <!-- source-hash: 2dd85c4676b5b84547c130a41316a737 -->
2
+ Shared Storybook utilities for rendering chat entity-card stories in an isolated, realistic chat-column context.
3
+
4
+ ## Key Components
5
+
6
+ - **`ChatColumnDecorator`** — React wrapper component that reproduces the assistant message column layout (constrained `max-w-[420px]`, ODS background, padding) so entity-card stories render at their real dimensions without the full chat runtime.
7
+ - **`makeAnchorProps`** — Factory that returns a `{ href, onClick }` pair satisfying card `*AnchorProps` interfaces. The `onClick` calls `preventDefault` to prevent iframe navigation in Storybook while preserving anchor semantics (hover, copy-link).
8
+
9
+ ## Usage Example
10
+
11
+ ```typescript
12
+ import { ChatColumnDecorator, makeAnchorProps } from './chat-card-decorator'
13
+ import type { Meta, StoryObj } from '@storybook/react'
14
+ import { TicketCard } from './ticket-card'
15
+
16
+ const meta: Meta<typeof TicketCard> = {
17
+ component: TicketCard,
18
+ decorators: [
19
+ (Story) => (
20
+ <ChatColumnDecorator>
21
+ <Story />
22
+ </ChatColumnDecorator>
23
+ ),
24
+ ],
25
+ }
26
+ export default meta
27
+
28
+ export const Default: StoryObj<typeof TicketCard> = {
29
+ args: {
30
+ title: 'Printer not working',
31
+ anchorProps: makeAnchorProps('https://app.example.com/tickets/42'),
32
+ },
33
+ }
34
+ ```
35
+
36
+ ## Notes
37
+
38
+ - `ChatColumnDecorator` is a layout-only wrapper; it carries no runtime dependencies, making it safe to import in any `.stories.tsx` file.
39
+ - `makeAnchorProps` is intentionally router-agnostic — swap `href` for any valid URL; the `onClick` stub is Storybook-only and should not be used in production card components.
@@ -0,0 +1,57 @@
1
+ <!-- source-hash: 3e21cadfb28786c642e3ad430a4c2445 -->
2
+ Shared Storybook fixtures that supply realistic mock data for every chat entity-card docType in `CHAT_CARD_REGISTRY`, enabling designers to preview cards without running the chat runtime.
3
+
4
+ ## Key Components
5
+
6
+ ### Constants & Helpers
7
+
8
+ - **`NOW` / `DAY`** — Fixed timestamp anchor (`2026-05-28`) and millisecond day unit used to compute relative dates
9
+ - **`isoDaysAgo(days)`** — Utility that returns an ISO 8601 string N days before the anchor
10
+ - **`SAMPLE_AUTHOR`** — Reusable author object with name, avatar, and job title
11
+
12
+ ### Exported Fixtures
13
+
14
+ | Export | Type | Description |
15
+ |---|---|---|
16
+ | `githubCommitItem` | `GitHubActivityItem` | Commit activity card fixture |
17
+ | `githubPullRequestItem` | `GitHubActivityItem` | Pull request card fixture |
18
+ | `githubPrReviewItem` | `GitHubActivityItem` | PR review card fixture |
19
+ | `slackMessageItem` | `SlackMessageItem` | Slack channel message fixture |
20
+ | `hubspotTicketItem` | `HubspotTicketItem` | High-priority HubSpot ticket fixture |
21
+ | `dataRoomDocItem` | `DataRoomDocCardItem` | Investor relations document fixture |
22
+ | `openframeDocsMarkdownItem` | `DataRoomDocCardItem` | Knowledge base article fixture |
23
+ | `financialKpiItem` | `GenericEntityCardItem` | ARR KPI card with badge and facts |
24
+ | `capTableItem` | `GenericEntityCardItem` | SAFE note cap table entry |
25
+ | `profitLossItem` | `GenericEntityCardItem` | Consolidated P&L card |
26
+ | `balanceSheetItem` | `GenericEntityCardItem` | Month-end balance sheet card |
27
+ | `cashFlowItem` | `GenericEntityCardItem` | Operating cash flow card |
28
+ | `blogPostSummary` | `BlogPostSummary` | Featured engineering blog post |
29
+ | `caseStudy` | `CaseStudy` | MSP customer success story with relations |
30
+ | `customerInterview` | `CustomerInterview` | Video interview with transcript fields |
31
+
32
+ ## Usage Example
33
+
34
+ ```typescript
35
+ import {
36
+ githubCommitItem,
37
+ hubspotTicketItem,
38
+ financialKpiItem,
39
+ } from '@/stories/fixtures/chat-cards'
40
+
41
+ // Use directly in a Storybook story
42
+ export const HubSpotTicket: Story = {
43
+ args: {
44
+ item: hubspotTicketItem,
45
+ href: hubspotTicketItem.url,
46
+ },
47
+ }
48
+
49
+ // Or compose multiple fixtures into a feed story
50
+ export const MixedFeed: Story = {
51
+ args: {
52
+ items: [githubCommitItem, hubspotTicketItem, financialKpiItem],
53
+ },
54
+ }
55
+ ```
56
+
57
+ > **Note:** Server-only fields (status timestamps, AI processing flags, view counts) are populated with type-correct placeholder values. The card components do not read these at render time, but the wire types require them for TypeScript compliance.
@@ -0,0 +1,36 @@
1
+ <!-- source-hash: b6a4a529a05f32c27061254e5b7c0498 -->
2
+ Storybook stories for the `CompleteAccountForm` component, covering two authentication flows — Sign Up and Accept Invitation — in both empty and pre-filled states.
3
+
4
+ ## Key Components
5
+
6
+ - **`useAccountFields`** — Shared controlled-input hook managing `firstName`, `lastName`, `password`, and `confirmPassword` state, with built-in validation (min 8-char password, fields match and non-empty).
7
+ - **`SignUpPage`** — Renders `CompleteAccountForm` inside `AuthShell` with a `TabSelector` (Sign Up / Login tabs) and a back action.
8
+ - **`InvitationPage`** — Renders `CompleteAccountForm` inside `AuthShell` with a `BackToLoginLink` footer, custom title/subtitle, and no tab navigation.
9
+ - **Exported Stories** — `SignUpEmpty`, `SignUpFilled`, `InvitationEmpty`, `InvitationFilled`.
10
+
11
+ ## Usage Example
12
+
13
+ ```typescript
14
+ // Render the Sign Up variant with pre-filled fields
15
+ export const SignUpFilled: Story = {
16
+ render: () => <SignUpPage filled />,
17
+ }
18
+
19
+ // Render the Invitation variant with empty fields
20
+ export const InvitationEmpty: Story = {
21
+ render: () => <InvitationPage />,
22
+ }
23
+ ```
24
+
25
+ ## Story Variants
26
+
27
+ | Story | Flow | State |
28
+ |---|---|---|
29
+ | `SignUpEmpty` | Sign Up (with tabs) | Empty fields |
30
+ | `SignUpFilled` | Sign Up (with tabs) | Pre-filled (Ada Lovelace) |
31
+ | `InvitationEmpty` | Accept Invitation | Empty fields |
32
+ | `InvitationFilled` | Accept Invitation | Pre-filled |
33
+
34
+ Both flows share the `SSO_PROVIDERS` constant (`['google', 'microsoft']`) and the `useAccountFields` hook. `submitDisabled` is derived automatically — enabled only when all fields are valid.
35
+
36
+ **Source:** [`CompleteAccount.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/CompleteAccount.stories.tsx)
@@ -0,0 +1,52 @@
1
+ <!-- source-hash: bbc2c85f9c89b1adef88e9610f8e5f3b -->
2
+ Storybook stories for the `CreateOrganizationForm` auth component, covering empty, filled, error, and SSO states within a full-page `AuthShell` layout.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `Empty` | `Story` | Default state with empty fields, terms unchecked, and submit disabled |
9
+ | `Filled` | `Story` | Pre-filled valid input with terms accepted and submit enabled |
10
+ | `ErrorState` | `Story` | Validation error messages on email and organization name fields |
11
+ | `SSO` | `Story` | SSO provider buttons replace standard submit; fields are disabled |
12
+ | `CreateOrganizationPage` | Internal helper | Controlled wrapper composing `AuthShell`, `TabSelector`, and `CreateOrganizationForm` |
13
+
14
+ ## Usage Example
15
+
16
+ ```typescript
17
+ // Render the Filled story directly in another Storybook file
18
+ import { Filled } from './CreateOrganization.stories'
19
+
20
+ export const MyStory = {
21
+ render: () => <Filled.render />,
22
+ }
23
+ ```
24
+
25
+ ```typescript
26
+ // Replicate the SSO story setup in a test or custom harness
27
+ import { CreateOrganizationForm, AuthShell } from '../../components/features/auth'
28
+ import type { AuthSsoProvider } from '../../components/features/auth'
29
+
30
+ const providers: AuthSsoProvider[] = ['openframe', 'google', 'microsoft']
31
+
32
+ <AuthShell tabs={<TabSelector ... />}>
33
+ <CreateOrganizationForm
34
+ email="user@example.com"
35
+ organizationName="Acme"
36
+ domain="acme"
37
+ domainSuffix=".openframe.ai"
38
+ ssoProviders={providers}
39
+ termsUrl="/terms"
40
+ privacyPolicyUrl="/privacy"
41
+ onSubmit={() => {}}
42
+ />
43
+ </AuthShell>
44
+ ```
45
+
46
+ ## Notes
47
+
48
+ - Stories are rendered inside `AuthShell` with `layout: 'fullscreen'` to accurately reflect the two-column desktop / stacked mobile responsive layout. Use the Storybook viewport toolbar to verify breakpoints.
49
+ - Submit is gated on all three fields being non-empty **and** `agreedToTerms` being `true` — reflected in the `Empty` vs `Filled` stories.
50
+ - The `Login` tab renders a placeholder panel; its implementation is deferred to a later step.
51
+
52
+ **Source:** [`CreateOrganization.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/CreateOrganization.stories.tsx)
@@ -0,0 +1,21 @@
1
+ <!-- source-hash: 5d2ca564a870738800ac02bcfae3e056 -->
2
+ Storybook stories file for the `InviteLinkInvalidModal` component, rendering the UI state displayed when an invitation link is expired or invalid.
3
+
4
+ ## Key Components
5
+
6
+ - **`meta`** — Storybook metadata configuring the story under the `Auth/Invite Link Invalid` title with fullscreen layout and autodocs enabled
7
+ - **`Default`** — Single story rendering `InviteLinkInvalidModal` with a no-op `onBackToLogin` callback
8
+
9
+ ## Usage Example
10
+
11
+ ```typescript
12
+ // Render the modal in isolation with a real navigation handler
13
+ import { InviteLinkInvalidModal } from '../../components/features/auth'
14
+
15
+ <InviteLinkInvalidModal onBackToLogin={() => router.push('/login')} />
16
+ ```
17
+
18
+ ## Notes
19
+
20
+ - Both the close (`X`) button and the primary action button invoke `onBackToLogin`, redirecting users back to the login screen
21
+ - Source: [`InviteLinkInvalid.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/InviteLinkInvalid.stories.tsx)
@@ -0,0 +1,32 @@
1
+ <!-- source-hash: 14bde4c0074b074c3e3b634f7daf4229 -->
2
+ Storybook stories for the `LoginForm` authentication component, demonstrating three states — empty, filled, and SSO — rendered inside a full-page `AuthShell` with tab navigation.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `Empty` | `Story` | Login form with no email input; submit button disabled |
9
+ | `Filled` | `Story` | Login form with a valid email; Continue button enabled |
10
+ | `SSO` | `Story` | Login form with SSO provider buttons replacing the submit action |
11
+ | `LoginPage` | Helper component | Wraps `LoginForm` in `AuthShell` with `TabSelector` (Sign Up / Login tabs), managing local email and tab state |
12
+
13
+ ## Usage Example
14
+
15
+ ```typescript
16
+ // Render the Filled story manually in a test or custom harness
17
+ import { Filled } from './Login.stories'
18
+
19
+ // All three stories accept no args; state is managed internally
20
+ <Filled.render />
21
+
22
+ // Configure SSO providers directly via LoginPage internals
23
+ const SSO_PROVIDERS: AuthSsoProvider[] = ['openframe', 'google', 'microsoft']
24
+ // Passed as ssoProviders prop — replaces submit button with provider buttons
25
+ ```
26
+
27
+ ## Notes
28
+
29
+ - Stories are `fullscreen` layout — use the Storybook **viewport toolbar** to verify responsive breakpoints (desktop two-column, tablet/mobile stacked).
30
+ - `LoginPage` is a controlled wrapper: `email` and `tab` state live locally via `useState`; `onSubmit` and `onForgotPassword` are no-ops.
31
+ - The Sign Up tab renders a placeholder directing users to the `Auth/Create Organization` story group.
32
+ - Source: [`Login.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/Login.stories.tsx)
@@ -0,0 +1,58 @@
1
+ <!-- source-hash: 2f6693db66b0dc2f845ae8bdd0016e75 -->
2
+ Storybook stories for the OpenFrame SSO authentication screens, showcasing both Login and Sign Up flows within the `SsoAuthShell` layout using controlled, interactive form components.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `LoginEmpty` | `Story` | Login form with empty fields; submit disabled |
9
+ | `LoginFilled` | `Story` | Login form pre-filled with email and password; submit enabled |
10
+ | `SignUpEmpty` | `Story` | Sign Up form with empty fields; submit disabled |
11
+ | `SignUpFilled` | `Story` | Sign Up form pre-filled with all valid fields; submit enabled |
12
+ | `SsoLoginPage` | Helper component | Controlled wrapper for `OpenFrameSsoLoginForm` inside `SsoAuthShell` |
13
+ | `SsoSignUpPage` | Helper component | Controlled wrapper for `OpenFrameSsoSignUpForm` inside `SsoAuthShell` |
14
+
15
+ ## Usage Example
16
+
17
+ ```typescript
18
+ // Render the filled login story directly in Storybook
19
+ import { LoginFilled } from './OpenFrameSso.stories'
20
+
21
+ // Or compose the controlled helper in your own tests/previews
22
+ import { useState } from 'react'
23
+ import { OpenFrameSsoLoginForm, SsoAuthShell } from '../../components/features/auth'
24
+
25
+ function MyLoginPreview() {
26
+ const [email, setEmail] = useState('')
27
+ const [password, setPassword] = useState('')
28
+
29
+ return (
30
+ <SsoAuthShell>
31
+ <OpenFrameSsoLoginForm
32
+ email={email}
33
+ password={password}
34
+ onEmailChange={setEmail}
35
+ onPasswordChange={setPassword}
36
+ onSubmit={() => {}}
37
+ onForgotPassword={() => {}}
38
+ submitDisabled={!email.trim() || !password}
39
+ />
40
+ </SsoAuthShell>
41
+ )
42
+ }
43
+ ```
44
+
45
+ ## Story Validation Logic
46
+
47
+ Both helper components derive `submitDisabled` locally — no external state management required:
48
+
49
+ - **Login:** enabled when `email` is non-empty and `password.length > 0`
50
+ - **Sign Up:** enabled when all five fields are filled, `password.length >= 8`, and `password === confirmPassword`
51
+
52
+ ## Notes
53
+
54
+ - All `onSubmit` and `onForgotPassword` handlers are no-ops (`() => {}`) — stories are purely presentational
55
+ - `SsoAuthShell` provides the full-screen centered layout: logo top, card centered, "Powered by Flamingo" footer
56
+ - Stories are tagged `autodocs` for automatic Storybook documentation generation
57
+
58
+ **Source:** [`OpenFrameSso.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/OpenFrameSso.stories.tsx)
@@ -0,0 +1,49 @@
1
+ <!-- source-hash: dc8f807b21dfb0fd1ce3b5c2fc8184f5 -->
2
+ Storybook stories for the `PasswordResetForm` component, demonstrating the full-page password reset flow inside `AuthShell` with two controlled states: empty fields and pre-filled matching passwords.
3
+
4
+ ## Key Components
5
+
6
+ - **`PasswordResetPage`** — Internal render helper that wires up controlled state (`password`, `confirmPassword`) and derives `isValid` / inline error logic for the stories
7
+ - **`Empty`** — Story showing the form with empty fields and submit disabled
8
+ - **`Filled`** — Story showing the form with matching passwords pre-populated and submit enabled
9
+
10
+ ## Usage Example
11
+
12
+ ```typescript
13
+ // Minimal controlled usage matching the story pattern
14
+ import { AuthShell, BackToLoginLink, PasswordResetForm } from '../../components/features/auth'
15
+ import { useState } from 'react'
16
+
17
+ function PasswordResetPage() {
18
+ const [password, setPassword] = useState('')
19
+ const [confirmPassword, setConfirmPassword] = useState('')
20
+ const isValid = password.length >= 8 && password === confirmPassword
21
+
22
+ return (
23
+ <AuthShell footer={<BackToLoginLink onClick={() => {}} />}>
24
+ <PasswordResetForm
25
+ password={password}
26
+ confirmPassword={confirmPassword}
27
+ onPasswordChange={setPassword}
28
+ onConfirmPasswordChange={setConfirmPassword}
29
+ onSubmit={() => {}}
30
+ onCancel={() => {}}
31
+ onBackToLogin={() => {}}
32
+ submitDisabled={!isValid}
33
+ errors={{
34
+ confirmPassword:
35
+ confirmPassword && password !== confirmPassword
36
+ ? 'Passwords do not match'
37
+ : undefined,
38
+ }}
39
+ />
40
+ </AuthShell>
41
+ )
42
+ }
43
+ ```
44
+
45
+ **Validation logic:**
46
+ - Submit is enabled only when `password.length >= 8` and both fields match
47
+ - `confirmPassword` error is shown only after the user has typed in the confirm field and it diverges from `password`
48
+
49
+ **Source:** [`PasswordReset.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/PasswordReset.stories.tsx)
@@ -1,5 +1,37 @@
1
1
  /* Open Design System – Interaction Animations */
2
2
 
3
+ /* ---------------------------------------------------------------------------
4
+ Pointer affordance (SSOT)
5
+
6
+ A native <button> resolves to `cursor: default`, and Tailwind's preflight
7
+ does not override it. Every clickable surface in the system was therefore
8
+ relying on an ad-hoc `cursor-pointer` class, which drifted: DS Buttons had
9
+ it, raw <button> cards/chips/marquee cells did not — so identical-looking
10
+ cards felt dead while <a>-based ones (browser default: pointer) did not.
11
+
12
+ One base rule instead of N call sites. Applies to every marquee, chip, card
13
+ hit layer and any future control, including ones not yet written.
14
+
15
+ Wrapped in :where() so the rule carries ZERO specificity — an element-level
16
+ selector would otherwise beat any single Tailwind `cursor-*` utility and
17
+ silently break intentional ones (`cursor-grab` drag handles, `cursor-default`
18
+ on an active tab) across all 9 platforms.
19
+ --------------------------------------------------------------------------- */
20
+ :where(button:not(:disabled):not([aria-disabled='true'])),
21
+ :where([role='button']:not([aria-disabled='true'])),
22
+ :where(summary) {
23
+ cursor: pointer;
24
+ }
25
+
26
+ /* Deliberately NOT `label[for]`: most labels point at text inputs, where a
27
+ pointer cursor promises a click target that isn't one. Checkbox/radio labels
28
+ opt in explicitly at their call site. */
29
+
30
+ :where(button:disabled),
31
+ :where([aria-disabled='true']) {
32
+ cursor: not-allowed;
33
+ }
34
+
3
35
  /* Typing indicator cursor pulse */
4
36
  @keyframes pulse-cursor {
5
37
  0%, 100% { opacity: 1; }
@@ -1,51 +1,83 @@
1
- <!-- source-hash: 0b0425ffde370482e2a418e941619761 -->
2
- TypeScript type definitions for the announcement system, providing comprehensive interfaces for managing platform-wide announcements with rich customization options including icons, call-to-action buttons, and asset management.
1
+ <!-- source-hash: fc87f22902c4f5a3379665b2e552d3b3 -->
2
+ Defines TypeScript types, interfaces, and constants for the OpenFrame announcement system, covering database models, API request/response shapes, form data, component props, and utility types.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### Core Database Models
7
- - **`Announcement`** - Main announcement entity; platform targeting via hydrated `announcement_platforms?: EntityPlatformAssoc[]` (no singular platform_id/platform)
8
- - **`AnnouncementAsset`** - File attachments linked to announcements (images, documents, etc.)
6
+ ### Core Interfaces
9
7
 
10
- ### API Types
11
- - **`CreateAnnouncementData`** / **`UpdateAnnouncementData`** - Request payloads for CRUD operations
12
- - **`AnnouncementListResponse`** / **`AnnouncementResponse`** - Standardized API response formats with pagination
13
- - **`GetAnnouncementsOptions`** - Query parameters for filtering and sorting announcements
8
+ | Interface | Purpose |
9
+ |---|---|
10
+ | `Announcement` | Full database model including CTA fields, icon props, and hydrated platform associations |
11
+ | `AnnouncementAsset` | File attachment metadata linked to an announcement |
12
+ | `AnnouncementResponse` | Wire shape for `GET /api/announcements/active` — nullable envelope |
13
+ | `AnnouncementListResponse` | Paginated list response with optional platform/active filters |
14
14
 
15
- ### Form & UI Types
16
- - **`AnnouncementFormData`** - Form-specific data structure with file uploads and JSON string fields
17
- - **`AnnouncementBarProps`** / **`AnnouncementFormProps`** / **`AnnouncementListProps`** - React component prop interfaces
15
+ ### CRUD Data Shapes
18
16
 
19
- ### Configuration Types
20
- - **`AvailableSvgIcon`** / **`SvgIcon`** - Icon management for announcement branding
21
- - **`AVAILABLE_SVG_ICONS`** - Predefined icon library including OpenFrame, OpenMSP, Flamingo logos and Lucide icons
17
+ | Interface | Purpose |
18
+ |---|---|
19
+ | `CreateAnnouncementData` | Payload for creating a new announcement |
20
+ | `UpdateAnnouncementData` | Partial payload for updating an existing announcement |
21
+ | `AnnouncementFormData` | Form state, including `icon_props` and `cta_icon_props` as JSON strings |
22
+ | `GetAnnouncementsOptions` | Query parameters for listing announcements |
23
+
24
+ ### Component Props
25
+
26
+ | Interface | Purpose |
27
+ |---|---|
28
+ | `AnnouncementBarProps` | Controls SSR seeding, preview mode, dismissibility, and CSS class |
29
+ | `AnnouncementFormProps` | Admin create/edit form callbacks and available icon list |
30
+ | `AnnouncementListProps` | List view with edit, delete, and toggle-active handlers |
31
+
32
+ ### Constants
33
+
34
+ - **`ANNOUNCEMENT_CTA_DEFAULTS`** — Default CTA button colors (`#1A1A1A` background, `#FAFAFA` text), shared between the DAL and admin form.
35
+ - **`AVAILABLE_SVG_ICONS`** — Registry of supported icon names (OpenFrame/platform logos + Lucide icons); `component` is resolved at runtime.
22
36
 
23
37
  ## Usage Example
24
38
 
25
39
  ```typescript
26
- // Creating a new announcement
40
+ import type {
41
+ Announcement,
42
+ CreateAnnouncementData,
43
+ AnnouncementBarProps,
44
+ AnnouncementResponse,
45
+ } from './announcement';
46
+ import { ANNOUNCEMENT_CTA_DEFAULTS } from './announcement';
47
+
48
+ // Creating an announcement payload
27
49
  const newAnnouncement: CreateAnnouncementData = {
28
- title: "New Feature Release",
29
- description: "Check out our latest OpenFrame capabilities",
30
- background_color: "#FFC008",
31
- icon_type: "svg",
32
- icon_svg_name: "rocket",
33
- platforms: ["openframe-platform-id"],
50
+ title: 'New Feature Released',
51
+ description: 'Check out the latest OpenFrame update.',
52
+ background_color: '#1A1A1A',
53
+ icon_name: 'rocket',
54
+ platforms: ['platform-uuid-1', 'platform-uuid-2'],
34
55
  is_active: true,
35
56
  cta_enabled: true,
36
- cta_text: "Learn More",
37
- cta_url: "https://openframe.ai/features",
38
- cta_target: "_blank",
39
- created_by: "admin-user-id"
57
+ cta_text: 'Learn More',
58
+ cta_url: 'https://openframe.ai/changelog',
59
+ cta_target: '_blank',
60
+ cta_button_background_color: ANNOUNCEMENT_CTA_DEFAULTS.background,
61
+ cta_button_text_color: ANNOUNCEMENT_CTA_DEFAULTS.text,
62
+ created_by: 'user-uuid',
40
63
  };
41
64
 
42
- // Querying announcements with filters
43
- const options: GetAnnouncementsOptions = {
44
- platform: "openframe",
45
- is_active: true,
46
- page: 1,
47
- pageSize: 10,
48
- sortBy: "created_at",
49
- sortOrder: "desc"
65
+ // Consuming the active announcement API response
66
+ const response: AnnouncementResponse = await fetch('/api/announcements/active')
67
+ .then(r => r.json());
68
+
69
+ if (response.announcement) {
70
+ console.log(response.announcement.title);
71
+ }
72
+
73
+ // AnnouncementBar in SSR mode — null signals "nothing to show"
74
+ const barProps: AnnouncementBarProps = {
75
+ initialAnnouncement: response.announcement,
76
+ dismissible: true,
77
+ previewMode: false,
50
78
  };
51
- ```
79
+ ```
80
+
81
+ ## Source
82
+
83
+ [`announcement.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/announcement.ts)
@@ -1,21 +1,36 @@
1
- <!-- source-hash: 8148802670f3c4122204649c0bccdbcd -->
2
- Type definitions for the Flamingo blog system, covering database models, form data, query options, SEO analysis, and filtering structures used across the blog feature.
1
+ <!-- source-hash: bdd6fb9c095ed663f507ab9051e3c82b -->
2
+ Type definitions for the blog domain, covering database models, API contracts, form data, query options, SEO analysis, and UI filtering structures for blog posts.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `BlogPost` | Interface | Core database model with SEO fields, relationships, and raw API response structure |
9
- | `BlogStatus` | Union Type | Post lifecycle states: `draft`, `ai_drafted`, `published`, `ai_published`, `scheduled`, `archived` |
10
- | `Platform` | Type | String alias for platform identifiers (fetched dynamically from DB) |
11
- | `CreateBlogPostData` | Interface | Payload shape for creating new posts including platforms, categories, and tags |
12
- | `UpdateBlogPostData` | Interface | Partial update payload for existing posts |
13
- | `GetBlogPostsOptions` | Interface | Query filters including pagination, sorting, platform, and search |
14
- | `BlogPostStats` | Interface | Dashboard aggregates with per-platform post counts |
15
- | `SEOAnalysisResult` | Interface | Scored SEO breakdown with keyword density, suggestions, errors, and warnings |
16
- | `BlogPagination` | Interface | Paginated response wrapping `BlogPostSummary` records |
17
- | `BlogPostSummary` | Interface | Lightweight post projection for listing pages |
18
- | `BlogFilters` | Interface | Filter options (categories + tags) for sidebar filtering UI |
6
+ ### Core Types
7
+ - **`BlogStatus`** — Union literal type for post lifecycle states: `'draft'`, `'ai_drafted'`, `'published'`, `'ai_published'`, `'scheduled'`, `'archived'`
8
+ - **`Platform`** String alias for platform identifiers (fetched dynamically from the database)
9
+
10
+ ### Database Models
11
+ - **`BlogPost`** Full post shape including raw API response fields (`profiles`, `blog_post_platforms`, `blog_post_tags`) and normalized client-side relationships (`author`, `categories`, `tags`)
12
+ - **`BlogAuthor`** — Author shape for blog posts; distinct from shared `EntityAuthor`; includes optional `slug` and `linkedinUrl` for SEO/schema usage
13
+ - **`BlogPostPlatform`** Aliased to `EntityPlatformAssoc` from `entity-platform.ts`; replaces the legacy flat junction shape
14
+ - **`TagAssoc`** Flat unified tag association shape; replaces the legacy nested `{ blog_tags: {...} }` pattern
15
+ - **`BlogMediaAsset`**, **`BlogCategory`**, **`BlogTag`** Supporting entity models
16
+
17
+ ### Form & Mutation Types
18
+ - **`CreateBlogPostData`** Required fields for creating a post, including `platforms`, `categories`, and `tags` arrays
19
+ - **`UpdateBlogPostData`** — Partial version of create data for PATCH-style updates
20
+
21
+ ### Query & Stats
22
+ - **`GetBlogPostsOptions`** — Filtering, pagination, and sorting parameters for list queries
23
+ - **`BlogPostStats`** — Dashboard aggregate counts and `posts_by_platform` breakdown
24
+ - **`BlogPagination`** / **`BlogPostSummary`** — Public-facing list and summary shapes
25
+
26
+ ### SEO
27
+ - **`SEOAnalysisResult`** — Scored analysis output with `suggestions`, `errors`, and `warnings`
28
+ - **`SEOAnalysisOptions`** — Optional keywords and flags for analysis configuration
29
+ - **`BlogSEOAnalytics`** — Database row shape for persisted SEO analysis results
30
+
31
+ ### UI / Filtering
32
+ - **`BlogFilterSidebarProps`**, **`BlogFilters`**, **`BlogFilterOption`** — Props and data shapes for the filter sidebar component
33
+ - **`BlogCategoryForSidebar`** — Adapter type bridging `BlogCategory` to the `CategorySidebar` interface
19
34
 
20
35
  ## Usage Example
21
36
 
@@ -24,42 +39,30 @@ import type {
24
39
  BlogPost,
25
40
  CreateBlogPostData,
26
41
  GetBlogPostsOptions,
27
- SEOAnalysisResult
28
- } from './blog'
42
+ BlogStatus,
43
+ } from './blog';
29
44
 
30
- // Fetch options with filtering and pagination
45
+ // Querying posts with filters
31
46
  const options: GetBlogPostsOptions = {
32
- platform: 'flamingo',
47
+ platform: 'openframe',
33
48
  status: 'published',
34
49
  page: 1,
35
50
  pageSize: 10,
36
51
  sortBy: 'published_at',
37
52
  sortOrder: 'desc',
38
- search: 'automation'
39
- }
53
+ };
40
54
 
41
- // Create post payload
55
+ // Creating a new post
42
56
  const newPost: CreateBlogPostData = {
43
57
  title: 'Getting Started with OpenFrame',
44
58
  slug: 'getting-started-openframe',
45
59
  content: '...',
46
- author_id: 'user-123',
47
- status: 'draft',
48
- platforms: ['flamingo', 'openframe'],
49
- categories: [1, 3],
50
- tags: [5]
51
- }
60
+ author_id: 'user-uuid',
61
+ status: 'draft' as BlogStatus,
62
+ platforms: ['platform-uuid-1'],
63
+ categories: [3],
64
+ tags: [7, 12],
65
+ };
66
+ ```
52
67
 
53
- // SEO result from analysis service
54
- const seo: SEOAnalysisResult = {
55
- overall_score: 82,
56
- title_score: 90,
57
- meta_description_score: 75,
58
- content_score: 85,
59
- readability_score: 78,
60
- keyword_density: { 'openframe': 0.03 },
61
- suggestions: ['Add more internal links'],
62
- errors: [],
63
- warnings: ['Meta description slightly short']
64
- }
65
- ```
68
+ > **Source:** [`blog.ts`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/blog.ts)