@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,49 +1,52 @@
1
- <!-- source-hash: 5ede4b179e76c93d7dbba4fcff5327a9 -->
2
- A flexible avatar component that displays a user image or falls back to initials, supporting both square and round variants with multiple size options.
1
+ <!-- source-hash: 697a56bf02c863691fb32cd7dc26e986 -->
2
+ A React component that renders a square or round avatar with image support, authenticated image resolution, and an initials-based fallback when no image is available or fails to load.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `SquareAvatarProps`
7
- Extends `React.HTMLAttributes<HTMLDivElement>` with:
8
7
 
9
8
  | Prop | Type | Default | Description |
10
- |------|------|---------|-------------|
11
- | `src` | `string` | — | Image URL |
12
- | `alt` | `string` | — | Image alt text (also used for initials fallback) |
13
- | `size` | `'sm' \| 'md' \| 'lg' \| 'xl'` | `'md'` | Controls dimensions (32/40/48/64px) |
14
- | `fallback` | `string` | — | Preferred string for generating initials |
9
+ |---|---|---|---|
10
+ | `src` | `string` | — | Image URL (resolved through auth hook) |
11
+ | `alt` | `string` | — | Alt text; also used to derive initials fallback |
12
+ | `size` | `'sm' \| 'md' \| 'lg' \| 'xl'` | `'md'` | Named size bucket |
13
+ | `sizePx` | `number` | — | Exact pixel size; overrides `size` |
14
+ | `fallback` | `string` | — | String used to derive initials (takes priority over `alt`) |
15
15
  | `variant` | `'square' \| 'round'` | `'square'` | Border radius style |
16
+ | `initialsClassName` | `string` | — | Tailwind overrides for initials font/color |
16
17
 
17
- ### `SquareAvatar`
18
- A memoized, forwarded-ref component that renders an image with automatic graceful degradation to initials on load error or missing `src`.
18
+ ### Exports
19
19
 
20
- **Fallback behavior:** Uses `getFirstLastInitials()` on `fallback ?? alt`, rendering `'?'` if neither yields initials. The initials layer uses `text-ods-text-primary` to maintain WCAG AA contrast across accent-fill backgrounds (e.g. Mingo cyan, current-user pink).
20
+ - **`SquareAvatar`** Memoized, forwarded-ref `div` wrapping an authed `Image` and an initials layer.
21
21
 
22
22
  ## Usage Example
23
23
 
24
24
  ```typescript
25
- // Image avatar
25
+ import { SquareAvatar } from "@openframe/ui";
26
+
27
+ // Basic image avatar
26
28
  <SquareAvatar
27
- src="https://example.com/avatar.jpg"
29
+ src="https://cdn.example.com/user.jpg"
28
30
  alt="Jane Doe"
29
- size="lg"
30
- variant="round"
31
+ size="md"
31
32
  />
32
33
 
33
- // Initials-only avatar (no src)
34
+ // Initials-only fallback
34
35
  <SquareAvatar
35
36
  fallback="Jane Doe"
36
- size="md"
37
- variant="square"
37
+ size="sm"
38
+ variant="round"
38
39
  />
39
40
 
40
- // With custom className and forwarded ref
41
- const ref = React.useRef<HTMLDivElement>(null);
41
+ // Exact pixel size with custom initials styling
42
42
  <SquareAvatar
43
- ref={ref}
44
- src={userAvatarUrl}
45
- alt={userName}
46
- size="xl"
47
- className="ring-2 ring-ods-flamingo-pink"
43
+ src={user.avatarUrl}
44
+ alt={user.name}
45
+ sizePx={28}
46
+ initialsClassName="text-[10px] text-white"
48
47
  />
49
- ```
48
+ ```
49
+
50
+ **Fallback behaviour:** if `src` is absent or the image fires an `onError` event, the initials layer (derived via `getFirstLastInitials`) becomes visible. The initials color resolves through the CSS variable `--ods-avatar-initials`, falling back to `--color-text-primary`, so host themes can supply a contrast-correct value without breaking unstyled avatars.
51
+
52
+ **Source:** [`square-avatar.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/square-avatar.tsx)
@@ -0,0 +1,61 @@
1
+ <!-- source-hash: 4d62db34d742074664628fd26198e37d -->
2
+ A bordered card component that stacks rows vertically, supporting full-width title rows, multi-column data rows, and arbitrary content rows with ODS-compliant styling.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `StackedRowsPanel` | Component | Root container; renders an optional uppercase title above a bordered, rounded card |
9
+ | `PanelColumn` | Interface | Defines a single column cell with `value`, `label`, `icon`, `leadingIcon`, `href`, `width`, `align`, and `hideAt` |
10
+ | `PanelRow` | Interface | Defines a row with either `columns` (1 = full-width, N = multi-column) or arbitrary `content` |
11
+ | `StackedRowsPanelProps` | Interface | Props for `StackedRowsPanel`: `rows`, optional `title`, optional `className` |
12
+ | `PanelColumnAlign` | Type | `"left" \| "center" \| "right"` |
13
+ | `PanelHideAt` | Type | `"md" \| "lg" \| "xl"` — responsive column visibility breakpoints |
14
+ | `CellValue` | Internal | Renders the `value` (h4) + `label` (h6) pair with optional inline icon and link |
15
+ | `PanelCell` | Internal | Resolves layout variant: custom `content`, `leadingIcon` banner, or standard value/label stack |
16
+ | `PanelRowView` | Internal | Switches between full-width, multi-column, and arbitrary-content row layouts |
17
+
18
+ ## Usage Example
19
+
20
+ ```typescript
21
+ import { StackedRowsPanel } from "@/components/stacked-rows-panel"
22
+ import { Tag } from "@/components/tag"
23
+
24
+ // Multi-column detail card with an optional title
25
+ <StackedRowsPanel
26
+ title="Device Summary"
27
+ rows={[
28
+ {
29
+ id: "header",
30
+ columns: [
31
+ {
32
+ key: "device-name",
33
+ value: "MacBook Pro 16",
34
+ label: "Device Name",
35
+ },
36
+ ],
37
+ },
38
+ {
39
+ id: "details",
40
+ columns: [
41
+ { key: "os", value: "macOS 14.4", label: "Operating System" },
42
+ { key: "status", value: <Tag variant="success">Online</Tag>, label: "Status" },
43
+ { key: "owner", value: "Jane Smith", label: "Assigned To", hideAt: "md" },
44
+ ],
45
+ },
46
+ {
47
+ id: "external",
48
+ columns: [
49
+ {
50
+ key: "docs",
51
+ value: "View Docs",
52
+ label: "External Link",
53
+ href: "https://flamingo.run/docs",
54
+ },
55
+ ],
56
+ },
57
+ ]}
58
+ />
59
+ ```
60
+
61
+ **Source:** [`stacked-rows-panel.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/stacked-rows-panel.tsx)
@@ -1,37 +1,43 @@
1
- <!-- source-hash: 03e68088323281da2f3ddac5a1dabf62 -->
2
- A client-side React component that renders styled status/label badges with configurable size variants and color schemes using `class-variance-authority`.
1
+ <!-- source-hash: 0935f3d6a806783b496a5b5cb096c40a -->
2
+ Reusable status badge component implementing the OpenFrame Design System (ODS) badge specifications, with support for multiple color schemes, density variants, and a dedicated OpenFrame generation mode.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`statusBadgeVariants`** CVA variant config defining two axes:
7
- - `variant`: `"card"` (default, larger) or `"button"` (compact, stamp-like)
8
- - `colorScheme`: `cyan`, `pink`, `yellow`, `green`, `purple`, `success`, `error`, `warning`, `default`, `accentBorder`, `errorBorder`, `whiteBorder`
9
- - **`StatusBadge`** — Main exported `<span>`-based component
10
- - **`singleLine`** prop — Opt-out flag for the `button` variant's multi-word vertical stacking behavior
6
+ ### `StatusBadge` (default export)
7
+ A polymorphic `<span>`-based badge component built with `class-variance-authority`. Supports two density variants and multiple semantic color schemes, including border-only styles for task-type badges.
8
+
9
+ ### `statusBadgeVariants`
10
+ CVA variant configuration exposing two axes:
11
+ - **`variant`**: `card` (standalone, full ODS caption composite) | `button` (dense inline stamp, 10px scale)
12
+ - **`colorScheme`**: `cyan` | `pink` | `yellow` | `green` | `purple` | `success` | `error` | `warning` | `default` | `accentBorder` | `errorBorder` | `whiteBorder`
13
+
14
+ ### `genBadgeBgOpacity(gen: number): number`
15
+ Returns the accent background opacity (%) for a given OpenFrame generation tier. Gen 1 is strongest (30%), fading progressively for later generations.
16
+
17
+ ### `generationTierFromLabel(label: string | null | undefined): number`
18
+ Parses a whole-number generation tier from a ClickUp Target Version label (e.g. `"Gen1.5"` → `1`). Fractional gens share their tier's tint.
11
19
 
12
20
  ## Usage Example
13
21
 
14
22
  ```typescript
15
- import { StatusBadge } from './status-badge';
23
+ import { StatusBadge, generationTierFromLabel } from './status-badge';
16
24
 
17
- // Default card badge
25
+ // Semantic color scheme
18
26
  <StatusBadge text="Active" colorScheme="success" />
19
27
 
20
- // Compact button badge with stacked multi-word text
21
- <StatusBadge text="TO DO" variant="button" colorScheme="warning" />
22
-
23
- // Compact button badge, single line (inline chat context)
24
- <StatusBadge text="IN PROGRESS" variant="button" colorScheme="cyan" singleLine />
25
-
26
- // Border-only accent badge (task type)
27
- <StatusBadge text="BUG" colorScheme="errorBorder" />
28
+ // Dense inline stamp with multi-word stacking
29
+ <StatusBadge text="TO DO" variant="button" colorScheme="default" />
28
30
 
29
- // Custom class override
30
- <StatusBadge text="Custom" colorScheme="purple" className="rounded-full" />
31
- ```
31
+ // Inline stamp, single line (no vertical stacking)
32
+ <StatusBadge text="TO DO" variant="button" singleLine />
32
33
 
33
- ## Notes
34
+ // Generation chip (overrides colorScheme)
35
+ <StatusBadge
36
+ text="Gen2"
37
+ variant="button"
38
+ gen={generationTierFromLabel("Gen2")}
39
+ />
34
40
 
35
- - Renders as `<span>` (not `<div>`) to remain HTML-valid inside inline contexts such as `<p>`, `<a>`, or markdown-rendered content
36
- - `variant="button"` with multi-word text auto-stacks each word vertically (stamp effect); pass `singleLine` to disable
37
- - Extends `React.HTMLAttributes<HTMLSpanElement>`, so all standard span props (`id`, `onClick`, `aria-*`, etc.) are forwarded
41
+ // Border-only task type badge
42
+ <StatusBadge text="Bug" colorScheme="errorBorder" />
43
+ ```
@@ -1,35 +1,49 @@
1
- <!-- source-hash: 4f6de0d7bd5f42eb6b6564ff3beaa57b -->
2
- A reusable React component that displays color-coded status indicators with optional links, supporting success, pending, error, and missing states.
1
+ <!-- source-hash: f8c79cfcf658780fb28170a6d9b4181f -->
2
+ A client-side React component that renders a colored status dot paired with a label, optionally wrapped in an external link.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **StatusIndicator**: Main functional component that renders a colored dot with status text
7
- - **StatusIndicatorProps**: TypeScript interface defining component props
8
- - **getStatusColor**: Internal utility function that maps status types to corresponding Tailwind CSS classes
6
+ ### `StatusIndicatorProps`
7
+
8
+ | Prop | Type | Required | Description |
9
+ |------|------|----------|-------------|
10
+ | `status` | `'success' \| 'pending' \| 'error' \| 'missing'` | ✅ | Determines dot and text color |
11
+ | `label` | `string` | ✅ | Display text next to the dot |
12
+ | `href` | `string` | ❌ | If provided, wraps the indicator in an external `<a>` tag |
13
+
14
+ ### `StatusIndicator`
15
+
16
+ Maps each status to ODS design token classes:
17
+
18
+ | Status | Color Token |
19
+ |--------|-------------|
20
+ | `success` | `ods-success` (green) |
21
+ | `pending` | `ods-warning` (yellow) |
22
+ | `error` | `ods-error` (red) |
23
+ | `missing` | `ods-warning` (yellow) |
9
24
 
10
25
  ## Usage Example
11
26
 
12
27
  ```typescript
13
- import { StatusIndicator } from './status-indicator';
28
+ // Static status display
29
+ <StatusIndicator status="success" label="Connected" />
14
30
 
15
- // Basic status display
16
- <StatusIndicator status="success" label="Database Connected" />
31
+ // Error state
32
+ <StatusIndicator status="error" label="Service Unavailable" />
17
33
 
18
- // Status with clickable link
19
- <StatusIndicator
20
- status="error"
21
- label="API Unreachable"
22
- href="https://status.api.example.com"
34
+ // Clickable indicator linking to an external resource
35
+ <StatusIndicator
36
+ status="pending"
37
+ label="Awaiting Approval"
38
+ href="https://dashboard.example.com/approvals/123"
23
39
  />
24
40
 
25
- // Different status states
26
- <StatusIndicator status="pending" label="Deployment in Progress" />
27
- <StatusIndicator status="missing" label="Configuration Required" />
41
+ // Missing configuration
42
+ <StatusIndicator status="missing" label="API Key Not Set" />
28
43
  ```
29
44
 
30
- The component automatically applies appropriate colors:
31
- - **Success**: Green dot and text
32
- - **Pending/Missing**: Orange dot and text
33
- - **Error**: Red dot and text
45
+ ## Notes
34
46
 
35
- When an `href` prop is provided, the entire indicator becomes a clickable link that opens in a new tab. The component uses DM Sans font and includes hover effects for linked indicators.
47
+ - Uses `"use client"` must run in a browser context (Next.js App Router).
48
+ - The `href` variant opens in a new tab with `rel="noopener noreferrer"` for security.
49
+ - Color tokens (`ods-success`, `ods-warning`, `ods-error`) are defined in the ODS (OpenFrame Design System) Tailwind config. Ensure the theme is loaded in your Tailwind setup.
@@ -1,39 +1,51 @@
1
- <!-- source-hash: 708030f1b7cd1bda4a84ea3e23f38945 -->
2
- A React component that renders dynamic tab content with automatic fallback to an empty state when no component is provided.
1
+ <!-- source-hash: 7db2c87fb86524e2e57b6d346f5a61f2 -->
2
+ Renders a dynamic tab panel by mounting a given React component or displaying a configurable empty state when no matching tab component is found.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **TabContent**: Main component that conditionally renders either a dynamic tab component or an empty state
7
- - **TabContentProps**: TypeScript interface defining component props including active tab name, component to render, and customization options
8
- - **Empty State**: Built-in fallback UI with customizable title and description for missing or invalid tabs
6
+ ### `TabContent`
7
+ A client-side React component that conditionally renders a tab's content component or a fallback empty state UI.
8
+
9
+ **Props (`TabContentProps`):**
10
+
11
+ | Prop | Type | Default | Description |
12
+ |------|------|---------|-------------|
13
+ | `activeTab` | `string` | — | Name of the currently active tab (used in fallback message) |
14
+ | `TabComponent` | `React.ComponentType<any> \| null` | — | Component to render; `null` triggers the empty state |
15
+ | `componentProps` | `any` | — | Props spread into `TabComponent` when rendered |
16
+ | `className` | `string` | — | Additional CSS classes for the wrapper |
17
+ | `emptyStateTitle` | `string` | `"Tab Not Found"` | Heading shown in the empty state |
18
+ | `emptyStateDescription` | `string` | — | Custom message; defaults to `"The selected tab '...' could not be found."` |
19
+ | `minHeight` | `string` | `"min-h-[400px]"` | Tailwind min-height applied to the wrapper and empty state container |
9
20
 
10
21
  ## Usage Example
11
22
 
12
23
  ```typescript
13
24
  import { TabContent } from './tab-content'
14
- import { UserProfile } from './user-profile'
15
-
16
- function MyTabs() {
17
- const [activeTab, setActiveTab] = useState('profile')
18
-
19
- // Component mapping
20
- const tabComponents = {
21
- profile: UserProfile,
22
- settings: null // Will show empty state
23
- }
24
-
25
+ import { OverviewPanel } from './panels/OverviewPanel'
26
+
27
+ const TAB_MAP: Record<string, React.ComponentType<any>> = {
28
+ overview: OverviewPanel,
29
+ }
30
+
31
+ function MyTabs({ activeTab }: { activeTab: string }) {
32
+ const TabComponent = TAB_MAP[activeTab] ?? null
33
+
25
34
  return (
26
35
  <TabContent
27
36
  activeTab={activeTab}
28
- TabComponent={tabComponents[activeTab]}
37
+ TabComponent={TabComponent}
29
38
  componentProps={{ userId: '123' }}
30
- className="bg-white rounded-lg"
31
- emptyStateTitle="Coming Soon"
32
- emptyStateDescription="This feature is under development"
33
- minHeight="min-h-[500px]"
39
+ emptyStateTitle="Panel Unavailable"
40
+ emptyStateDescription="Please select a valid tab from the navigation."
41
+ minHeight="min-h-[600px]"
34
42
  />
35
43
  )
36
44
  }
37
45
  ```
38
46
 
39
- The component automatically handles missing components by displaying a centered empty state with customizable messaging, making it ideal for tab interfaces where some tabs may not be implemented yet.
47
+ ## Notes
48
+
49
+ - Marked `'use client'` — requires a Next.js App Router client boundary.
50
+ - Uses [`cn`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/utils/cn.ts) for conditional Tailwind class merging.
51
+ - The empty state is centered both vertically and horizontally within the min-height container.
@@ -1,73 +1,63 @@
1
- <!-- source-hash: 98a7f0660803887b4fe8c81807718051 -->
2
- Accessible, scrollable tab navigation component with optional URL synchronization and render prop support for content rendering.
1
+ <!-- source-hash: 4f81360202d7fa9875b28cdae48c29a5 -->
2
+ Accessible, scrollable tab navigation bar component with optional URL synchronization, overflow scroll shadows, and support for both controlled and URL-driven active tab state.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `TabNavigation`
7
- Main component that renders a horizontal tab bar with scroll overflow handling, fade gradients, and flexible state management modes.
8
-
9
- ### Interfaces
10
-
11
- | Export | Description |
12
- |--------|-------------|
13
- | `TabItem` | Tab definition — `id`, `label`, `icon`, optional `component` and status `indicator` |
14
- | `TabNavigationUrlSyncOptions` | URL sync config `paramName` (default: `'tab'`) and `replaceState` (default: `true`) |
15
-
16
- ### Utility Functions
17
-
18
- | Function | Description |
19
- |----------|-------------|
20
- | `getTabById` | Finds a `TabItem` by `id` from a tabs array |
21
- | `getTabComponent` | Returns the `component` for a given tab id, or `null` |
7
+ The primary exported component that renders a horizontal scrollable tab strip. Supports two operating modes:
8
+ - **Controlled mode** — driven by `activeTab` / `onTabChange` props
9
+ - **URL sync mode** — reads/writes the active tab from search params (e.g. `?tab=overview`), enabling deep linking and browser back/forward navigation
10
+
11
+ ### `TabItem`
12
+ Interface describing each tab entry:
13
+
14
+ | Field | Type | Required | Description |
15
+ |---|---|---|---|
16
+ | `id` | `string` | ✅ | Unique identifier used in state and URL |
17
+ | `label` | `string` | ✅ | Visible tab text |
18
+ | `icon` | `SVGComponent` | ❌ | Icon rendered beside the label |
19
+ | `indicator` | `'success' \| 'warning' \| 'error'` | ❌ | Status badge dot |
20
+ | `component` | `ComponentType` | | Optional content component reference |
21
+
22
+ ### `TabNavigationUrlSyncOptions`
23
+ Configuration object for URL synchronization:
24
+ - `paramName` — query param name (default: `'tab'`)
25
+ - `replaceState` — use `history.replace` instead of `push` (default: `true`)
22
26
 
23
27
  ## Usage Example
24
28
 
25
- **Controlled mode (no URL sync):**
26
-
27
29
  ```typescript
28
- import { TabNavigation, TabItem } from './tab-navigation'
29
- import { HomeIcon, SettingsIcon } from 'lucide-react'
30
-
31
- const tabs: TabItem[] = [
32
- { id: 'home', label: 'Home', icon: HomeIcon },
33
- { id: 'settings', label: 'Settings', icon: SettingsIcon, indicator: 'warning' },
34
- ]
35
-
30
+ // Controlled mode
36
31
  <TabNavigation
37
- tabs={tabs}
38
- activeTab={activeTab}
39
- onTabChange={setActiveTab}
40
- >
41
- {(tab) => <div>Content for: {tab}</div>}
42
- </TabNavigation>
43
- ```
44
-
45
- **URL sync mode (persists active tab in query string):**
32
+ tabs={[
33
+ { id: 'overview', label: 'Overview' },
34
+ { id: 'settings', label: 'Settings', indicator: 'warning' },
35
+ ]}
36
+ activeTab={currentTab}
37
+ onTabChange={setCurrentTab}
38
+ />
46
39
 
47
- ```typescript
40
+ // URL sync mode with render prop
48
41
  <TabNavigation
49
42
  tabs={tabs}
50
- urlSync={{ paramName: 'section', replaceState: true }}
51
- defaultTab="home"
43
+ urlSync={{ paramName: 'tab', replaceState: true }}
44
+ defaultTab="overview"
52
45
  >
53
- {(activeTab) => <ActiveTabContent tabId={activeTab} />}
46
+ {(activeTab) => <ContentPanel tab={activeTab} />}
54
47
  </TabNavigation>
55
- ```
56
48
 
57
- **Forced scroll gradients with custom shadow color:**
58
-
59
- ```typescript
49
+ // Stretched tabs with forced gradients
60
50
  <TabNavigation
61
51
  tabs={tabs}
52
+ stretchTabs
62
53
  showRightGradient
63
54
  shadowClassName="from-black"
64
- urlSync
65
55
  />
66
56
  ```
67
57
 
68
- ## Behavior Notes
58
+ ## Notes
69
59
 
70
- - Scroll overflow is detected via `ResizeObserver` and `scroll` events fade gradients appear automatically on overflowing edges
71
- - The bottom border line fades to transparent on edges with active scroll shadows
72
- - URL sync mode reacts to browser back/forward navigation via `searchParams` changes
73
- - `indicator` dots render as color-coded badges (`error` → red, `warning` → accent yellow, `success` → green) over the tab icon
60
+ - Horizontal mouse wheel scrolling is intercepted and normalized across deltaMode variants (pixel, line, page)
61
+ - On mount, the active tab snaps instantly into view (`auto`); subsequent changes scroll smoothly
62
+ - Left/right fade gradients appear automatically on overflow, or can be forced via `showLeftGradient` / `showRightGradient`
63
+ - Source: [`tab-navigation.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/tab-navigation.tsx)
@@ -1,40 +1,57 @@
1
- <!-- source-hash: 0e28e1e106dbf76027ae86587226825d -->
2
- A accessible, styled tab selector component that renders a group of toggle buttons for switching between views or options, supporting icons, badges, disabled states, and two visual variants.
1
+ <!-- source-hash: 3ee9242b5f7936c8afca1ad57b705677 -->
2
+ A styled tab selector component that renders a group of toggle buttons for switching between named views or modes, supporting icons, badges, two visual variants, and disabled states.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### Interfaces
7
- - **`TabSelectorItem`** Defines individual tab configuration: `id`, optional `label`, `ariaLabel` (required for icon-only tabs), `icon`, `disabled`, and `badge`
8
- - **`TabSelectorProps`** — Component props including `value`, `onValueChange`, `items`, `variant`, `label`, `disabled`, and `className`
9
-
10
- ### Component
11
- - **`TabSelector`** Controlled tab button group that maps `items` to styled `<button>` elements, applying active/disabled/hover styles based on state and variant
6
+ ### `TabSelectorItem`
7
+ Configuration object for each tab button:
8
+
9
+ | Property | Type | Description |
10
+ |---|---|---|
11
+ | `id` | `string` | Unique identifier |
12
+ | `label` | `string?` | Display text (omit for icon-only tabs) |
13
+ | `ariaLabel` | `string?` | Required when `label` is omitted |
14
+ | `icon` | `ReactNode?` | Leading icon |
15
+ | `disabled` | `boolean?` | Disables this specific tab |
16
+ | `badge` | `ReactNode?` | Trailing badge element |
17
+
18
+ ### `TabSelectorProps`
19
+ | Property | Type | Description |
20
+ |---|---|---|
21
+ | `value` | `string` | Currently selected tab id |
22
+ | `onValueChange` | `(value: string) => void` | Selection change handler |
23
+ | `items` | `TabSelectorItem[]` | Tabs to render |
24
+ | `variant` | `'primary' \| 'secondary'` | Active tab highlight style (default: `'primary'`) |
25
+ | `label` | `string?` | Optional heading above the selector |
26
+ | `disabled` | `boolean?` | Disables the entire selector |
27
+ | `className` | `string?` | Additional root container classes |
28
+
29
+ ### `TabSelector`
30
+ The exported component. Renders a pill-style container with flex buttons — active tab receives accent background (`primary`) or surface background (`secondary`); inactive tabs are transparent with hover state.
12
31
 
13
32
  ## Usage Example
14
33
 
15
34
  ```typescript
16
- import { TabSelector } from './tab-selector'
35
+ import { TabSelector, TabSelectorItem } from './tab-selector'
17
36
  import { LayoutGrid, List } from 'lucide-react'
18
37
 
19
- const [view, setView] = React.useState('grid')
20
-
21
- <TabSelector
22
- value={view}
23
- onValueChange={setView}
24
- label="View Mode"
25
- variant="primary"
26
- items={[
27
- { id: 'grid', label: 'Grid', icon: <LayoutGrid /> },
28
- { id: 'list', label: 'List', icon: <List /> },
29
- { id: 'map', label: 'Map', disabled: true },
30
- ]}
31
- />
32
- ```
33
-
34
- ## Notes
35
-
36
- | Prop | Default | Description |
37
- |------|---------|-------------|
38
- | `variant` | `primary` | `primary` uses accent background; `secondary` uses surface grey |
39
- | `disabled` | `undefined` | Disables all tabs when set; overrides per-item `disabled` |
40
- | `ariaLabel` | — | Required on items where `label` is omitted (icon-only) |
38
+ const tabs: TabSelectorItem[] = [
39
+ { id: 'grid', label: 'Grid', icon: <LayoutGrid /> },
40
+ { id: 'list', label: 'List', icon: <List /> },
41
+ { id: 'archive', label: 'Archive', disabled: true },
42
+ ]
43
+
44
+ function ViewToggle() {
45
+ const [view, setView] = React.useState('grid')
46
+
47
+ return (
48
+ <TabSelector
49
+ value={view}
50
+ onValueChange={setView}
51
+ items={tabs}
52
+ variant="secondary"
53
+ label="View"
54
+ />
55
+ )
56
+ }
57
+ ```
@@ -1,41 +1,54 @@
1
- <!-- source-hash: d5dd75145a233121b84df9bbdd129b81 -->
2
- A React tabs component built on Radix UI primitives that provides accessible, styled tab navigation with customizable appearance and keyboard support.
1
+ <!-- source-hash: 41600349bb11b006dae1275c44f0e683 -->
2
+ A **deprecated** Radix UI-based tabs component set that wraps `@radix-ui/react-tabs` with legacy shadcn/ui styling tokens. All exports are marked for migration to `TabNavigation` from `components/ui/tab-navigation`.
3
+
4
+ > ⚠️ **Deprecated:** Do not use in new code. Migrate to [`TabNavigation`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/components/ui/tab-navigation.tsx) which provides ODS tokens, URL-sync, and overflow scroll shadows.
3
5
 
4
6
  ## Key Components
5
7
 
6
- - **`Tabs`** - Root container component (alias for `TabsPrimitive.Root`)
7
- - **`TabsList`** - Container for tab triggers with muted background styling
8
- - **`TabsTrigger`** - Individual tab button with active/inactive states and focus management
9
- - **`TabsContent`** - Content panel that displays when corresponding tab is active
8
+ | Export | Type | Description |
9
+ |---|---|---|
10
+ | `Tabs` | Component | Root wrapper alias for `TabsPrimitive.Root` |
11
+ | `TabsList` | Component | Container for tab trigger buttons; styled with `bg-muted` and `rounded-md` |
12
+ | `TabsTrigger` | Component | Individual tab button; applies active-state background and shadow via `data-[state=active]` |
13
+ | `TabsContent` | Component | Panel rendered when its associated trigger is active |
14
+
15
+ All components forward refs and accept the full props of their underlying Radix primitive.
10
16
 
11
17
  ## Usage Example
12
18
 
13
19
  ```typescript
14
- import { Tabs, TabsList, TabsTrigger, TabsContent } from "./components/ui/tabs"
20
+ import { Tabs, TabsList, TabsTrigger, TabsContent } from "./tabs"
15
21
 
16
- function MyTabs() {
22
+ // ⚠️ Deprecated — use TabNavigation for new code
23
+ export function LegacyTabExample() {
17
24
  return (
18
- <Tabs defaultValue="overview" className="w-full">
25
+ <Tabs defaultValue="overview">
19
26
  <TabsList>
20
27
  <TabsTrigger value="overview">Overview</TabsTrigger>
21
- <TabsTrigger value="analytics">Analytics</TabsTrigger>
22
- <TabsTrigger value="settings">Settings</TabsTrigger>
28
+ <TabsTrigger value="details">Details</TabsTrigger>
23
29
  </TabsList>
24
-
30
+
25
31
  <TabsContent value="overview">
26
- <div>Overview content here</div>
32
+ <p>Overview content</p>
27
33
  </TabsContent>
28
-
29
- <TabsContent value="analytics">
30
- <div>Analytics dashboard</div>
31
- </TabsContent>
32
-
33
- <TabsContent value="settings">
34
- <div>Settings panel</div>
34
+ <TabsContent value="details">
35
+ <p>Details content</p>
35
36
  </TabsContent>
36
37
  </Tabs>
37
38
  )
38
39
  }
39
40
  ```
40
41
 
41
- All components use `forwardRef` for proper ref forwarding and include comprehensive accessibility features like keyboard navigation, focus management, and ARIA attributes through Radix UI primitives.
42
+ ## Migration
43
+
44
+ Replace with `TabNavigation` from `components/ui/tab-navigation`:
45
+
46
+ ```typescript
47
+ // Before (deprecated)
48
+ import { Tabs, TabsList, TabsTrigger, TabsContent } from "./tabs"
49
+
50
+ // After
51
+ import { TabNavigation } from "components/ui/tab-navigation"
52
+ ```
53
+
54
+ **Source:** [`tabs.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/components/ui/tabs.tsx)