@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,51 +1,62 @@
1
- <!-- source-hash: 4405e37ec9d96729a3270f3e6a23dc05 -->
2
- A reusable React component that provides an interactive list of selectable options with visual feedback, supporting both single and multi-selection modes with comprehensive loading, error, and validation states.
1
+ <!-- source-hash: 07ba5865678ee01e8867762d1e641327 -->
2
+ A reusable React selector component that renders options as push-button cards with checkbox indicators, supporting single/multi-select, grouped sections, loading skeletons, and error states.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`SelectableOption`** - Interface defining the structure for selectable items with optional metadata
7
- - **`PushButtonSelector`** - Main component providing clickable option selection with visual indicators
8
- - **`PushButtonSelectorSkeleton`** - Loading state component with animated placeholders
9
- - **`PushButtonSelectorError`** - Error state component with themed error messaging
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `PushButtonSelector` | Component | Main selector rendered as interactive card list |
9
+ | `SelectableOption` | Interface | Shape of each selectable item (id, name, icon, section, etc.) |
10
+ | `SectionDefinition` | Interface | Defines a named group to bucket options under |
11
+ | `PushButtonSelectorSkeleton` | Internal | Animated skeleton shown during `isLoading` |
12
+ | `PushButtonSelectorError` | Internal | Error panel using ODS error tokens |
13
+
14
+ ## Key Props
15
+
16
+ | Prop | Type | Default | Description |
17
+ |------|------|---------|-------------|
18
+ | `options` | `SelectableOption[]` | — | All available options |
19
+ | `selectedIds` | `string[]` | — | Controlled selected IDs |
20
+ | `onSelectionChange` | `(ids: string[]) => void` | — | Fires on toggle |
21
+ | `multiSelect` | `boolean` | `true` | Allow multiple selections |
22
+ | `sections` | `SectionDefinition[]` | — | Groups options under labeled headers |
23
+ | `selectionSummary` | `boolean` | `false` | Shows badge summary of selected items |
24
+ | `optional` | `boolean` | `false` | Suppresses empty-state warning |
25
+ | `isLoading` | `boolean` | `false` | Renders skeleton UI |
26
+ | `error` | `string \| null` | `null` | Renders error panel |
10
27
 
11
28
  ## Usage Example
12
29
 
13
30
  ```typescript
14
- import { PushButtonSelector, SelectableOption } from './push-button-selector';
31
+ import { PushButtonSelector, SelectableOption, SectionDefinition } from './push-button-selector';
15
32
 
16
33
  const platforms: SelectableOption[] = [
17
- {
18
- id: '1',
19
- name: 'github',
20
- displayName: 'GitHub',
21
- description: 'Version control platform',
22
- icon: <GitHubIcon />,
23
- disabled: false
24
- },
25
- {
26
- id: '2',
27
- name: 'gitlab',
28
- displayName: 'GitLab',
29
- description: 'DevOps platform',
30
- icon: <GitLabIcon />
31
- }
34
+ { id: 'uuid-1', name: 'connectwise', displayName: 'ConnectWise', description: 'PSA platform', section: 'psa' },
35
+ { id: 'uuid-2', name: 'halo', displayName: 'HaloPSA', description: 'PSA platform', section: 'psa' },
36
+ { id: 'uuid-3', name: 'ninja', displayName: 'NinjaRMM', description: 'RMM platform', section: 'rmm' },
32
37
  ];
33
38
 
34
- function PlatformSelector() {
35
- const [selected, setSelected] = useState<string[]>([]);
39
+ const sections: SectionDefinition[] = [
40
+ { id: 'psa', label: 'PSA Tools' },
41
+ { id: 'rmm', label: 'RMM Tools' },
42
+ ];
43
+
44
+ function IntegrationPicker() {
45
+ const [selected, setSelected] = React.useState<string[]>([]);
36
46
 
37
47
  return (
38
48
  <PushButtonSelector
39
49
  options={platforms}
40
50
  selectedIds={selected}
41
51
  onSelectionChange={setSelected}
42
- title="Select Platforms"
43
- multiSelect={true}
44
- selectionSummary={true}
45
- helpText="Choose one or more platforms to integrate"
52
+ sections={sections}
53
+ title="Select Integrations"
54
+ helpText="Choose the platforms to connect."
55
+ selectionSummary
56
+ multiSelect
46
57
  />
47
58
  );
48
59
  }
49
60
  ```
50
61
 
51
- The component features hover effects, selection validation, skeleton loading states, and comprehensive error handling with ODS (OpenFrame Design System) styling.
62
+ > **Note:** Invalid `selectedIds` (IDs not present in `options`) are silently filtered once `options` has loaded. A `console.warn` is emitted in `development` mode to aid debugging.
@@ -1,43 +1,58 @@
1
- <!-- source-hash: 0b2642ad551b655994b6986eb6e18999 -->
2
- A comprehensive React component for managing media uploads and organization in release creation, featuring drag-and-drop reordering, real-time upload states, and media type categorization.
1
+ <!-- source-hash: 567153c4bee0ea823c8dcb3ad142df21 -->
2
+ A React client component for managing media attachments (images, videos, screenshots, demos) on release entries, supporting file upload, drag-to-reorder, and inline editing.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`ReleaseMediaItem`** - Interface defining media items with type, URL, metadata, and upload state
7
- - **`ReleaseMediaManagerProps`** - Component props including media array, change handler, and upload function
8
- - **`ReleaseMediaManager`** - Main component with file upload, preview, editing, and reordering capabilities
6
+ ### `ReleaseMediaItem` (interface)
7
+ Represents a single media entry with the following fields:
8
+
9
+ | Field | Type | Description |
10
+ |-------|------|-------------|
11
+ | `media_type` | `'image' \| 'video' \| 'screenshot' \| 'demo'` | Category of media |
12
+ | `media_url` | `string` | Public URL after upload |
13
+ | `title` | `string?` | Optional display title |
14
+ | `description` | `string?` | Optional description |
15
+ | `display_order` | `number?` | Sort position in gallery |
16
+ | `_file` | `File?` | Temporary pre-upload file reference |
17
+ | `_uploading` | `boolean?` | Upload in-progress flag |
18
+
19
+ ### `ReleaseMediaManager` (component)
20
+
21
+ **Props:**
22
+
23
+ | Prop | Type | Description |
24
+ |------|------|-------------|
25
+ | `media` | `ReleaseMediaItem[]` | Controlled media list |
26
+ | `onChange` | `(media: ReleaseMediaItem[]) => void` | Called on any list mutation |
27
+ | `onUpload` | `(file, mediaType) => Promise<string>` | Handles actual file upload, returns URL |
28
+ | `className` | `string?` | Optional wrapper class |
29
+
30
+ **Internal behaviors:**
31
+ - `handleFileSelect` — detects file MIME type, auto-assigns `media_type`, triggers `onUpload`, rolls back on failure
32
+ - `removeMedia` — removes item by index
33
+ - `updateMedia` — updates a single field on an existing item
34
+ - `handleDragStart` / `handleDragOver` / `handleDrop` — native HTML5 drag-and-drop reordering, updates `display_order` on drop
9
35
 
10
36
  ## Usage Example
11
37
 
12
38
  ```typescript
13
39
  import { ReleaseMediaManager, ReleaseMediaItem } from './release-media-manager';
14
40
 
15
- function ReleaseForm() {
16
- const [media, setMedia] = useState<ReleaseMediaItem[]>([]);
17
-
18
- const handleUpload = async (file: File, mediaType: string) => {
19
- // Upload logic - return uploaded URL
20
- const formData = new FormData();
21
- formData.append('file', file);
22
-
23
- const response = await fetch('/api/upload', {
24
- method: 'POST',
25
- body: formData
26
- });
27
-
28
- const { url } = await response.json();
29
- return url;
30
- };
31
-
32
- return (
33
- <ReleaseMediaManager
34
- media={media}
35
- onChange={setMedia}
36
- onUpload={handleUpload}
37
- className="w-full"
38
- />
39
- );
41
+ const [media, setMedia] = useState<ReleaseMediaItem[]>([]);
42
+
43
+ async function uploadToStorage(file: File, mediaType: string): Promise<string> {
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
+ return url;
40
49
  }
50
+
51
+ <ReleaseMediaManager
52
+ media={media}
53
+ onChange={setMedia}
54
+ onUpload={uploadToStorage}
55
+ />
41
56
  ```
42
57
 
43
- The component supports automatic file type detection, real-time upload progress, drag-and-drop reordering, and provides a responsive grid layout with preview functionality for both images and videos.
58
+ > **Note:** The component is fully controlled — the parent owns the `media` array. Failed uploads automatically roll back to the previous state without manual intervention.
@@ -1,56 +1,51 @@
1
- <!-- source-hash: 4f16f50a29435f77c23b9c708e9e4a98 -->
2
- A React component that renders a configurable section selector with button-style navigation items, supporting both vertical and wrap layouts with badges, icons, and descriptions.
1
+ <!-- source-hash: 760f28bd91ca25a2a1341b709f1c96c4 -->
2
+ A client-side navigation component that renders a list of selectable section buttons with support for vertical and wrap layouts, optional badges, icons, descriptions, and active state highlighting.
3
3
 
4
4
  ## Key Components
5
5
 
6
- **Interfaces:**
7
- - `SectionItem` - Configuration for individual section buttons including title, badge, icons, and state
8
- - `SectionSelectorProps` - Main component props with layout, styling, and behavior options
6
+ ### Interfaces
9
7
 
10
- **Components:**
11
- - `SectionButton` - Internal button component handling individual section rendering
12
- - `SectionSelector` - Main component that renders the collection of section buttons
8
+ - **`SectionItem`** — Defines a single section entry with `id`, `title`, optional `subtitle`, `description`, `number`, `leftIcon`, `badge`, `screenshots`, and `disabled` flag.
9
+ - **`SectionSelectorProps`** — Configuration for the selector including `sections`, `activeSection`, `onSectionChange` callback, `layout`, `buttonWidth`, `minHeight`, and display toggles.
13
10
 
14
- **Key Features:**
15
- - Two layout modes: `vertical` (stacked) and `wrap` (flexible grid)
16
- - Status badges with customizable variants and color schemes
17
- - Optional left icons, numbering, and descriptions
18
- - Responsive button widths (`auto`, `full`, `responsive`)
19
- - Disabled state support at item and component level
11
+ ### Components
12
+
13
+ - **`SectionButton`** *(internal)* — Renders an individual section button. Supports two layout modes:
14
+ - `vertical` — Displays number prefix, left icon, title, badge, and description stacked.
15
+ - `wrap` — Displays left icon, title, badge, and subtitle in a compact horizontal card.
16
+ - **`SectionSelector`** *(exported)* — Orchestrates the full selector by mapping `sections` to `SectionButton` instances inside a flex container.
20
17
 
21
18
  ## Usage Example
22
19
 
23
20
  ```typescript
24
- import { SectionSelector, SectionItem } from './components/section-selector'
25
- import { Settings, User } from 'lucide-react'
21
+ import SectionSelector, { SectionItem } from './section-selector'
26
22
 
27
23
  const sections: SectionItem[] = [
28
24
  {
29
- id: 'profile',
30
- title: 'User Profile',
31
- description: 'Manage your account settings',
32
- leftIcon: <User size={20} />,
33
- badge: { text: 'New', colorScheme: 'green' }
25
+ id: 'overview',
26
+ title: 'Overview',
27
+ subtitle: 'General information',
28
+ badge: { text: 'New', colorScheme: 'green' },
34
29
  },
35
30
  {
36
31
  id: 'settings',
37
- title: 'Application Settings',
38
- subtitle: 'Configure app preferences',
39
- leftIcon: <Settings size={20} />,
40
- number: '2'
41
- }
32
+ title: 'Settings',
33
+ description: 'Configure your preferences',
34
+ number: '02',
35
+ disabled: false,
36
+ },
42
37
  ]
43
38
 
44
- function NavigationPanel() {
45
- const [activeSection, setActiveSection] = useState('profile')
39
+ export default function Page() {
40
+ const [active, setActive] = React.useState('overview')
46
41
 
47
42
  return (
48
43
  <SectionSelector
49
44
  sections={sections}
50
- activeSection={activeSection}
51
- onSectionChange={setActiveSection}
45
+ activeSection={active}
46
+ onSectionChange={setActive}
52
47
  layout="vertical"
53
- buttonWidth="responsive"
48
+ buttonWidth="full"
54
49
  showDescription={true}
55
50
  />
56
51
  )
@@ -1,44 +1,54 @@
1
- <!-- source-hash: c0c15fc6a2db52816eb6102a785d7fa9 -->
2
- A customizable button component that displays as a selectable option with support for icons, images, descriptions, and tags. Used for creating interactive selection lists or option grids with visual feedback for selected states.
1
+ <!-- source-hash: e190543dcb8ddd78af0a45f332d3eefe -->
2
+ A selectable button component that supports icons, images, tags, and selected/disabled states, designed for use in option-selection UIs such as lists or grids.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **SelectButton** - Main component with `forwardRef` support for external ref management
7
- - **SelectButtonProps** - TypeScript interface defining all available props including styling and content options
8
- - **Conditional rendering** - Smart display logic for icons, images, descriptions, and tags based on screen size
6
+ ### `SelectButtonProps`
7
+ | Prop | Type | Description |
8
+ |------|------|-------------|
9
+ | `title` | `string` | Primary label text (required) |
10
+ | `description` | `string` | Optional subtitle, visible on `md+` screens |
11
+ | `selected` | `boolean` | Highlights the button with accent styling and shows a check icon |
12
+ | `disabled` | `boolean` | Disables interaction and reduces opacity |
13
+ | `icon` | `React.ReactNode` | Optional leading icon |
14
+ | `image` | `{ src, alt }` | Optional thumbnail image |
15
+ | `tag` | `string` | Optional badge label rendered via `Tag` |
16
+ | `tagVariant` | `TagProps['variant']` | Controls tag style, defaults to `"outline"` |
17
+ | `onClick` | `() => void` | Click handler |
18
+ | `className` | `string` | Additional CSS classes |
19
+
20
+ ### `SelectButton`
21
+ A `forwardRef` button with `role="option"` and `aria-selected`, suitable for accessible listbox patterns. Applies ODS design tokens for color, spacing, and focus states.
9
22
 
10
23
  ## Usage Example
11
24
 
12
25
  ```typescript
13
26
  import { SelectButton } from './select-button'
14
- import { UserIcon } from '../icons'
27
+ import { ServerIcon } from '../icons-v2-generated/...'
15
28
 
16
- // Basic usage
29
+ // Basic selectable option
17
30
  <SelectButton
18
- title="Premium Plan"
19
- description="Advanced features included"
20
- selected={selectedPlan === 'premium'}
21
- onClick={() => setSelectedPlan('premium')}
31
+ title="Standard Plan"
32
+ description="Up to 10 devices"
33
+ selected={selectedPlan === 'standard'}
34
+ onClick={() => setSelectedPlan('standard')}
22
35
  />
23
36
 
24
37
  // With icon and tag
25
38
  <SelectButton
26
- title="Team Workspace"
27
- description="Collaborate with your team"
28
- icon={<UserIcon />}
39
+ title="Enterprise Plan"
40
+ description="Unlimited devices"
41
+ icon={<ServerIcon />}
29
42
  tag="Popular"
30
- tagVariant="default"
31
- selected={workspace === 'team'}
32
- onClick={() => setWorkspace('team')}
43
+ tagVariant="solid"
44
+ selected={selectedPlan === 'enterprise'}
45
+ onClick={() => setSelectedPlan('enterprise')}
33
46
  />
34
47
 
35
- // With image
48
+ // With thumbnail image
36
49
  <SelectButton
37
- title="Custom Theme"
38
- image={{ src: "/theme-preview.jpg", alt: "Theme preview" }}
39
- disabled={!isPremium}
40
- onClick={handleThemeSelect}
50
+ title="Acme Corp"
51
+ image={{ src: '/logos/acme.png', alt: 'Acme Corp logo' }}
52
+ selected={true}
41
53
  />
42
- ```
43
-
44
- The component includes responsive design with different sizing for mobile/desktop, accessibility support with ARIA attributes, and visual states for hover, active, and selected interactions.
54
+ ```
@@ -1,54 +1,51 @@
1
- <!-- source-hash: 410b6e5a31286d450355a5354f7b013a -->
2
- This file provides a comprehensive SEO editor component with real-time social media preview functionality for managing meta tags, Open Graph data, and image uploads in content management workflows.
1
+ <!-- source-hash: e691658139dcf0e352222348aeae0a32 -->
2
+ Self-contained React component that combines SEO metadata editing fields with a live social media (Open Graph) card preview, used across blog posts, case studies, and product releases in the Flamingo/OpenFrame platform.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **SEOEditorPreview**: Main component for editing SEO meta tags with live preview
7
- - **SEOEditorPreviewProps**: TypeScript interface defining all props including SEO fields, change handlers, and AI confidence scores
8
- - **Image upload handling**: File upload with progress states and error handling
9
- - **Live preview**: Real-time Open Graph card preview showing how content appears on social media
10
- - **AI integration**: Support for displaying AI-generated content with confidence badges
6
+ ### `SEOEditorPreview` (default export)
7
+ The main component rendering a two-panel layout:
8
+ - **Editor fields** — SEO title, description, keywords, and OG image upload
9
+ - **Live OG card preview** — real-time social media card simulation
10
+
11
+ ### `SEOEditorPreviewProps` interface
12
+ | Prop | Type | Description |
13
+ |------|------|-------------|
14
+ | `seoTitle` / `seoDescription` / `seoKeywords` / `ogImageUrl` | `string` | Controlled SEO field values |
15
+ | `title` / `summary` / `featuredImage` | `string` | Auto-populate fallback sources |
16
+ | `onSeo*Change` / `onOgImageUrlChange` | `(value: string) => void` | Change handlers per field |
17
+ | `onOgImageUpload` | `(file: File) => Promise<string>` | Optional parent-provided upload handler |
18
+ | `aiConfidenceSeo*` | `number` (optional) | AI confidence scores shown via `ConfidenceBadge` |
19
+ | `domain` | `string` | Preview domain label (default: `'openmsp.ai'`) |
20
+ | `disabled` | `boolean` | Disables all inputs |
21
+
22
+ ### Internal State
23
+ - `imageError` — falls back to placeholder when OG image fails to load
24
+ - `isUploading` — shows `Loader2` spinner during file upload
25
+ - `fileInputRef` — ref to hidden `<input type="file">` for programmatic click
11
26
 
12
27
  ## Usage Example
13
28
 
14
29
  ```typescript
15
- import { SEOEditorPreview } from './seo-editor-preview';
16
-
17
- function BlogEditor() {
18
- const [seoData, setSeoData] = useState({
19
- seoTitle: '',
20
- seoDescription: '',
21
- seoKeywords: '',
22
- ogImageUrl: ''
23
- });
24
-
25
- const handleImageUpload = async (file: File) => {
26
- const formData = new FormData();
27
- formData.append('image', file);
28
- const response = await fetch('/api/upload', { method: 'POST', body: formData });
29
- const { url } = await response.json();
30
+ <SEOEditorPreview
31
+ seoTitle={post.seoTitle}
32
+ seoDescription={post.seoDescription}
33
+ seoKeywords={post.seoKeywords}
34
+ ogImageUrl={post.ogImageUrl}
35
+ title={post.title}
36
+ summary={post.summary}
37
+ featuredImage={post.featuredImage}
38
+ onSeoTitleChange={(v) => updatePost({ seoTitle: v })}
39
+ onSeoDescriptionChange={(v) => updatePost({ seoDescription: v })}
40
+ onSeoKeywordsChange={(v) => updatePost({ seoKeywords: v })}
41
+ onOgImageUrlChange={(v) => updatePost({ ogImageUrl: v })}
42
+ onOgImageUpload={async (file) => {
43
+ const { url } = await uploadAsset(file);
30
44
  return url;
31
- };
32
-
33
- return (
34
- <SEOEditorPreview
35
- seoTitle={seoData.seoTitle}
36
- seoDescription={seoData.seoDescription}
37
- seoKeywords={seoData.seoKeywords}
38
- ogImageUrl={seoData.ogImageUrl}
39
- title="Blog Post Title"
40
- summary="Blog post summary"
41
- featuredImage="/featured.jpg"
42
- onSeoTitleChange={(value) => setSeoData(prev => ({ ...prev, seoTitle: value }))}
43
- onSeoDescriptionChange={(value) => setSeoData(prev => ({ ...prev, seoDescription: value }))}
44
- onSeoKeywordsChange={(value) => setSeoData(prev => ({ ...prev, seoKeywords: value }))}
45
- onOgImageUrlChange={(value) => setSeoData(prev => ({ ...prev, ogImageUrl: value }))}
46
- onOgImageUpload={handleImageUpload}
47
- aiConfidenceSeoTitle={0.85}
48
- domain="example.com"
49
- />
50
- );
51
- }
45
+ }}
46
+ aiConfidenceSeoTitle={0.92}
47
+ domain="flamingo.run"
48
+ />
52
49
  ```
53
50
 
54
- The component automatically falls back to content fields (title, summary, featuredImage) when SEO fields are empty, displays AI confidence scores when available, and provides drag-and-drop image upload functionality with real-time preview updates.
51
+ > All SEO fields accept empty strings (never `undefined`). When a field is empty, the component automatically falls back to `title`, `summary`, or `featuredImage` props, showing an "Auto-populated" hint label beneath the input.
@@ -1,12 +1,25 @@
1
- <!-- source-hash: 0d462bb6c17817fbe23701be501c0223 -->
2
- A React component for managing social media links with platform selection, URL input, and dynamic icon rendering.
1
+ <!-- source-hash: d38fe303fe5fb74d67b5d888ec7ca267 -->
2
+ A client-side React component for managing a dynamic list of social media profile links, supporting add, update, and remove operations with platform-aware icons.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **SocialLinksManager**: Main component for adding, editing, and removing social media links
7
- - **SocialLink**: Interface defining platform, URL, and optional username fields
8
- - **SocialPlatform**: Interface for platform configuration with display names, icons, and URL patterns
9
- - **iconMap**: Static mapping of platform names to their corresponding icon components
6
+ ### Interfaces
7
+
8
+ | Interface | Description |
9
+ |---|---|
10
+ | `SocialLink` | Represents a single link entry with `platform`, `url`, and optional `username` |
11
+ | `SocialPlatform` | Describes a platform definition sourced from dynamic data (e.g., database), including `icon_name`, `url_pattern`, and `placeholder` |
12
+ | `SocialLinksManagerProps` | Component props: `links`, `onChange` callback, optional `platforms` array, and optional `className` |
13
+
14
+ ### `SocialLinksManager`
15
+
16
+ The primary exported component. Renders a list of social link rows, each with:
17
+ - A platform icon (resolved via `iconMap` using `icon_name` from `SocialPlatform` or falls back to `platform` string)
18
+ - A `Select` dropdown for choosing the platform
19
+ - An `Input` for the profile URL
20
+ - A delete button (`Trash2`) to remove the entry
21
+
22
+ Supported icon keys in `iconMap`: `linkedin`, `github`, `twitter`, `reddit`, `slack`, `whatsapp`, `website`, `youtube`, `instagram`, `facebook`, `discord`, `telegram`, `tiktok`.
10
23
 
11
24
  ## Usage Example
12
25
 
@@ -14,28 +27,21 @@ A React component for managing social media links with platform selection, URL i
14
27
  import { SocialLinksManager, SocialLink, SocialPlatform } from './social-links-manager';
15
28
 
16
29
  const platforms: SocialPlatform[] = [
17
- {
18
- id: '1',
19
- name: 'linkedin',
20
- display_name: 'LinkedIn',
21
- icon_name: 'linkedin',
22
- placeholder: 'LinkedIn profile URL',
23
- enabled: true
24
- }
30
+ { id: '1', name: 'linkedin', display_name: 'LinkedIn', icon_name: 'linkedin', enabled: true, placeholder: 'https://linkedin.com/in/...' },
31
+ { id: '2', name: 'github', display_name: 'GitHub', icon_name: 'github', enabled: true, placeholder: 'https://github.com/...' },
25
32
  ];
26
33
 
27
34
  function ProfileEditor() {
28
- const [socialLinks, setSocialLinks] = useState<SocialLink[]>([]);
35
+ const [links, setLinks] = useState<SocialLink[]>([]);
29
36
 
30
37
  return (
31
38
  <SocialLinksManager
32
- links={socialLinks}
33
- onChange={setSocialLinks}
39
+ links={links}
40
+ onChange={setLinks}
34
41
  platforms={platforms}
35
- className="max-w-2xl"
36
42
  />
37
43
  );
38
44
  }
39
45
  ```
40
46
 
41
- The component provides a user-friendly interface with platform dropdowns, URL inputs, icon previews, and remove buttons. It supports dynamic platform configuration and includes built-in icons for popular social media platforms.
47
+ > **Note:** `platforms` defaults to an empty array, so platform data should always be passed explicitly — typically fetched from your database to keep icon and URL patterns in sync.
@@ -1,14 +1,32 @@
1
- <!-- source-hash: b3af358fc7532622afce87b502165a25 -->
2
- A customizable button component for promoting OpenFrame with multiple visual themes and an integrated beta status badge.
1
+ <!-- source-hash: 12ec98968857443cbefad0230bd2d335 -->
2
+ A client-side React button component that renders a branded "Start with OpenFrame" CTA button, supporting five visual modes with the OpenFrame logo icon and a "Beta" status badge.
3
3
 
4
4
  ## Key Components
5
5
 
6
- **StartWithOpenFrameButton** - Main React component with forwardRef support
7
- - **Props Interface**: `StartWithOpenFrameButtonProps` extending base ButtonProps
8
- - **Visual Modes**: 5 color schemes (outline, yellow, pink, purple, cyan)
9
- - **Size Options**: Small, medium, and large variants
10
- - **Icon Integration**: OpenFrameLogo with dynamic colors
11
- - **Status Badge**: Built-in "Beta" badge indicator
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `StartWithOpenFrameButton` | `React.ForwardRefExoticComponent` | Main button component with OpenFrame branding |
9
+ | `StartWithOpenFrameButtonProps` | `interface` | Extends `ButtonProps`, omitting `variant`, `size`, and `leftIcon` |
10
+
11
+ ### Props
12
+
13
+ | Prop | Type | Default | Description |
14
+ |------|------|---------|-------------|
15
+ | `mode` | `'outline' \| 'yellow' \| 'pink' \| 'purple' \| 'cyan'` | `'outline'` | Visual color mode |
16
+ | `buttonSize` | `'sm' \| 'md' \| 'lg'` | — | Maps to internal Button size tokens |
17
+ | `loading` | `boolean` | `false` | Shows loading state, hides the OpenFrame icon |
18
+ | `buttonBackgroundColor` | `string` | — | Custom background override (cyan mode only) |
19
+ | `buttonTextColor` | `string` | — | Custom text color override (cyan mode only) |
20
+ | `children` | `React.ReactNode` | `'Start Free Trial'` | Button label |
21
+
22
+ ### Mode Behavior
23
+
24
+ | Mode | Variant | Background Token |
25
+ |------|---------|-----------------|
26
+ | `outline` | `outline` | Default outline style |
27
+ | `yellow` | `accent` | `--ods-open-yellow-base` |
28
+ | `pink` / `purple` | `accent` | `--ods-flamingo-pink-base` |
29
+ | `cyan` | `accent` | `--ods-flamingo-cyan-base` |
12
30
 
13
31
  ## Usage Example
14
32
 
@@ -16,30 +34,20 @@ A customizable button component for promoting OpenFrame with multiple visual the
16
34
  import { StartWithOpenFrameButton } from './start-with-openframe-button';
17
35
 
18
36
  // Default outline mode
19
- <StartWithOpenFrameButton
20
- onClick={() => window.open('/openframe')}
21
- >
22
- Start Free Trial
23
- </StartWithOpenFrameButton>
37
+ <StartWithOpenFrameButton onClick={() => router.push('/signup')} />
24
38
 
25
- // Yellow primary mode with large size
26
- <StartWithOpenFrameButton
27
- mode="yellow"
28
- buttonSize="lg"
29
- onClick={handleStartTrial}
30
- >
31
- Get Started Now
39
+ // Yellow accent, large size
40
+ <StartWithOpenFrameButton mode="yellow" buttonSize="lg">
41
+ Get Started
32
42
  </StartWithOpenFrameButton>
33
43
 
34
- // Cyan mode with custom colors
35
- <StartWithOpenFrameButton
44
+ // Cyan with custom brand colors
45
+ <StartWithOpenFrameButton
36
46
  mode="cyan"
37
- buttonBackgroundColor="#00D4FF"
47
+ buttonBackgroundColor="#00BCD4"
38
48
  buttonTextColor="#000000"
39
- loading={isLoading}
40
- >
41
- Launch OpenFrame
42
- </StartWithOpenFrameButton>
43
- ```
49
+ />
44
50
 
45
- The component automatically adjusts icon colors based on the selected mode to maintain proper contrast and visual hierarchy. Each mode follows Flamingo's design system color tokens for consistent branding.
51
+ // Loading state
52
+ <StartWithOpenFrameButton loading={isSubmitting} />
53
+ ```