@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,64 @@
1
- <!-- source-hash: a5842b7f26b01448b4819804ae2a446d -->
2
- Reusable card component for displaying organization/client summary information in a grid or list layout, supporting optional navigation, action buttons, device counts, and customizable footer stats.
1
+ <!-- source-hash: 3ad90c81666a2fe9bcd98d333ec8d564 -->
2
+ A client-side React component that renders a styled card UI for displaying MSP organization details, supporting optional navigation links, action buttons, device counts, and configurable footer stats.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### Interfaces
7
- - **`Organization`** — Data model for an organization entity (id, name, imageUrl, industry, tier, devices, MRR, etc.)
8
- - **`OrganizationCardProps`** — Full prop interface including optional `href`, `actionButton`, `footerStats`, `customFooter`, and `deviceCount`
9
7
 
10
- ### Component
11
- - **`OrganizationCard`** — Renders the card with three configurable zones:
12
- - **Header** — `EntityImage` + name + subtitle (industry, tier, or website)
13
- - **Body** — Optional 2-line clamped description
14
- - **Footer**`customFooter` node or auto-rendered `footerStats` array
15
- - **Top-right overlay** Either a device count badge (with `Monitor` icon) or an action button (ghost/primary variant)
8
+ - **`Organization`** — Data model for an MSP organization, including `id`, `name`, `imageUrl`, `industry`, `tier`, `totalDevices`, `activeDevices`, `mrrUsd`, and an index signature for custom fields.
9
+ - **`OrganizationCardProps`** — Props contract for the card, supporting:
10
+ - `organization` Required organization data object
11
+ - `fetchedImageUrl` — Optional externally resolved image URL (overrides `organization.imageUrl`)
12
+ - `href`Makes the card a navigable `Link`
13
+ - `actionButton`Configurable icon button with `ghost` or `primary` variant (mutually exclusive with `deviceCount`)
14
+ - `footerStats` — Array of `{ icon, value, label }` stat items rendered in the card footer
15
+ - `customFooter` — Fully custom footer `ReactNode` override
16
+ - `deviceCount` — Displays a `Monitor` icon + count badge in the top-right corner
16
17
 
17
- When `href` is provided, the entire card is wrapped in a `Link` for navigation.
18
+ ### Exported Function
19
+
20
+ - **`OrganizationCard`** — Main card component. Renders a bordered, rounded card with an `EntityImage`, name, subtitle (industry/tier/website), optional description, and footer. Wraps in a `<Link>` when `href` is provided.
18
21
 
19
22
  ## Usage Example
20
23
 
21
24
  ```typescript
25
+ import { OrganizationCard } from "@openframe-oss-lib/ui"
26
+ import { Trash2 } from "lucide-react"
27
+
28
+ const org = {
29
+ id: "org_123",
30
+ name: "Acme Corp",
31
+ industry: "Healthcare",
32
+ description: "A leading healthcare provider.",
33
+ totalDevices: 42,
34
+ }
35
+
36
+ // Linkable card with device count
22
37
  <OrganizationCard
23
- organization={{
24
- id: "org_123",
25
- name: "Acme Corp",
26
- industry: "Manufacturing",
27
- description: "A leading widget manufacturer.",
28
- totalDevices: 42,
29
- }}
38
+ organization={org}
30
39
  href="/organizations/org_123"
31
- deviceCount={42}
32
- footerStats={[
33
- { icon: <DollarSign className="w-4 h-4" />, value: 1200, label: "MRR" },
34
- ]}
40
+ deviceCount={org.totalDevices}
41
+ />
42
+
43
+ // Card with action button and footer stats
44
+ <OrganizationCard
45
+ organization={org}
46
+ showActionButton
35
47
  actionButton={{
36
- icon: <Trash2 className="w-4 h-4" />,
37
- label: "Remove",
48
+ icon: <Trash2 size={16} />,
49
+ label: "Remove organization",
38
50
  variant: "ghost",
39
- onClick: (org, e) => handleRemove(org.id),
51
+ onClick: (org, e) => console.log("Remove", org.id),
40
52
  }}
41
- showActionButton
53
+ footerStats={[
54
+ { value: 42, label: "devices" },
55
+ { value: "$1,200", label: "MRR" },
56
+ ]}
42
57
  />
43
58
  ```
44
59
 
45
- > **Note:** `deviceCount` takes display priority over `showActionButton` — if both are provided, only the device badge renders in the top-right corner.
60
+ ## Notes
61
+
62
+ - `deviceCount` and `actionButton` are mutually exclusive — the action button only renders when `deviceCount` is `undefined`.
63
+ - `customFooter` takes precedence over `footerStats` when both are provided.
64
+ - Source: [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/organization-card.tsx)
@@ -1,52 +1,66 @@
1
- <!-- source-hash: 70d0d7bf97f25795ba22d26ce08d067f -->
2
- Responsive page-level action bar component that renders action buttons in three layout variants (`icon-buttons`, `primary-buttons`, `menu-primary`), automatically adapting between desktop and mobile layouts with overflow menus.
1
+ <!-- source-hash: 1ccbc3cff6ac7ff27e1641c46c70275a -->
2
+ Responsive page-level action bar component that renders buttons, split-buttons, icon-only buttons, and dropdown submenus — adapting layout between desktop (inline buttons) and mobile (icon, "…" menu, or fixed bottom bar) based on the selected variant.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### Types
7
- - **`PageActionButton`** — Action descriptor supporting labels, icons, links (`href`), submenus, split-button icon actions, and visibility/rendering flags like `showOnlyMobile` and `iconOnlyOnDesktop`
8
- - **`PageActionsProps`** — Props for the main `PageActions` component
9
7
 
10
- ### Components
11
- - **`PageActions`** — Root component; dispatches to the correct variant
12
- - **`IconButtonsVariant`** — Desktop: icon buttons + optional overflow menu. Mobile: single icon or merged `...` dropdown
13
- - **`PrimaryButtonsVariant`** — Desktop: labeled buttons sorted by variant. Mobile: fixed bottom bar
14
- - **`MenuPrimaryVariant`** — Desktop: `...` menu + accent-styled primary buttons. Mobile: all actions in a single `...` dropdown
8
+ - **`PageActionButton`** — Configuration object for a single action. Supports labels, icons, variants, href links, tooltips, submenus (`ActionsMenuItem[]`), and split-button `iconAction`. Key flags: `showOnlyMobile`, `iconOnlyOnDesktop`, `mainDisabled`.
9
+ - **`PageActionsProps`** — Props for the main `PageActions` export. Accepts `variant`, `actions`, `menuActions`, `selector`, and `className`.
15
10
 
16
- ### Utilities
17
- - **`renderActionButton`** — Renders a `Button`, `SplitButton`, or submenu `ActionsMenuDropdown` based on action config
18
- - **`actionToMenuItems`** — Converts a `PageActionButton` to `ActionsMenuItem[]` for mobile dropdown merging
19
- - **`usePageActionsBottomPadding`** — Hook returning a Tailwind padding class to prevent content from being obscured by the mobile bottom bar
11
+ ### Exports
12
+
13
+ - **`PageActions`** — Top-level component. Delegates to one of three layout variants based on the `variant` prop.
14
+
15
+ ### Internal Variants
16
+
17
+ | Component | Desktop | Mobile |
18
+ |---|---|---|
19
+ | `IconButtonsVariant` (default) | Icon buttons + optional overflow menu | Single icon or "…" dropdown |
20
+ | `PrimaryButtonsVariant` | Labeled/accent buttons | Fixed bottom bar |
21
+ | `MenuPrimaryVariant` | "…" menu + accent buttons | "…" dropdown only |
22
+
23
+ ### Internal Helpers
24
+
25
+ - **`renderActionButton`** — Wraps `renderRawActionButton` with an optional tooltip.
26
+ - **`renderRawActionButton`** — Resolves the correct button type: `SplitButton`, chevron `ActionsMenuDropdown`, icon-only `Button`, or labeled `Button`.
27
+ - **`actionToMenuItems`** — Converts a `PageActionButton` into `ActionsMenuItem[]` for mobile menus; flattens submenu children with parent label prefixes.
28
+ - **`MobileBottomActions`** — Fixed `bottom-0` bar for the `primary-buttons` variant.
20
29
 
21
30
  ## Usage Example
22
31
 
23
32
  ```typescript
24
- import { PageActions, usePageActionsBottomPadding } from './page-actions'
25
-
26
- function MyPage() {
27
- const bottomPad = usePageActionsBottomPadding('primary-buttons')
28
-
29
- return (
30
- <div className={bottomPad}>
31
- <PageActions
32
- variant="primary-buttons"
33
- actions={[
34
- {
35
- label: 'Save',
36
- variant: 'accent',
37
- onClick: () => handleSave(),
38
- },
39
- {
40
- label: 'More',
41
- icon: <SettingsIcon />,
42
- submenu: [
43
- { id: 'export', label: 'Export', onClick: handleExport },
44
- { id: 'delete', label: 'Delete', onClick: handleDelete },
45
- ],
46
- },
47
- ]}
48
- />
49
- </div>
50
- )
51
- }
33
+ import { PageActions, type PageActionButton } from './page-actions'
34
+ import { PlusIcon, TrashIcon } from '../icons'
35
+
36
+ const actions: PageActionButton[] = [
37
+ {
38
+ label: 'New Item',
39
+ icon: <PlusIcon />,
40
+ variant: 'accent',
41
+ onClick: () => console.log('create'),
42
+ tooltip: 'Create a new item',
43
+ },
44
+ {
45
+ label: 'Delete',
46
+ icon: <TrashIcon />,
47
+ variant: 'outline',
48
+ iconOnlyOnDesktop: true,
49
+ onClick: () => console.log('delete'),
50
+ },
51
+ ]
52
+
53
+ // icon-buttons (default): icon buttons on desktop, "..." menu on mobile
54
+ <PageActions actions={actions} />
55
+
56
+ // primary-buttons: full buttons on desktop, fixed bottom bar on mobile
57
+ <PageActions variant="primary-buttons" actions={actions} />
58
+
59
+ // menu-primary: overflow menu + accent buttons on desktop, "..." on mobile
60
+ <PageActions
61
+ variant="menu-primary"
62
+ actions={actions}
63
+ menuActions={[{ items: [{ id: 'export', label: 'Export', onClick: () => {} }] }]}
64
+ selector={<TabSelector />}
65
+ />
52
66
  ```
@@ -1,45 +1,62 @@
1
- <!-- source-hash: 1028d9cb0f96281d45d967924264b1cc -->
2
- A React component providing full-screen and compact loading states with customizable text and branded OpenFrame logo animation.
1
+ <!-- source-hash: 069900935088b57e5ca42bc2d323e014 -->
2
+ Full-page and compact loading state components that display an animated OpenFrame logo with customizable title and description text.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`PageLoader`** - Full viewport loading component with centered content and animated logo
7
- - **`CompactPageLoader`** - Smaller version for use within containers or modals
8
- - **`PageLoaderProps`** - TypeScript interface defining customization options including title, description, styling, and icon visibility
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `PageLoader` | Component | Full viewport loading overlay with centered content |
9
+ | `CompactPageLoader` | Component | Smaller loading indicator for inline containers |
10
+ | `PageLoaderProps` | Interface | Shared props interface for both components |
11
+
12
+ ### `PageLoaderProps`
13
+
14
+ | Prop | Type | Default | Description |
15
+ |---|---|---|---|
16
+ | `title` | `string` | `'Loading'` | Primary loading message |
17
+ | `description` | `string` | `'Getting your data ready'` | Secondary descriptive text |
18
+ | `className` | `string` | — | Additional CSS classes for the container |
19
+ | `showIcon` | `boolean` | `true` | Toggles the animated OpenFrame logo |
9
20
 
10
21
  ## Usage Example
11
22
 
12
23
  ```typescript
13
- import { PageLoader, CompactPageLoader } from './components/ui/page-loader'
24
+ import { PageLoader, CompactPageLoader } from '@openframe-oss-lib/ui'
14
25
 
15
- // Full page loading state
26
+ // Full-screen loader during initial data fetch
16
27
  function App() {
17
- const [isLoading, setIsLoading] = useState(true)
18
-
19
28
  if (isLoading) {
20
29
  return (
21
- <PageLoader
22
- title="Loading Dashboard"
23
- description="Fetching your data..."
24
- className="bg-gray-50"
30
+ <PageLoader
31
+ title="Connecting"
32
+ description="Fetching your workspace data"
25
33
  />
26
34
  )
27
35
  }
28
-
29
36
  return <Dashboard />
30
37
  }
31
38
 
32
- // Compact loader for components
33
- function DataTable() {
39
+ // Compact loader inside a panel or widget
40
+ function DataPanel() {
34
41
  return (
35
- <div className="border rounded-lg">
36
- <CompactPageLoader
37
- title="Loading table data"
38
- showIcon={false}
39
- />
40
- </div>
42
+ <CompactPageLoader
43
+ title="Refreshing"
44
+ description="Syncing latest records"
45
+ showIcon={true}
46
+ />
41
47
  )
42
48
  }
49
+
50
+ // Icon-free loader with custom styling
51
+ <PageLoader
52
+ title="Please wait"
53
+ showIcon={false}
54
+ className="bg-ods-surface"
55
+ />
43
56
  ```
44
57
 
45
- Both components feature the OpenFrame logo with pulse animation, customizable text content, and responsive design using Tailwind CSS classes with the design system's color tokens.
58
+ **Key differences:** `PageLoader` uses `min-h-screen` to fill the viewport and always shows `description`; `CompactPageLoader` uses `p-12` padding and renders `description` only when provided.
59
+
60
+ ## Source
61
+
62
+ [`page-loader.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/page-loader.tsx)
@@ -0,0 +1,30 @@
1
+ <!-- source-hash: 81c75ceb63c114f45f4ca4dd6b9f21f4 -->
2
+ A password input component that extends the base `Input` with a show/hide toggle button, rendering an eye icon to reveal or conceal the entered value.
3
+
4
+ ## Key Components
5
+
6
+ - **`PasswordInput`** — A `forwardRef` component wrapping the base `Input`, managing visibility state and injecting an icon toggle as `endAdornment`.
7
+ - **`PasswordInputProps`** — Extends `InputProps`, omitting `type` and `endAdornment` (both are controlled internally).
8
+
9
+ ## Usage Example
10
+
11
+ ```typescript
12
+ import { PasswordInput } from "./password-input"
13
+
14
+ function LoginForm() {
15
+ return (
16
+ <PasswordInput
17
+ placeholder="Enter your password"
18
+ disabled={false}
19
+ className="w-full"
20
+ />
21
+ )
22
+ }
23
+ ```
24
+
25
+ ## Behavior Notes
26
+
27
+ - Toggles between `type="password"` and `type="text"` based on internal `visible` state.
28
+ - The toggle button uses `tabIndex={-1}` to keep it out of the tab order and `aria-label` for accessibility (`"Show password"` / `"Hide password"`).
29
+ - Applies `text-ellipsis` via `className` to truncate long values when the field is not focused.
30
+ - The toggle button is automatically disabled when the `disabled` prop is passed to the component.
@@ -1,44 +1,40 @@
1
- <!-- source-hash: 8f44dd654f7205b5e41cde63c6ee32dd -->
2
- A composite phone number input component combining a country selector dropdown with a phone number text field, featuring debounced validation using `libphonenumber-js`.
1
+ <!-- source-hash: 32581c5a8247511ad64b8ad45ce014af -->
2
+ A composite phone input component combining a country code selector with a phone number text field, featuring debounced validation using `libphonenumber-js`.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `PhoneInput` (main export)
7
- A controlled input component that renders a country code selector and phone number field side-by-side.
7
+
8
+ A controlled input component that renders a country dial-code `Select` alongside a `tel` input. Validates the phone number against the selected country after a 300ms debounce on change, and immediately on blur.
8
9
 
9
10
  **Props (`PhoneInputProps`):**
10
11
 
11
12
  | Prop | Type | Description |
12
- |------|------|-------------|
13
- | `value` | `string` | Current phone number value |
14
- | `countryCode` | `CountryCode` | Selected country (ISO code) |
15
- | `onPhoneChange` | `(phone: string) => void` | Called on phone input change |
16
- | `onCountryChange` | `(country: CountryCode) => void` | Called on country selection |
17
- | `onValidationChange` | `(isInvalid: boolean) => void` | Optional validation state callback |
13
+ |---|---|---|
14
+ | `value` | `string` | Current phone number string |
15
+ | `countryCode` | `CountryCode` | ISO country code (from `libphonenumber-js`) |
16
+ | `onPhoneChange` | `(phone: string) => void` | Called when phone input changes |
17
+ | `onCountryChange` | `(country: CountryCode) => void` | Called when country selection changes |
18
+ | `onValidationChange` | `(isInvalid: boolean) => void` | Optional callback for validation state |
18
19
  | `disabled` | `boolean` | Disables both inputs |
19
- | `placeholder` | `string` | Input placeholder text |
20
- | `onKeyDown` | `React.KeyboardEvent handler` | Key event passthrough |
20
+ | `placeholder` | `string` | Input placeholder (default: `"Phone Number (optional)"`) |
21
+ | `onKeyDown` | `React.KeyboardEventHandler` | Key event passthrough |
21
22
 
22
23
  ### `CountryOption` (internal)
23
- Renders a single country row inside the dropdown showing flag, dial code, and country name.
24
24
 
25
- ### Validation Behavior
26
- - Input is restricted to digits, spaces, hyphens, and parentheses
27
- - Validation triggers via debounce (300ms) after 4+ digits are entered
28
- - Immediate validation fires on input blur
29
- - Empty input clears any invalid state without triggering validation
25
+ Renders a single `SelectItem` with the country's flag emoji, dial code, and name with overflow truncation.
30
26
 
31
27
  ## Usage Example
32
28
 
33
29
  ```typescript
34
- import { PhoneInput } from './phone-input'
30
+ import { PhoneInput } from '@/components/ui/phone-input'
35
31
  import { useState } from 'react'
36
32
  import type { CountryCode } from 'libphonenumber-js'
37
33
 
38
34
  function ContactForm() {
39
35
  const [phone, setPhone] = useState('')
40
36
  const [country, setCountry] = useState<CountryCode>('US')
41
- const [hasError, setHasError] = useState(false)
37
+ const [phoneInvalid, setPhoneInvalid] = useState(false)
42
38
 
43
39
  return (
44
40
  <PhoneInput
@@ -46,9 +42,11 @@ function ContactForm() {
46
42
  countryCode={country}
47
43
  onPhoneChange={setPhone}
48
44
  onCountryChange={setCountry}
49
- onValidationChange={setHasError}
50
- placeholder="Phone Number (optional)"
45
+ onValidationChange={setPhoneInvalid}
46
+ placeholder="Enter phone number"
51
47
  />
52
48
  )
53
49
  }
54
- ```
50
+ ```
51
+
52
+ **Validation behaviour:** Empty fields are treated as valid. Validation fires after 4+ digits are entered (debounced) or on blur, and highlights the input with `!border-ods-warning` when invalid.
@@ -0,0 +1,43 @@
1
+ <!-- source-hash: cd6ef482a4e9898cb3090a6c0ba0b8ae -->
2
+ Provides a React context and hook for controlling where Radix UI overlay components (dropdowns, tooltips, etc.) are portaled, enabling stacking-context-aware positioning without z-index escalation.
3
+
4
+ ## Key Components
5
+
6
+ - **`PortalContainerContext`** — React context holding an `HTMLElement | null` value. When `null`, Radix falls back to its default `document.body` portal target. When set to a specific DOM node, overlays portal into that node and naturally inherit its stacking context.
7
+ - **`usePortalContainer()`** — Convenience hook that reads the current portal container from context.
8
+
9
+ ## Usage Example
10
+
11
+ ```typescript
12
+ // Wrap a high-z surface (e.g. a chat drawer) with a provider pointing
13
+ // at a ref inside that same surface, then consume it in overlay components.
14
+
15
+ function ChatDrawer() {
16
+ const [container, setContainer] = React.useState<HTMLElement | null>(null)
17
+
18
+ return (
19
+ <div ref={setContainer} className="drawer">
20
+ <PortalContainerContext.Provider value={container}>
21
+ <DrawerContent />
22
+ </PortalContainerContext.Provider>
23
+ </div>
24
+ )
25
+ }
26
+
27
+ // Inside DrawerContent — pass the container to Radix portal props:
28
+ function DropdownExample() {
29
+ const portalContainer = usePortalContainer()
30
+
31
+ return (
32
+ <DropdownMenu.Portal container={portalContainer}>
33
+ <DropdownMenu.Content>...</DropdownMenu.Content>
34
+ </DropdownMenu.Portal>
35
+ )
36
+ }
37
+ ```
38
+
39
+ ## Notes
40
+
41
+ - Radix uses `position: fixed` internally, so portaling into a nested node does **not** re-introduce `overflow: hidden` clipping — content still escapes ancestor scroll containers.
42
+ - Providing `null` (the default) leaves Radix behavior unchanged everywhere a provider is absent.
43
+ - Source: [`portal-container.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/portal-container.tsx)
@@ -1,50 +1,63 @@
1
- <!-- source-hash: e7dc6507dbb40dd8dffb5171634e1bd5 -->
2
- Segmented progress bar component that visualizes a numeric value (0–100) using dynamically calculated fill segments, with responsive sizing and threshold-based color coding.
1
+ <!-- source-hash: f0113fcceed7014d22166d2c03afc5d5 -->
2
+ Segmented progress bar component with responsive sizing, threshold-based color states, and support for both normal and inverted value semantics.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `ProgressBarProps`
6
+ ### `ProgressBar` (exported component)
7
+
8
+ A responsive, segmented progress bar that dynamically calculates the number of segments based on container width using a `ResizeObserver`. Color state is driven by configurable thresholds and ODS design tokens.
9
+
10
+ **Props:**
11
+
7
12
  | Prop | Type | Default | Description |
8
- |------|------|---------|-------------|
9
- | `progress` | `number` | — | Value from 0–100 to display |
13
+ |---|---|---|---|
14
+ | `progress` | `number` | — | Current value (0–100) |
10
15
  | `warningThreshold` | `number` | `75` | Threshold for warning color |
11
16
  | `criticalThreshold` | `number` | `90` | Threshold for critical color |
12
- | `segmentWidth` | `number` | `3.43px` | Desktop segment width |
13
- | `mobileSegmentWidth` | `number` | `5px` | Mobile segment width |
14
- | `segmentGap` | `number` | `2px` | Gap between segments |
15
- | `height` | `number` | `24px` | Desktop bar height |
16
- | `mobileHeight` | `number` | `8px` | Mobile bar height |
17
- | `inverted` | `boolean` | `false` | Flips color logic (high = good) |
17
+ | `segmentWidth` | `number` | `3.43` | Desktop segment width (px) |
18
+ | `mobileSegmentWidth` | `number` | `5` | Mobile segment width (px) |
19
+ | `segmentGap` | `number` | `2` | Gap between segments (px) |
20
+ | `height` | `number` | `24` | Desktop segment height (px) |
21
+ | `mobileHeight` | `number` | `8` | Mobile segment height (px) |
22
+ | `inverted` | `boolean` | `false` | Reverses color semantics (high = green, low = red) |
18
23
 
19
- ### Color Logic
20
- - **Normal** (e.g., disk usage): green warning red as value increases
21
- - **Inverted** (e.g., battery health): red → warning → green as value increases
22
- - Uses ODS design tokens: `--ods-attention-green-success`, `--color-warning`, `--ods-attention-red-error`
24
+ **Color mapping (normal mode):**
25
+ - `≥ criticalThreshold``--color-error` (red)
26
+ - `≥ warningThreshold``--color-warning` (yellow)
27
+ - Below both `--color-success` (green)
23
28
 
24
- ### Responsive Behavior
25
- Uses `useMdUp()` hook to switch between desktop and mobile segment dimensions. A `ResizeObserver` dynamically recalculates segment count based on container width, ensuring pixel-perfect fills on any layout.
29
+ **Inverted mode** reverses this — useful for metrics like battery health where higher is better.
26
30
 
27
31
  ## Usage Example
28
32
 
29
33
  ```typescript
30
- // Normal modedisk usage (high values = bad)
34
+ // Disk usage — high values are bad (normal mode)
31
35
  <ProgressBar progress={85} warningThreshold={70} criticalThreshold={90} />
32
36
 
33
- // Inverted modebattery health (high values = good)
37
+ // Battery health — high values are good (inverted mode)
34
38
  <ProgressBar
35
- progress={25}
36
- warningThreshold={40}
39
+ progress={45}
40
+ warningThreshold={30}
37
41
  criticalThreshold={80}
38
- inverted={true}
42
+ inverted
39
43
  />
40
44
 
41
45
  // Custom sizing
42
46
  <ProgressBar
43
47
  progress={60}
44
- segmentWidth={5}
45
- mobileSegmentWidth={8}
46
- height={32}
47
- mobileHeight={12}
48
+ segmentWidth={4}
49
+ mobileSegmentWidth={6}
50
+ height={16}
51
+ mobileHeight={6}
48
52
  segmentGap={3}
49
53
  />
50
- ```
54
+ ```
55
+
56
+ ## Notes
57
+
58
+ - Uses `useMdUp` hook to switch between desktop and mobile dimensions
59
+ - Segment count recalculates automatically on container resize via `ResizeObserver`
60
+ - Unfilled segments render with `--color-bg-surface-active`
61
+ - Requires a Client Component context (`'use client'`)
62
+
63
+ **Source:** [`progress-bar.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/progress-bar.tsx)
@@ -1,24 +1,23 @@
1
- <!-- source-hash: 7fa49d7ef85ecd5ac09ebac9a632fbac -->
2
- Renders a collapsible/expandable changelog section for product releases, supporting three display modes: default (always visible), collapsible (toggle open/closed), and preview-first (show first entry with fade-masked overflow).
1
+ <!-- source-hash: 911c333ce08edfbeee406277154d07b8 -->
2
+ Renders a collapsible/expandable changelog section for product releases, displaying a titled list of `ChangelogEntry` items with optional progressive disclosure and rich markdown support.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `ReleaseChangelogSection` (exported)
7
- Main component accepting these key props:
6
+ **`ReleaseChangelogSection`** — Primary export. Accepts a `title`, array of `ChangelogEntry` items, and several display-mode flags:
8
7
 
9
8
  | Prop | Type | Description |
10
- |------|------|-------------|
11
- | `title` | `string` | Section heading text |
12
- | `entries` | `ChangelogEntry[]` | List of changelog items to render |
13
- | `isBreaking` | `boolean` | Applies red styling for breaking changes |
14
- | `collapsible` | `boolean` | Enables toggle open/close mode (wins over `previewFirst`) |
15
- | `defaultCollapsed` | `boolean` | Initial collapsed state when `collapsible=true` (default: `true`) |
16
- | `previewFirst` | `boolean` | Shows first entry fully, fades remaining with "Show N more" toggle |
17
- | `icon` | `React.ReactNode` | Optional Lucide icon rendered before title |
18
- | `SimpleMarkdownRenderer` | `ComponentType` | Injected markdown renderer for entry descriptions |
19
-
20
- ### `ChangelogEntryList` (internal)
21
- Shared list renderer used by both default and preview-first branches. Renders each `ChangelogEntry` as a left-bordered list item with bold title and markdown-rendered description, with responsive typography tokens pinned via Tailwind `[&_p]:!` overrides.
9
+ |---|---|---|
10
+ | `collapsible` | `boolean` | Toggle section open/closed via title row button |
11
+ | `defaultCollapsed` | `boolean` | Initial collapsed state (default: `true`) |
12
+ | `previewFirst` | `boolean` | Shows first entry in full, fades remaining entries behind a "Show N more" toggle |
13
+ | `isBreaking` | `boolean` | Renders title in error color for breaking changes |
14
+ | `icon` | `ReactNode` | Lucide icon rendered inline before the title |
15
+ | `MarkdownRenderer` | `ComponentType` | Defaults to `RichMarkdownRenderer`; swap for custom implementations |
16
+ | `hideTitle` | `boolean` | Suppresses the title row entirely |
17
+
18
+ > **Note:** When both `collapsible` and `previewFirst` are passed, `collapsible` takes precedence.
19
+
20
+ **`ChangelogEntryList`** *(internal)* Renders a `<ul>` of bordered entries, each with a bold markdown-rendered `title` and optional `description` body. Typography is pinned via Tailwind `[&_p]:!` overrides to ODS token scales (`text-h3`/`text-h4`) so the `MarkdownRenderer`'s default paragraph styles don't override responsive breakpoints.
22
21
 
23
22
  ## Usage Example
24
23
 
@@ -26,26 +25,33 @@ Shared list renderer used by both default and preview-first branches. Renders ea
26
25
  import { ReleaseChangelogSection } from './release-changelog-section';
27
26
  import { Sparkles } from 'lucide-react';
28
27
 
28
+ // Default collapsible section
29
29
  <ReleaseChangelogSection
30
30
  title="New Features"
31
31
  entries={[
32
- { title: "AI Ticketing", description: "Automated ticket routing via Mingo AI." },
33
- { title: "Client Portal", description: "Fae self-service dashboard launched." },
32
+ { title: "AI-powered ticket routing", description: "Routes tickets to the right queue automatically." },
33
+ { title: "[Dashboard redesign](https://example.com)", description: "Faster load times and improved layout." },
34
34
  ]}
35
- icon={<Sparkles className="w-5 h-5" />}
35
+ icon={<Sparkles className="h-4 w-4" />}
36
+ collapsible
37
+ defaultCollapsed={false}
38
+ />
39
+
40
+ // Preview-first mode (fades entries after the first)
41
+ <ReleaseChangelogSection
42
+ title="Bug Fixes"
43
+ entries={fixes}
36
44
  previewFirst
37
- SimpleMarkdownRenderer={MyMarkdownRenderer}
38
45
  />
39
46
 
40
- // Collapsible breaking-changes section
47
+ // Breaking changes section
41
48
  <ReleaseChangelogSection
42
49
  title="Breaking Changes"
43
- entries={breakingEntries}
50
+ entries={breaking}
44
51
  isBreaking
45
- collapsible
46
- defaultCollapsed={false}
47
- SimpleMarkdownRenderer={MyMarkdownRenderer}
48
52
  />
49
53
  ```
50
54
 
51
- > **Note:** When both `collapsible` and `previewFirst` are passed, `collapsible` takes precedence. The `previewFirst` fade toggle resets automatically when `entries.length` changes.
55
+ ## Source
56
+
57
+ [`release-changelog-section.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/release-changelog-section.tsx)