@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,45 +1,53 @@
1
- <!-- source-hash: 755936e5a23162889a0f4b377887a066 -->
2
- A styled dropdown trigger button that combines a labeled action area with a rotating chevron indicator, opening a `MoreActionsMenu` on click.
1
+ <!-- source-hash: f200d2146a81060f8cc6dc2a88c6bc69 -->
2
+ A button component that renders a labeled trigger with a trailing chevron, opening an `ActionsMenuDropdown` on click. The chevron rotates 180° when the menu is open, and the entire button surface lightens on hover/open state.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `DropdownButton` | Component | Main trigger button that wraps `MoreActionsMenu` |
9
- | `DropdownButtonProps` | Interface | Props definition for the component |
6
+ ### `DropdownButton`
7
+ The primary export. A composite trigger + dropdown built on top of `ActionsMenuDropdown`. Key behaviors:
8
+ - Manages open/closed state internally via `React.useState`
9
+ - Prevents interaction when `disabled` (blocks `onPointerDown` and ignores open-change calls)
10
+ - Chevron animates via `rotate-180` when `open === true`
11
+ - Renders an optional leading `icon` before the label text
12
+ - Supports positioning via `align` (`start | center | end`) and `side` (`top | right | bottom | left`)
10
13
 
11
- ### Props
14
+ ### `DropdownButtonProps`
15
+ TypeScript interface defining the public API:
12
16
 
13
17
  | Prop | Type | Default | Description |
14
- |------|------|---------|-------------|
15
- | `label` | `string` | — | Button label text |
18
+ |---|---|---|---|
19
+ | `label` | `string` | — | Button text and fallback aria-label |
16
20
  | `icon` | `ReactNode` | — | Optional leading icon |
17
- | `items` | `MoreActionsItem[]` | — | Dropdown menu items |
18
- | `align` | `'start' \| 'center' \| 'end'` | `'end'` | Menu alignment |
19
- | `side` | `'top' \| 'right' \| 'bottom' \| 'left'` | `'bottom'` | Menu opening side |
20
- | `disabled` | `boolean` | | Disables interaction |
21
-
22
- ## Key Behaviors
23
-
24
- - **Single click target** — label and chevron areas are visually separated by a border seam but share one `<button>` element
25
- - **Open state styles** — background lightens (`ods-bg-hover`) when the menu is open or hovered
26
- - **Chevron rotation** — animates 180° when the dropdown is open
27
- - **Disabled guard** — blocks `onOpenChange` and prevents pointer events when `disabled` is set
21
+ | `items` | `ActionsMenuItem[]` | — | Dropdown menu items |
22
+ | `disabled` | `boolean` | | Disables interaction and dims the button |
23
+ | `align` | `'start' \| 'center' \| 'end'` | `'end'` | Dropdown horizontal alignment |
24
+ | `side` | `'top' \| 'right' \| 'bottom' \| 'left'` | `'bottom'` | Dropdown preferred side |
25
+ | `ariaLabel` | `string` | `label` | Overrides the accessible label |
26
+ | `className` | `string` | — | Additional classes on the button root |
28
27
 
29
28
  ## Usage Example
30
29
 
31
30
  ```typescript
32
31
  import { DropdownButton } from './dropdown-button'
33
- import { SettingsIcon } from '../icons-v2-generated'
34
-
35
- <DropdownButton
36
- label="Actions"
37
- icon={<SettingsIcon />}
38
- align="end"
39
- side="bottom"
40
- items={[
41
- { label: 'Edit', onClick: () => console.log('edit') },
42
- { label: 'Delete', onClick: () => console.log('delete'), destructive: true },
43
- ]}
44
- />
45
- ```
32
+ import { PlusIcon } from '../icons-v2-generated'
33
+
34
+ const actions = [
35
+ { label: 'Export CSV', onSelect: () => handleExport('csv') },
36
+ { label: 'Export PDF', onSelect: () => handleExport('pdf') },
37
+ { label: 'Delete', onSelect: handleDelete, destructive: true },
38
+ ]
39
+
40
+ export function ToolbarActions() {
41
+ return (
42
+ <DropdownButton
43
+ label="Export"
44
+ icon={<PlusIcon />}
45
+ items={actions}
46
+ align="end"
47
+ side="bottom"
48
+ />
49
+ )
50
+ }
51
+ ```
52
+
53
+ > **Source:** [`dropdown-button.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/dropdown-button.tsx)
@@ -1,47 +1,64 @@
1
- <!-- source-hash: 34ce5c6ddfeca8bdfa20a5f6665b19da -->
2
- A comprehensive dropdown menu component built on top of Radix UI's dropdown menu primitives, providing a full suite of styled menu components with consistent theming using the OpenFrame Design System (ODS).
1
+ <!-- source-hash: 616939ebe1c1aac14b882a4c493b1f39 -->
2
+ A styled dropdown menu component built on Radix UI primitives, providing accessible, animated dropdown menus with support for nested submenus, checkbox/radio items, and portal-aware rendering that inherits the correct stacking context (e.g. inside drawers).
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **DropdownMenu** - Root container component
7
- - **DropdownMenuTrigger** - Button that opens the dropdown
8
- - **DropdownMenuContent** - Main content container with portal rendering
9
- - **DropdownMenuItem** - Interactive menu items with hover states
10
- - **DropdownMenuCheckboxItem** - Checkable menu items with check indicators
11
- - **DropdownMenuRadioItem** - Radio button menu items for single selection
12
- - **DropdownMenuLabel** - Non-interactive section labels
13
- - **DropdownMenuSeparator** - Visual dividers between menu sections
14
- - **DropdownMenuShortcut** - Keyboard shortcut display component
15
- - **DropdownMenuSub/SubTrigger/SubContent** - Nested submenu components
16
- - **DropdownMenuGroup/RadioGroup** - Grouping containers
6
+ | Export | Description |
7
+ |---|---|
8
+ | `DropdownMenu` | Root component wrapping the entire menu |
9
+ | `DropdownMenuTrigger` | Element that toggles the menu open/closed |
10
+ | `DropdownMenuContent` | Menu panel, portalled into the active container via `usePortalContainer` |
11
+ | `DropdownMenuItem` | Standard clickable menu item with optional `inset` indent |
12
+ | `DropdownMenuCheckboxItem` | Item with a checkmark indicator and controlled `checked` state |
13
+ | `DropdownMenuRadioItem` | Item within a radio group, shows a filled circle when selected |
14
+ | `DropdownMenuRadioGroup` | Groups `DropdownMenuRadioItem` components for single-selection |
15
+ | `DropdownMenuSub` | Container for a nested submenu |
16
+ | `DropdownMenuSubTrigger` | Item that opens a nested submenu, with a `ChevronRight` icon |
17
+ | `DropdownMenuSubContent` | Panel for the nested submenu |
18
+ | `DropdownMenuLabel` | Non-interactive section header with optional `inset` |
19
+ | `DropdownMenuSeparator` | Horizontal divider between menu sections |
20
+ | `DropdownMenuShortcut` | Right-aligned keyboard shortcut hint text |
21
+ | `DropdownMenuGroup` | Logical grouping of related items |
22
+ | `DropdownMenuPortal` | Direct access to Radix's portal primitive |
17
23
 
18
24
  ## Usage Example
19
25
 
20
26
  ```typescript
21
27
  import {
22
28
  DropdownMenu,
29
+ DropdownMenuTrigger,
23
30
  DropdownMenuContent,
24
31
  DropdownMenuItem,
25
- DropdownMenuLabel,
32
+ DropdownMenuCheckboxItem,
26
33
  DropdownMenuSeparator,
27
- DropdownMenuTrigger,
34
+ DropdownMenuShortcut,
35
+ DropdownMenuSub,
36
+ DropdownMenuSubTrigger,
37
+ DropdownMenuSubContent,
28
38
  } from "./dropdown-menu"
29
39
 
30
- function UserMenu() {
40
+ export function ActionsMenu() {
31
41
  return (
32
42
  <DropdownMenu>
33
- <DropdownMenuTrigger>Open Menu</DropdownMenuTrigger>
43
+ <DropdownMenuTrigger>Open</DropdownMenuTrigger>
34
44
  <DropdownMenuContent>
35
- <DropdownMenuLabel>My Account</DropdownMenuLabel>
36
- <DropdownMenuSeparator />
37
- <DropdownMenuItem>Profile</DropdownMenuItem>
38
- <DropdownMenuItem>Settings</DropdownMenuItem>
45
+ <DropdownMenuItem>
46
+ Profile <DropdownMenuShortcut>⌘P</DropdownMenuShortcut>
47
+ </DropdownMenuItem>
48
+ <DropdownMenuCheckboxItem checked={true}>
49
+ Show Notifications
50
+ </DropdownMenuCheckboxItem>
39
51
  <DropdownMenuSeparator />
40
- <DropdownMenuItem>Logout</DropdownMenuItem>
52
+ <DropdownMenuSub>
53
+ <DropdownMenuSubTrigger>More Options</DropdownMenuSubTrigger>
54
+ <DropdownMenuSubContent>
55
+ <DropdownMenuItem>Settings</DropdownMenuItem>
56
+ </DropdownMenuSubContent>
57
+ </DropdownMenuSub>
41
58
  </DropdownMenuContent>
42
59
  </DropdownMenu>
43
60
  )
44
61
  }
45
62
  ```
46
63
 
47
- All components use ODS tokens for consistent theming and include smooth animations, focus management, and accessibility features from Radix UI.
64
+ > **Portal context:** `DropdownMenuContent` uses `usePortalContainer` to render into the nearest active container (e.g. a drawer), preventing z-index stacking issues. It falls back to `document.body` when no container is provided.
@@ -0,0 +1,41 @@
1
+ <!-- source-hash: 874180cd50bd3a257869df027cbe8b99 -->
2
+ Segmented `HH:MM:SS` duration input component where each time unit (hours, minutes, seconds) is an independently focusable field with keyboard navigation and auto-advance behavior.
3
+
4
+ ## Key Components
5
+
6
+ - **`DurationInput`** — Main component export. Renders three linked `<input>` fields separated by colon delimiters.
7
+ - **`DurationInputProps`** — Interface accepting `value` (`HH:MM:SS` string), `onChange` callback, optional `invalid` flag, and `className`.
8
+ - **`SEGMENT_META`** — Tuple defining per-segment constraints: label, placeholder, and max value (99 for hours, 59 for minutes/seconds).
9
+ - **`commit`** — Internal helper that syncs segment state, fires `onChange`, and optionally advances focus to the next segment.
10
+ - **`split` / `compose`** — Converts between the `HH:MM:SS` string format and the internal `[HH, MM, SS]` tuple.
11
+
12
+ ## Usage Example
13
+
14
+ ```typescript
15
+ import { useState } from "react";
16
+ import { DurationInput } from "@openframe/ui";
17
+
18
+ export function TimerForm() {
19
+ const [duration, setDuration] = useState("01:30:00");
20
+
21
+ return (
22
+ <DurationInput
23
+ value={duration}
24
+ onChange={setDuration}
25
+ invalid={duration === "00:00:00"}
26
+ />
27
+ );
28
+ }
29
+ ```
30
+
31
+ ## Keyboard Behavior
32
+
33
+ | Key | Action |
34
+ |---|---|
35
+ | `0–9` | Fill current segment; auto-advance when 2 digits entered or unambiguous (e.g., `6–9` in MM/SS) |
36
+ | `ArrowUp` / `ArrowDown` | Increment/decrement current segment with wrap-around |
37
+ | `ArrowLeft` / `ArrowRight` | Move between segments at boundary |
38
+ | `Backspace` | Clear and move to previous segment when empty |
39
+ | `:` | Advance to next segment |
40
+
41
+ Values are clamped to segment maximums (MM/SS ≤ 59, HH ≤ 99), making it impossible to produce an invalid duration. External value changes (e.g., form resets) are adopted without interrupting in-progress edits.
@@ -1,46 +1,50 @@
1
- <!-- source-hash: 3405ab77a3bbd5f68b76564b38e7a642 -->
2
- A client-side React component that renders an entity's avatar image with an automatic initials-based fallback when the image source is unavailable or fails to load.
1
+ <!-- source-hash: e7e9a04ae63cfe62a3216f3d6d05a1e7 -->
2
+ Renders an entity avatar that displays either an authenticated image or an initials-based fallback when the image is unavailable or fails to load.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `EntityImageProps`
6
+ ### `EntityImage`
7
+ A client-side React component that handles image loading with graceful degradation.
8
+
9
+ **Props (`EntityImageProps`):**
10
+
7
11
  | Prop | Type | Description |
8
- |------|------|-------------|
9
- | `src` | `string \| null` | Image URL to display |
10
- | `alt` | `string` | Alt text for the image and fallback aria-label |
12
+ |---|---|---|
13
+ | `src` | `string \| null` | Image URL (resolved through auth hook) |
14
+ | `alt` | `string` | Alt text; also used as initials source |
11
15
  | `fallbackText` | `string` | Overrides `alt` as the initials source |
12
16
  | `className` | `string` | Additional CSS classes |
13
17
 
14
- ### `EntityImage`
15
- Main export. Renders an `<img>` tag when a valid `src` is provided and loads successfully. Falls back to a styled `<div>` showing two-letter initials (via `getFirstLastInitials`) or `?` when no initials can be derived.
16
-
17
- **Fallback triggers:**
18
- - `src` is `null` or `undefined`
19
- - Image fires an `onError` event (broken URL, network failure, etc.)
20
- - Image error state resets automatically when `src` changes
18
+ **Behavior:**
19
+ - Resolves authenticated image URLs via `useAuthedImageSrc`
20
+ - Resets error state when the resolved source changes
21
+ - Shows an initials badge (via `getFirstLastInitials`) when the image fails or is absent
22
+ - Falls back to `"?"` when no initials can be derived
23
+ - Responsive sizing: `52px` on mobile, `60px` on `md+` breakpoints
21
24
 
22
25
  ## Usage Example
23
26
 
24
27
  ```typescript
25
- import { EntityImage } from './entity-image'
26
-
27
- // Renders the avatar image
28
+ // Basic usage with an image URL
28
29
  <EntityImage
29
- src="https://cdn.example.com/avatars/acme.png"
30
- alt="Acme Corp"
30
+ src="https://cdn.example.com/avatars/user-123.png"
31
+ alt="Jane Doe"
31
32
  />
32
33
 
33
- // Renders initials fallback "AC" if image fails
34
+ // With a custom fallback text for initials
34
35
  <EntityImage
35
36
  src={null}
36
- alt="Acme Corp"
37
- className="my-custom-class"
37
+ alt="Jane Doe"
38
+ fallbackText="Jane Smith"
39
+ className="ring-2 ring-ods-primary"
38
40
  />
39
41
 
40
- // Override initials source independently from alt text
41
- <EntityImage
42
- src="https://cdn.example.com/avatars/john.png"
43
- alt="User avatar"
44
- fallbackText="John Doe"
45
- />
46
- ```
42
+ // Initials-only (no src provided) renders "JD"
43
+ <EntityImage alt="John Doe" />
44
+ ```
45
+
46
+ ## Notes
47
+
48
+ - Requires the `useAuthedImageSrc` hook to inject auth headers/tokens into image requests
49
+ - Initials are derived using `getFirstLastInitials`, which extracts first and last name initials from the provided text
50
+ - Images use `object-contain` to preserve aspect ratio within the fixed square bounds
@@ -1,23 +1,23 @@
1
- <!-- source-hash: 147d509f918f296b0265bcdeb8f2a9c1 -->
2
- Flexible error state display component for rendering contextual error, warning, and info messages with optional retry and navigation actions.
1
+ <!-- source-hash: 52edfb71ac657ff2d7c4cc10e092d7b1 -->
2
+ A client-side React component that renders styled error, warning, and info state banners with optional action buttons and convenience wrappers for common error scenarios.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `ErrorState`
7
- The core component accepting the following props:
7
+ The primary component accepting the following props:
8
8
 
9
9
  | Prop | Type | Default | Description |
10
10
  |------|------|---------|-------------|
11
- | `title` | `string` | `'Error'` | Heading text displayed above the message |
12
- | `message` | `string` | — | *(required)* Body text describing the error |
13
- | `variant` | `'error' \| 'warning' \| 'info'` | `'error'` | Controls color scheme and styling |
11
+ | `title` | `string` | `'Error'` | Heading text |
12
+ | `message` | `string` | — | Body message (**required**) |
13
+ | `variant` | `'error' \| 'warning' \| 'info'` | `'error'` | Visual style using ODS design tokens |
14
14
  | `showIcon` | `boolean` | `true` | Toggles the `AlertTriangle` icon |
15
- | `showRetry` | `boolean` | `false` | Shows "Try Again" button when `onRetry` is also provided |
16
- | `showHome` | `boolean` | `false` | Shows "Go Home" button when `onHome` is also provided |
17
- | `onRetry` | `() => void` | — | Callback fired on retry button click |
18
- | `onHome` | `() => void` | — | Callback fired on home button click |
19
- | `className` | `string` | — | Applied to the inner bordered card |
20
- | `containerClassName` | `string` | — | Applied to the outer wrapper `div` |
15
+ | `showRetry` | `boolean` | `false` | Shows "Try Again" button |
16
+ | `showHome` | `boolean` | `false` | Shows "Go Home" button |
17
+ | `onRetry` | `() => void` | — | Retry callback |
18
+ | `onHome` | `() => void` | — | Home navigation callback |
19
+ | `className` | `string` | — | Applied to inner card |
20
+ | `containerClassName` | `string` | — | Applied to outer wrapper |
21
21
 
22
22
  ### Convenience Components
23
23
 
@@ -27,31 +27,35 @@ The core component accepting the following props:
27
27
  | `LoadError` | `error` | Retry |
28
28
  | `NotFoundError` | `warning` | Home |
29
29
 
30
+ > **Note on ODS tokens:** Variant styles use `-secondary` background tokens (e.g., `bg-ods-error-secondary`) rather than Tailwind alpha modifiers, which are incompatible with hex-based CSS custom properties in Tailwind 3.x.
31
+
30
32
  ## Usage Example
31
33
 
32
34
  ```typescript
33
- import { ErrorState, PageError, LoadError, NotFoundError } from './error-state'
35
+ import { ErrorState, LoadError, NotFoundError } from './error-state'
34
36
 
35
- // Full control via ErrorState
37
+ // Generic error with retry
36
38
  <ErrorState
37
- title="Connection Failed"
38
- message="Unable to reach the server."
39
- variant="warning"
39
+ title="Sync Failed"
40
+ message="Could not reach the server. Please try again."
41
+ variant="error"
40
42
  showRetry
41
43
  onRetry={() => refetch()}
42
44
  />
43
45
 
44
- // Convenience wrappers
45
- <PageError
46
- message="Something went wrong loading this page."
47
- onRetry={() => router.refresh()}
48
- onHome={() => router.push('/')}
49
- />
50
-
46
+ // Convenience: loading error
51
47
  <LoadError
52
- message="Failed to load device list."
53
- onRetry={() => refetch()}
48
+ message="Failed to load devices."
49
+ onRetry={() => reload()}
54
50
  />
55
51
 
52
+ // Convenience: 404-style warning
56
53
  <NotFoundError onHome={() => router.push('/')} />
54
+
55
+ // Info banner (no icon)
56
+ <ErrorState
57
+ variant="info"
58
+ message="No results match your current filters."
59
+ showIcon={false}
60
+ />
57
61
  ```
@@ -0,0 +1,44 @@
1
+ <!-- source-hash: d542ea42b0980a55a14eb86a5aae0060 -->
2
+ Shared progressive-disclosure primitive that clamps long content to a fixed height with a CSS fade mask and a "Show N more / Show less" toggle button.
3
+
4
+ ## Key Components
5
+
6
+ ### `FadePreviewProps`
7
+
8
+ | Prop | Type | Default | Description |
9
+ |---|---|---|---|
10
+ | `hiddenCount` | `number` | — | Items hidden while collapsed; drives "Show N more" label. `<= 0` disables clamping entirely |
11
+ | `collapsedHeight` | `number` | `120` | Collapsed height in px before the fade mask kicks in |
12
+ | `resetKey` | `unknown` | — | Resets expanded state when value changes (e.g. on data refetch) |
13
+ | `children` | `React.ReactNode` | — | Content to render inside the clamp wrapper |
14
+
15
+ ### `FadePreview`
16
+
17
+ Stateful component managing expand/collapse. When `hiddenCount <= 0`, renders children unwrapped with no height clamp — avoids clipping single-entry sections. Expanded height is measured from `scrollHeight` to handle variable-length content.
18
+
19
+ ## Usage Example
20
+
21
+ ```typescript
22
+ import { FadePreview } from '@/components/fade-preview';
23
+
24
+ // Basic usage — hide overflow items in a changelog list
25
+ <FadePreview hiddenCount={releases.length - 3} resetKey={releases.length}>
26
+ {releases.map(r => <ReleaseEntry key={r.id} release={r} />)}
27
+ </FadePreview>
28
+
29
+ // Taller rows (e.g. a delivery table) — increase collapsed height
30
+ <FadePreview hiddenCount={rows.length - 5} collapsedHeight={240}>
31
+ <DeliveryTable rows={rows} />
32
+ </FadePreview>
33
+
34
+ // Single entry — no fade, no toggle rendered
35
+ <FadePreview hiddenCount={0}>
36
+ <SingleEntry entry={entry} />
37
+ </FadePreview>
38
+ ```
39
+
40
+ > **Do not re-inline the mask/clamp/toggle pattern.** All fade-preview surfaces must compose this component — it is the single shared implementation extracted from `ReleaseChangelogSection`.
41
+
42
+ ## Source
43
+
44
+ [`fade-preview.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/fade-preview.tsx)
@@ -1,47 +1,58 @@
1
- <!-- source-hash: 0d873ee81fa30b5916e604a92d4925d2 -->
2
- A layout wrapper component that provides consistent label and error message chrome for form fields, with reserved space to prevent layout shifts.
1
+ <!-- source-hash: bd15d4489bb0eca1b2faabacba129705 -->
2
+ A layout wrapper component that adds an optional label above and a status message below any form field, handling the visual chrome (label + feedback text) while letting the field itself remain unstyled.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `FieldWrapper`
7
- A `forwardRef` component that wraps form field children with optional label and error/warning message display.
7
+ A `forwardRef` component that wraps form fields with consistent label and feedback message rendering.
8
+
9
+ **Props (`FieldWrapperProps`)**
8
10
 
9
- ### `FieldWrapperProps`
10
11
  | Prop | Type | Default | Description |
11
12
  |------|------|---------|-------------|
12
13
  | `label` | `string` | — | Label text rendered above the field |
13
- | `error` | `string` | — | Error message rendered below the field |
14
- | `errorVariant` | `"error" \| "warning"` | `"error"` | Controls error text color (red vs yellow) |
15
- | `className` | `string` | — | Additional classes for the outer wrapper |
16
- | `children` | `React.ReactNode` | — | The form field element(s) |
14
+ | `error` | `string` | — | Status/feedback message rendered below the field |
15
+ | `errorVariant` | `"error" \| "warning" \| "success" \| "muted"` | `"error"` | Color variant for the feedback message |
16
+ | `className` | `string` | — | Additional class applied to the outer wrapper |
17
+ | `children` | `React.ReactNode` | — | The field element(s) to wrap |
18
+
19
+ **Behavior:**
20
+ - When neither `label` nor `error` is present, the wrapper renders as `contents` (no layout box introduced).
21
+ - When either exists, it renders as a full-width flex column.
22
+ - The feedback message clamps to 2 lines with ellipsis; the full text is accessible via the native `title` tooltip.
17
23
 
18
- ### Behavior Notes
19
- - When neither `label` nor `error` is provided, the wrapper renders as `contents` (no extra DOM box).
20
- - The error message is absolutely positioned (`translate-y-full`) below the field, preventing layout shifts in the surrounding form.
21
- - Long error messages are `truncate`d with the full text accessible via the `title` attribute.
24
+ **Color Variants:**
25
+
26
+ | Variant | Color token |
27
+ |---------|------------|
28
+ | `error` | `text-ods-error` |
29
+ | `warning` | `text-ods-warning` |
30
+ | `success` | `text-ods-success` |
31
+ | `muted` | `text-ods-text-secondary` |
22
32
 
23
33
  ## Usage Example
24
34
 
25
35
  ```typescript
26
- import { FieldWrapper } from "./field-wrapper"
27
- import { TextInput } from "./text-input"
36
+ import { FieldWrapper } from "@openframe-oss-lib/components"
28
37
 
29
- // Standard field with label and error
38
+ // Basic usage with label and error feedback
30
39
  <FieldWrapper label="Email address" error="Invalid email format">
31
- <TextInput type="email" value={email} onChange={handleChange} />
40
+ <input type="email" className="..." />
32
41
  </FieldWrapper>
33
42
 
34
- // Warning variant
43
+ // Success state after validation
35
44
  <FieldWrapper
36
45
  label="Username"
37
- error="Username is already taken"
38
- errorVariant="warning"
46
+ error="Username is available!"
47
+ errorVariant="success"
39
48
  >
40
- <TextInput value={username} onChange={handleChange} />
49
+ <input type="text" className="..." />
41
50
  </FieldWrapper>
42
51
 
43
- // No chrome — wrapper renders as contents
52
+ // Passthroughno wrapper box introduced in the DOM
44
53
  <FieldWrapper>
45
- <TextInput placeholder="Search..." />
54
+ <input type="text" className="..." />
46
55
  </FieldWrapper>
47
- ```
56
+ ```
57
+
58
+ > **Source:** [`field-wrapper.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/field-wrapper.tsx)
@@ -1,42 +1,54 @@
1
- <!-- source-hash: cf353b09cad830f836030fb8046e62bc -->
2
- A flexible React dropzone component supporting both simple file selection and async managed upload workflows, with drag-and-drop, validation, and file list rendering.
1
+ <!-- source-hash: 4c976421380cc16af600736693d5afa7 -->
2
+ A client-side React component providing a drag-and-drop file upload zone with support for both simple synchronous file handling and async managed upload workflows (e.g., presigned URL uploads).
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### Interfaces
7
- - **`ManagedFileEntry`** — Represents an async-uploaded file with `id`, `fileName`, `fileSize`, `status` (`uploading` | `uploaded` | `error`), and optional `error` message
8
- - **`FileUploadProps`** — Full prop interface supporting both simple (`value`/`onChange`) and managed (`managedFiles`/`onRemoveManagedFile`) modes
9
7
 
10
- ### Helpers
11
- - **`formatFileSize(bytes)`** — Converts bytes to human-readable string (B, KB, MB, GB)
12
- - **`matchesAccept(file, accept)`** — Validates a file against an accept string (MIME types, extensions, wildcards)
13
- - **`dragHasFiles(e)`** — Detects if a native drag event carries file data
8
+ - **`ManagedFileEntry`** — Represents an async upload entry with `id`, `fileName`, `fileSize`, `status` (`"uploading" | "uploaded" | "error"`), and optional `error` message.
9
+ - **`FileUploadProps`** — Full prop surface for the component, supporting both simple (`value`/`onChange`) and managed (`managedFiles`/`onRemoveManagedFile`) modes.
10
+
11
+ ### Internal Utilities
12
+
13
+ - **`formatFileSize(bytes)`** — Converts byte count to a human-readable string (B, KB, MB, GB).
14
+ - **`matchesAccept(file, accept)`** — Validates a `File` against an `accept` string (extension, wildcard MIME, or exact MIME).
15
+ - **`dragHasFiles(e)`** — Checks whether a native `DragEvent` carries file payloads.
14
16
 
15
17
  ### Component
16
- - **`FileUpload`** — Main export; renders a dropzone button (when empty) or file list (when files exist), with optional window-level drop capture via `acceptWindowDrops`
18
+
19
+ - **`FileUpload`** — Main export. Renders a dropzone with file list, validation, and optional window-level drop capture.
17
20
 
18
21
  ## Usage Example
19
22
 
20
23
  ```typescript
21
- // Simple single-file mode
24
+ // Simple mode — synchronous, single file
22
25
  <FileUpload
23
26
  value={file}
24
27
  onChange={(f) => setFile(f as File)}
25
28
  accept="image/*"
26
29
  maxSize={5 * 1024 * 1024}
27
- fieldLabel="Profile Photo"
30
+ fieldLabel="Attachment"
28
31
  />
29
32
 
30
- // Async managed upload mode
33
+ // Managed mode — async upload workflow
31
34
  <FileUpload
32
- onChange={(files) => uploadToS3(files as File[])}
33
- managedFiles={managedFiles}
34
- onRemoveManagedFile={(id) => removeManagedFile(id)}
35
+ managedFiles={uploadedFiles}
36
+ onChange={(files) => uploadToPresignedUrl(files as File[])}
37
+ onRemoveManagedFile={(id) => removeFile(id)}
38
+ onDownloadManagedFile={(id) => downloadFile(id)}
35
39
  multiple
40
+ accept=".pdf,.doc,.docx"
36
41
  maxFiles={5}
37
- acceptWindowDrops
38
- label="Drop attachments here"
42
+ acceptWindowDrops // captures drops anywhere in the window
39
43
  />
40
44
  ```
41
45
 
42
- > **Tip:** Use `managedFiles` + `onRemoveManagedFile` for presigned URL or background upload flows where upload status (`uploading` | `uploaded` | `error`) needs to be reflected in the UI. Use plain `value`/`onChange` for synchronous or form-controlled scenarios.
46
+ ## Key Behaviors
47
+
48
+ | Feature | Detail |
49
+ |---|---|
50
+ | Mode detection | `managedFiles !== undefined` switches to managed mode |
51
+ | Validation | Type, size, and count checks before `onChange` fires |
52
+ | Window drops | `acceptWindowDrops` suppresses browser default and routes drops here |
53
+ | Single-file mode | Dropzone hides after a file is selected |
54
+ | Scroll cap | `maxListHeight` constrains the file list with independent scroll |