@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,48 +1,63 @@
1
- <!-- source-hash: 3ff43cdc4cea745588c40e71214b7483 -->
2
- Renders the body of a `DataTable` component, handling three states: loading skeleton, empty state, and populated rows with optional padding placeholders.
1
+ <!-- source-hash: 101c8dc656e99322ce64f23baac27a3e -->
2
+ Renders the body of a `DataTable` component, handling three states: loading skeleton, empty state, and populated rows with optional row padding to maintain stable table height.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `DataTableBody` | Component | Main body renderer consuming `DataTableContext` |
9
- | `DataTableBodyProps` | Interface | Props interface with generic row type `T` |
6
+ ### `DataTableBody<T>`
7
+ The primary export. Consumes `DataTableContext` via `useDataTableContext` and conditionally renders one of three views:
10
8
 
11
- ### Key Props
9
+ - **Loading:** Displays `DataTableSkeleton` when `loading={true}` and rows are empty
10
+ - **Empty:** Renders `DataTableEmpty` using `emptyState` props (or falls back to deprecated `emptyMessage`)
11
+ - **Rows:** Maps each row to a `DataTableRow`, with optional sub-row expansion via `renderSubRow`
12
12
 
13
- | Prop | Type | Description |
14
- |------|------|-------------|
15
- | `loading` | `boolean` | Shows skeleton rows when `true` and data is empty |
16
- | `skeletonRows` | `number` | Number of skeleton rows to render (default: `10`) |
17
- | `emptyMessage` | `string` | Message shown when data is empty (default: `'No data available'`) |
18
- | `minRows` | `number` | Pads with invisible rows to maintain stable table height |
19
- | `onRowClick` | `(item: T) => void` | Click handler for entire row (skips `data-no-row-click` elements) |
20
- | `rowHref` | `(item: T) => string` | Converts rows to `next/link` anchors; ignored if `onRowClick` is set |
21
- | `rowClassName` | `string \| ((item, index) => string)` | Per-row class; use `useCallback` to preserve `React.memo` |
22
- | `compact` | `boolean` | Enables dense row height |
13
+ ### `DataTableBodyProps<T>`
14
+ Full interface for configuring body behavior including:
15
+
16
+ | Prop | Purpose |
17
+ |---|---|
18
+ | `loading` | Triggers skeleton display when data is empty |
19
+ | `emptyState` | `NoDataProps` for rich empty state UI |
20
+ | `emptyMessage` | ⚠️ Deprecated use `emptyState` instead |
21
+ | `skeletonRows` | Number of skeleton rows (default: `10`) |
22
+ | `rowClassName` | Static string or per-row function |
23
+ | `onRowClick` | Row click handler (memoize with `useCallback`) |
24
+ | `rowHref` | Converts rows to Next.js links (ignored if `onRowClick` set) |
25
+ | `minRows` | Pads with invisible rows to stabilize table height |
26
+ | `renderSubRow` | Returns expandable content rendered below a row |
23
27
 
24
28
  ## Usage Example
25
29
 
26
30
  ```typescript
27
31
  import { DataTable } from './data-table'
28
32
  import { DataTableBody } from './data-table-body'
29
-
30
- const handleRowClick = useCallback((item: MyItem) => {
31
- router.push(`/items/${item.id}`)
32
- }, [])
33
-
34
- const getRowHref = useCallback((item: MyItem) => `/items/${item.id}`, [])
35
-
36
- <DataTable columns={columns} data={data}>
37
- <DataTableBody<MyItem>
38
- loading={isLoading}
39
- skeletonRows={10}
40
- minRows={10}
41
- emptyMessage="No items found"
42
- onRowClick={handleRowClick}
43
- compact={false}
44
- />
45
- </DataTable>
33
+ import { DataTableColumn } from './data-table-column'
34
+ import { useCallback } from 'react'
35
+
36
+ function UserTable({ users, isLoading }) {
37
+ const handleRowClick = useCallback((user) => {
38
+ router.push(`/users/${user.id}`)
39
+ }, [])
40
+
41
+ const rowClassName = useCallback(
42
+ (user, index) => (index % 2 === 0 ? 'bg-muted/30' : ''),
43
+ []
44
+ )
45
+
46
+ return (
47
+ <DataTable data={users} columns={columns}>
48
+ <DataTableBody<User>
49
+ loading={isLoading}
50
+ skeletonRows={8}
51
+ minRows={8}
52
+ compact
53
+ onRowClick={handleRowClick}
54
+ rowClassName={rowClassName}
55
+ emptyState={{ title: 'No users found', description: 'Try adjusting your filters.' }}
56
+ renderSubRow={(user) => user.notes ? <UserNotes notes={user.notes} /> : null}
57
+ />
58
+ </DataTable>
59
+ )
60
+ }
46
61
  ```
47
62
 
48
- > **Performance tip:** Always memoize `onRowClick`, `rowHref`, and function-form `rowClassName` with `useCallback` to preserve `React.memo` optimization on `DataTableRow`.
63
+ > **Performance note:** Always memoize `onRowClick`, `rowHref`, and function-form `rowClassName` with `useCallback` to preserve `React.memo` optimizations on `DataTableRow`.
@@ -1,47 +1,31 @@
1
- <!-- source-hash: f96e91397f5dd889c77eca76b3638ae9 -->
2
- Empty state for data tables. Renders the shared `NoData` empty state, centered, defaulting to a "no search results" message. Every field is overridable.
1
+ <!-- source-hash: 163304355d3ebe8ec3a835034f1a3713 -->
2
+ Renders the empty state for `DataTable.Body` when no rows are present, delegating to the shared `NoData` component with "no search results" defaults.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `DataTableEmptyProps`
7
- Extends `NoDataProps`accepts any `NoData` prop. The most common:
8
-
9
- | Prop | Type | Default | Description |
10
- |------|------|---------|-------------|
11
- | `icon` | `ReactNode` | `<SearchIcon />` | Leading glyph |
12
- | `title` | `ReactNode` | `'No results found'` | Primary line |
13
- | `description` | `ReactNode` | `'Try adjusting your search or filters'` | Secondary line |
14
- | `actions` | `NoDataActionProps[]` | — | Optional info blocks |
15
- | `buttonLabel` / `button` | `ReactNode` | — | Optional footer button |
16
- | `className` | `string` | — | Merged onto the `NoData` wrapper |
17
-
18
- ### `DataTableEmpty`
19
- A client component that renders `NoData` with the defaults above. Pass any field to override it.
6
+ - **`DataTableEmpty`** — Client component that wraps `NoData`, pre-configured with a `SearchIcon`, title `"No results found"`, and description `"Try adjusting your search or filters"`. Applies `py-[var(--spacing-system-xxl)]` vertical padding by default.
7
+ - **`DataTableEmptyProps`**Re-exports all `NoDataProps` fields, making every visual element overridable.
20
8
 
21
9
  ## Usage Example
22
10
 
23
11
  ```typescript
24
- // Default search icon, "No results found", "Try adjusting your search or filters"
12
+ // Default empty state (search icon + default copy)
25
13
  <DataTableEmpty />
26
14
 
27
- // Override the copy
28
- <DataTableEmpty title="No tickets found" description="Create your first ticket" />
15
+ // Override title and description only
16
+ <DataTableEmpty
17
+ title="No devices found"
18
+ description="Add a device to get started"
19
+ />
29
20
 
30
- // Full empty state with blocks + button (all NoData props are accepted)
21
+ // Full override with custom icon and action
31
22
  <DataTableEmpty
32
- title="No devices yet"
33
- description="Connect your first device to get started"
34
- buttonLabel="Add device"
35
- onButtonClick={() => router.push('/devices/new')}
23
+ icon={<ServerIcon />}
24
+ title="No servers available"
25
+ description="Provision a server to see it here"
26
+ buttonLabel="Add Server"
27
+ onButtonClick={handleAdd}
36
28
  />
37
29
  ```
38
30
 
39
- Usually you don't render `DataTableEmpty` directly configure it through `DataTable.Body`:
40
-
41
- ```typescript
42
- // New: pass any NoData props via `emptyState`
43
- <DataTable.Body emptyState={{ title: 'No devices yet', description: 'Add your first device' }} />
44
-
45
- // Legacy (deprecated): `emptyMessage` maps to the empty state's title
46
- <DataTable.Body emptyMessage="No devices match your filters" />
47
- ```
31
+ All props are passed through to [`NoData`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/no-data), so any `NoDataProps` field (`icon`, `title`, `description`, `actions`, `buttonLabel`, etc.) can be used to fully customise the empty state. The `className` prop merges with the default padding class via `cn`.
@@ -1,55 +1,58 @@
1
- <!-- source-hash: 7af4501b2005cad2efd91858dbef4eba -->
2
- Renders the sticky-capable column header row for a data table, including sort indicators, column filters, and an optional right-side slot.
1
+ <!-- source-hash: 979b80e9c2663735843d09def1e09d24 -->
2
+ Renders the column header row for a TanStack React Table data table, handling sorting indicators, column filters, responsive visibility, sticky positioning, and an optional right-side slot.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `DataTableHeader`
7
- Main exported component. Reads the table instance from context, renders a single header group row, and handles:
8
- - **Sticky positioning** via `stickyHeader` / `stickyHeaderOffset` props
9
- - **Responsive visibility** — hidden on mobile, shown from `md` breakpoint up
10
- - **Right slot** — absolutely positioned when visible header cells exist, inline otherwise
6
+ ### Interfaces
11
7
 
12
- ### `DataTableSortState`
13
- ```typescript
14
- interface DataTableSortState {
15
- id: string // column ID being sorted
16
- desc: boolean // true = descending
17
- }
18
- ```
19
- Stateless descriptor — the consumer owns the sort cycle and passes the current state down.
8
+ - **`DataTableSortState`** — Sort descriptor `{ id: string, desc: boolean }` consumed by the header to render directional icons.
9
+ - **`DataTableHeaderProps`** — Props for the public `DataTableHeader` component.
10
+
11
+ ### Exports
12
+
13
+ - **`DataTableHeader`** — Main header component. Reads table state via `useDataTableContext`, maps header groups to `HeaderCell` instances, and handles sticky positioning and the `rightSlot`.
20
14
 
21
15
  ### Internal Components
22
16
 
23
- | Component | Purpose |
24
- |-----------|---------|
25
- | `HeaderCell` | Renders one column header — either a `DataTableColumnFilter` or a sortable/plain label |
26
- | `HeaderLabel` | Renders string headers with ODS typography; delegates render-function headers to `flexRender` |
27
- | `SortIcon` | Displays `↑`, `↓`, or a neutral swap icon based on current sort direction |
17
+ | Component | Role |
18
+ |---|---|
19
+ | `HeaderCell` | Renders a single column header — either a `DataTableColumnFilter` (filterable columns) or a clickable sort label. Handles tablet breakpoint visibility via `meta.filter` and `meta.alwaysShowHeader`. |
20
+ | `HeaderLabel` | Renders string headers with ODS typography styles, or delegates to `flexRender` for render-function/ReactNode headers. |
21
+ | `SortIcon` | Renders `Arrow01UpIcon`, `Arrow01DownIcon`, or `SwitchVrIcon` based on current sort direction. |
22
+ | `resolveHeaderLabel` | Utility that extracts a plain string label from a column definition for filter placement. |
28
23
 
29
24
  ## Usage Example
30
25
 
31
26
  ```typescript
32
- // Consumer owns the sort state and toggle cycle
33
- const [sort, setSort] = useState<DataTableSortState | null>(null)
34
-
35
- function handleSortChange(columnId: string) {
36
- setSort(prev =>
37
- prev?.id === columnId
38
- ? prev.desc ? null : { id: columnId, desc: true }
39
- : { id: columnId, desc: false }
27
+ import { DataTableHeader } from './data-table-header'
28
+ import { useState } from 'react'
29
+
30
+ function MyTable() {
31
+ const [sort, setSort] = useState<{ id: string; desc: boolean } | null>(null)
32
+
33
+ function handleSortChange(columnId: string) {
34
+ setSort(prev =>
35
+ prev?.id === columnId
36
+ ? prev.desc
37
+ ? null // none → asc → desc → none cycle
38
+ : { id: columnId, desc: true }
39
+ : { id: columnId, desc: false }
40
+ )
41
+ }
42
+
43
+ return (
44
+ <DataTable data={rows} columns={columns}>
45
+ <DataTableHeader
46
+ stickyHeader
47
+ stickyHeaderOffset="top-[56px]"
48
+ sort={sort}
49
+ onSortChange={handleSortChange}
50
+ rightSlot={<DataTable.RowCount itemName="device" />}
51
+ />
52
+ <DataTableBody />
53
+ </DataTable>
40
54
  )
41
55
  }
42
-
43
- <DataTable table={table}>
44
- <DataTable.Header
45
- stickyHeader
46
- stickyHeaderOffset="top-[56px]"
47
- sort={sort}
48
- onSortChange={handleSortChange}
49
- rightSlot={<DataTable.RowCount itemName="device" />}
50
- />
51
- <DataTable.Body />
52
- </DataTable>
53
56
  ```
54
57
 
55
- > **Note:** Sorting is opt-in per column via `meta.sortable = true` in the column definition. The component never calls TanStack's built-in sort APIsall sort logic lives in the consumer.
58
+ > **Note:** Sorting state and cycle logic are fully consumer-owned. The header renders sort indicators from the `sort` prop and fires `onSortChange` on clickit does not call TanStack's internal sort APIs.
@@ -1,47 +1,47 @@
1
- <!-- source-hash: bcf36c7fa76e89e4c5f5a36b1b5b7494 -->
2
- Renders a single data table row as either a navigable `<Link>` or a clickable `<div>`, with built-in click-bubbling control for nested interactive elements.
1
+ <!-- source-hash: 3180bdfee27f541cd2cbf5aafc31dc6b -->
2
+ Renders a single data table row as a styled card, supporting click handlers, link navigation, compact/auto-height sizing, and optional expandable sub-row content.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `DataTableRow` | `React.memo` component | Memoized row renderer wrapping `DataTableRowImpl` |
9
- | `DataTableRowProps<T>` | Interface | Typed props for row data, click handler, href, compact mode, and className |
10
- | `CellContent` | Internal component | Wraps primitive string/number values in default truncated text styling |
6
+ - **`DataTableRow`** Memoized row component (wraps `DataTableRowImpl`) that renders TanStack Table cells inside a rounded card. Exported as `memo`-wrapped but typed as the original generic function.
7
+ - **`DataTableRowProps<T>`** — Props interface supporting `row`, `onClick`, `href`, `compact`, `autoHeight`, `className`, and `subRow`.
8
+ - **`CellContent`** — Internal helper that wraps primitive (`string` | `number`) cell values in truncated, styled `<span>` elements; passes React node children through unchanged.
9
+ - **`handleClick`** Memoized click handler implementing the click-bubbling protocol: ignores events from portaled descendants outside the row DOM subtree and short-circuits on `[data-no-row-click]` elements.
11
10
 
12
11
  ## Click-Bubbling Protocol
13
12
 
14
- The row implements a `data-no-row-click` attribute contract. Any cell element that should **not** trigger row navigation or `onClick` must carry this attribute:
15
-
16
- ```tsx
17
- // Column definition with opt-out buttons
18
- {
19
- id: 'actions',
20
- cell: ({ row }) => (
21
- <div data-no-row-click className="flex gap-2 justify-end">
22
- <Button onClick={() => edit(row.original)}>Edit</Button>
23
- </div>
24
- ),
25
- }
26
- ```
27
-
28
- Portaled descendants (tooltips, dropdowns via `FloatingPortal`) are also safely ignored — clicks whose DOM target falls outside the row's `containerRef` are suppressed without needing `stopPropagation` at the source.
13
+ Any interactive element inside a cell that should not trigger row navigation or `onClick` must carry the `data-no-row-click` attribute.
29
14
 
30
15
  ## Usage Example
31
16
 
32
17
  ```typescript
33
- // Clickable row (div mode)
34
- <DataTableRow
35
- row={row}
36
- onClick={(item) => console.log('Selected:', item)}
37
- compact={false}
38
- />
18
+ import { DataTableRow } from './data-table-row'
19
+
20
+ // Basic click handler
21
+ <DataTableRow row={row} onClick={(item) => console.log(item)} />
22
+
23
+ // Link mode (full-card anchor)
24
+ <DataTableRow row={row} href={`/items/${row.original.id}`} />
39
25
 
40
- // Link mode enables browser-native behaviours (right-click, Cmd+click, :visited)
26
+ // Link mode with sub-row (link wraps cells only)
41
27
  <DataTableRow
42
28
  row={row}
43
- href={`/tickets/${row.original.id}`}
29
+ href={`/items/${row.original.id}`}
30
+ subRow={<ExpandedDetail item={row.original} />}
44
31
  />
32
+
33
+ // Column with action buttons (opt out of row click)
34
+ const columns = [{
35
+ id: 'actions',
36
+ cell: ({ row }) => (
37
+ <div data-no-row-click className="flex gap-2 justify-end">
38
+ <Button onClick={() => edit(row.original)}>Edit</Button>
39
+ </div>
40
+ ),
41
+ meta: { width: 'w-[160px] shrink-0', align: 'right' },
42
+ }]
45
43
  ```
46
44
 
47
- > **Performance note:** Pass stable references for `onClick` and `className` via `useCallback` / `useMemo` in the parent to avoid unnecessary re-renders in long lists. `href` and string `className` are compared by value automatically.
45
+ ## Source
46
+
47
+ [`data-table-row.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/data-table-row.tsx)
@@ -1,25 +1,27 @@
1
- <!-- source-hash: 0bb70a064412065a884dd7759655fdc8 -->
2
- Augments TanStack React Table's `ColumnMeta` interface with Flamingo-specific display and behavior options, and exports shared filter/breakpoint types used across data table components.
1
+ <!-- source-hash: 6efeba8f22609f4cc9f714e98d390080 -->
2
+ Extends TanStack Table's `ColumnMeta` interface with Flamingo-specific column configuration options, and exports shared filter/breakpoint types used across the data table system.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `TailwindBreakpoint` | Type alias | Union of responsive breakpoints: `'md' \| 'lg' \| 'xl' \| '2xl'` |
9
- | `DataTableFilterOption` | Interface | Shape for individual filter dropdown options (`id`, `label`, `value`) |
10
- | `ColumnMeta` (module augmentation) | Interface extension | Adds Flamingo-specific metadata fields to TanStack Table's `ColumnMeta` |
6
+ ### Types & Interfaces
11
7
 
12
- ### `ColumnMeta` Augmented Fields
8
+ - **`TailwindBreakpoint`** — Union type of supported responsive breakpoints: `'md' | 'lg' | 'xl' | '2xl'`
9
+ - **`DataTableFilterOption`** — Shape for individual filter dropdown options, containing `id`, `label`, and `value` fields
13
10
 
14
- | Field | Type | Description |
15
- |-------|------|-------------|
11
+ ### `ColumnMeta` Module Augmentation
12
+
13
+ Extends `@tanstack/react-table`'s `ColumnMeta` with:
14
+
15
+ | Property | Type | Description |
16
+ |---|---|---|
16
17
  | `width` | `string` | Tailwind width class (e.g. `'w-40'`, `'flex-1 min-w-0'`) |
17
- | `align` | `'left' \| 'center' \| 'right'` | Horizontal alignment for cell and header |
18
- | `hideAt` | `TailwindBreakpoint \| TailwindBreakpoint[]` | Hides the column at/below specified breakpoint(s) |
19
- | `filter` | `{ options, placement? }` | Enables a filter dropdown in the header with provided options |
20
- | `sortable` | `boolean` | Opt-in sort indicator in header; defaults to `false` |
21
- | `cellClassName` | `string` | Extra class names for the body cell wrapper |
22
- | `headerClassName` | `string` | Extra class names for the header cell wrapper |
18
+ | `align` | `'left' \| 'center' \| 'right'` | Cell/header horizontal alignment |
19
+ | `hideAt` | `TailwindBreakpoint \| TailwindBreakpoint[]` | Hide column at/below specified breakpoints |
20
+ | `alwaysShowHeader` | `boolean` | Keep header visible on tablet even without a filter |
21
+ | `filter` | `{ options, placement? }` | Renders a filter dropdown with provided options |
22
+ | `sortable` | `boolean` | Opt-in sort indicator on header (default `false`) |
23
+ | `cellClassName` | `string` | Extra classes on the body cell wrapper |
24
+ | `headerClassName` | `string` | Extra classes on the header cell wrapper |
23
25
 
24
26
  ## Usage Example
25
27
 
@@ -32,22 +34,15 @@ const statusOptions: DataTableFilterOption[] = [
32
34
  { id: 'inactive', label: 'Inactive', value: 'inactive' },
33
35
  ]
34
36
 
35
- const columns: ColumnDef<User>[] = [
36
- {
37
- accessorKey: 'name',
38
- meta: {
39
- width: 'flex-1 min-w-0',
40
- align: 'left',
41
- sortable: true,
42
- hideAt: ['md', 'lg'],
43
- },
44
- },
37
+ const columns: ColumnDef<MyRow>[] = [
45
38
  {
46
39
  accessorKey: 'status',
47
40
  meta: {
48
- width: 'w-40',
41
+ width: 'w-32',
42
+ align: 'center',
43
+ hideAt: 'md',
44
+ sortable: true,
49
45
  filter: { options: statusOptions, placement: 'bottom-start' },
50
- cellClassName: 'font-medium',
51
46
  },
52
47
  },
53
48
  ]
@@ -1,40 +1,32 @@
1
- <!-- source-hash: 10ec2f9a1b5237b3543c1a35d4d9d860 -->
2
- Renders a navigable breadcrumb trail for a file manager UI, displaying a series of clickable path segments separated by chevron icons.
1
+ <!-- source-hash: 9574783e479f4ebba0f4fa88058e32c3 -->
2
+ Renders a navigable breadcrumb trail for the file manager, displaying hierarchical path segments as clickable buttons separated by chevron icons.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`FileManagerBreadcrumb`** — Main exported component that maps over a `FileManagerBreadcrumbProps.items` array to render a `<nav>` with interactive path buttons
7
- - **`ChevronRight`** — Lucide icon injected as a separator between breadcrumb segments (omitted before the first item)
8
- - **`cn`** — Utility for conditional class merging
9
-
10
- ## Props (`FileManagerBreadcrumbProps`)
11
-
12
- | Prop | Description |
13
- |------|-------------|
14
- | `items` | Array of breadcrumb segments, each with a `label` and `path` |
15
- | `onItemClick` | Optional callback invoked with the segment's `path` on click |
16
- | `className` | Optional additional class names applied to the `<nav>` element |
17
-
18
- ## Behavior Notes
19
-
20
- - The **last item** receives `font-medium` styling to visually indicate the current location
21
- - All items use `break-all` to handle long path strings gracefully within wrapped layouts
22
- - Separators use `flex-shrink-0` to prevent chevrons from collapsing in tight spaces
6
+ - **`FileManagerBreadcrumb`** — Main export; a `<nav>`-based breadcrumb component that maps over `items` to render path segments with `ChevronRight` separators.
7
+ - **`FileManagerBreadcrumbProps`** — Type contract imported from `./types`, defining `items`, `onItemClick`, and `className` props.
23
8
 
24
9
  ## Usage Example
25
10
 
26
11
  ```typescript
27
12
  import { FileManagerBreadcrumb } from './file-manager-breadcrumb'
28
13
 
29
- const breadcrumbs = [
30
- { label: 'Home', path: '/' },
14
+ const breadcrumbItems = [
15
+ { label: 'Root', path: '/' },
31
16
  { label: 'Documents', path: '/documents' },
32
17
  { label: 'Reports', path: '/documents/reports' },
33
18
  ]
34
19
 
35
20
  <FileManagerBreadcrumb
36
- items={breadcrumbs}
21
+ items={breadcrumbItems}
37
22
  onItemClick={(path) => console.log('Navigate to:', path)}
38
- className="px-4 py-2"
23
+ className="my-2"
39
24
  />
40
- ```
25
+ ```
26
+
27
+ ## Behavior Notes
28
+
29
+ - The **last item** receives `font-medium` styling to visually indicate the current location.
30
+ - `onItemClick` is optional (`?.`), so the component renders safely without a click handler.
31
+ - Chevron separators are suppressed for the first item (`index > 0` guard).
32
+ - Layout uses `flex-wrap` with `break-words`/`break-all` to handle long paths gracefully on narrow viewports.
@@ -1,35 +1,43 @@
1
- <!-- source-hash: fd21e114568a67d1874d4692f7a1d514 -->
2
- Empty state component for the File Manager UI, displaying a centered message with an icon when a folder contains no files or folders.
1
+ <!-- source-hash: c654fe192ed6ffc14cb84c82b7282c99 -->
2
+ Empty state component for the FileManager, displayed when a folder contains no files or folders.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`FileManagerEmpty`** — React component that renders a centered empty state with a folder icon, heading, description text, and an optional action button
6
+ - **`FileManagerEmpty`** — A centered empty state UI with an icon, heading, description text, and an optional call-to-action button.
7
7
 
8
8
  ### Props (`FileManagerEmptyProps`)
9
9
 
10
- | Prop | Default | Description |
11
- |------|---------|-------------|
12
- | `message` | `'No files or folders found'` | Primary heading text |
13
- | `description` | `'This folder is empty...'` | Secondary descriptive text |
14
- | `action` | `undefined` | Optional `{ label, onClick }` to render a call-to-action button |
15
- | `className` | `undefined` | Additional CSS classes for the wrapper |
10
+ | Prop | Type | Default | Description |
11
+ |---|---|---|---|
12
+ | `message` | `string` | `'No files or folders found'` | Primary heading text |
13
+ | `description` | `string` | `'This folder is empty...'` | Secondary descriptive text |
14
+ | `action` | `{ label: string; onClick: () => void }` | | Optional CTA button |
15
+ | `className` | `string` | — | Additional CSS classes |
16
16
 
17
17
  ## Usage Example
18
18
 
19
19
  ```typescript
20
20
  import { FileManagerEmpty } from './file-manager-empty'
21
21
 
22
- // Basic usage
22
+ // Basic usage (defaults only)
23
23
  <FileManagerEmpty />
24
24
 
25
25
  // With custom message and action
26
26
  <FileManagerEmpty
27
- message="No documents yet"
28
- description="Upload your first document to get started."
27
+ message="No results found"
28
+ description="Try adjusting your search or filters."
29
29
  action={{
30
- label: 'Upload File',
31
- onClick: () => openUploadDialog()
30
+ label: 'Upload Files',
31
+ onClick: () => handleUpload(),
32
32
  }}
33
33
  className="min-h-[400px]"
34
34
  />
35
- ```
35
+ ```
36
+
37
+ ## Notes
38
+
39
+ - Renders a `FolderOpen` icon (Lucide) inside a circular surface background.
40
+ - The `action` button uses the `accent` variant — omit the `action` prop to render a read-only empty state.
41
+ - Styled with ODS design tokens (`ods-bg-surface`, `ods-text-primary`, etc.) ensuring theme consistency.
42
+
43
+ **Source:** [`src/.../file-manager-empty.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/src/components/file-manager/file-manager-empty.tsx)
@@ -1,48 +1,46 @@
1
- <!-- source-hash: 05e59ea279144fca6adcd04242dcc8e9 -->
2
- A loading placeholder component that displays skeleton screens while file manager content loads, mimicking the layout and structure of a complete file management interface.
1
+ <!-- source-hash: 8a43f94f3fffd8913ecdd7156f0dd6c9 -->
2
+ Loading state skeleton component for a file manager UI, rendering placeholder shimmer elements that mirror the layout of breadcrumbs, search bar, table headers, and file rows.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **FileManagerSkeleton** - Main component that renders animated skeleton placeholders
7
- - **FileManagerSkeletonProps** - Interface defining customization options:
8
- - `rows` - Number of file rows to display (default: 8)
9
- - `showSearch` - Whether to show search bar skeleton (default: true)
10
- - `showActions` - Whether to show action buttons skeleton (default: true)
6
+ ### `FileManagerSkeleton`
11
7
 
12
- The component renders skeleton placeholders for:
13
- - Breadcrumb navigation with separator icons
14
- - Action button toolbar (upload, create folder, etc.)
15
- - Search bar
16
- - Table header with column labels (NAME, SIZE, EDITED)
17
- - File/folder rows with checkboxes, icons, names, metadata, and action buttons
8
+ Main exported component that composes multiple `Skeleton` primitives into a full file manager loading state.
9
+
10
+ **Props (`FileManagerSkeletonProps`):**
11
+
12
+ | Prop | Type | Default | Description |
13
+ |------|------|---------|-------------|
14
+ | `rows` | `number` | `8` | Number of placeholder file rows to render |
15
+ | `showSearch` | `boolean` | `true` | Toggles the search bar skeleton |
16
+ | `showActions` | `boolean` | `true` | Toggles the action buttons skeleton in the toolbar |
17
+
18
+ **Rendered regions:**
19
+ - **Breadcrumb bar** — three path segment skeletons with separator dots
20
+ - **Action buttons** — four button-sized skeletons (conditionally rendered)
21
+ - **Search bar** — full-width rounded input skeleton (conditionally rendered)
22
+ - **Table header** — checkbox, NAME, SIZE, and EDITED column labels
23
+ - **Table rows** — `rows` × row with checkbox, file icon, name, size, modified date, and two icon-button skeletons
18
24
 
19
25
  ## Usage Example
20
26
 
21
27
  ```typescript
22
- import { FileManagerSkeleton } from './components/ui/file-manager-skeleton'
28
+ import { FileManagerSkeleton } from '@/components/file-manager-skeleton'
23
29
 
24
- // Basic usage with defaults
25
- function LoadingFileManager() {
26
- return <FileManagerSkeleton />
27
- }
30
+ // Default: 8 rows, search and actions visible
31
+ <FileManagerSkeleton />
28
32
 
29
- // Customized skeleton
30
- function CustomLoadingFileManager() {
31
- return (
32
- <FileManagerSkeleton
33
- rows={12}
34
- showSearch={false}
35
- showActions={true}
36
- />
37
- )
38
- }
33
+ // Minimal: 5 rows, no search bar, no action buttons
34
+ <FileManagerSkeleton rows={5} showSearch={false} showActions={false} />
39
35
 
40
- // Conditional loading state
41
- function FileManagerView({ isLoading, files }) {
42
- if (isLoading) {
43
- return <FileManagerSkeleton rows={files?.length || 8} />
44
- }
45
-
46
- return <FileManager files={files} />
36
+ // Typically used inside a Suspense boundary or conditional render
37
+ function FileManagerPage() {
38
+ return isLoading
39
+ ? <FileManagerSkeleton rows={10} />
40
+ : <FileManager files={files} />
47
41
  }
48
- ```
42
+ ```
43
+
44
+ ## Source
45
+
46
+ [`file-manager-skeleton.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/file-manager-skeleton.tsx)