@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,52 +1,64 @@
1
- <!-- source-hash: 0e65f8e03b416890c9d63ba33ba86a8e -->
2
- Cursor-based pagination UI components for navigating relay-style paginated data using start/end cursors instead of page numbers.
1
+ <!-- source-hash: 9a5725df328375e394d39d73c7bbb936 -->
2
+ Cursor-based pagination UI components supporting forward/backward navigation with optional reset-to-first-page functionality.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `CursorPagination`
7
- Full-featured pagination bar with optional info text, Previous/Next navigation, and a reset-to-first-page button. Supports both compact and standard layouts.
7
+
8
+ Full-featured pagination bar with info text display and configurable navigation controls.
9
+
10
+ **Props:**
11
+
12
+ | Prop | Type | Default | Description |
13
+ |------|------|---------|-------------|
14
+ | `hasNextPage` | `boolean` | — | Whether a next page exists |
15
+ | `hasPreviousPage` | `boolean` | — | Whether a previous page exists |
16
+ | `isFirstPage` | `boolean` | `true` | Disables reset/previous when on first page |
17
+ | `startCursor` | `string \| null` | — | Cursor passed to `onPrevious` |
18
+ | `endCursor` | `string \| null` | — | Cursor passed to `onNext` |
19
+ | `currentCount` | `number` | — | Items shown in the current page |
20
+ | `totalCount` | `number \| null` | — | Total item count (optional) |
21
+ | `itemName` | `string` | `'items'` | Label used in display text |
22
+ | `loading` | `boolean` | `false` | Disables all buttons |
23
+ | `onNext` | `(cursor: string) => void` | — | Called with `endCursor` |
24
+ | `onPrevious` | `(cursor: string) => void` | — | Called with `startCursor` |
25
+ | `onReset` | `() => void` | — | Replaces Previous button with a reset/home button |
26
+ | `showInfo` | `boolean` | `true` | Toggles the item count display text |
27
+ | `compact` | `boolean` | `false` | Reduces padding and hides button labels on mobile |
28
+ | `resetButtonLabel` | `string` | `'First'` | Label for the reset button |
29
+ | `resetButtonIcon` | `'home' \| 'rotate'` | `'home'` | Icon for the reset button |
8
30
 
9
31
  ### `CursorPaginationSimple`
10
- Minimal icon-only variant using transparent buttons — ideal for inline or space-constrained contexts like table toolbars.
11
-
12
- ### `CursorPaginationProps`
13
- Full interface supporting:
14
-
15
- | Prop | Type | Description |
16
- |------|------|-------------|
17
- | `hasNextPage` | `boolean` | Required. Enables/disables Next button |
18
- | `hasPreviousPage` | `boolean` | Enables/disables Previous button |
19
- | `isFirstPage` | `boolean` | Disables reset button when already on page 1 |
20
- | `startCursor` / `endCursor` | `string \| null` | Relay-style cursors passed back on navigation |
21
- | `totalCount` / `currentCount` | `number` | Drives the info display text |
22
- | `onNext` / `onPrevious` / `onReset` | `(cursor) => void` | Navigation callbacks |
23
- | `compact` | `boolean` | Reduces padding; hides button labels on mobile |
24
- | `resetButtonIcon` | `'home' \| 'rotate'` | Icon shown on the first-page reset button |
32
+
33
+ Compact icon-only variant using transparent buttons — accepts a subset of `CursorPaginationProps`.
25
34
 
26
35
  ## Usage Example
27
36
 
28
37
  ```typescript
29
- import { CursorPagination, CursorPaginationSimple } from './cursor-pagination'
30
-
31
- // Full pagination bar
38
+ // Full pagination bar with reset
32
39
  <CursorPagination
33
40
  hasNextPage={pageInfo.hasNextPage}
34
41
  hasPreviousPage={pageInfo.hasPreviousPage}
42
+ isFirstPage={currentPage === 0}
35
43
  startCursor={pageInfo.startCursor}
36
44
  endCursor={pageInfo.endCursor}
37
45
  currentCount={items.length}
38
- totalCount={totalCount}
46
+ totalCount={500}
39
47
  itemName="tickets"
40
48
  onNext={(cursor) => fetchPage({ after: cursor })}
41
49
  onReset={() => fetchPage({})}
42
50
  compact
43
51
  />
44
52
 
45
- // Icon-only minimal variant
53
+ // Icon-only simple variant
46
54
  <CursorPaginationSimple
47
55
  hasNextPage={pageInfo.hasNextPage}
48
- onNext={() => fetchPage({ after: pageInfo.endCursor })}
49
- onReset={() => fetchPage({})}
50
56
  isFirstPage={isFirstPage}
57
+ onNext={() => fetchPage({ after: pageInfo.endCursor })}
58
+ onReset={resetToFirstPage}
51
59
  />
52
- ```
60
+ ```
61
+
62
+ > **Navigation logic:** When `onReset` is provided, it replaces the Previous button with a Home/Reset button that is disabled on the first page. When only `onPrevious` is provided, a standard chevron-left Previous button is rendered instead.
63
+
64
+ **Source:** [`cursor-pagination.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/cursor-pagination.tsx)
@@ -1,48 +1,67 @@
1
- <!-- source-hash: ad7aa24ce00c67388baad4341f1e3d5b -->
2
- A dashboard metric card component that displays a title, value, optional percentage, circular progress indicator, and tooltip supporting both static and navigable (linked) variants.
1
+ <!-- source-hash: 1dc21dcb29b7b10e34307413ef6f6f2f -->
2
+ A React component that renders a compact metric/KPI card for dashboards, supporting values, percentage displays, circular progress rings, icons, tooltips, and optional navigation via Next.js Link.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### `DashboardInfoCard`
7
- Main export. Renders a styled card with:
8
- - **Title** — secondary text label
9
- - **Value** — formatted number (via `toLocaleString`) or string, with optional custom className
10
- - **Percentage** — displayed as a `Tag` (for `warning`/`error` variants) or plain secondary text
11
- - **Circular progress ring** — shown when `showProgress` and `percentage` are both provided
12
- - **Tooltip** — question-mark icon trigger via `FloatingTooltip`
13
- - **Link behavior** — when `href` is supplied, renders as a Next.js `Link` with hover accent styles
6
+ ### Exports
14
7
 
15
- ### `DashboardInfoCardProps`
16
- Interface driving all card configuration, including `progressOverflow` which controls how the `CircularProgress` ring handles values exceeding 100 (`'clamp'` default or `'wrap'` for overflow/overage display).
8
+ - **`DashboardInfoCard`** — Main card component
9
+ - **`DashboardInfoCardProps`** Full prop interface
10
+ - **`DashboardInfoCardPercentageDisplay`** — Union type controlling percentage render mode: `'auto'` | `'plain'` | `'tag'`
11
+ - **`DashboardInfoCardProgressSize`** — Union type for responsive ring sizing: `number | { base, md?, lg? }`
12
+
13
+ ### Internal Helpers
14
+
15
+ - **`renderPercentage()`** — Returns a `Tag` or plain text `<p>` based on `percentageDisplay` and `progressVariant`
16
+ - **`renderProgress()`** — Generates responsive `CircularProgress` rings using Tailwind display utilities; stroke width scales proportionally with ring size
17
17
 
18
18
  ## Usage Example
19
19
 
20
20
  ```typescript
21
- // Static metric card
21
+ import { DashboardInfoCard } from './dashboard-info-card'
22
+
23
+ // Basic metric card
22
24
  <DashboardInfoCard
23
25
  title="Open Tickets"
24
26
  value={142}
25
- percentage={72}
27
+ percentage={78}
26
28
  showProgress
27
29
  progressVariant="warning"
28
- tooltip="Tickets currently unresolved"
30
+ percentageDisplay="auto"
29
31
  />
30
32
 
31
- // Navigable card with overflow progress
33
+ // Navigable card with icon and tooltip
32
34
  <DashboardInfoCard
33
- title="SLA Breaches"
34
- value={18}
35
- percentage={110}
36
- showProgress
37
- progressVariant="error"
38
- progressOverflow="wrap"
35
+ title="SLA Compliance"
36
+ value="94%"
37
+ icon={<ShieldIcon />}
39
38
  href="/reports/sla"
39
+ tooltip="Percentage of tickets resolved within SLA"
40
+ progressVariant="success"
41
+ percentage={94}
42
+ showProgress
43
+ progressSize={{ base: 24, md: 56, lg: 72 }}
40
44
  />
41
45
 
42
- // Simple card, no progress
46
+ // Plain percentage with custom value size
43
47
  <DashboardInfoCard
44
- title="Devices Online"
45
- value="1,024"
46
- className="col-span-2"
48
+ title="Revenue"
49
+ value={24850}
50
+ subValue="this month"
51
+ percentage={12}
52
+ percentageDisplay="plain"
53
+ progressVariant="success"
54
+ showProgress
55
+ valueClassName="text-h2"
47
56
  />
48
- ```
57
+ ```
58
+
59
+ ## Notes
60
+
61
+ - When `href` is provided, the card renders as a Next.js `Link` with hover accent styles
62
+ - Responsive ring sizing uses Tailwind `hidden`/`block` utilities; class names must be static strings for JIT scanning
63
+ - Card height is fixed (`h-16` mobile / `h-[104px]` desktop) per Figma spec; `items-center` absorbs overflow from tall title tags
64
+
65
+ ---
66
+
67
+ **Source:** [`dashboard-info-card.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/dashboard-info-card.tsx)
@@ -1,46 +1,62 @@
1
- <!-- source-hash: c8a503e7c476a61ed70475150ecd1672 -->
2
- A composable date picker component supporting both single-date and date-range selection modes, built on `react-day-picker` and `@radix-ui/react-popover` with Flamingo's design system tokens.
1
+ <!-- source-hash: fdd0e62dc792d4f4e438f4d6eb3c262f -->
2
+ A polymorphic date picker component supporting both single-date and date-range selection modes, built on `react-day-picker` and `@radix-ui/react-popover` with custom Figma-aligned styling.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `DatePickerProps` | Type | Union of `SingleDatePickerProps` \| `RangeDatePickerProps` |
9
- | `DatePickerMode` | Type | `"single"` \| `"range"` |
10
- | `DatePickerBaseProps` | Interface | Shared props: `placeholder`, `disabled`, `fromDate`, `toDate`, `label`, `error`, `invalid`, `locale` |
11
- | `SingleDatePickerProps` | Interface | Extends base; `value: Date`, `onChange: (date) => void` |
12
- | `RangeDatePickerProps` | Interface | Extends base; `value: DateRange`, `onChange: (range) => void` |
13
- | `DatePickerCalendar` | Component | Internal calendar renderer with custom nav and range styling |
14
- | `CalendarNavButton` | Component | Chevron nav button wrapping Flamingo `Button` |
7
+ |---|---|---|
8
+ | `DatePickerProps` | Type | Discriminated union of `SingleDatePickerProps` \| `RangeDatePickerProps` |
9
+ | `DatePickerBaseProps` | Interface | Shared props: `placeholder`, `formatDate`, `disabled`, `fromDate`, `toDate`, `label`, `error`, `invalid`, `numberOfMonths` |
10
+ | `SingleDatePickerProps` | Interface | `mode: "single"`, `value?: Date`, `onChange?: (date) => void` |
11
+ | `RangeDatePickerProps` | Interface | `mode: "range"`, `value?: DateRange`, `onChange?: (range) => void` |
12
+ | `DatePickerCalendar` | Component | Internal calendar renderer; supports `fluid` layout for filter menus |
13
+ | `CalendarNavButton` | Component | Prev/next month navigation using `ChevronLeft`/`ChevronRight` icons |
14
+ | `defaultFormatDate` | Function | Formats a `Date` as `MM/DD/YYYY` |
15
+ | `formatDateRange` | Function | Formats a `DateRange` as `"from - to"` or just `"from"` if no end date |
16
+
17
+ ## Key Behaviors
18
+
19
+ - **Range hover preview**: Highlights dates between the first selected date and the hovered date before the range is completed.
20
+ - **Fluid mode**: When `fluid={true}`, day cells flex to fill container width (used by `DateFilterMenu`).
21
+ - **Responsive months**: On screens smaller than `md`, always shows 1 month regardless of `numberOfMonths`.
22
+ - **External sync**: `useEffect` keeps internal `draftRange` in sync when `selected` changes externally (e.g., on reset).
15
23
 
16
24
  ## Usage Example
17
25
 
18
26
  ```typescript
19
- // Single date picker
20
- <DatePicker
21
- mode="single"
22
- label="Start Date"
23
- value={selectedDate}
24
- onChange={(date) => setSelectedDate(date)}
25
- fromDate={new Date()}
26
- />
27
-
28
- // Date range picker (dual month)
29
- <DatePicker
30
- mode="range"
31
- label="Date Range"
32
- numberOfMonths={2}
33
- value={range}
34
- onChange={(range) => setRange(range)}
35
- error={formError}
36
- invalid={!!formError}
37
- />
38
- ```
27
+ import { DatePicker } from "@openframe-oss-lib/ui";
28
+ import { useState } from "react";
29
+ import type { DateRange } from "react-day-picker";
39
30
 
40
- ## Key Behaviors
31
+ // Single mode
32
+ function SingleExample() {
33
+ const [date, setDate] = useState<Date | undefined>();
34
+ return (
35
+ <DatePicker
36
+ mode="single"
37
+ value={date}
38
+ onChange={setDate}
39
+ label="Select date"
40
+ placeholder="MM/DD/YYYY"
41
+ fromDate={new Date()}
42
+ />
43
+ );
44
+ }
45
+
46
+ // Range mode
47
+ function RangeExample() {
48
+ const [range, setRange] = useState<DateRange | undefined>();
49
+ return (
50
+ <DatePicker
51
+ mode="range"
52
+ value={range}
53
+ onChange={setRange}
54
+ numberOfMonths={2}
55
+ label="Date range"
56
+ placeholder="Start – End"
57
+ />
58
+ );
59
+ }
60
+ ```
41
61
 
42
- - **Single mode**: renders one `DayPicker` month with custom nav header
43
- - **Range mode**: supports 1 or 2 simultaneous months; range start/end use accent color (`--ods-accent`), range middle uses `--ods-open-yellow-light`
44
- - **Popover trigger**: displays a calendar icon with formatted date or placeholder text; applies red border when `invalid={true}`
45
- - **Month navigation**: controlled internally via `useState<Date>`, independent of `DayPicker`'s built-in nav (hidden via `hideNavigation`)
46
- - **Locale support**: passes `locale` prop directly to `DayPicker` for i18n formatting
62
+ **Source:** [`date-picker.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/date-picker.tsx)
@@ -1,45 +1,48 @@
1
- <!-- source-hash: e2dcd0d341956fecb4817f070e40d10a -->
2
- Compact React component for displaying device name and organization in a stacked layout, optimized for use within table cells.
1
+ <!-- source-hash: d1b3b6dcee088ca646f9755a8d278b12 -->
2
+ Compact device card component designed for use in table cells, displaying device name and organization in a stacked vertical layout with graceful empty-state handling.
3
3
 
4
4
  ## Key Components
5
5
 
6
+ ### `DeviceCardCompact`
7
+ A lightweight React component that renders device identity information. Returns an empty fragment when both `deviceName` and `organization` are absent, null, `'-'`, or the string `'null'`.
8
+
6
9
  ### `DeviceCardCompactProps`
7
- Extends `React.HTMLAttributes<HTMLDivElement>` with two optional fields:
10
+ Extends `React.HTMLAttributes<HTMLDivElement>` with:
8
11
 
9
12
  | Prop | Type | Description |
10
- |------|------|-------------|
11
- | `deviceName` | `string \| null` | Primary label shown in larger text |
12
- | `organization` | `string \| null` | Secondary label shown in smaller muted text |
13
-
14
- ### `DeviceCardCompact`
15
- A display-only component that renders device info in a vertical flex column. Performs null-safety checks against `null`, `undefined`, `'-'`, and the string `'null'`. Returns an empty fragment when both values are absent.
13
+ |---|---|---|
14
+ | `deviceName` | `string \| null` | Primary label shown in `text-ods-text-primary` |
15
+ | `organization` | `string \| null` | Secondary label shown in `text-ods-text-secondary` |
16
+ | `className` | `string` | Merged via `cn()` for custom overrides |
16
17
 
17
18
  ## Usage Example
18
19
 
19
20
  ```typescript
20
- // Basic usage in a table cell
21
+ import { DeviceCardCompact } from '@openframe/ui'
22
+
23
+ // Renders both rows
21
24
  <DeviceCardCompact
22
25
  deviceName="DESKTOP-ABC123"
23
26
  organization="Acme Corp"
24
27
  />
25
28
 
26
- // Handles missing/invalid values gracefully - renders nothing
29
+ // Renders only device name
27
30
  <DeviceCardCompact
28
- deviceName={null}
31
+ deviceName="DESKTOP-ABC123"
29
32
  organization="-"
30
33
  />
31
34
 
32
- // With custom className
35
+ // Returns empty fragment — safe for sparse table data
33
36
  <DeviceCardCompact
34
- deviceName="SERVER-01"
37
+ deviceName={null}
35
38
  organization={null}
36
- className="max-w-[200px]"
37
39
  />
38
40
  ```
39
41
 
40
- ## Behavior Notes
42
+ ## Notes
43
+
44
+ - **Empty-state guard:** Values of `null`, `undefined`, `'-'`, or `'null'` (string) are treated as absent.
45
+ - **Truncation:** Both labels truncate with `truncate` and expose the full value via the `title` attribute on hover.
46
+ - **Layout:** Uses a `flex-col` container with `min-h-[60px]` to maintain consistent row height in tables.
41
47
 
42
- - **Empty state**: Returns `<></>` when both props are falsy, `'-'`, or `'null'`
43
- - **Partial render**: Renders only the available field when one value is missing
44
- - **Overflow**: Both labels use `truncate` with a `title` attribute for full text on hover
45
- - **Typography**: Device name renders at `16px` (`ods-text-primary`); organization at `14px` (`ods-text-secondary`)
48
+ **Source:** [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/device-card-compact.tsx)
@@ -1,43 +1,52 @@
1
- <!-- source-hash: c41a33e86906d6bdb122fe05e0b8b30c -->
2
- A React client component that renders a styled card UI for displaying device information, including OS type, organization, status, last seen timestamp, and tags.
1
+ <!-- source-hash: 5697c86a68ac84022a2c4a002cebbac9 -->
2
+ A client-side React card component for displaying device information including OS type, status, last-seen timestamp, and configurable action buttons.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### Interfaces
7
- - **`Device`** — Core device data model with fields for `id`, `name`, `type`, `operatingSystem`, `organization`, `status`, `lastSeen`, `tags`, and network properties (`ipAddress`, `macAddress`, etc.)
8
- - **`ActionButton`** — Configuration for custom action buttons with `label`, `onClick`, `variant`, and `visible` controls
9
- - **`DeviceCardProps`** — Extends `HTMLAttributes<HTMLDivElement>` with `device`, `actions`, `statusTag`, and `onDeviceClick`
10
7
 
11
- ### Main Export
12
- - **`DeviceCard`** — The primary card component rendering a two-row layout: device identity (icon, name, OS, org, action buttons) and metadata (status tag, last seen, tags)
8
+ - **`Device`** — Shape of a device record, including optional `id`, `machineId`, `name`, `type`, `operatingSystem`, `organization`, `status`, `lastSeen`, `tags`, `ipAddress`, `macAddress`, `version`, and `location`.
9
+ - **`ActionButton`** — Configuration for a custom action button: `label`, `onClick`, `variant`, and `visible` flag.
10
+ - **`DeviceCardProps`** — Extends `React.HTMLAttributes<HTMLDivElement>` with `device`, `actions`, `statusTag`, and `onDeviceClick`.
11
+
12
+ ### Component
13
+
14
+ - **`DeviceCard`** — Renders a bordered card with three rows:
15
+ 1. Device type icon, OS icon, device name/organization, and optional action buttons (more, details, custom).
16
+ 2. Status tag and UTC-formatted last-seen timestamp (hydration-safe via `getUTC*` methods).
17
+ 3. Device tags rendered as outline `Tag` pills.
13
18
 
14
19
  ## Usage Example
15
20
 
16
21
  ```typescript
17
22
  import { DeviceCard } from './device-card'
18
23
 
19
- <DeviceCard
20
- device={{
21
- name: "WORKSTATION-01",
22
- operatingSystem: "windows",
23
- organization: "Acme Corp",
24
- status: "active",
25
- lastSeen: new Date(),
26
- tags: ["managed", "production"],
27
- }}
28
- actions={{
29
- moreButton: { visible: true, onClick: () => console.log("more clicked") },
30
- customActions: [
31
- { label: "Remote", onClick: () => startRemoteSession(), visible: true }
32
- ]
33
- }}
34
- statusTag={{ variant: "success", label: "Online" }}
35
- onDeviceClick={(device) => router.push(`/devices/${device.id}`)}
36
- />
24
+ export function Example() {
25
+ return (
26
+ <DeviceCard
27
+ device={{
28
+ id: 'dev-001',
29
+ name: 'MacBook Pro',
30
+ operatingSystem: 'macos',
31
+ organization: 'Acme Corp',
32
+ status: 'active',
33
+ lastSeen: new Date(),
34
+ tags: ['managed', 'engineering'],
35
+ }}
36
+ statusTag={{ variant: 'success', label: 'Active' }}
37
+ actions={{
38
+ moreButton: {
39
+ visible: true,
40
+ onClick: () => console.log('More clicked'),
41
+ },
42
+ customActions: [
43
+ { label: 'Connect', onClick: () => console.log('Connect'), visible: true },
44
+ ],
45
+ }}
46
+ onDeviceClick={(device) => console.log('Selected:', device.id)}
47
+ />
48
+ )
49
+ }
37
50
  ```
38
51
 
39
- ## Notes
40
-
41
- - `operatingSystem` supports both `OSPlatformId` values and legacy strings (`macos`, `ios`, `android`); `macos` is internally mapped to `darwin` for icon resolution
42
- - Action buttons use `e.stopPropagation()` to prevent triggering `onDeviceClick` when interacting with controls
43
- - `lastSeen` accepts either a `string` or `Date` and formats to `YYYY/MM/DD, HH:MM`
52
+ > **Note:** Last-seen dates are formatted using UTC getters (`getUTCFullYear`, etc.) to prevent React hydration mismatch [#418](https://github.com/flamingo-stack/openframe-oss-lib/issues) between server and client rendering environments.
@@ -1,20 +1,20 @@
1
- <!-- source-hash: 1007936b4fa31192c76c72547575559a -->
2
- Accessible modal dialog component built on Radix UI's `DialogPrimitive`, providing a fully composed set of dialog sub-components with enter/exit animations, backdrop blur overlay, and a built-in close button.
1
+ <!-- source-hash: bb1d5a46d107bc7118d58cf030a3c64d -->
2
+ Accessible modal dialog component built on Radix UI primitives, providing a composable set of parts for building dialogs with built-in animations, overlay, and keyboard/focus management.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  | Export | Description |
7
- |--------|-------------|
7
+ |---|---|
8
8
  | `Dialog` | Root component managing open/close state |
9
9
  | `DialogTrigger` | Element that opens the dialog on interaction |
10
- | `DialogContent` | Main modal container; renders via `DialogPortal` with overlay, animations, and a close (`X`) button |
11
- | `DialogOverlay` | Fixed full-screen backdrop with blur and fade animations |
12
- | `DialogHeader` | Layout wrapper for title/description area |
13
- | `DialogFooter` | Layout wrapper for action buttons (reverses column order on mobile) |
14
- | `DialogTitle` | Semibold heading with accessible binding |
15
- | `DialogDescription` | Muted secondary text beneath the title |
16
- | `DialogClose` | Primitive close button for custom trigger placement |
10
+ | `DialogContent` | Centered modal panel with fade/zoom animations and an auto-rendered close button |
11
+ | `DialogOverlay` | Blurred backdrop rendered behind the content |
17
12
  | `DialogPortal` | Renders dialog outside the DOM tree via a portal |
13
+ | `DialogClose` | Button that closes the dialog |
14
+ | `DialogHeader` | Layout wrapper for title/description at the top |
15
+ | `DialogFooter` | Layout wrapper for action buttons at the bottom |
16
+ | `DialogTitle` | Accessible title using `text-h3` styling |
17
+ | `DialogDescription` | Accessible description using muted `text-h6` styling |
18
18
 
19
19
  ## Usage Example
20
20
 
@@ -40,14 +40,14 @@ export function ConfirmDialog() {
40
40
  <DialogHeader>
41
41
  <DialogTitle>Confirm Action</DialogTitle>
42
42
  <DialogDescription>
43
- This action cannot be undone. Are you sure?
43
+ Are you sure you want to proceed? This cannot be undone.
44
44
  </DialogDescription>
45
45
  </DialogHeader>
46
46
  <DialogFooter>
47
47
  <DialogClose asChild>
48
- <button>Cancel</button>
48
+ <button variant="outline">Cancel</button>
49
49
  </DialogClose>
50
- <button onClick={() => console.log("confirmed")}>Confirm</button>
50
+ <button onClick={handleConfirm}>Confirm</button>
51
51
  </DialogFooter>
52
52
  </DialogContent>
53
53
  </Dialog>
@@ -55,4 +55,4 @@ export function ConfirmDialog() {
55
55
  }
56
56
  ```
57
57
 
58
- > `DialogContent` automatically injects `DialogOverlay` and the close (`X`) button — no need to add them manually. Use `DialogClose` only for custom close triggers within the footer or body.
58
+ > `DialogContent` automatically renders `DialogOverlay` and a close (`X`) button — no need to add them manually. All components accept a `className` prop for Tailwind customization.
@@ -1,35 +1,32 @@
1
- <!-- source-hash: 2221d7f0d18b72b3da12ead1872e85f9 -->
2
- A client-side drawer component built on Radix UI's Dialog primitive, providing animated slide-in panels from any viewport edge with optional drag-to-resize and localStorage persistence.
1
+ <!-- source-hash: a18a712084fb48e0dc7a1b864781f7b0 -->
2
+ A full-featured drawer component built on Radix UI's Dialog primitive, providing animated slide-in panels from any viewport edge with support for drag-to-resize, size persistence, flush/floating layout modes, and a unified overlay backdrop.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  | Export | Type | Description |
7
- |--------|------|-------------|
8
- | `Drawer` | Component | Root dialog primitive (alias for `DialogPrimitive.Root`) |
9
- | `DrawerTrigger` | Component | Trigger element to open the drawer |
10
- | `DrawerClose` | Component | Button/element to close the drawer |
7
+ |---|---|---|
8
+ | `Drawer` | Component | Root dialog container (re-export of `DialogPrimitive.Root`) |
9
+ | `DrawerTrigger` | Component | Button/element that opens the drawer |
10
+ | `DrawerClose` | Component | Button/element that closes the drawer |
11
11
  | `DrawerPortal` | Component | Renders drawer outside the DOM tree |
12
- | `DrawerOverlay` | Component | Semi-transparent backdrop with fade animations |
13
- | `DrawerContent` | Component | Main panel with slide animations, resize handle, and variant support |
14
- | `drawerVariants` | CVA | Wrapper positioning variants (`side`, `flush`) |
15
- | `drawerPanelVariants` | CVA | Panel chrome variants (rounded corners, border, padding) |
16
- | `DrawerResizeHandle` | Internal | Drag/keyboard-accessible resize handle rendered as panel sibling |
17
- | `useResizableSize` | Hook | Manages clamped panel size with viewport awareness and localStorage |
12
+ | `DrawerOverlay` | Component | Dimmed full-screen backdrop (`bg-ods-overlay`) |
13
+ | `DrawerContent` | Component | Main panel with side, flush, and resize props |
14
+ | `DrawerResizeHandle` | Component (internal) | Drag handle with pointer capture and keyboard support |
15
+ | `useResizableSize` | Hook (internal) | Manages clamped size state with `localStorage` persistence |
16
+ | `drawerVariants` | CVA variants | Wrapper positioning by `side` and `flush` |
17
+ | `drawerPanelVariants` | CVA variants | Panel chrome (rounded, border, padding) by `side` and `flush` |
18
18
 
19
- **`DrawerContent` Props:**
19
+ ### `DrawerContent` Props
20
20
 
21
21
  | Prop | Type | Default | Description |
22
- |------|------|---------|-------------|
23
- | `side` | `"right" \| "left" \| "top" \| "bottom"` | `"right"` | Slide-in direction |
24
- | `flush` | `boolean` | `false` | Full-bleed mode (removes padding/border/rounded on mobile) |
25
- | `resizable` | `boolean` | | Enables drag-to-resize handle |
26
- | `minSize` | `number` | — | Minimum resize size in px |
27
- | `maxSize` | `number` | — | Maximum resize size in px (also clamped by viewport) |
28
- | `defaultSize` | `number` | — | Initial size in px when no localStorage entry exists |
29
- | `storageKey` | `string` | — | localStorage key for persisting size across sessions |
30
- | `mobileBreakpoint` | `number` | — | Px breakpoint below which resizing is disabled |
31
- | `overlayClassName` | `string` | — | Additional classes for the overlay |
32
- | `resizeAriaLabel` | `string` | — | Accessible label for the resize handle |
22
+ |---|---|---|---|
23
+ | `side` | `"right" \| "left" \| "top" \| "bottom"` | `"right"` | Slide direction |
24
+ | `flush` | `boolean` | `false` | Full-bleed on mobile; floating card on desktop |
25
+ | `resizable` | `boolean` | `false` | Enables drag-to-resize handle |
26
+ | `minSize` | `number` | — | Minimum panel size in px |
27
+ | `maxSize` | `number` | — | Maximum panel size in px (clamped to viewport) |
28
+ | `defaultSize` | `number` | — | Initial size when no stored value exists |
29
+ | `storageKey` | `string` | — | `localStorage` key for size persistence |
33
30
 
34
31
  ## Usage Example
35
32
 
@@ -37,29 +34,28 @@ A client-side drawer component built on Radix UI's Dialog primitive, providing a
37
34
  import {
38
35
  Drawer,
39
36
  DrawerTrigger,
40
- DrawerClose,
41
37
  DrawerContent,
42
- } from "@/components/ui/drawer"
38
+ DrawerClose,
39
+ } from "@openframe/ui/components/drawer"
43
40
 
44
41
  // Basic drawer from the right
45
- function BasicDrawer() {
42
+ export function SettingsDrawer() {
46
43
  return (
47
44
  <Drawer>
48
45
  <DrawerTrigger asChild>
49
- <button>Open Panel</button>
46
+ <button>Open Settings</button>
50
47
  </DrawerTrigger>
51
48
  <DrawerContent side="right">
52
- <p>Drawer content here</p>
53
- <DrawerClose asChild>
54
- <button>Close</button>
55
- </DrawerClose>
49
+ <DrawerClose />
50
+ <h2>Settings</h2>
51
+ <p>Panel content here.</p>
56
52
  </DrawerContent>
57
53
  </Drawer>
58
54
  )
59
55
  }
60
56
 
61
- // Resizable flush chat panel persisted across sessions
62
- function ChatDrawer() {
57
+ // Resizable flush drawer with persisted width
58
+ export function ChatDrawer() {
63
59
  return (
64
60
  <Drawer>
65
61
  <DrawerTrigger asChild>
@@ -72,15 +68,25 @@ function ChatDrawer() {
72
68
  minSize={280}
73
69
  maxSize={800}
74
70
  defaultSize={400}
75
- storageKey="chat-panel-width"
76
- mobileBreakpoint={768}
77
- resizeAriaLabel="Resize chat panel"
71
+ storageKey="chat-drawer-width"
78
72
  >
79
- <p>Chat content</p>
73
+ {/* Consumer owns full internal layout */}
80
74
  </DrawerContent>
81
75
  </Drawer>
82
76
  )
83
77
  }
84
78
  ```
85
79
 
86
- > **Resize handle accessibility:** The handle supports keyboard navigation — `ArrowLeft`/`ArrowRight` (or `ArrowUp`/`ArrowDown`) resize in 16px steps; hold `Shift` for 40px steps. `Home`/`End` jump to `minSize`/`maxSize`.
80
+ ## Resize Handle Keyboard Shortcuts
81
+
82
+ | Key | Action |
83
+ |---|---|
84
+ | `ArrowLeft` / `ArrowRight` | Resize by 16px (horizontal panels) |
85
+ | `ArrowUp` / `ArrowDown` | Resize by 16px (vertical panels) |
86
+ | `Shift` + Arrow | Resize by 40px |
87
+ | `Home` | Snap to `minSize` |
88
+ | `End` | Snap to `maxSize` |
89
+
90
+ ## Source
91
+
92
+ [`drawer.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/drawer.tsx)