@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
@@ -0,0 +1,41 @@
1
+ <!-- source-hash: 94e0936a6cceaca9424e86e63a789870 -->
2
+ Renders the Flamingo brand logo as a scalable SVG icon React component, supporting customizable size, color, and standard SVG props.
3
+
4
+ ## Key Components
5
+
6
+ ### `FlamingoLogoIconProps`
7
+ Extends `SVGProps<SVGSVGElement>` (excluding `width` and `height`) with:
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `className` | `string` | `""` | CSS class for the SVG element |
12
+ | `size` | `number` | `24` | Width and height in pixels |
13
+ | `color` | `string` | `"currentColor"` | Fill color for all SVG paths |
14
+
15
+ ### `FlamingoLogoIcon`
16
+ Functional React component rendering the full Flamingo wordmark (flamingo bird + "flamingo" logotype) in a `416×120` viewBox, scaled uniformly via the `size` prop.
17
+
18
+ ## Usage Example
19
+
20
+ ```typescript
21
+ import { FlamingoLogoIcon } from "./flamingo-logo-icon";
22
+
23
+ // Default usage (24px, inherits text color)
24
+ <FlamingoLogoIcon />
25
+
26
+ // Custom size and color
27
+ <FlamingoLogoIcon size={48} color="#FF6B6B" />
28
+
29
+ // With Tailwind CSS class
30
+ <FlamingoLogoIcon size={32} className="text-pink-500" />
31
+
32
+ // Pass-through SVG props
33
+ <FlamingoLogoIcon
34
+ size={40}
35
+ color="white"
36
+ aria-label="Flamingo"
37
+ role="img"
38
+ />
39
+ ```
40
+
41
+ > **Note:** The `viewBox` is fixed at `0 0 416 120` (a wide, horizontal lockup). The `size` prop controls the rendered pixel dimensions uniformly, so the output will appear letterboxed. For layout-filling use cases, omit `size` and control dimensions via `className` with explicit `w-` / `h-` utilities.
@@ -1,43 +1,54 @@
1
- <!-- source-hash: f1c1fbdd04d056b4c98f44f6bacd4fb8 -->
2
- Unified page layout components providing two layout variants for consistent page structure across the application.
1
+ <!-- source-hash: d821433e4362b660ede768aab0cf80db -->
2
+ Provides two composable page layout wrappers `PageShell` for wide layouts and `ArticleDetailLayout` for readable article-width pages both rendering a centered `<main>` with configurable content boxes.
3
3
 
4
4
  ## Key Components
5
5
 
6
- | Export | Max Width | Purpose |
7
- |--------|-----------|---------|
8
- | `PageShell` | 1920px | List pages, dashboards, wide layouts |
9
- | `ArticleDetailLayout` | 1280px | Articles, blog posts, release notes, case studies |
6
+ | Export | Max Width | Padding Strategy |
7
+ |---|---|---|
8
+ | `PageShell` | `1920px` | CSS custom properties (`--page-shell-*` vars via `ods-page-shell.css`) |
9
+ | `ArticleDetailLayout` | `1280px` | Fixed: `px-6 md:px-20 py-6 md:py-10` |
10
10
 
11
- **`LayoutProps` interface:**
12
- - `children` — page content (no additional layout wrappers needed)
13
- - `schemas?` — optional JSON-LD `<script>` elements (breadcrumbs, article schema, etc.)
11
+ ### `LayoutProps`
14
12
 
15
- Both components render a `<main>` element with `bg-ods-bg`, responsive horizontal padding (`px-6` / `md:px-20`), and vertical padding (`py-6` / `md:py-10`). Neither forces `min-h-screen` — the root layout's `flex min-h-screen flex-col` → `flex-1` chain already anchors the footer to the bottom of the viewport on short pages.
13
+ | Prop | Type | Description |
14
+ |---|---|---|
15
+ | `children` | `React.ReactNode` | Page content |
16
+ | `schemas` | `React.ReactNode` | Optional JSON-LD `<script>` elements (breadcrumbs, article schema) |
17
+ | `contentClassName` | `string` | Per-instance Tailwind override on the inner content box |
16
18
 
17
19
  ## Usage Example
18
20
 
19
21
  ```typescript
20
- // Wide layout for a list/dashboard page
21
- import { PageShell } from '@/components/article-detail-layout';
22
+ // Wide dashboard / list page
23
+ import { PageShell } from './article-detail-layout';
22
24
 
23
- export default function DevicesPage() {
25
+ export default function DashboardPage() {
24
26
  return (
25
- <PageShell>
26
- <DeviceTable />
27
+ <PageShell schemas={<script type="application/ld+json">{...}</script>}>
28
+ <MyDashboardContent />
27
29
  </PageShell>
28
30
  );
29
31
  }
30
32
 
31
- // Constrained layout for a readable article/detail page
32
- import { ArticleDetailLayout } from '@/components/article-detail-layout';
33
+ // Blog post / release note / case study
34
+ import { ArticleDetailLayout } from './article-detail-layout';
33
35
 
34
- export default function BlogPost({ schema }: { schema: React.ReactNode }) {
36
+ export default function BlogPostPage() {
35
37
  return (
36
- <ArticleDetailLayout schemas={schema}>
37
- <ArticleContent />
38
+ <ArticleDetailLayout
39
+ contentClassName="py-16" // overrides default vertical padding
40
+ schemas={<ArticleSchema />}
41
+ >
42
+ <BlogPostContent />
38
43
  </ArticleDetailLayout>
39
44
  );
40
45
  }
41
46
  ```
42
47
 
43
- > Child components should render content only — no additional `<main>`, max-width, or padding wrappers required.
48
+ ## Notes
49
+
50
+ - `PageShell` intentionally omits `min-h-screen` — the root `app/layout.tsx` already manages viewport height via a `flex min-h-screen flex-col` / `flex-1` chain; adding it here would create dead space in sibling-content layouts.
51
+ - `PageShell` padding is controlled by CSS custom properties set on any ancestor element — no prop threading or context required.
52
+ - `ArticleDetailLayout` does **not** participate in the `--page-shell-*` var system; its spacing is self-contained and fixed by default.
53
+
54
+ **Source:** [`article-detail-layout.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/article-detail-layout.tsx)
@@ -1,17 +1,15 @@
1
- <!-- source-hash: 601f78e11aff8ba0205359b5d858638e -->
2
- Unified page container component that supports both legacy layout patterns and a new advanced UI pattern with variants, titles, actions, and responsive headers.
1
+ <!-- source-hash: 81afde4015f7335e53f265e0e5802d4d -->
2
+ A unified page container component that supports both a legacy layout pattern and an advanced UI pattern with variant-based layouts, headers, back buttons, and configurable actions.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### Exported Types
7
- - **`PageContainerProps`** Union type supporting `LegacyPageContainerProps` and `AdvancedPageContainerProps`
6
+ - **`PageContainer`** – Main exported component. Detects which interface is in use via `isAdvancedProps()` and delegates to the appropriate renderer.
7
+ - **`LegacyPageContainerProps`** Backward-compatible interface for full-width background sections with configurable max-width and padding.
8
+ - **`AdvancedPageContainerProps`** – Modern interface supporting `variant`, `title`, `subtitle`, `backButton`, `headerActions`, `actions`, and `menuActions`.
9
+ - **`renderLegacyPageContainer`** – Preserves original layout behavior with configurable `as` element, background, and padding.
10
+ - **`renderAdvancedPageContainer`** – Renders variant-aware layouts (`list`, `detail`, `form`, `content`) with responsive headers and mobile-fixed action bars.
8
11
 
9
- ### Main Export
10
- - **`PageContainer`** — Auto-detects prop interface via `isAdvancedProps()` type guard and delegates to the appropriate renderer
11
-
12
- ### Internal Renderers
13
- - **`renderLegacyPageContainer`** — Wraps content in a configurable semantic element (`section`, `div`, `main`, `article`) with optional full-width background
14
- - **`renderAdvancedPageContainer`** — Renders variant-aware layout (`list` | `detail` | `form` | `content`) with header, back button, title, subtitle, and `PageActions`
12
+ > **Deprecated:** Use `PageLayout` from `'../layout/page-layout'` instead.
15
13
 
16
14
  ## Usage Example
17
15
 
@@ -21,25 +19,29 @@ Unified page container component that supports both legacy layout patterns and a
21
19
  <h1>Content</h1>
22
20
  </PageContainer>
23
21
 
24
- // Advanced - list page
22
+ // Advanced detail page with back button and actions
25
23
  <PageContainer
26
- variant="list"
27
- title="Devices"
28
- subtitle="All managed devices"
29
- actions={[{ label: 'Add Device', onClick: handleAdd }]}
24
+ variant="detail"
25
+ title="Ticket #1234"
26
+ subtitle="Open · High Priority"
27
+ backButton={{ label: 'Back to Tickets', onClick: () => router.back() }}
28
+ actions={[
29
+ { label: 'Save', onClick: handleSave, variant: 'primary' },
30
+ { label: 'Cancel', onClick: handleCancel },
31
+ ]}
30
32
  >
31
- <DeviceTable />
33
+ <TicketDetail />
32
34
  </PageContainer>
33
35
 
34
- // Advanced - detail page with back button
36
+ // Advanced list page with header actions
35
37
  <PageContainer
36
- variant="detail"
37
- title="Device Details"
38
- backButton={{ label: 'Back', onClick: () => router.back() }}
39
- headerActions={<StatusBadge status="online" />}
38
+ variant="list"
39
+ title="Devices"
40
+ headerActions={<SearchBar />}
41
+ actions={[{ label: 'Add Device', onClick: handleAdd, icon: PlusIcon }]}
40
42
  >
41
- <DeviceDetail />
43
+ <DeviceTable />
42
44
  </PageContainer>
43
45
  ```
44
46
 
45
- > **Deprecated:** Prefer `PageLayout` from `'../layout/page-layout'` for new implementations.
47
+ **Source:** [`page-container.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/page-container.tsx)
@@ -0,0 +1,48 @@
1
+ <!-- source-hash: ec06a9a2f14fb05a94b7ed963648a5fb -->
2
+ Renders a canonical page-level heading (`<h1>` or `<h2>`) with an optional description paragraph, serving as the single source of truth for the ODS `text-h1`/`text-h2` typography tokens across the library.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |---|---|---|
8
+ | `PAGE_HEADING_CLASS` | `string` | Tailwind class string for the ODS `text-h1` token (40/48/56px, Azeret Mono semibold) |
9
+ | `SECTION_HEADING_CLASS` | `string` | Tailwind class string for the ODS `text-h2` sub-title token (24/32/32px) |
10
+ | `PageHeadingProps` | `interface` | Props for the `PageHeading` component |
11
+ | `PageHeading` | `function` | Unified heading component rendering the heading element + optional description |
12
+
13
+ ### `PageHeadingProps`
14
+
15
+ | Prop | Type | Default | Description |
16
+ |---|---|---|---|
17
+ | `children` | `ReactNode` | — | Heading content; plain text or nodes |
18
+ | `as` | `'h1' \| 'h2'` | `'h1'` | Semantic heading level |
19
+ | `description` | `ReactNode` | — | Supporting copy rendered as a `<p>` |
20
+ | `className` | `string` | — | Extra classes merged onto the heading |
21
+ | `descriptionClassName` | `string` | — | Extra classes merged onto the description `<p>` |
22
+
23
+ ## Usage Example
24
+
25
+ ```typescript
26
+ import { PageHeading, PAGE_HEADING_CLASS, SECTION_HEADING_CLASS } from './page-heading'
27
+
28
+ // Standard page title with description
29
+ <PageHeading description="Manage your connected devices and configurations.">
30
+ Devices
31
+ </PageHeading>
32
+
33
+ // Section heading when an h1 already exists above (e.g. hero)
34
+ <PageHeading as="h2" description="Filter by status or region.">
35
+ Active Endpoints
36
+ </PageHeading>
37
+
38
+ // With an accent span and extra margin class
39
+ <PageHeading className="mt-8">
40
+ Welcome to <span className="text-accent">OpenFrame</span>
41
+ </PageHeading>
42
+
43
+ // Apply the token class directly without the component (rare cases)
44
+ <h2 className={PAGE_HEADING_CLASS}>Custom Heading</h2>
45
+ <h3 className={SECTION_HEADING_CLASS}>Custom Section</h3>
46
+ ```
47
+
48
+ > **Never hardcode pixel sizes or re-assert letter-spacing** for page or section headings — use `<PageHeading>` or the exported class constants. See the [source](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/page-heading.tsx) for full implementation details.
@@ -1,50 +1,55 @@
1
- <!-- source-hash: 8a798bc4d9131ab38604adc9a1b7d675 -->
2
- Reusable page layout wrapper that provides consistent structure with an optional header (`TitleBlock`), configurable actions, and standardized spacing for full-page views.
1
+ <!-- source-hash: 44f28568881e9535e5366a847627bff9 -->
2
+ Canonical page chrome component for OpenFrame surfaces, providing a consistent layout container with an optional header (`TitleBlock`), spacing, and action slots.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `PageLayout` (default export)
7
- Main layout component accepting the following props:
7
+ Main layout wrapper that composes a `TitleBlock` header and a flex content area. The header renders conditionally when any of `title`, `subtitle`, `image`, `backButton`, `actions`, `selector`, or `loading` are provided (and `showHeader` is not `false`).
8
+
9
+ ### `PageLayoutProps`
8
10
 
9
11
  | Prop | Type | Default | Description |
10
- |------|------|---------|-------------|
11
- | `children` | `ReactNode` | — | Page content |
12
- | `title` | `string` | — | Page heading |
13
- | `subtitle` | `string` | — | Secondary heading |
12
+ |---|---|---|---|
13
+ | `title` | `string` | — | Page title text |
14
+ | `subtitle` | `string` | — | Subtitle text below title |
14
15
  | `image` | `{ src, alt? }` | — | Header image |
15
16
  | `backButton` | `{ label?, onClick }` | — | Back navigation button |
16
17
  | `actions` | `PageActionButton[]` | — | Action buttons rendered in the header |
17
- | `actionsVariant` | `'icon-buttons' \| 'primary-buttons' \| 'menu-primary'` | `'icon-buttons'` | Controls button style/layout |
18
- | `menuActions` | `ActionsMenuGroup[]` | — | Grouped dropdown menu actions |
18
+ | `actionsVariant` | `'icon-buttons' \| 'primary-buttons' \| 'menu-primary'` | `'icon-buttons'` | Action button display style |
19
+ | `menuActions` | `ActionsMenuGroup[]` | — | Grouped menu actions |
19
20
  | `selector` | `ReactNode` | — | Desktop-only slot (e.g. `TabSelector`) |
20
- | `headerVariant` | `'plain' \| 'card'` | — | `card` adds background, border, and mobile padding |
21
- | `showHeader` | `boolean` | `true` | Conditionally renders the header block |
22
- | `className` | `string` | — | Outer wrapper class override |
23
- | `contentClassName` | `string` | — | Content area class override |
24
-
25
- ### Re-exports
26
- - `TitleBlock` + `TitleBlockProps` — header sub-component
27
- - `PageActionButton` — action button type
21
+ | `headerVariant` | `'plain' \| 'card'` | — | Adds card chrome on mobile when `'card'` |
22
+ | `titleSize` | `'h1' \| 'h2'` | `'h2'` | Title typography size |
23
+ | `titleAdornment` | `ReactNode` | — | Inline node next to the title (e.g. a status tag) |
24
+ | `loading` | `boolean` | — | Renders skeleton bars at stable header height |
25
+ | `titleWrap` | `boolean` | `false` | Allows long titles to wrap instead of truncating |
26
+ | `showHeader` | `boolean` | `true` | Suppresses the entire header block |
27
+ | `className` | `string` | | Applied to the outer wrapper |
28
+ | `contentClassName` | `string` | | Applied to the content area |
28
29
 
29
30
  ## Usage Example
30
31
 
31
32
  ```typescript
32
33
  import { PageLayout } from './page-layout'
33
34
 
34
- export default function SettingsPage() {
35
+ export function MyPage() {
35
36
  return (
36
37
  <PageLayout
37
- title="Settings"
38
- subtitle="Manage your preferences"
39
- backButton={{ label: 'Back', onClick: () => router.back() }}
40
- actions={[{ label: 'Save', onClick: handleSave }]}
38
+ title="Devices"
39
+ subtitle="Manage your connected devices"
40
+ actions={[{ label: 'Add Device', onClick: handleAdd }]}
41
41
  actionsVariant="primary-buttons"
42
- headerVariant="card"
42
+ headerVariant="plain"
43
43
  >
44
- <SettingsForm />
44
+ <DeviceList />
45
45
  </PageLayout>
46
46
  )
47
47
  }
48
48
  ```
49
49
 
50
- > When `actionsVariant="primary-buttons"`, the content area automatically gains `pb-28` on mobile to prevent overlap with sticky action buttons.
50
+ > ⛔️ **Frozen component** this file is locked by design. Do not modify markup, CSS, or props without explicit human sign-off. See the file header for the full freeze rationale and sanctioned exceptions.
51
+
52
+ ## Re-exports
53
+
54
+ - `TitleBlock`, `TITLE_BLOCK_MIN_HEIGHT`, `TitleBlockProps` — from `./title-block`
55
+ - `PageActionButton` — from `../ui/page-actions`
@@ -1,42 +1,61 @@
1
- <!-- source-hash: ff0ecf9e6a81a5b5db96e020586aff9d -->
2
- A client-side page header component that renders a title, optional subtitle, entity image, back button, and action controls in a responsive layout.
1
+ <!-- source-hash: 35e8c14f44c16d1c08ed20917e13456c -->
2
+ Renders the title/subtitle/back-button/actions chrome block used by `PageLayout`. This component is **frozen** it defines the canonical page header baseline across all OpenFrame pages and must not be structurally modified without explicit human sign-off.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`TitleBlockProps`** Interface defining all configurable props including title, subtitle, image, navigation, actions, and visual variant
7
- - **`TitleBlock`** — Main exported component handling layout for page-level headings with responsive behavior (`plain` vs `card` variants)
8
- - **`variant`** — Controls visual treatment: `plain` (default, transparent) collapses `card` style (bordered, padded) on `md+` breakpoints
6
+ ### `TitleBlock` (default export)
7
+ Primary component rendering the full page title chrome. Accepts the following props:
8
+
9
+ | Prop | Type | Default | Description |
10
+ |---|---|---|---|
11
+ | `title` | `string` | — | Page title text |
12
+ | `subtitle` | `string` | — | Secondary descriptor |
13
+ | `image` | `{ src, alt? }` | — | Entity image rendered beside title |
14
+ | `backButton` | `{ label?, onClick }` | — | Back navigation (desktop-only) |
15
+ | `actions` | `PageActionButton[]` | — | Action buttons rendered inline with title |
16
+ | `actionsVariant` | `'icon-buttons' \| 'primary-buttons' \| 'menu-primary'` | `'icon-buttons'` | Action button style |
17
+ | `menuActions` | `ActionsMenuGroup[]` | — | Overflow menu action groups |
18
+ | `selector` | `ReactNode` | — | Desktop-only slot (e.g. `TabSelector`) |
19
+ | `variant` | `'plain' \| 'card'` | `'plain'` | Visual container style |
20
+ | `titleSize` | `'h1' \| 'h2'` | `'h2'` | Title typography size |
21
+ | `titleAdornment` | `ReactNode` | — | Inline node after title (e.g. status `Tag`) |
22
+ | `loading` | `boolean` | — | Swaps title/subtitle text for skeleton bars |
23
+ | `titleWrap` | `boolean` | `false` | Allows multi-line title instead of truncation |
24
+
25
+ ### `TitleTextSkeleton`
26
+ Internal component rendering inline skeleton bars that preserve line-box height during loading state — the header remains pixel-identical in height whether loaded or loading.
27
+
28
+ ### `TITLE_BLOCK_MIN_HEIGHT`
29
+ Exported Tailwind class string (`'min-h-11 md:min-h-12'`) ensuring consistent header height regardless of whether action buttons are present. Reusable by other page chrome components.
9
30
 
10
31
  ## Usage Example
11
32
 
12
33
  ```typescript
13
- import { TitleBlock } from './title-block'
34
+ import { TitleBlock } from '@/components/layout/title-block'
14
35
 
15
- // Basic usage
36
+ // Basic usage — frozen h2 baseline
16
37
  <TitleBlock
17
38
  title="Devices"
18
- subtitle="Manage all enrolled devices"
39
+ subtitle="All managed endpoints"
19
40
  backButton={{ label: 'Back', onClick: () => router.back() }}
20
- actions={[
21
- { label: 'Add Device', icon: PlusIcon, onClick: handleAdd },
22
- ]}
41
+ actions={[{ label: 'Add Device', onClick: handleAdd }]}
23
42
  actionsVariant="primary-buttons"
24
43
  />
25
44
 
26
- // With entity image and card variant (e.g. mobile-first detail pages)
45
+ // Help Center page sanctioned h1 override
27
46
  <TitleBlock
28
- title="Acme Corp"
29
- subtitle="Enterprise Client"
30
- image={{ src: '/logos/acme.png', alt: 'Acme Corp' }}
31
- variant="card"
32
- actions={[{ label: 'Edit', icon: EditIcon, onClick: handleEdit }]}
33
- menuActions={[{ label: 'More', items: [...] }]}
34
- selector={<TabSelector tabs={tabs} />}
47
+ title="Getting Started"
48
+ titleSize="h1"
49
+ titleAdornment={<Tag variant="info">New</Tag>}
50
+ titleWrap
35
51
  />
36
- ```
37
52
 
38
- ## Notes
53
+ // Loading skeleton (height preserved)
54
+ <TitleBlock
55
+ title="Releases"
56
+ subtitle="Recent updates"
57
+ loading
58
+ />
59
+ ```
39
60
 
40
- - The `selector` slot (e.g. a `TabSelector`) is desktop-only and rendered alongside actions
41
- - Back button is hidden on mobile (`hidden md:inline-flex`)
42
- - Title truncates with `title` attribute tooltip when content overflows
61
+ > **Note:** This component is intentionally frozen. New page chrome designs must be implemented as separate components. See the in-file freeze notice for full rationale and the list of sanctioned exceptions. Source: [`title-block.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/components/layout/title-block.tsx)
@@ -1,54 +1,47 @@
1
- <!-- source-hash: b4a4c7c8c54bac836e374bc9dd198d5b -->
2
- Reusable skeleton loading components for card UI elements, providing animated placeholder states that match the structure of vendor, blog, category, and alternative card layouts.
1
+ <!-- source-hash: 496defa565da946c17804f2b3bb78de3 -->
2
+ Unified card skeleton component providing consistent loading states for the four card types used across the application (`vendor`, `blog`, `category`, `alternative`).
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  | Export | Description |
7
- |--------|-------------|
7
+ |---|---|
8
8
  | `CardSkeleton` | Single card skeleton with variant-based layout rendering |
9
9
  | `CardSkeletonGrid` | Responsive grid of `CardSkeleton` instances for list loading states |
10
- | `CardSkeletonProps` | Interface defining variant, visibility toggles, and styling options |
10
+ | `VendorCardContent` | Internal logo, title, description, stats, and tag area |
11
+ | `BlogCardContent` | Internal — OG image, title, chips, description, author, and metadata footer |
12
+ | `CategoryCardContent` | Internal — icon grid, title, description, and action button |
13
+ | `AlternativeCardContent` | Internal — avatar, title, description, and optional action button |
11
14
 
12
- **Internal sub-components (not exported):**
15
+ ### `CardSkeletonProps`
13
16
 
14
- | Component | Mirrors |
15
- |-----------|---------|
16
- | `VendorCardContent` | Logo, title, category, description, stats, and tag |
17
- | `BlogCardContent` | OG image, title chips, description, author, and date metadata |
18
- | `CategoryCardContent` | Icon grid, title, description, and action button |
19
- | `AlternativeCardContent` | Avatar, title, description, and optional action button |
17
+ | Prop | Type | Default | Description |
18
+ |---|---|---|---|
19
+ | `variant` | `'vendor' \| 'blog' \| 'category' \| 'alternative'` | `'vendor'` | Selects the matching card layout |
20
+ | `showActions` | `boolean` | `true` | Renders action button area |
21
+ | `showMetadata` | `boolean` | `true` | Renders footer metadata row |
22
+ | `containerClassName` | `string` | | Overrides default card background and border classes |
23
+ | `className` | `string` | — | Appended to the card container |
20
24
 
21
25
  ## Usage Example
22
26
 
23
27
  ```typescript
24
- import { CardSkeleton, CardSkeletonGrid } from "./card-skeleton"
28
+ import { CardSkeleton, CardSkeletonGrid } from "@/components/skeletons/card-skeleton"
25
29
 
26
- // Single skeleton while fetching one vendor
27
- <CardSkeleton variant="vendor" showActions showMetadata />
30
+ // Single vendor card loading state
31
+ <CardSkeleton variant="vendor" />
28
32
 
29
- // Full loading grid for a blog listing page
30
- <CardSkeletonGrid
31
- variant="blog"
32
- count={4}
33
- showActions={false}
34
- showMetadata
35
- className="my-8"
36
- />
33
+ // Blog card without metadata footer
34
+ <CardSkeleton variant="blog" showMetadata={false} />
37
35
 
38
- // Category grid without custom container styling
36
+ // Grid of 9 vendor skeletons
37
+ <CardSkeletonGrid count={9} variant="vendor" />
38
+
39
+ // Grid of blog skeletons with custom container style
39
40
  <CardSkeletonGrid
40
- variant="category"
41
- count={8}
42
- containerClassName="bg-neutral-900 border border-neutral-700"
41
+ count={4}
42
+ variant="blog"
43
+ containerClassName="bg-white border border-gray-200"
43
44
  />
44
45
  ```
45
46
 
46
- ## Props Reference
47
-
48
- | Prop | Type | Default | Description |
49
- |------|------|---------|-------------|
50
- | `variant` | `'vendor' \| 'blog' \| 'category' \| 'alternative'` | `'vendor'` | Card layout to replicate |
51
- | `showActions` | `boolean` | `true` | Renders action button placeholder |
52
- | `showMetadata` | `boolean` | `true` | Renders footer metadata placeholder |
53
- | `containerClassName` | `string` | `bg-ods-card border border-ods-border` | Overrides card container background and border |
54
- | `count` *(grid only)* | `number` | `6` | Number of skeleton cards to render |
47
+ > Grid column counts are variant-aware: `vendor` uses a 3-column layout at `lg`, `blog` uses 2-column at `md`, `category` uses 4-column at `lg`, and `alternative` is always single-column.
@@ -1,41 +1,43 @@
1
- <!-- source-hash: 2ce1ed4f74bd8adbc4a828190f04cf96 -->
2
- A React skeleton component that displays a loading placeholder for category cards with animated shimmer effects while content is being fetched.
1
+ <!-- source-hash: 345b2538bd8f070fb84d13df78fe015f -->
2
+ Loading state placeholder for a category card UI component, rendering animated skeletons for icons, text, and a button while content is being fetched.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **CategoryCardSkeleton** - Main skeleton component that mimics the layout of a category card
7
- - **CategoryCardSkeletonProps** - Interface defining optional className for styling customization
8
- - **UnifiedSkeleton** - Imported base skeleton component for shapes and animations
9
- - **TextSkeleton** - Imported text-specific skeleton components for headings and body text
6
+ - **`CategoryCardSkeleton`** Main export. Renders an `<article>` with `role="status"` and `aria-label` for accessibility compliance during loading states.
7
+ - **`UnifiedSkeleton`** Used for circular icon placeholders (10 items) and the rectangular arrow button placeholder.
8
+ - **`TextSkeleton.Heading` / `TextSkeleton.Body`** Specialized text skeleton variants for the card's title and description lines.
10
9
 
11
10
  ## Usage Example
12
11
 
13
12
  ```typescript
14
13
  import { CategoryCardSkeleton } from './category-card-skeleton'
15
14
 
16
- // Basic usage
15
+ // Basic usage in a loading state
17
16
  function CategoryGrid() {
18
- const [loading, setLoading] = useState(true)
19
- const [categories, setCategories] = useState([])
20
-
21
17
  return (
22
18
  <div className="grid grid-cols-3 gap-4">
23
- {loading ? (
24
- // Show skeleton placeholders while loading
25
- Array.from({ length: 6 }).map((_, i) => (
26
- <CategoryCardSkeleton key={i} />
27
- ))
28
- ) : (
29
- categories.map(category => (
30
- <CategoryCard key={category.id} {...category} />
31
- ))
32
- )}
19
+ {isLoading
20
+ ? Array.from({ length: 6 }).map((_, i) => (
21
+ <CategoryCardSkeleton key={i} />
22
+ ))
23
+ : categories.map((cat) => (
24
+ <CategoryCard key={cat.id} {...cat} />
25
+ ))}
33
26
  </div>
34
27
  )
35
28
  }
36
29
 
37
- // With custom styling
38
- <CategoryCardSkeleton className="shadow-lg border-blue-200" />
30
+ // With custom className override
31
+ <CategoryCardSkeleton className="col-span-2 border-dashed" />
39
32
  ```
40
33
 
41
- The component renders a structured skeleton with 10 circular icon placeholders, text content blocks of varying widths, and an action button placeholder, all with proper ARIA labels for accessibility.
34
+ ## Structure
35
+
36
+ | Region | Skeleton Element |
37
+ |---|---|
38
+ | Icons row | 10 × circular `UnifiedSkeleton` (40×40px) |
39
+ | Heading | `TextSkeleton.Heading` at 75% width |
40
+ | Body lines | 2 × `TextSkeleton.Body` at 50% / 100% width |
41
+ | Arrow button | Rectangular `UnifiedSkeleton` (48×48px, 6px radius) |
42
+
43
+ **Source:** [`flamingo-stack/openframe-oss-lib`](https://github.com/flamingo-stack/openframe-oss-lib)
@@ -1,27 +1,35 @@
1
- <!-- source-hash: 778a7f2774363f614672d36f1704ffb9 -->
2
- Loading skeleton component that mimics the exact layout of a `DeviceCard` to prevent layout shifts during data fetching.
1
+ <!-- source-hash: 54aa570e451e331c157161933707661b -->
2
+ Loading skeleton components that mirror the exact layout of `DeviceCard` to prevent layout shifts during data fetching.
3
3
 
4
4
  ## Key Components
5
5
 
6
6
  ### `DeviceCardSkeleton`
7
- A single animated placeholder card matching the three-row `DeviceCard` structure:
7
+ A single animated placeholder card replicating the three-row structure of `DeviceCard`:
8
8
  - **Row 1:** Device icon + device name + more button
9
9
  - **Row 2:** OS badge + organization icon + organization name
10
10
  - **Row 3:** Status badge + last seen timestamp
11
11
 
12
+ Uses `animate-pulse` on placeholder elements and matches exact dimensions to eliminate layout jumps.
13
+
12
14
  | Prop | Type | Description |
13
15
  |------|------|-------------|
14
- | `className` | `string?` | Additional CSS classes |
16
+ | `className` | `string` | Optional additional CSS classes |
15
17
 
16
18
  ### `DeviceCardSkeletonGrid`
17
- Renders a responsive grid of `DeviceCardSkeleton` instances, matching the `DevicesGrid` responsive column layout.
19
+ A responsive grid wrapper that renders `count` skeleton cards, matching the `DevicesGrid` column layout.
18
20
 
19
21
  | Prop | Type | Default | Description |
20
22
  |------|------|---------|-------------|
21
- | `count` | `number?` | `12` | Number of skeleton cards to render |
22
- | `className` | `string?` | — | Additional CSS classes |
23
+ | `count` | `number` | `12` | Number of skeleton cards to render |
24
+ | `className` | `string` | — | Optional additional CSS classes |
25
+
26
+ **Responsive breakpoints:**
23
27
 
24
- **Responsive columns:** 1 2 (md) → 4 (lg)
28
+ | Breakpoint | Columns |
29
+ |-----------|---------|
30
+ | Mobile | 1 |
31
+ | `md` (tablet) | 2 |
32
+ | `lg` (desktop) | 4 |
25
33
 
26
34
  ## Usage Example
27
35
 
@@ -29,19 +37,18 @@ Renders a responsive grid of `DeviceCardSkeleton` instances, matching the `Devic
29
37
  // Single skeleton card
30
38
  import { DeviceCardSkeleton } from "./device-card-skeleton"
31
39
 
32
- function DeviceDetailLoader() {
33
- return <DeviceCardSkeleton className="max-w-sm" />
40
+ function DevicePanel({ isLoading }: { isLoading: boolean }) {
41
+ if (isLoading) return <DeviceCardSkeleton />
42
+ return <DeviceCard />
34
43
  }
35
44
 
36
- // Full grid during page load
45
+ // Skeleton grid during list fetch
37
46
  import { DeviceCardSkeletonGrid } from "./device-card-skeleton"
38
47
 
39
48
  function DevicesPage({ isLoading, devices }) {
40
- if (isLoading) {
41
- return <DeviceCardSkeletonGrid count={8} />
42
- }
49
+ if (isLoading) return <DeviceCardSkeletonGrid count={8} />
43
50
  return <DevicesGrid devices={devices} />
44
51
  }
45
52
  ```
46
53
 
47
- > Both components include ARIA attributes (`role="status"` and `aria-label`) for screen reader accessibility during loading states.
54
+ **Source:** [`device-card-skeleton.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/device-card-skeleton.tsx)