@flamingo-stack/openframe-frontend-core 0.0.212 → 0.0.213-snapshot.20260528174436

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 (806) hide show
  1. package/dist/{chunk-QKFBZLIR.js → chunk-5OWDOFKK.js} +2 -2
  2. package/dist/chunk-CZR7ARBA.js +698 -0
  3. package/dist/chunk-CZR7ARBA.js.map +1 -0
  4. package/dist/{chunk-UYQOPC57.js → chunk-HICZPTRR.js} +4 -351
  5. package/dist/chunk-HICZPTRR.js.map +1 -0
  6. package/dist/{chunk-5BNWGK6D.js → chunk-HWY35EAK.js} +3 -3
  7. package/dist/{chunk-VTUIMMHO.cjs → chunk-IZL2KEH6.cjs} +26 -26
  8. package/dist/{chunk-VTUIMMHO.cjs.map → chunk-IZL2KEH6.cjs.map} +1 -1
  9. package/dist/{chunk-ZFBLC5GV.cjs → chunk-KDNGUYZM.cjs} +17 -17
  10. package/dist/{chunk-ZFBLC5GV.cjs.map → chunk-KDNGUYZM.cjs.map} +1 -1
  11. package/dist/chunk-OZ3GH6OQ.cjs +698 -0
  12. package/dist/chunk-OZ3GH6OQ.cjs.map +1 -0
  13. package/dist/{chunk-3E5ANY55.js → chunk-UKND27XC.js} +410 -544
  14. package/dist/chunk-UKND27XC.js.map +1 -0
  15. package/dist/{chunk-EH3RWVF3.cjs → chunk-WT5JV2GS.cjs} +8 -355
  16. package/dist/chunk-WT5JV2GS.cjs.map +1 -0
  17. package/dist/{chunk-WI76ZUBE.cjs → chunk-YZUUFTIK.cjs} +545 -679
  18. package/dist/chunk-YZUUFTIK.cjs.map +1 -0
  19. package/dist/components/chat/hooks/use-jetstream-dialog-subscription.d.ts.map +1 -1
  20. package/dist/components/chat/hooks/use-nats-dialog-subscription.d.ts +0 -9
  21. package/dist/components/chat/hooks/use-nats-dialog-subscription.d.ts.map +1 -1
  22. package/dist/components/chat/index.cjs +5 -4
  23. package/dist/components/chat/index.cjs.map +1 -1
  24. package/dist/components/chat/index.js +4 -3
  25. package/dist/components/contact/index.cjs +6 -5
  26. package/dist/components/contact/index.cjs.map +1 -1
  27. package/dist/components/contact/index.js +5 -4
  28. package/dist/components/features/index.cjs +5 -4
  29. package/dist/components/features/index.cjs.map +1 -1
  30. package/dist/components/features/index.js +4 -3
  31. package/dist/components/features/notifications/index.d.ts +2 -2
  32. package/dist/components/features/notifications/index.d.ts.map +1 -1
  33. package/dist/components/features/notifications/notifications-context.d.ts +16 -1
  34. package/dist/components/features/notifications/notifications-context.d.ts.map +1 -1
  35. package/dist/components/features/notifications/types.d.ts +4 -0
  36. package/dist/components/features/notifications/types.d.ts.map +1 -1
  37. package/dist/components/index.cjs +55 -54
  38. package/dist/components/index.cjs.map +1 -1
  39. package/dist/components/index.js +7 -6
  40. package/dist/components/index.js.map +1 -1
  41. package/dist/components/navigation/app-header.d.ts.map +1 -1
  42. package/dist/components/navigation/index.cjs +5 -4
  43. package/dist/components/navigation/index.cjs.map +1 -1
  44. package/dist/components/navigation/index.js +4 -3
  45. package/dist/components/tickets/index.cjs +66 -65
  46. package/dist/components/tickets/index.cjs.map +1 -1
  47. package/dist/components/tickets/index.js +6 -5
  48. package/dist/components/tickets/index.js.map +1 -1
  49. package/dist/components/ui/index.cjs +5 -4
  50. package/dist/components/ui/index.cjs.map +1 -1
  51. package/dist/components/ui/index.js +4 -3
  52. package/dist/embed-shims/index.cjs +3 -3
  53. package/dist/embed-shims/index.cjs.map +1 -1
  54. package/dist/embed-shims/index.js +4 -4
  55. package/dist/hooks/index.cjs +3 -2
  56. package/dist/hooks/index.cjs.map +1 -1
  57. package/dist/hooks/index.js +2 -1
  58. package/dist/index.cjs +5 -4
  59. package/dist/index.cjs.map +1 -1
  60. package/dist/index.js +4 -3
  61. package/dist/nats/index.cjs +28 -346
  62. package/dist/nats/index.cjs.map +1 -1
  63. package/dist/nats/index.d.ts +3 -0
  64. package/dist/nats/index.d.ts.map +1 -1
  65. package/dist/nats/index.js +30 -346
  66. package/dist/nats/index.js.map +1 -1
  67. package/dist/nats/nats-provider.d.ts +28 -0
  68. package/dist/nats/nats-provider.d.ts.map +1 -0
  69. package/dist/nats/nats.d.ts +1 -0
  70. package/dist/nats/nats.d.ts.map +1 -1
  71. package/dist/nats/shared-connection.d.ts +73 -0
  72. package/dist/nats/shared-connection.d.ts.map +1 -0
  73. package/dist/nats/use-nats-subscription.d.ts +18 -0
  74. package/dist/nats/use-nats-subscription.d.ts.map +1 -0
  75. package/package.json +1 -1
  76. package/src/.index.md +36 -34
  77. package/src/components/.alert-dialog.md +27 -23
  78. package/src/components/.announcement-bar.md +26 -21
  79. package/src/components/.breadcrumb.md +19 -15
  80. package/src/components/.calendar.md +24 -19
  81. package/src/components/.categories-cart.md +29 -24
  82. package/src/components/.checkbox.md +23 -25
  83. package/src/components/.chevron-button.md +37 -32
  84. package/src/components/.comment-card.md +32 -62
  85. package/src/components/.dialog.md +26 -26
  86. package/src/components/.dynamic-skeleton.md +54 -57
  87. package/src/components/.empty-state.md +42 -51
  88. package/src/components/.faq-accordion.md +27 -21
  89. package/src/components/.filter-chip.md +41 -24
  90. package/src/components/.flamingo-logo.md +20 -23
  91. package/src/components/.footer-waitlist-button.md +29 -22
  92. package/src/components/.footer.md +32 -32
  93. package/src/components/.icons-block.md +27 -17
  94. package/src/components/.image-cropper.md +41 -32
  95. package/src/components/.index.md +33 -39
  96. package/src/components/.input.md +31 -35
  97. package/src/components/.logs-list.md +31 -20
  98. package/src/components/.media-carousel.md +35 -36
  99. package/src/components/.open-source-features.md +33 -16
  100. package/src/components/.pagination.md +52 -51
  101. package/src/components/.provider-button.md +21 -23
  102. package/src/components/.select.md +31 -20
  103. package/src/components/.sidebar.md +34 -24
  104. package/src/components/.smooth-accordion.md +29 -24
  105. package/src/components/.social-icon-row.md +36 -32
  106. package/src/components/.textarea.md +25 -31
  107. package/src/components/.tool-icon.md +24 -26
  108. package/src/components/.unified-filter-logic.md +37 -30
  109. package/src/components/.unified-pagination.md +23 -22
  110. package/src/components/.user-summary-stub.md +38 -22
  111. package/src/components/.vendor-display-button.md +25 -25
  112. package/src/components/.vendor-icon.md +33 -25
  113. package/src/components/.why-it-matters.md +28 -25
  114. package/src/components/chat/.approval-batch-message.md +51 -0
  115. package/src/components/chat/.approval-request-message.md +35 -34
  116. package/src/components/chat/.chat-attachment-bar.md +64 -0
  117. package/src/components/chat/.chat-container.md +36 -18
  118. package/src/components/chat/.chat-input.md +37 -20
  119. package/src/components/chat/.chat-message-enhanced.md +30 -49
  120. package/src/components/chat/.chat-message-list.md +45 -32
  121. package/src/components/chat/.chat-message-skeleton.md +26 -22
  122. package/src/components/chat/.chat-panel-context.md +52 -0
  123. package/src/components/chat/.chat-ref.types.md +42 -0
  124. package/src/components/chat/.chat-sidebar-skeleton.md +34 -25
  125. package/src/components/chat/.chat-sidebar.md +31 -26
  126. package/src/components/chat/.chat-ticket-list.md +39 -0
  127. package/src/components/chat/.context-compaction-display.md +36 -0
  128. package/src/components/chat/.cycling-phrase.md +52 -0
  129. package/src/components/chat/.embeddable-chat.md +48 -0
  130. package/src/components/chat/.expand-chevron.md +24 -0
  131. package/src/components/chat/.index.md +31 -35
  132. package/src/components/chat/.mingo-onboarding-card-skeleton.md +44 -0
  133. package/src/components/chat/.mingo-onboarding-card.md +62 -0
  134. package/src/components/chat/.model-display.md +32 -30
  135. package/src/components/chat/.nav-link-anchor-via-runtime.md +40 -0
  136. package/src/components/chat/.remark-card-links.md +38 -0
  137. package/src/components/chat/.slash-command-suggestions.md +47 -0
  138. package/src/components/chat/.source-action-button.md +48 -0
  139. package/src/components/chat/.thinking-display.md +42 -0
  140. package/src/components/chat/.tool-call-blocks.md +45 -0
  141. package/src/components/chat/.tool-execution-display.md +44 -36
  142. package/src/components/chat/chat-container.tsx +1 -1
  143. package/src/components/chat/entity-cards/.admin-content-card.md +43 -0
  144. package/src/components/chat/entity-cards/.block-card.md +47 -0
  145. package/src/components/chat/entity-cards/.blog-card.md +52 -0
  146. package/src/components/chat/entity-cards/.blog-image-placeholder.md +39 -0
  147. package/src/components/chat/entity-cards/.campaign-card-admin.md +47 -0
  148. package/src/components/chat/entity-cards/.case-study-card.md +58 -0
  149. package/src/components/chat/entity-cards/.chat-ticket-item.md +40 -0
  150. package/src/components/chat/entity-cards/.chat-video-entity-card.md +43 -0
  151. package/src/components/chat/entity-cards/.customer-interview-card.md +53 -0
  152. package/src/components/chat/entity-cards/.data-room-doc-card.md +47 -0
  153. package/src/components/chat/entity-cards/.dispatch.md +39 -0
  154. package/src/components/chat/entity-cards/.entity-author-card.md +51 -0
  155. package/src/components/chat/entity-cards/.generic-entity-card.md +62 -0
  156. package/src/components/chat/entity-cards/.github-activity-card.md +61 -0
  157. package/src/components/chat/entity-cards/.hubspot-ticket-card.md +53 -0
  158. package/src/components/chat/entity-cards/.index.md +66 -0
  159. package/src/components/chat/entity-cards/.investor-update-card.md +47 -0
  160. package/src/components/chat/entity-cards/.onboarding-guide-card.md +58 -0
  161. package/src/components/chat/entity-cards/.product-release-card-defaults.md +31 -0
  162. package/src/components/chat/entity-cards/.product-release-card.md +29 -0
  163. package/src/components/chat/entity-cards/.program-card-defaults.md +41 -0
  164. package/src/components/chat/entity-cards/.program-card.md +59 -0
  165. package/src/components/chat/entity-cards/.roadmap-card.md +46 -0
  166. package/src/components/chat/entity-cards/.roadmap-vote-button.md +52 -0
  167. package/src/components/chat/entity-cards/.slack-message-card.md +48 -0
  168. package/src/components/chat/entity-cards/.task-type-icon.md +47 -0
  169. package/src/components/chat/hooks/.index.md +36 -21
  170. package/src/components/chat/hooks/.use-chat-attachment-image-gallery.md +51 -0
  171. package/src/components/chat/hooks/.use-chat-attachments.md +48 -0
  172. package/src/components/chat/hooks/.use-chat-card-item.md +39 -0
  173. package/src/components/chat/hooks/.use-chat-identity.md +45 -0
  174. package/src/components/chat/hooks/.use-chat.md +58 -0
  175. package/src/components/chat/hooks/.use-chunk-catchup.md +46 -48
  176. package/src/components/chat/hooks/.use-close-on-navigation.md +44 -0
  177. package/src/components/chat/hooks/.use-collapsible.md +48 -0
  178. package/src/components/chat/hooks/.use-embedded-chat.md +32 -0
  179. package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +40 -0
  180. package/src/components/chat/hooks/.use-nats-chat-adapter.md +52 -0
  181. package/src/components/chat/hooks/.use-nats-dialog-subscription.md +49 -30
  182. package/src/components/chat/hooks/.use-proxied-image-url.md +40 -0
  183. package/src/components/chat/hooks/.use-realtime-chunk-processor.md +43 -40
  184. package/src/components/chat/hooks/.use-slash-commands.md +46 -0
  185. package/src/components/chat/hooks/.use-sse-chat-adapter.md +34 -0
  186. package/src/components/chat/hooks/.use-sse.md +60 -0
  187. package/src/components/chat/hooks/.use-unified-chat.md +57 -0
  188. package/src/components/chat/hooks/use-jetstream-dialog-subscription.ts +60 -207
  189. package/src/components/chat/hooks/use-nats-dialog-subscription.ts +71 -214
  190. package/src/components/chat/types/.api.types.md +52 -38
  191. package/src/components/chat/types/.chat.types.md +43 -34
  192. package/src/components/chat/types/.component.types.md +47 -48
  193. package/src/components/chat/types/.index.md +20 -27
  194. package/src/components/chat/types/.message.types.md +58 -48
  195. package/src/components/chat/types/.network.types.md +57 -31
  196. package/src/components/chat/types/.processing.types.md +49 -31
  197. package/src/components/chat/types/.unified-chat-state.types.md +41 -0
  198. package/src/components/chat/types/entities/.blog.md +43 -0
  199. package/src/components/chat/types/entities/.case-study.md +26 -0
  200. package/src/components/chat/types/entities/.content-ref.md +41 -0
  201. package/src/components/chat/types/entities/.customer-interview.md +28 -0
  202. package/src/components/chat/types/entities/.data-room-doc.md +36 -0
  203. package/src/components/chat/types/entities/.github-activity.md +43 -0
  204. package/src/components/chat/types/entities/.hubspot-ticket.md +53 -0
  205. package/src/components/chat/types/entities/.index.md +42 -0
  206. package/src/components/chat/types/entities/.investor-update.md +45 -0
  207. package/src/components/chat/types/entities/.onboarding-guide.md +50 -0
  208. package/src/components/chat/types/entities/.program-types.md +57 -0
  209. package/src/components/chat/types/entities/.roadmap-item.md +58 -0
  210. package/src/components/chat/types/entities/.slack-message.md +35 -0
  211. package/src/components/chat/utils/.agent-status-message.md +45 -0
  212. package/src/components/chat/utils/.auto-continuation-directive.md +58 -0
  213. package/src/components/chat/utils/.chat-attachment-markdown.md +54 -0
  214. package/src/components/chat/utils/.chat-authed-fetch.md +25 -0
  215. package/src/components/chat/utils/.chat-nav-resolution.md +46 -0
  216. package/src/components/chat/utils/.chat-proxy-auth-storage.md +38 -0
  217. package/src/components/chat/utils/.chip-action-class.md +34 -0
  218. package/src/components/chat/utils/.chip-styles.md +46 -0
  219. package/src/components/chat/utils/.chunk-parser.md +38 -28
  220. package/src/components/chat/utils/.clickup-task-type-utils.md +48 -0
  221. package/src/components/chat/utils/.compact-card-classes.md +62 -0
  222. package/src/components/chat/utils/.decide-new-tab.md +51 -0
  223. package/src/components/chat/utils/.external-app-urls.md +29 -0
  224. package/src/components/chat/utils/.extract-incomplete-message-state.md +25 -29
  225. package/src/components/chat/utils/.flatten-assistant-content.md +34 -0
  226. package/src/components/chat/utils/.icon-registry.md +46 -0
  227. package/src/components/chat/utils/.index.md +37 -32
  228. package/src/components/chat/utils/.is-cross-origin-url.md +35 -0
  229. package/src/components/chat/utils/.message-segment-accumulator.md +25 -34
  230. package/src/components/chat/utils/.nav-anchor-props.md +44 -0
  231. package/src/components/chat/utils/.nav-click-handler.md +47 -0
  232. package/src/components/chat/utils/.onboarding-icons.md +28 -0
  233. package/src/components/chat/utils/.process-historical-messages.md +46 -35
  234. package/src/components/chat/utils/.scroll-anchor.md +40 -0
  235. package/src/components/chat/utils/.slash-dispatch-utils.md +44 -0
  236. package/src/components/chat/utils/.source-icons.md +35 -0
  237. package/src/components/chat/utils/.source-row-cta.md +54 -0
  238. package/src/components/chat/utils/.tool-call-helpers.md +42 -0
  239. package/src/components/contact/.contact-form.md +43 -0
  240. package/src/components/contact/.index.md +27 -0
  241. package/src/components/features/.array-entry-manager.md +36 -45
  242. package/src/components/features/.changelog-manager.md +47 -21
  243. package/src/components/features/.changelog-sections-manager.md +21 -26
  244. package/src/components/features/.command-box.md +31 -28
  245. package/src/components/features/.entity-summary-editor.md +46 -0
  246. package/src/components/features/.entity-video-section.md +51 -0
  247. package/src/components/features/.figma-prototype-viewer.md +48 -29
  248. package/src/components/features/.filters-dropdown.md +33 -46
  249. package/src/components/features/.highlight-config-section.md +42 -0
  250. package/src/components/features/.highlight-generation-section.md +46 -0
  251. package/src/components/features/.highlight-video-combined-section.md +47 -0
  252. package/src/components/features/.highlight-video-preview.md +44 -0
  253. package/src/components/features/.highlight-video-section.md +47 -0
  254. package/src/components/features/.index.md +40 -66
  255. package/src/components/features/.media-gallery-manager.md +48 -38
  256. package/src/components/features/.more-about-button.md +22 -19
  257. package/src/components/features/.og-editor-preview.md +40 -36
  258. package/src/components/features/.parallax-image-showcase.md +33 -26
  259. package/src/components/features/.paths-display.md +42 -43
  260. package/src/components/features/.platform-badge.md +37 -36
  261. package/src/components/features/.platform-filter.md +23 -16
  262. package/src/components/features/.policy-configuration-panel.md +48 -56
  263. package/src/components/features/.provider-button.md +33 -36
  264. package/src/components/features/.push-button-selector.md +40 -29
  265. package/src/components/features/.release-media-manager.md +46 -31
  266. package/src/components/features/.section-selector.md +26 -31
  267. package/src/components/features/.select-button.md +35 -25
  268. package/src/components/features/.seo-editor-preview.md +41 -44
  269. package/src/components/features/.social-links-manager.md +25 -19
  270. package/src/components/features/.start-with-openframe-button.md +37 -29
  271. package/src/components/features/.status-filter-component.md +36 -20
  272. package/src/components/features/.tags-selector.md +40 -24
  273. package/src/components/features/.transcribe-and-summarize-combined-section.md +45 -0
  274. package/src/components/features/.transcribe-summarize-section.md +48 -0
  275. package/src/components/features/.transcript-summary-editor.md +53 -0
  276. package/src/components/features/.video-bites-display.md +46 -0
  277. package/src/components/features/.video-clips-section.md +41 -0
  278. package/src/components/features/.video-ratio-tabs.md +56 -0
  279. package/src/components/features/.video-source-selector.md +60 -0
  280. package/src/components/features/.video.md +44 -0
  281. package/src/components/features/.waitlist-form.md +60 -0
  282. package/src/components/features/ai-enrich/.AIEnrichButton.md +30 -27
  283. package/src/components/features/ai-enrich/.AIEnrichSection.md +46 -42
  284. package/src/components/features/board/.board-column-header.md +38 -0
  285. package/src/components/features/board/.board-column.md +43 -0
  286. package/src/components/features/board/.board.md +51 -0
  287. package/src/components/features/board/.color-utils.md +26 -0
  288. package/src/components/features/board/.index.md +56 -0
  289. package/src/components/features/board/.ticket-card-skeleton.md +38 -0
  290. package/src/components/features/board/.ticket-card.md +47 -0
  291. package/src/components/features/board/.types.md +45 -0
  292. package/src/components/features/board/.use-board-collapse.md +34 -0
  293. package/src/components/features/notifications/.index.md +57 -0
  294. package/src/components/features/notifications/.notification-drawer.md +34 -0
  295. package/src/components/features/notifications/.notification-tile.md +39 -0
  296. package/src/components/features/notifications/.notifications-context.md +73 -0
  297. package/src/components/features/notifications/.types.md +45 -0
  298. package/src/components/features/notifications/index.ts +2 -1
  299. package/src/components/features/notifications/notifications-context.tsx +104 -6
  300. package/src/components/features/notifications/types.ts +5 -0
  301. package/src/components/icons/.about-icon.md +20 -28
  302. package/src/components/icons/.ai-robot-icon.md +15 -17
  303. package/src/components/icons/.bash-icon.md +16 -23
  304. package/src/components/icons/.buildings-icon.md +10 -24
  305. package/src/components/icons/.capterra-icon.md +30 -26
  306. package/src/components/icons/.carta-icon.md +29 -0
  307. package/src/components/icons/.clickup-icon.md +26 -0
  308. package/src/components/icons/.cmd-icon.md +15 -22
  309. package/src/components/icons/.coins-icon.md +17 -25
  310. package/src/components/icons/.community-hub-icon.md +19 -25
  311. package/src/components/icons/.community-icon.md +24 -21
  312. package/src/components/icons/.compare-icon.md +32 -19
  313. package/src/components/icons/.copy-icon.md +29 -15
  314. package/src/components/icons/.custom-external-link-icon.md +19 -17
  315. package/src/components/icons/.custom-fork-icon.md +32 -21
  316. package/src/components/icons/.custom-license-icon.md +29 -25
  317. package/src/components/icons/.custom-star-icon.md +20 -28
  318. package/src/components/icons/.custom-time-icon.md +21 -22
  319. package/src/components/icons/.cut-vendor-costs-icon.md +6 -19
  320. package/src/components/icons/.dashboard-icon.md +13 -18
  321. package/src/components/icons/.deno-icon.md +16 -23
  322. package/src/components/icons/.donut-icon.md +12 -23
  323. package/src/components/icons/.double-chevron-icon.md +28 -36
  324. package/src/components/icons/.elestio-logo.md +13 -23
  325. package/src/components/icons/.empty-vendor-icon.md +16 -18
  326. package/src/components/icons/.explore-categories-icon.md +18 -29
  327. package/src/components/icons/.eye-icon.md +16 -26
  328. package/src/components/icons/.facebook-icon.md +9 -20
  329. package/src/components/icons/.figma-icon.md +8 -17
  330. package/src/components/icons/.filter-icon.md +15 -17
  331. package/src/components/icons/.flamingo-logo.md +28 -27
  332. package/src/components/icons/.folder-shield-icon.md +28 -19
  333. package/src/components/icons/.g2-icon.md +22 -21
  334. package/src/components/icons/.getapp-icon.md +25 -21
  335. package/src/components/icons/.github-icon.md +13 -25
  336. package/src/components/icons/.globe-icon.md +14 -19
  337. package/src/components/icons/.google-gemini-icon.md +16 -19
  338. package/src/components/icons/.google-logo.md +15 -21
  339. package/src/components/icons/.grid-view-icon.md +30 -19
  340. package/src/components/icons/.hamburger-icon.md +22 -20
  341. package/src/components/icons/.hand-dollar-icon.md +24 -34
  342. package/src/components/icons/.hotel-icon.md +27 -21
  343. package/src/components/icons/.icon-utils.md +28 -29
  344. package/src/components/icons/.image-icon.md +15 -22
  345. package/src/components/icons/.index.md +25 -28
  346. package/src/components/icons/.info-circle-icon.md +29 -30
  347. package/src/components/icons/.instagram-icon.md +10 -24
  348. package/src/components/icons/.jump-in-icon.md +18 -18
  349. package/src/components/icons/.linux-icon.md +18 -18
  350. package/src/components/icons/.log-out-icon.md +15 -23
  351. package/src/components/icons/.logs-icon.md +14 -23
  352. package/src/components/icons/.margin-crisis-icon.md +21 -20
  353. package/src/components/icons/.menu-icon.md +18 -19
  354. package/src/components/icons/.miami-cyber-gang-logo-face-only.md +18 -21
  355. package/src/components/icons/.miami-cyber-gang-logo.md +22 -14
  356. package/src/components/icons/.mlg-logo.md +18 -16
  357. package/src/components/icons/.moon-icon.md +32 -22
  358. package/src/components/icons/.ms-icon.md +30 -19
  359. package/src/components/icons/.nushell-icon.md +7 -21
  360. package/src/components/icons/.open-source-icon.md +19 -23
  361. package/src/components/icons/.openai-icon.md +9 -24
  362. package/src/components/icons/.openframe-ai-icons.md +25 -26
  363. package/src/components/icons/.openframe-logo.md +28 -22
  364. package/src/components/icons/.openframe-text.md +24 -27
  365. package/src/components/icons/.openmsp-logo.md +26 -23
  366. package/src/components/icons/.pilot-icon.md +23 -0
  367. package/src/components/icons/.powershell-icon.md +17 -22
  368. package/src/components/icons/.python-icon.md +16 -23
  369. package/src/components/icons/.queries-icon.md +13 -21
  370. package/src/components/icons/.reddit-icon.md +28 -24
  371. package/src/components/icons/.remote-control-icon.md +13 -17
  372. package/src/components/icons/.script-icon.md +27 -19
  373. package/src/components/icons/.search-icon.md +21 -21
  374. package/src/components/icons/.send-icon.md +14 -16
  375. package/src/components/icons/.settings-icon.md +30 -19
  376. package/src/components/icons/.shape-circle-dash-icon.md +16 -21
  377. package/src/components/icons/.shell-icon.md +15 -19
  378. package/src/components/icons/.shield-check-icon.md +18 -31
  379. package/src/components/icons/.shield-key-icon.md +25 -25
  380. package/src/components/icons/.shield-lock-icon.md +8 -18
  381. package/src/components/icons/.slack-icon.md +28 -32
  382. package/src/components/icons/.sparkles-icon.md +18 -23
  383. package/src/components/icons/.sso-configuration-icon.md +29 -16
  384. package/src/components/icons/.sun-icon.md +20 -18
  385. package/src/components/icons/.table-view-icon.md +17 -19
  386. package/src/components/icons/.telegram-icon.md +8 -22
  387. package/src/components/icons/.thumbs-down-icon.md +10 -19
  388. package/src/components/icons/.thumbs-up-icon.md +8 -17
  389. package/src/components/icons/.tool-directory-icons.md +24 -28
  390. package/src/components/icons/.trustpilot-icon.md +25 -22
  391. package/src/components/icons/.user-icon.md +26 -28
  392. package/src/components/icons/.users-group-icon.md +28 -24
  393. package/src/components/icons/.vendor-showcase-icons.md +21 -29
  394. package/src/components/icons/.vendors-icon.md +18 -22
  395. package/src/components/icons/.whatsapp-icon.md +30 -14
  396. package/src/components/icons/.x-icon.md +18 -23
  397. package/src/components/icons/.x-logo.md +13 -38
  398. package/src/components/icons/.youtube-icon.md +8 -19
  399. package/src/components/icons/device-type-icons/.get-device-type-icon.md +26 -34
  400. package/src/components/icons-v2-generated/.index.md +52 -0
  401. package/src/components/icons-v2-generated/alphabet/.index.md +33 -0
  402. package/src/components/icons-v2-generated/arrows/.index.md +39 -0
  403. package/src/components/icons-v2-generated/audio-and-visual/.index.md +40 -0
  404. package/src/components/icons-v2-generated/brand-logos/.elestio-logo-icon.md +40 -0
  405. package/src/components/icons-v2-generated/brand-logos/.gemini-logo-icon.md +37 -0
  406. package/src/components/icons-v2-generated/brand-logos/.google-gemini-logo-icon.md +33 -0
  407. package/src/components/icons-v2-generated/brand-logos/.index.md +38 -0
  408. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-grey-icon.md +35 -0
  409. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-icon.md +36 -0
  410. package/src/components/icons-v2-generated/buildings/.index.md +48 -0
  411. package/src/components/icons-v2-generated/charts/.index.md +40 -0
  412. package/src/components/icons-v2-generated/clothes/.index.md +48 -0
  413. package/src/components/icons-v2-generated/coding/.index.md +42 -0
  414. package/src/components/icons-v2-generated/communication/.index.md +39 -0
  415. package/src/components/icons-v2-generated/date-and-time/.index.md +29 -0
  416. package/src/components/icons-v2-generated/design/.index.md +39 -0
  417. package/src/components/icons-v2-generated/devices/.index.md +38 -0
  418. package/src/components/icons-v2-generated/documents/.index.md +38 -0
  419. package/src/components/icons-v2-generated/finance/.index.md +34 -0
  420. package/src/components/icons-v2-generated/food-and-drinks/.index.md +34 -0
  421. package/src/components/icons-v2-generated/food-and-drinks/.leafy-green-icon.md +36 -0
  422. package/src/components/icons-v2-generated/food-and-drinks/.strawberry-icon.md +39 -0
  423. package/src/components/icons-v2-generated/health/.index.md +40 -0
  424. package/src/components/icons-v2-generated/household/.index.md +45 -0
  425. package/src/components/icons-v2-generated/interface/.index.md +36 -0
  426. package/src/components/icons-v2-generated/map-and-travel/.index.md +41 -0
  427. package/src/components/icons-v2-generated/media-playback/.index.md +51 -0
  428. package/src/components/icons-v2-generated/number/.index.md +41 -0
  429. package/src/components/icons-v2-generated/school/.index.md +37 -0
  430. package/src/components/icons-v2-generated/security/.fingerprint-icon.md +38 -0
  431. package/src/components/icons-v2-generated/security/.index.md +39 -0
  432. package/src/components/icons-v2-generated/shopping/.index.md +42 -0
  433. package/src/components/icons-v2-generated/signs-and-symbols/.index.md +32 -0
  434. package/src/components/icons-v2-generated/sort-and-filter/.index.md +35 -0
  435. package/src/components/icons-v2-generated/sport/.index.md +41 -0
  436. package/src/components/icons-v2-generated/text-editor/.index.md +44 -0
  437. package/src/components/icons-v2-generated/users/.index.md +45 -0
  438. package/src/components/icons-v2-generated/vehicles-and-delivery/.index.md +36 -0
  439. package/src/components/icons-v2-generated/weather-and-nature/.flower-sakura-icon.md +36 -0
  440. package/src/components/icons-v2-generated/weather-and-nature/.index.md +34 -0
  441. package/src/components/layout/.article-detail-layout.md +43 -0
  442. package/src/components/layout/.back-button.md +40 -0
  443. package/src/components/layout/.list-page-layout.md +35 -26
  444. package/src/components/layout/.page-container.md +27 -38
  445. package/src/components/layout/.page-layout.md +50 -0
  446. package/src/components/layout/.title-block.md +42 -0
  447. package/src/components/loading/.card-skeleton.md +38 -29
  448. package/src/components/loading/.device-card-skeleton.md +29 -25
  449. package/src/components/loading/.index.md +39 -46
  450. package/src/components/loading/.margin-report-skeleton.md +45 -34
  451. package/src/components/loading/.organization-card-skeleton.md +39 -44
  452. package/src/components/loading/.page-layout-skeleton.md +34 -45
  453. package/src/components/loading/.unified-skeleton.md +62 -36
  454. package/src/components/navigation/.app-header.md +40 -29
  455. package/src/components/navigation/.app-layout.md +25 -26
  456. package/src/components/navigation/.header-global-search.md +34 -37
  457. package/src/components/navigation/.header-organization-filter.md +23 -22
  458. package/src/components/navigation/.header.md +31 -35
  459. package/src/components/navigation/.mobile-burger-menu.md +39 -47
  460. package/src/components/navigation/.mobile-nav-panel.md +51 -32
  461. package/src/components/navigation/.navigation-sidebar-header.md +36 -0
  462. package/src/components/navigation/.navigation-sidebar-item.md +45 -0
  463. package/src/components/navigation/.navigation-sidebar-toggle.md +38 -0
  464. package/src/components/navigation/.navigation-sidebar.md +33 -34
  465. package/src/components/navigation/.sliding-sidebar.md +52 -41
  466. package/src/components/navigation/.sticky-section-nav.md +56 -48
  467. package/src/components/navigation/app-header.tsx +7 -9
  468. package/src/components/platform/.ScriptArguments.md +39 -25
  469. package/src/components/platform/.ScriptInfoSection.md +30 -26
  470. package/src/components/platform/.ShellTypeBadge.md +18 -13
  471. package/src/components/platform/.SoftwareInfo.md +23 -27
  472. package/src/components/platform/.SoftwareSourceBadge.md +28 -19
  473. package/src/components/platform/.ToolBadge.md +25 -26
  474. package/src/components/providers/.theme-provider.md +52 -0
  475. package/src/components/shared/delivery/.delivery-lists.md +39 -0
  476. package/src/components/shared/delivery/.delivery-row.md +41 -0
  477. package/src/components/shared/delivery/.delivery-table.md +41 -0
  478. package/src/components/shared/delivery/.index.md +38 -0
  479. package/src/components/shared/dev-section/.dev-card-row.md +60 -0
  480. package/src/components/shared/dev-section/.dev-section-page.md +48 -0
  481. package/src/components/shared/dev-section/.dev-section-view.md +43 -0
  482. package/src/components/shared/dev-section/.index.md +38 -0
  483. package/src/components/shared/legal-document/.index.md +40 -0
  484. package/src/components/shared/legal-document/.legal-document-page.md +50 -0
  485. package/src/components/shared/legal-document/.use-legal-docs.md +42 -0
  486. package/src/components/shared/onboarding/.onboarding-step-card.md +32 -31
  487. package/src/components/shared/onboarding/.onboarding-walkthrough.md +39 -43
  488. package/src/components/shared/product-release/.index.md +28 -30
  489. package/src/components/shared/product-release/.product-release-card-skeleton.md +28 -28
  490. package/src/components/shared/product-release/.product-release-card.md +45 -27
  491. package/src/components/shared/product-release/.release-detail-page.md +23 -24
  492. package/src/components/shared/roadmap/.index.md +37 -0
  493. package/src/components/shared/roadmap/.roadmap-grid-skeleton.md +39 -0
  494. package/src/components/shared/roadmap/.roadmap-grid.md +66 -0
  495. package/src/components/shared/roadmap/.use-roadmap-voting.md +68 -0
  496. package/src/components/tickets/.help-center-card.md +51 -0
  497. package/src/components/tickets/.help-center-create-form.md +38 -0
  498. package/src/components/tickets/.help-center-list.md +40 -0
  499. package/src/components/tickets/.index.md +65 -0
  500. package/src/components/tickets/.ticket-center.md +51 -0
  501. package/src/components/tickets/.ticket-detail-drawer.md +48 -0
  502. package/src/components/tickets/.ticket-linked-delivery-card.md +36 -0
  503. package/src/components/tickets/.ticket-open-form.md +50 -0
  504. package/src/components/tickets/.ticket-row.md +30 -0
  505. package/src/components/tickets/.types.md +57 -0
  506. package/src/components/tickets/hooks/.use-ticket-actions.md +77 -0
  507. package/src/components/tickets/hooks/.use-ticket-engagements.md +42 -0
  508. package/src/components/tickets/hooks/.use-tickets-list.md +54 -0
  509. package/src/components/ui/.actions-menu.md +66 -41
  510. package/src/components/ui/.alert-dialog.md +29 -26
  511. package/src/components/ui/.allowed-domains-input.md +29 -21
  512. package/src/components/ui/.assignee-dropdown.md +45 -0
  513. package/src/components/ui/.autocomplete.md +47 -41
  514. package/src/components/ui/.benefit-card.md +51 -36
  515. package/src/components/ui/.brand-association-card.md +30 -27
  516. package/src/components/ui/.breadcrumb.md +17 -15
  517. package/src/components/ui/.checkbox-block.md +39 -35
  518. package/src/components/ui/.checkbox-with-description.md +23 -16
  519. package/src/components/ui/.checkbox.md +31 -23
  520. package/src/components/ui/.circular-progress.md +49 -19
  521. package/src/components/ui/.content-loader.md +32 -20
  522. package/src/components/ui/.cursor-pagination.md +41 -52
  523. package/src/components/ui/.dashboard-info-card.md +33 -26
  524. package/src/components/ui/.date-picker.md +27 -25
  525. package/src/components/ui/.device-card-compact.md +28 -29
  526. package/src/components/ui/.device-card.md +27 -27
  527. package/src/components/ui/.dialog.md +25 -16
  528. package/src/components/ui/.drawer.md +86 -0
  529. package/src/components/ui/.dropdown-button.md +45 -0
  530. package/src/components/ui/.entity-image.md +46 -0
  531. package/src/components/ui/.error-state.md +41 -28
  532. package/src/components/ui/.feature-card.md +35 -31
  533. package/src/components/ui/.feature-list.md +48 -0
  534. package/src/components/ui/.field-wrapper.md +47 -0
  535. package/src/components/ui/.file-upload.md +42 -0
  536. package/src/components/ui/.filter-checkbox-item.md +43 -0
  537. package/src/components/ui/.filter-list.md +57 -0
  538. package/src/components/ui/.filter-modal.md +59 -0
  539. package/src/components/ui/.floating-tooltip.md +43 -26
  540. package/src/components/ui/.hidden-tags-popup.md +49 -0
  541. package/src/components/ui/.hover-dropdown.md +54 -0
  542. package/src/components/ui/.image-gallery-modal.md +41 -34
  543. package/src/components/ui/.image-uploader.md +53 -0
  544. package/src/components/ui/.index.md +40 -34
  545. package/src/components/ui/.info-card.md +31 -31
  546. package/src/components/ui/.info-row.md +31 -27
  547. package/src/components/ui/.input-trigger.md +44 -0
  548. package/src/components/ui/.input.md +37 -31
  549. package/src/components/ui/.markdown-editor.md +57 -0
  550. package/src/components/ui/.modal-v2.md +51 -0
  551. package/src/components/ui/.modal.md +32 -31
  552. package/src/components/ui/.more-actions-menu.md +45 -38
  553. package/src/components/ui/.organization-card.md +31 -37
  554. package/src/components/ui/.page-actions.md +44 -54
  555. package/src/components/ui/.phone-input.md +54 -0
  556. package/src/components/ui/.progress-bar.md +35 -27
  557. package/src/components/ui/.radio-group.md +39 -27
  558. package/src/components/ui/.release-changelog-section.md +34 -34
  559. package/src/components/ui/.search-input.md +48 -0
  560. package/src/components/ui/.select.md +54 -34
  561. package/src/components/ui/.service-card.md +42 -40
  562. package/src/components/ui/.sheet.md +27 -18
  563. package/src/components/ui/.simple-markdown-renderer.md +29 -31
  564. package/src/components/ui/.sort-column-item.md +42 -0
  565. package/src/components/ui/.square-avatar.md +34 -24
  566. package/src/components/ui/.status-badge.md +26 -38
  567. package/src/components/ui/.switch.md +22 -35
  568. package/src/components/ui/.tab-navigation.md +56 -53
  569. package/src/components/ui/.tab-selector.md +40 -0
  570. package/src/components/ui/.tag-key-value-filter.md +56 -0
  571. package/src/components/ui/.tag-search-input.md +53 -0
  572. package/src/components/ui/.tag.md +49 -31
  573. package/src/components/ui/.tags-manager.md +60 -0
  574. package/src/components/ui/.textarea.md +44 -34
  575. package/src/components/ui/.ticket-attachments-list.md +45 -0
  576. package/src/components/ui/.ticket-detail-section.md +29 -0
  577. package/src/components/ui/.ticket-info-section.md +56 -0
  578. package/src/components/ui/.ticket-note-card.md +53 -0
  579. package/src/components/ui/.ticket-notes-section.md +54 -0
  580. package/src/components/ui/.ticket-status-tag.md +49 -0
  581. package/src/components/ui/.title-content-block.md +25 -26
  582. package/src/components/ui/.toaster.md +40 -28
  583. package/src/components/ui/.tooltip.md +22 -11
  584. package/src/components/ui/.truncate-text.md +39 -0
  585. package/src/components/ui/button/.button-styles.md +35 -0
  586. package/src/components/ui/button/.button.md +53 -0
  587. package/src/components/ui/button/.split-button.md +48 -0
  588. package/src/components/ui/data-table/.data-table-body.md +48 -0
  589. package/src/components/ui/data-table/.data-table-column-filter.md +45 -0
  590. package/src/components/ui/data-table/.data-table-cursor-footer.md +45 -0
  591. package/src/components/ui/data-table/.data-table-empty.md +43 -0
  592. package/src/components/ui/data-table/.data-table-header.md +55 -0
  593. package/src/components/ui/data-table/.data-table-infinite-footer.md +44 -0
  594. package/src/components/ui/data-table/.data-table-row-count.md +43 -0
  595. package/src/components/ui/data-table/.data-table-row.md +47 -0
  596. package/src/components/ui/data-table/.data-table-skeleton.md +42 -0
  597. package/src/components/ui/data-table/.data-table.md +47 -0
  598. package/src/components/ui/data-table/.index.md +55 -0
  599. package/src/components/ui/data-table/.types.md +54 -0
  600. package/src/components/ui/data-table/.use-data-table.md +45 -0
  601. package/src/components/ui/data-table/.utils.md +38 -0
  602. package/src/components/ui/file-manager/.file-manager-action-bar.md +39 -30
  603. package/src/components/ui/file-manager/.file-manager-breadcrumb.md +29 -27
  604. package/src/components/ui/file-manager/.file-manager-context-menu.md +38 -42
  605. package/src/components/ui/file-manager/.file-manager-empty.md +26 -39
  606. package/src/components/ui/file-manager/.file-manager-table-row.md +33 -41
  607. package/src/components/ui/file-manager/.file-manager.md +35 -31
  608. package/src/components/ui/query-report-table/.index.md +43 -0
  609. package/src/components/ui/query-report-table/.query-report-table-header.md +36 -0
  610. package/src/components/ui/query-report-table/.query-report-table-row.md +40 -0
  611. package/src/components/ui/query-report-table/.query-report-table-skeleton.md +44 -0
  612. package/src/components/ui/query-report-table/.query-report-table.md +47 -0
  613. package/src/components/ui/query-report-table/.types.md +41 -0
  614. package/src/components/ui/query-report-table/.utils.md +35 -0
  615. package/src/components/ui/table/.index.md +27 -48
  616. package/src/components/ui/table/.table-cell.md +18 -27
  617. package/src/components/ui/table/.table-column-filter-dropdown.md +40 -0
  618. package/src/components/ui/table/.table-description-cell.md +24 -14
  619. package/src/components/ui/table/.table-empty-state.md +21 -22
  620. package/src/components/ui/table/.table-header.md +25 -40
  621. package/src/components/ui/table/.table-row.md +22 -40
  622. package/src/components/ui/table/.table-skeleton.md +33 -26
  623. package/src/components/ui/table/.table-timestamp-cell.md +26 -16
  624. package/src/components/ui/table/.table.md +39 -59
  625. package/src/components/ui/table/.types.md +44 -36
  626. package/src/components/ui/table/.utils.md +18 -20
  627. package/src/contexts/.chat-runtime-context.md +54 -0
  628. package/src/contexts/.endpoints-runtime-context.md +58 -0
  629. package/src/contexts/.index.md +53 -0
  630. package/src/contexts/.use-outer-or-default.md +36 -0
  631. package/src/embed-shims/.index.md +45 -0
  632. package/src/embed-shims/.next-dynamic.md +43 -0
  633. package/src/embed-shims/.next-image.md +45 -0
  634. package/src/embed-shims/.next-link.md +59 -0
  635. package/src/embed-shims/.next-navigation.md +59 -0
  636. package/src/hooks/.index.md +34 -29
  637. package/src/hooks/.use-access-code-integration.md +49 -0
  638. package/src/hooks/.use-contact-submission.md +37 -26
  639. package/src/hooks/.use-copy-to-clipboard.md +42 -0
  640. package/src/hooks/.use-near-viewport.md +44 -0
  641. package/src/hooks/.use-og-placeholder.md +51 -0
  642. package/src/hooks/.use-toast.md +36 -35
  643. package/src/hooks/state/.use-api-params.md +29 -46
  644. package/src/hooks/state/.use-query-params.md +37 -33
  645. package/src/hooks/ui/.index.md +33 -32
  646. package/src/hooks/ui/.use-auto-limit-tags.md +54 -0
  647. package/src/hooks/ui/.use-horizontal-scrollbar.md +74 -0
  648. package/src/hooks/ui/.use-image-edge-color.md +42 -0
  649. package/src/hooks/ui/.use-media-query.md +33 -25
  650. package/src/hooks/ui/.use-search.md +51 -0
  651. package/src/nats/.nats.md +49 -28
  652. package/src/nats/index.ts +3 -0
  653. package/src/nats/nats-provider.tsx +146 -0
  654. package/src/nats/nats.ts +2 -0
  655. package/src/nats/shared-connection.ts +285 -0
  656. package/src/nats/use-nats-subscription.ts +99 -0
  657. package/src/schemas/.contact-schema.md +45 -0
  658. package/src/stories/.AnnouncementBar.stories.md +45 -0
  659. package/src/stories/.AppLayout.stories.md +20 -21
  660. package/src/stories/.Autocomplete.stories.md +48 -34
  661. package/src/stories/.Board.stories.md +35 -0
  662. package/src/stories/.Button.stories.md +36 -33
  663. package/src/stories/.ChatTicketList.stories.md +33 -0
  664. package/src/stories/.CheckboxBlock.stories.md +40 -28
  665. package/src/stories/.ContentLoader.stories.md +47 -0
  666. package/src/stories/.DashboardInfoCard.stories.md +57 -0
  667. package/src/stories/.DataTable.stories.md +41 -0
  668. package/src/stories/.DatePicker.stories.md +66 -52
  669. package/src/stories/.DeviceCard.stories.md +41 -40
  670. package/src/stories/.DeviceCardCompact.stories.md +41 -0
  671. package/src/stories/.DotsLoaderIcon.stories.md +36 -0
  672. package/src/stories/.Drawer.stories.md +58 -0
  673. package/src/stories/.EmbeddableChat.stories.md +41 -0
  674. package/src/stories/.FileManager.stories.md +41 -0
  675. package/src/stories/.FileManagerActionBar.stories.md +38 -0
  676. package/src/stories/.FileUpload.stories.md +53 -0
  677. package/src/stories/.FilterList.stories.md +54 -0
  678. package/src/stories/.FilterModal.stories.md +72 -0
  679. package/src/stories/.FiltersDropdown.stories.md +57 -0
  680. package/src/stories/.Header.stories.md +48 -0
  681. package/src/stories/.ImageUploader.stories.md +49 -0
  682. package/src/stories/.InfoCard.stories.md +54 -0
  683. package/src/stories/.Input.stories.md +48 -30
  684. package/src/stories/.ListPageLayout.stories.md +56 -43
  685. package/src/stories/.MingoOnboardingCard.stories.md +42 -0
  686. package/src/stories/.MingoOnboardingCardSkeleton.stories.md +35 -0
  687. package/src/stories/.Modal.stories.md +40 -31
  688. package/src/stories/.NotificationDrawer.stories.md +55 -0
  689. package/src/stories/.OnboardingStepCard.stories.md +41 -0
  690. package/src/stories/.OrganizationCard.stories.md +61 -0
  691. package/src/stories/.PageActions.stories.md +52 -49
  692. package/src/stories/.PageContainer.stories.md +41 -35
  693. package/src/stories/.PageLayout.stories.md +60 -0
  694. package/src/stories/.ParallaxImageShowcase.stories.md +49 -0
  695. package/src/stories/.PhoneInput.stories.md +53 -0
  696. package/src/stories/.QueryReportTable.stories.md +44 -0
  697. package/src/stories/.RadioGroup.stories.md +46 -0
  698. package/src/stories/.RadioGroupBlock.stories.md +45 -0
  699. package/src/stories/.Select.stories.md +29 -15
  700. package/src/stories/.SlashCommandSuggestions.stories.md +41 -0
  701. package/src/stories/.SplitButton.stories.md +62 -0
  702. package/src/stories/.TabNavigation.stories.md +47 -38
  703. package/src/stories/.TabSelector.stories.md +65 -0
  704. package/src/stories/.Table.stories.md +38 -46
  705. package/src/stories/.TableColumnFilterDropdown.stories.md +46 -0
  706. package/src/stories/.Tag.stories.md +43 -32
  707. package/src/stories/.TagKeyValueFilter.stories.md +44 -0
  708. package/src/stories/.TagSearchInput.stories.md +61 -0
  709. package/src/stories/.Textarea.stories.md +49 -26
  710. package/src/stories/.Theme.stories.md +41 -0
  711. package/src/stories/.TicketAttachmentsList.stories.md +39 -0
  712. package/src/stories/.TicketDescriptionViewer.stories.md +39 -0
  713. package/src/stories/.TicketInfoSection.stories.md +40 -0
  714. package/src/stories/.TicketKnowledgeBaseList.stories.md +36 -0
  715. package/src/stories/.TicketNotesSection.stories.md +50 -0
  716. package/src/stories/.Toaster.stories.md +40 -0
  717. package/src/stories/.ToolExecutionDisplay.stories.md +41 -0
  718. package/src/stories/.Tooltip.stories.md +41 -0
  719. package/src/stories/.UserSummary.stories.md +41 -0
  720. package/src/stories/.WaitlistForm.stories.md +42 -0
  721. package/src/stories/BlogCard.stories.tsx +61 -0
  722. package/src/stories/CampaignCardAdmin.stories.tsx +52 -0
  723. package/src/stories/CaseStudyCard.stories.tsx +42 -0
  724. package/src/stories/ChatContainer.stories.tsx +186 -0
  725. package/src/stories/ChatInlineVideoPill.stories.tsx +63 -0
  726. package/src/stories/CustomerInterviewCard.stories.tsx +42 -0
  727. package/src/stories/DataRoomDocCard.stories.tsx +52 -0
  728. package/src/stories/GenericEntityCard.stories.tsx +66 -0
  729. package/src/stories/GitHubActivityCard.stories.tsx +61 -0
  730. package/src/stories/HubspotTicketCard.stories.tsx +98 -0
  731. package/src/stories/InvestorUpdateCard.stories.tsx +42 -0
  732. package/src/stories/OnboardingGuideCard.stories.tsx +52 -0
  733. package/src/stories/ProductReleaseCard.stories.tsx +61 -0
  734. package/src/stories/ProgramCard.stories.tsx +79 -0
  735. package/src/stories/RoadmapCard.stories.tsx +75 -0
  736. package/src/stories/SlackMessageCard.stories.tsx +41 -0
  737. package/src/stories/__fixtures__/chat-cards.ts +604 -0
  738. package/src/types/.blog.md +53 -29
  739. package/src/types/.case-study.md +44 -27
  740. package/src/types/.customer-interview.md +66 -44
  741. package/src/types/.delivery.md +40 -0
  742. package/src/types/.employee.md +24 -30
  743. package/src/types/.index.md +33 -47
  744. package/src/types/.marketing.md +49 -44
  745. package/src/types/.navigation.md +33 -25
  746. package/src/types/.os.types.md +32 -27
  747. package/src/types/.platform.md +31 -28
  748. package/src/types/.product-release.md +65 -38
  749. package/src/types/.supabase.md +37 -29
  750. package/src/types/.team.md +41 -33
  751. package/src/types/.video-processing.md +54 -0
  752. package/src/types/.waitlist.md +40 -36
  753. package/src/utils/.access-code-client.md +37 -36
  754. package/src/utils/.cn.md +31 -23
  755. package/src/utils/.color-analysis.md +35 -0
  756. package/src/utils/.country-phone-utils.md +39 -0
  757. package/src/utils/.date-formatters.md +19 -18
  758. package/src/utils/.embed-authed-fetch.md +39 -0
  759. package/src/utils/.embed-proxy-auth-storage.md +38 -0
  760. package/src/utils/.fetch-priority.md +41 -0
  761. package/src/utils/.format.md +74 -25
  762. package/src/utils/.generic-domain-utils.md +42 -0
  763. package/src/utils/.image-proxy.md +59 -23
  764. package/src/utils/.index.md +42 -49
  765. package/src/utils/.local-storage-adapter.md +50 -0
  766. package/src/utils/.ods-color-utils.md +55 -38
  767. package/src/utils/.platform-config.md +45 -25
  768. package/src/utils/.scroll-into-view.md +40 -0
  769. package/src/utils/.source-icons.md +53 -0
  770. package/src/utils/.sse-decision-frame.md +46 -0
  771. package/src/utils/dev-sections/.index.md +34 -0
  772. package/src/utils/dev-sections/.openframe-dev-sections.md +49 -0
  773. package/dist/chunk-3E5ANY55.js.map +0 -1
  774. package/dist/chunk-EH3RWVF3.cjs.map +0 -1
  775. package/dist/chunk-UYQOPC57.js.map +0 -1
  776. package/dist/chunk-WI76ZUBE.cjs.map +0 -1
  777. package/src/components/.card.md +0 -42
  778. package/src/components/.contact-button.md +0 -30
  779. package/src/components/.drawer.md +0 -46
  780. package/src/components/.fixed-layout-container.md +0 -47
  781. package/src/components/.footer-waitlist-card.md +0 -29
  782. package/src/components/.join-waitlist-cta.md +0 -29
  783. package/src/components/.sheet.md +0 -47
  784. package/src/components/.sliding-panel.md +0 -48
  785. package/src/components/.tooltip.md +0 -48
  786. package/src/components/.use-mobile.md +0 -42
  787. package/src/components/.vendor-compact-card.md +0 -66
  788. package/src/components/.x-button.md +0 -42
  789. package/src/components/features/.github-repo-button.md +0 -40
  790. package/src/components/features/.organization-icon.md +0 -47
  791. package/src/components/features/.organization-selector.md +0 -45
  792. package/src/components/icons/.fleet-icon.md +0 -39
  793. package/src/components/icons/.meshcentral-icon.md +0 -35
  794. package/src/components/icons/.refresh-icon.md +0 -34
  795. package/src/components/icons/.tactical-icon.md +0 -35
  796. package/src/components/ui/.button.md +0 -69
  797. package/src/components/ui/.log-table-row.md +0 -47
  798. package/src/components/ui/.selectable-device-card.md +0 -46
  799. package/src/hooks/.api-hooks-stub.md +0 -45
  800. package/src/hooks/api/.use-product-releases.md +0 -53
  801. package/src/stories/.OrganizationSelector.stories.md +0 -42
  802. package/src/stories/.SelectableDeviceCard.stories.md +0 -30
  803. package/src/utils/.lite-youtube-embed-stub.md +0 -37
  804. package/src/utils/.lite-youtube-embed.md +0 -33
  805. /package/dist/{chunk-QKFBZLIR.js.map → chunk-5OWDOFKK.js.map} +0 -0
  806. /package/dist/{chunk-5BNWGK6D.js.map → chunk-HWY35EAK.js.map} +0 -0
@@ -1,61 +1,48 @@
1
- <!-- source-hash: 43ec97c557bde453e1b537b137f6f8db -->
2
- A customizable dropdown component for filtering UI elements with multi-section support, checkboxes, radio buttons, and responsive mobile behavior.
1
+ <!-- source-hash: a3c5543a6675d1ff7a726459eb736d56 -->
2
+ Animated filter dropdown component for selecting, applying, and resetting multi-section filter configurations with support for checkbox, radio, and select modes.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **FilterOption**: Interface defining individual filter options with id, label, value, and optional separator type
7
- - **FilterSection**: Interface for grouping filters by type (checkbox/radio/select) with optional select-all functionality
8
- - **FilterCheckbox**: Custom checkbox component with Flamingo branding (yellow accent color)
9
- - **FiltersDropdown**: Main dropdown component with intelligent positioning, mobile responsiveness, and state management
6
+ ### Interfaces
7
+ - **`FilterOption`** — Individual filter item with `id`, `label`, `value`, optional `count`, and `type`
8
+ - **`FilterSection`** — Grouping of options with a selection `type` (`"checkbox"` | `"radio"` | `"select"`), optional `allowSelectAll`, and `defaultSelected`
9
+ - **`FiltersDropdownProps`** — Full component props including `sections`, `onApply`, `onReset`, `currentFilters`, and `placement`
10
+
11
+ ### Internal Components
12
+ - **`FilterCheckbox`** — Styled checkbox with accent fill and checkmark icon when selected
13
+
14
+ ### Main Export
15
+ - **`FiltersDropdown`** — Dropdown panel with animated open/close (mount/unmount + CSS transitions), smart viewport-aware placement, mobile-responsive layout, outside-click and Escape key dismissal, and active filter count indicator
10
16
 
11
17
  ## Usage Example
12
18
 
13
19
  ```typescript
14
- import { FiltersDropdown, FilterSection } from './filters-dropdown'
15
-
16
- const filterSections: FilterSection[] = [
20
+ const sections: FilterSection[] = [
17
21
  {
18
- id: 'status',
19
- title: 'Status',
20
- type: 'checkbox',
22
+ id: "status",
23
+ title: "Status",
24
+ type: "checkbox",
21
25
  allowSelectAll: true,
22
26
  options: [
23
- { id: 'active', label: 'Active', value: 'active' },
24
- { id: 'inactive', label: 'Inactive', value: 'inactive' },
25
- { id: 'pending', label: 'Pending', value: 'pending' }
26
- ]
27
+ { id: "open", label: "Open", value: "open", count: 12 },
28
+ { id: "closed", label: "Closed", value: "closed", count: 4 },
29
+ ],
27
30
  },
28
- {
29
- id: 'priority',
30
- title: 'Priority',
31
- type: 'radio',
32
- options: [
33
- { id: 'high', label: 'High', value: 'high' },
34
- { id: 'medium', label: 'Medium', value: 'medium' },
35
- { id: 'low', label: 'Low', value: 'low' }
36
- ]
37
- }
38
31
  ]
39
32
 
40
- function MyComponent() {
41
- const [appliedFilters, setAppliedFilters] = useState({})
42
-
43
- const handleApplyFilters = (filters: Record<string, string[]>) => {
44
- setAppliedFilters(filters)
45
- // Apply filters to your data
46
- }
47
-
48
- return (
49
- <FiltersDropdown
50
- triggerLabel="Filter Items"
51
- sections={filterSections}
52
- onApply={handleApplyFilters}
53
- currentFilters={appliedFilters}
54
- placement="bottom-start"
55
- responsive={true}
56
- />
57
- )
58
- }
33
+ const [appliedFilters, setAppliedFilters] = useState<Record<string, string[]>>({})
34
+
35
+ <FiltersDropdown
36
+ sections={sections}
37
+ triggerLabel="STATUS"
38
+ placement="bottom-start"
39
+ currentFilters={appliedFilters}
40
+ onApply={(filters) => setAppliedFilters(filters)}
41
+ onReset={() => setAppliedFilters({})}
42
+ />
59
43
  ```
60
44
 
61
- The component features intelligent positioning to avoid viewport overflow, mobile-responsive behavior with full-width dropdowns, and preserves filter state when reopening. It supports custom trigger elements and includes visual indicators for active filter counts.
45
+ ### Key Behaviors
46
+ - `currentFilters` syncs external state back into the dropdown when reopened
47
+ - Placement auto-adjusts (`bottom-start` ↔ `bottom-end`) based on available viewport space
48
+ - On mobile (`< 640px`), the panel switches to a fixed, full-width overlay mode
@@ -0,0 +1,42 @@
1
+ <!-- source-hash: d7af9befa8736257f5fa1a7169b8bc9d -->
2
+ Reusable configuration section component for highlight video generation settings, providing duration selection and subtitle burning controls in a unified horizontal layout.
3
+
4
+ ## Key Components
5
+
6
+ ### `HighlightConfigSection`
7
+ A client-side React component used across `CustomerInterview` and `ProductRelease` entity workflows to configure highlight video output options.
8
+
9
+ ### `HighlightConfigSectionProps`
10
+ | Prop | Type | Description |
11
+ |------|------|-------------|
12
+ | `targetDurationSeconds` | `number` | Current selected duration in seconds |
13
+ | `onTargetDurationChange` | `(seconds: number) => void` | Callback fired on duration change |
14
+ | `skipSubtitleBurning` | `boolean` | Whether subtitle burning is skipped |
15
+ | `onSkipSubtitleBurningChange` | `(skip: boolean) => void` | Callback fired on subtitle toggle |
16
+ | `disabled` | `boolean?` | Disables all controls (default: `false`) |
17
+ | `className` | `string?` | Additional CSS class override |
18
+
19
+ **Duration options:** 60s, 120s, 180s *(recommended)*, 240s, 300s
20
+
21
+ ## Usage Example
22
+
23
+ ```typescript
24
+ import { HighlightConfigSection } from './highlight-config-section';
25
+
26
+ function VideoEditor() {
27
+ const [duration, setDuration] = useState(180);
28
+ const [skipSubs, setSkipSubs] = useState(false);
29
+
30
+ return (
31
+ <HighlightConfigSection
32
+ targetDurationSeconds={duration}
33
+ onTargetDurationChange={setDuration}
34
+ skipSubtitleBurning={skipSubs}
35
+ onSkipSubtitleBurningChange={setSkipSubs}
36
+ disabled={false}
37
+ />
38
+ );
39
+ }
40
+ ```
41
+
42
+ > **Note:** Renders as a dark-themed panel (`bg-[#1a1a1a]`) with a `Select` dropdown for duration and a checkbox for subtitle burning, laid out horizontally via flexbox.
@@ -0,0 +1,46 @@
1
+ <!-- source-hash: 9a48f5db58e0fc209ed8daeba5dd9324 -->
2
+ A reusable React wrapper around `AIEnrichSection` that provides a standardized UI for triggering AI-powered highlight video generation for `CustomerInterview` and `ProductRelease` entities.
3
+
4
+ ## Key Components
5
+
6
+ ### `HighlightGenerationSection`
7
+ The primary export — a thin, opinionated wrapper that pre-configures `AIEnrichSection` with highlight-specific defaults:
8
+
9
+ | Prop | Type | Default |
10
+ |------|------|---------|
11
+ | `onGenerateHighlight` | `() => void` | — |
12
+ | `isProcessing` | `boolean` | — |
13
+ | `canEnrich` | `boolean` | — |
14
+ | `requiredFields` | `AIRequiredField[]` | — |
15
+ | `targetDurationSeconds` | `number` | `180` |
16
+ | `hasResult` | `boolean` | `false` |
17
+ | `disabledMessage` | `string` | `"Upload a video and run transcription first"` |
18
+ | `showCancel` | `boolean` | `true` |
19
+ | `loadingLabel` | `string` | `"Generating highlight..."` |
20
+
21
+ ### `HighlightGenerationSectionProps`
22
+ The exported interface describing all configurable props, including optional overrides for `title`, `description`, `buttonLabel`, and cancellation controls.
23
+
24
+ ## Usage Example
25
+
26
+ ```typescript
27
+ import { HighlightGenerationSection } from './highlight-generation-section';
28
+
29
+ <HighlightGenerationSection
30
+ onGenerateHighlight={handleGenerate}
31
+ isProcessing={isGenerating}
32
+ canEnrich={hasTranscription}
33
+ requiredFields={[
34
+ { label: 'Video Upload', satisfied: hasVideo },
35
+ { label: 'Transcription', satisfied: hasTranscription },
36
+ ]}
37
+ hasResult={!!highlightUrl}
38
+ targetDurationSeconds={120}
39
+ onCancel={handleCancel}
40
+ isCancelling={isCancelling}
41
+ status={status}
42
+ statusMessage={statusMessage}
43
+ />
44
+ ```
45
+
46
+ > **Note:** Pair this component with `HighlightConfigSection` for the full highlight generation experience. The button label automatically switches between `"Generate Highlight"` and `"Regenerate Highlight"` based on the `hasResult` prop.
@@ -0,0 +1,47 @@
1
+ <!-- source-hash: 396284dd8be1b09a6ecb781dd4fed0ce -->
2
+ Unified React component that combines highlight video configuration, AI-powered generation, and video preview/upload into a single composable section used across multiple modal contexts.
3
+
4
+ ## Key Components
5
+
6
+ ### `HighlightVideoCombinedSection`
7
+ The primary export. Renders three sequential sub-sections:
8
+ 1. **`HighlightConfigSection`** — Duration and subtitle burning settings
9
+ 2. **`AIEnrichSection`** — AI generation trigger with status feedback and cancel support
10
+ 3. **Preview + Upload** — Inline video preview with manual upload fallback
11
+
12
+ ### `HighlightVideoCombinedSectionProps`
13
+ Full interface grouping props into four logical namespaces:
14
+ - **Config** — `targetDurationSeconds`, `skipSubtitleBurning`, `configDisabled`
15
+ - **Generation** — `onGenerateHighlight`, `isProcessing`, `canEnrich`, `requiredFields`, `status`
16
+ - **Preview** — `highlightVideoUrl`, `highlightVideoThumbnail`, `renderVideoPreview`, `onUpload`, `onDelete`
17
+ - **Common** — `className`, `title`, `description`, `buttonLabel`
18
+
19
+ ## Usage Example
20
+
21
+ ```typescript
22
+ <HighlightVideoCombinedSection
23
+ // Config
24
+ targetDurationSeconds={120}
25
+ onTargetDurationChange={(s) => setDuration(s)}
26
+ skipSubtitleBurning={false}
27
+ onSkipSubtitleBurningChange={(v) => setSkipSubs(v)}
28
+ // Generation
29
+ onGenerateHighlight={handleGenerate}
30
+ isProcessing={isGenerating}
31
+ canEnrich={hasTranscript}
32
+ requiredFields={[{ key: 'transcript', label: 'Transcription' }]}
33
+ status={jobStatus}
34
+ statusMessage={jobMessage}
35
+ onCancel={handleCancel}
36
+ hasResult={!!highlightUrl}
37
+ // Preview
38
+ highlightVideoUrl={highlightUrl}
39
+ onUpload={async (file) => await uploadFile(file)}
40
+ onDelete={async () => await deleteHighlight()}
41
+ renderVideoPreview={({ videoUrl, title, thumbnailUrl, onDelete }) => (
42
+ <VideoPlayer url={videoUrl} thumbnail={thumbnailUrl} onDelete={onDelete} />
43
+ )}
44
+ />
45
+ ```
46
+
47
+ > **Note:** `renderVideoPreview` uses a render-prop pattern, keeping the component decoupled from any specific video player implementation. The manual upload uses a hidden `<input type="file">` created programmatically to avoid controlled input complexity.
@@ -0,0 +1,44 @@
1
+ <!-- source-hash: 9c2fe27cb025dab5e630418cc7b208a0 -->
2
+ Reusable React component for displaying and managing highlight video previews with support for manual upload, AI-generated badges, and duration display.
3
+
4
+ ## Key Components
5
+
6
+ ### `HighlightVideoPreviewProps`
7
+ | Prop | Type | Description |
8
+ |------|------|-------------|
9
+ | `highlightVideoUrl` | `string \| null` | URL of the highlight video |
10
+ | `highlightVideoThumbnail` | `string \| null` | Thumbnail image URL |
11
+ | `highlightVideoDurationMs` | `number \| null` | Duration in milliseconds |
12
+ | `highlightVideoSource` | `'manual' \| 'ai_generated' \| null` | Video origin, shows AI badge if `ai_generated` |
13
+ | `onUpload` | `(file: File) => Promise<string>` | File upload handler |
14
+ | `onDelete` | `() => Promise<void>` | Delete handler |
15
+ | `renderVideoPreview` | `(props) => ReactNode` | Render prop for custom video player |
16
+ | `uploadProgressComponent` | `ReactNode` | Optional upload progress UI |
17
+
18
+ ### `HighlightVideoPreview`
19
+ Main exported component rendering the label row, badges, upload button, and delegating video display to the `renderVideoPreview` render prop.
20
+
21
+ ## Usage Example
22
+
23
+ ```typescript
24
+ import { HighlightVideoPreview } from './highlight-video-preview';
25
+
26
+ <HighlightVideoPreview
27
+ highlightVideoUrl="https://cdn.example.com/video.mp4"
28
+ highlightVideoThumbnail="https://cdn.example.com/thumb.jpg"
29
+ highlightVideoDurationMs={125000}
30
+ highlightVideoSource="ai_generated"
31
+ onUpload={async (file) => {
32
+ const url = await uploadToStorage(file);
33
+ return url;
34
+ }}
35
+ onDelete={async () => {
36
+ await deleteVideo();
37
+ }}
38
+ renderVideoPreview={({ videoUrl, thumbnailUrl, onDelete }) => (
39
+ <VideoPlayer src={videoUrl} poster={thumbnailUrl} onDelete={onDelete} />
40
+ )}
41
+ />
42
+ ```
43
+
44
+ > **Note:** This component is designed for both `CustomerInterview` and `ProductRelease` entities, providing a consistent highlight video UI across the platform. The `renderVideoPreview` render prop keeps the video player implementation decoupled.
@@ -0,0 +1,47 @@
1
+ <!-- source-hash: 4bfda13fcb66ea09d23c0f65e2a0d2f7 -->
2
+ Unified React component for managing highlight video generation and upload, supporting both AI-generated and manually uploaded highlight videos for `CustomerInterview` and `ProductRelease` entities.
3
+
4
+ ## Key Components
5
+
6
+ ### `HighlightVideoSection`
7
+ Main exported component that renders three logical sections:
8
+
9
+ - **Configuration Panel** — Target duration selector (1–5 min) and subtitle-burning toggle
10
+ - **AI Generation Section** — Wraps `AIEnrichSection` with Claude AI + Shotstack integration, including progress feedback, cancellation, and status messages
11
+ - **Video Preview + Manual Upload** — Shows current highlight with metadata badges, handles file input for manual uploads, and renders either a custom `VideoPreviewComponent` or a built-in `<video>` player with delete support
12
+
13
+ ### `HighlightVideoSectionProps`
14
+ Full TypeScript interface exposing all configuration and callback props. Notable props:
15
+
16
+ | Prop | Type | Description |
17
+ |------|------|-------------|
18
+ | `targetDurationSeconds` | `number` | AI generation target duration |
19
+ | `canGenerateHighlight` | `boolean` | Gates the generate button |
20
+ | `requiredFields` | `AIRequiredField[]` | Validation hints shown before generation |
21
+ | `VideoPreviewComponent` | `React.ComponentType` | Optional custom video player |
22
+ | `generationStatus` | `'idle' \| 'loading' \| 'success' \| 'error'` | Controls `AIEnrichSection` state |
23
+
24
+ ## Usage Example
25
+
26
+ ```typescript
27
+ import { HighlightVideoSection } from './highlight-video-section';
28
+
29
+ <HighlightVideoSection
30
+ highlightVideoUrl={interview.highlightUrl}
31
+ highlightVideoSource="ai_generated"
32
+ highlightVideoDurationMs={180000}
33
+ targetDurationSeconds={180}
34
+ onTargetDurationChange={(secs) => setTargetDuration(secs)}
35
+ skipSubtitleBurning={false}
36
+ onSkipSubtitleBurningChange={(skip) => setSkipSubs(skip)}
37
+ onGenerateHighlight={handleGenerate}
38
+ isGenerating={isGenerating}
39
+ generationProgress={progress}
40
+ generationStatus={status}
41
+ canGenerateHighlight={!!interview.transcriptId}
42
+ requiredFields={[{ field: 'transcript', label: 'Transcription' }]}
43
+ onUploadHighlight={async (file) => uploadToStorage(file)}
44
+ onDeleteHighlight={handleDelete}
45
+ onCancelGeneration={handleCancel}
46
+ />
47
+ ```
@@ -1,76 +1,50 @@
1
- <!-- source-hash: 8ecd31115612faa5ff5118d4a9df18f8 -->
2
- Central export hub for all reusable UI components and providers used across the Flamingo/OpenFrame platform, providing a single import point for feature components, managers, and specialized UI elements.
1
+ <!-- source-hash: 14a224c533f658697e4039f0850c87ac -->
2
+ Central barrel export file for the feature components library, re-exporting all UI components, providers, and utilities from their respective modules into a single public API surface.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### Providers & Context
7
- - **DynamicThemeProvider** - Theme management with dynamic switching capabilities
8
- - **useDynamicTheme** - Hook for accessing theme context and utilities
9
- - **LoadingProvider** - Global loading state management
10
-
11
- ### Content Management
12
- - **ChangelogManager** - Version history and release notes management
13
- - **ChangelogSectionsManager** - Structured changelog organization
14
- - **GithubReleasesManager** - GitHub release data integration
15
- - **KnowledgeBaseLinksManager** - Documentation link organization
16
- - **MediaGalleryManager** - Media asset management and display
17
- - **ReleaseMediaManager** - Release-specific media handling
18
- - **SocialLinksManager** - Social media link management
19
-
20
- ### Interactive Components
21
- - **CommandBox** - Command palette/search interface
22
- - **ArrayEntryManager** - Dynamic array field management
23
- - **FiltersDropdown** - Advanced filtering interface
24
- - **OrganizationSelector** - Multi-org selection component
25
- - **PlatformFilter** - Platform-specific filtering
26
- - **TagsSelector** - Tag management interface
27
- - **ViewToggle** - Layout/view switching controls
28
-
29
- ### Display & Media
30
- - **YoutubeEmbed** - YouTube video integration
31
- - **VideoPlayer** - Custom video player component
32
- - **FigmaPrototypeViewer** - Embedded Figma prototype display
33
- - **ParallaxImageShowcase** - Animated image presentation
34
-
35
- ### Platform-Specific
36
- - **OSPlatformSelector** - Operating system selection
37
- - **OSTypeBadge** / **OSTypeBadgeGroup** - OS identification badges
38
- - **PlatformBadge** - Platform indicator components
39
- - **StatusFilterComponent** - Status-based filtering
40
-
41
- ### AI & Enhancement
42
- - **AI Enrich components** - AI-powered content enhancement tools
43
- - **PolicyConfigurationPanel** - AI policy management interface
44
-
45
- ### Utilities
46
- - **ErrorBoundary** - React error handling wrapper
47
- - **SEOEditorPreview** - SEO content preview functionality
6
+ ### Theme System
7
+ - `ThemeProvider` / `useTheme` / `useThemeToggle` — Canonical ODS theme system wrapping `next-themes` with manual light/dark switching, default dark, and no-flash support
8
+ - `DynamicThemeProvider` / `useDynamicTheme` — Dynamic theme provider variant
9
+ - `THEME_STORAGE_KEY`, `THEME_ATTRIBUTE`, `DEFAULT_THEME` — Theme configuration constants
10
+ - `Theme`, `ThemeProviderProps`, `UseThemeToggleResult` — TypeScript types
11
+
12
+ ### Video Primitives
13
+ - `video` — Unified `<Video>` component replacing legacy `VideoPlayer` + `YouTubeEmbed`
14
+ - `entity-video-section` / `video-bites-display` — Public detail-page wrappers
15
+ - `video-ratio-tabs` — Aspect-ratio grouping primitives for bites grid and admin editors
16
+ - `highlight-video-*` / `transcript-summary-editor` / `video-clips-section` — Video processing and display utilities
17
+
18
+ ### UI Components
19
+ - `command-box`, `filters-dropdown`, `tags-selector`, `select-button`, `view-toggle`
20
+ - `os-type-badge`, `platform-badge`, `platform-filter` — Platform/OS display components
21
+ - `error-boundary`, `loading-provider` — App infrastructure components
22
+ - `seo-editor-preview`, `social-links-manager`, `knowledge-base-links-manager`
23
+ - `board`, `notifications`, `waitlist-form`, `ai-enrich`, `policy-configuration-panel`
24
+
25
+ ### Manager Components
26
+ - `array-entry-manager`, `changelog-manager`, `changelog-sections-manager`
27
+ - `clickup-tasks-manager`, `github-releases-manager`, `media-gallery-manager`
28
+ - `release-media-manager`
48
29
 
49
30
  ## Usage Example
50
31
 
51
32
  ```typescript
52
- import {
53
- DynamicThemeProvider,
54
- useDynamicTheme,
55
- CommandBox,
56
- YoutubeEmbed,
57
- ChangelogManager,
58
- ErrorBoundary
59
- } from '@/components'
33
+ // Import theme system
34
+ import { ThemeProvider, useThemeToggle } from '@/features'
35
+
36
+ function App({ children }) {
37
+ return <ThemeProvider>{children}</ThemeProvider>
38
+ }
60
39
 
61
- function App() {
62
- const { theme, toggleTheme } = useDynamicTheme()
63
-
64
- return (
65
- <DynamicThemeProvider>
66
- <ErrorBoundary>
67
- <div className={`app ${theme}`}>
68
- <CommandBox onCommand={handleCommand} />
69
- <ChangelogManager repository="flamingo/openframe" />
70
- <YoutubeEmbed videoId="awc-yAnkhIo" />
71
- </div>
72
- </ErrorBoundary>
73
- </DynamicThemeProvider>
74
- )
40
+ function ThemeToggle() {
41
+ const { toggle, theme } = useThemeToggle()
42
+ return <Button onClick={toggle}>Mode: {theme}</Button>
75
43
  }
44
+
45
+ // Import video primitives
46
+ import { Video, EntityVideoSection, VideoBitesDisplay } from '@/features'
47
+
48
+ // Import UI components
49
+ import { CommandBox, FiltersDropdown, OsTypeBadge } from '@/features'
76
50
  ```
@@ -1,50 +1,60 @@
1
- <!-- source-hash: f58dc2c8c0d0cb27343cb060f7ee08e3 -->
2
- A unified React component for managing media galleries with upload, reordering, and deletion capabilities across different content types like events and product releases.
1
+ <!-- source-hash: 19b6fb4bf578261808d64ed0dbbafcce -->
2
+ Reusable React component for managing a media gallery with upload, display, drag-and-drop reordering, and deletion capabilities. Designed for use across events, product releases, and any content requiring media gallery management.
3
3
 
4
4
  ## Key Components
5
5
 
6
- **MediaGalleryManager**: Main component providing complete media management functionality
7
- - File upload with drag-and-drop support
8
- - Visual media grid with thumbnails
9
- - Drag-and-drop reordering with visual feedback
10
- - Individual item deletion with confirmation states
11
- - Responsive design for mobile and desktop
12
-
13
- **MediaItem Interface**: TypeScript definition for media objects
14
- - Support for images, videos, screenshots, and demos
15
- - Optional metadata like titles, descriptions, and display order
16
- - Upload state tracking for UI feedback
6
+ ### `MediaItem` Interface
7
+ Describes a single media entry with the following fields:
8
+
9
+ | Field | Type | Description |
10
+ |-------|------|-------------|
11
+ | `id` | `string \| number` | Optional identifier for existing items |
12
+ | `media_type` | `'image' \| 'video' \| 'screenshot' \| 'demo'` | Type classification |
13
+ | `media_url` | `string` | URL of the media asset |
14
+ | `title` | `string` | Optional display title |
15
+ | `description` | `string` | Optional description |
16
+ | `display_order` | `number` | Optional sort order |
17
+ | `_uploading` | `boolean` | Internal upload state flag |
18
+
19
+ ### `MediaGalleryManager` Component
20
+ Primary export. Renders upload zone, media grid, drag-and-drop controls, and delete actions.
21
+
22
+ **Props:**
23
+
24
+ | Prop | Type | Default | Description |
25
+ |------|------|---------|-------------|
26
+ | `media` | `MediaItem[]` | — | Current media items array |
27
+ | `onChange` | `(media: MediaItem[]) => void` | — | Called on any mutation |
28
+ | `onUpload` | `(file, mediaType) => Promise<string>` | — | Handles file upload, returns URL |
29
+ | `isUploading` | `boolean` | `false` | Disables controls during upload |
30
+ | `showInModal` | `boolean` | `false` | Reserved for modal rendering |
31
+ | `modalTitle` | `string` | `'Media Gallery'` | Modal heading text |
32
+ | `className` | `string` | `''` | Additional CSS classes |
17
33
 
18
34
  ## Usage Example
19
35
 
20
36
  ```typescript
21
37
  import { MediaGalleryManager, MediaItem } from './media-gallery-manager';
22
38
 
23
- function MyComponent() {
24
- const [media, setMedia] = useState<MediaItem[]>([]);
25
- const [isUploading, setIsUploading] = useState(false);
26
-
27
- const handleUpload = async (file: File, mediaType: 'image' | 'video') => {
28
- setIsUploading(true);
29
- try {
30
- // Upload to your storage service
31
- const url = await uploadFile(file);
32
- return url;
33
- } finally {
34
- setIsUploading(false);
35
- }
36
- };
37
-
38
- return (
39
- <MediaGalleryManager
40
- media={media}
41
- onChange={setMedia}
42
- onUpload={handleUpload}
43
- isUploading={isUploading}
44
- modalTitle="Product Media"
45
- />
46
- );
39
+ const [media, setMedia] = useState<MediaItem[]>([]);
40
+ const [uploading, setUploading] = useState(false);
41
+
42
+ async function handleUpload(file: File, mediaType: 'image' | 'video'): Promise<string> {
43
+ setUploading(true);
44
+ const formData = new FormData();
45
+ formData.append('file', file);
46
+ const res = await fetch('/api/upload', { method: 'POST', body: formData });
47
+ const { url } = await res.json();
48
+ setUploading(false);
49
+ return url;
47
50
  }
51
+
52
+ <MediaGalleryManager
53
+ media={media}
54
+ onChange={setMedia}
55
+ onUpload={handleUpload}
56
+ isUploading={uploading}
57
+ />
48
58
  ```
49
59
 
50
- The component handles automatic file type detection, maintains display order through drag-and-drop, and provides visual feedback for all user interactions including upload progress and deletion states.
60
+ > **Note:** Accepted file types are `image/*` and `video/*` with a recommended maximum of 50MB. On upload, images map to `screenshot` and videos to `demo` media types.
@@ -1,31 +1,34 @@
1
- <!-- source-hash: 572ac09a6913ae9b6cc6555971ffbead -->
2
- A React client component that renders a styled "Learn more" button with an arrow icon, designed to navigate users to additional information pages.
1
+ <!-- source-hash: c6ba4615a3e784ac271d4e3e3c456fed -->
2
+ A reusable "Learn more" navigation button component that links to additional information, styled with Flamingo's yellow brand color and an arrow icon.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **MoreAboutButtonProps** - Interface defining optional onClick handler, href URL, and CSS className
7
- - **MoreAboutButton** - Main component that renders a large ghost-style button with OpenFrame branding colors
8
- - **Default exports** - Both named and default exports for flexible importing
6
+ - **`MoreAboutButton`** — A styled `Button` wrapper that renders a "Learn more" label with a trailing `ArrowRight` icon, using the `transparent` variant and `--ods-open-yellow-base` brand color.
7
+
8
+ ### Props
9
+
10
+ | Prop | Type | Default | Description |
11
+ |------|------|---------|-------------|
12
+ | `href` | `string` | `"/openframe"` | Destination URL; opens in a new tab when provided |
13
+ | `onClick` | `() => void` | — | Optional click handler *(accepted but not wired internally)* |
14
+ | `className` | `string` | `""` | Additional CSS classes for customization |
15
+
16
+ > **Note:** The `onClick` prop is declared in the interface but not currently forwarded to the underlying `Button`. Use `href` for navigation.
9
17
 
10
18
  ## Usage Example
11
19
 
12
20
  ```typescript
13
- import { MoreAboutButton } from './more-about-button'
21
+ import { MoreAboutButton } from '@/components/more-about-button'
14
22
 
15
- // Basic usage with default "/openframe" link
23
+ // Default — links to /openframe
16
24
  <MoreAboutButton />
17
25
 
18
- // Custom destination and styling
19
- <MoreAboutButton
20
- href="/custom-page"
21
- className="mt-4"
22
- />
26
+ // Custom destination
27
+ <MoreAboutButton href="https://flamingo.run" />
23
28
 
24
- // With click handler (overrides href behavior)
25
- <MoreAboutButton
26
- onClick={() => console.log('Button clicked')}
27
- className="custom-styles"
29
+ // With additional styling
30
+ <MoreAboutButton
31
+ href="/openframe"
32
+ className="mt-4"
28
33
  />
29
- ```
30
-
31
- The component uses the OpenFrame design system's yellow color (`--ods-open-yellow-base`) and automatically opens external links in new tabs. It leverages a custom Button component with built-in support for right icons and various styling variants.
34
+ ```