@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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-OZ3GH6OQ.cjs","../src/nats/nats.ts","../src/nats/shared-connection.ts","../src/nats/nats-provider.tsx","../src/nats/use-nats-subscription.ts"],"names":[],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-OZ3GH6OQ.cjs","sourcesContent":[null,"import type {\n ConnectionOptions,\n Consumer,\n ConsumerMessages,\n JsMsg,\n MsgHdrs as NatsHeaders,\n Msg,\n NatsConnection,\n Subscription,\n} from 'nats.ws'\n\nexport type { JsMsg, Msg, Subscription } from 'nats.ws'\n\nexport type JetStreamDeliverPolicy = 'new' | 'byStartSequence'\n\nexport interface JetStreamOrderedSubscribeOptions {\n streamName: string\n filterSubject: string\n deliverPolicy: JetStreamDeliverPolicy\n /** Required when deliverPolicy === 'byStartSequence'. */\n optStartSeq?: number\n /** Auto-cleanup the ephemeral consumer after this idle time. Default: 5 minutes. */\n inactiveThresholdMs?: number\n /** AbortSignal to tear down the consumer. */\n signal?: AbortSignal\n}\n\nexport interface JetStreamSubscriptionHandle {\n unsubscribe(): void\n}\n\nexport interface NatsClientOptions {\n /**\n * NATS server URL(s), for example:\n * - \"wss://nats.example.com:443\"\n * - [\"wss://nats-1.example.com:443\", \"wss://nats-2.example.com:443\"]\n */\n servers: string | string[]\n\n /**\n * Connection name (shows up in NATS monitoring).\n */\n name?: string\n\n /**\n * Auth options (pick one: token or user/pass).\n */\n token?: string\n user?: string\n pass?: string\n\n /**\n * Reconnect behavior.\n */\n reconnect?: boolean\n maxReconnectAttempts?: number\n reconnectTimeWaitMs?: number\n\n /**\n * Exponential backoff for reconnect delays.\n * When set, uses `reconnectDelayHandler` from nats.ws under the hood,\n * overriding `reconnectTimeWaitMs`.\n */\n exponentialBackoff?: {\n /** Initial delay in ms (default: 1000) */\n initialDelayMs?: number\n /** Maximum delay cap in ms (default: 30000) */\n maxDelayMs?: number\n /** Multiplier per attempt (default: 2) */\n multiplier?: number\n /** Add random jitter 0-50% of delay to prevent thundering herd (default: true) */\n jitter?: boolean\n }\n\n /**\n * Ping behavior (keep-alive).\n */\n pingIntervalMs?: number\n maxPingOut?: number\n\n /**\n * Optional inbox prefix (useful if you want to isolate request/reply inboxes).\n */\n inboxPrefix?: string\n\n /**\n * Connection timeout in milliseconds (maps to `nats.ws` connect option `timeout`).\n * If you see `NatsError: TIMEOUT` during connect, increase this.\n */\n connectTimeoutMs?: number\n}\n\nexport interface NatsSubscribeOptions {\n /**\n * Queue group for load-balancing messages across subscribers.\n */\n queue?: string\n\n /**\n * Auto-unsubscribe after receiving this many messages.\n */\n max?: number\n\n /**\n * Abort signal to stop message iteration and unsubscribe.\n */\n signal?: AbortSignal\n}\n\nexport type NatsHeadersInit = Record<string, string> | NatsHeaders | undefined\n\nexport interface NatsPublishOptions {\n headers?: NatsHeadersInit\n}\n\nexport interface NatsRequestOptions {\n timeoutMs?: number\n headers?: NatsHeadersInit\n}\n\nexport interface NatsSubscriptionHandle {\n readonly subscription: Subscription\n unsubscribe(): void\n}\n\nexport type NatsStatus =\n | 'connecting'\n | 'connected'\n | 'disconnected'\n | 'reconnecting'\n | 'closed'\n | 'error'\n\nexport interface NatsStatusEvent {\n status: NatsStatus\n data?: unknown\n}\n\nexport interface NatsClient {\n connect(): Promise<void>\n close(): Promise<void>\n\n isConnected(): boolean\n\n publishBytes(subject: string, payload: Uint8Array, options?: NatsPublishOptions): void\n publishString(subject: string, payload: string, options?: NatsPublishOptions): void\n publishJson<T>(subject: string, payload: T, options?: NatsPublishOptions): void\n\n requestBytes(subject: string, payload: Uint8Array, options?: NatsRequestOptions): Promise<Msg>\n requestString(subject: string, payload: string, options?: NatsRequestOptions): Promise<string>\n requestJson<TResponse, TRequest = unknown>(\n subject: string,\n payload: TRequest,\n options?: NatsRequestOptions,\n ): Promise<TResponse>\n\n subscribeBytes(\n subject: string,\n onMessage: (msg: Msg) => void | Promise<void>,\n options?: NatsSubscribeOptions,\n ): NatsSubscriptionHandle\n subscribeString(\n subject: string,\n onMessage: (payload: string, msg: Msg) => void | Promise<void>,\n options?: NatsSubscribeOptions,\n ): NatsSubscriptionHandle\n subscribeJson<T>(\n subject: string,\n onMessage: (payload: T, msg: Msg) => void | Promise<void>,\n options?: NatsSubscribeOptions,\n ): NatsSubscriptionHandle\n\n /**\n * Subscribe to a JetStream subject via an ephemeral OrderedConsumer (no acks).\n * Use `optStartSeq` with `deliverPolicy: 'byStartSequence'` to resume from a known offset,\n * or `deliverPolicy: 'new'` to live-tail.\n */\n subscribeJetStreamOrdered(\n onMessage: (msg: JsMsg) => void | Promise<void>,\n options: JetStreamOrderedSubscribeOptions,\n ): Promise<JetStreamSubscriptionHandle>\n\n onStatus(listener: (event: NatsStatusEvent) => void): () => void\n}\n\nfunction assertClientSide(): void {\n // This wrapper is meant for browser/Tauri usage via WebSockets.\n // Keep it safe to import from Next.js server bundles by throwing only when used.\n if (typeof window === 'undefined') {\n throw new Error('NATS client can only connect from the browser/runtime with WebSocket support (window is undefined).')\n }\n}\n\nasync function importNats(): Promise<typeof import('nats.ws')> {\n // Browser/Tauri only: always use the websocket client (no Node-only deps).\n return await import('nats.ws')\n}\n\nfunction toNatsHeaders(nats: typeof import('nats.ws'), init: NatsHeadersInit): NatsHeaders | undefined {\n if (!init) return undefined\n if (typeof (init as NatsHeaders).get === 'function') return init as NatsHeaders\n\n const h = nats.headers()\n for (const [k, v] of Object.entries(init as Record<string, string>)) {\n if (v !== undefined && v !== null) h.set(k, String(v))\n }\n return h\n}\n\n/** Returns a cryptographically random float in [0, 1). */\nfunction cryptoRandom(): number {\n const buf = new Uint32Array(1)\n crypto.getRandomValues(buf)\n return buf[0] / (0xffffffff + 1)\n}\n\ninterface ExponentialBackoffHandle {\n handler: () => number\n reset: () => void\n}\n\nfunction createExponentialBackoffHandler(opts: NonNullable<NatsClientOptions['exponentialBackoff']>): ExponentialBackoffHandle {\n const initialDelay = opts.initialDelayMs ?? 1000\n const maxDelay = opts.maxDelayMs ?? 30_000\n const multiplier = opts.multiplier ?? 2\n const jitter = opts.jitter ?? true\n\n let attempt = 0\n\n return {\n handler: (): number => {\n const delay = Math.min(initialDelay * multiplier ** attempt, maxDelay)\n attempt++\n return jitter ? delay * (0.5 + cryptoRandom() * 0.5) : delay\n },\n reset: () => {\n attempt = 0\n },\n }\n}\n\nfunction mapOptionsToConnectionOptions(\n opts: NatsClientOptions,\n backoff?: ExponentialBackoffHandle,\n): ConnectionOptions {\n return {\n servers: opts.servers,\n name: opts.name,\n token: opts.token,\n user: opts.user,\n pass: opts.pass,\n timeout: opts.connectTimeoutMs ?? 15000,\n reconnect: opts.reconnect ?? true,\n maxReconnectAttempts: opts.maxReconnectAttempts,\n reconnectTimeWait: opts.reconnectTimeWaitMs,\n reconnectDelayHandler: backoff?.handler,\n pingInterval: opts.pingIntervalMs,\n maxPingOut: opts.maxPingOut,\n inboxPrefix: opts.inboxPrefix,\n }\n}\n\nfunction mapNatsTypeToStatus(type: unknown): NatsStatus | null {\n const t = String(type).toLowerCase()\n if (t.includes('disconnect')) return 'disconnected'\n if (t === 'reconnecting') return 'reconnecting'\n if (t === 'reconnect' || t.includes('connect')) return 'connected'\n if (t.includes('error')) return 'error'\n if (t.includes('close')) return 'closed'\n return null\n}\n\nexport function createNatsClient(options: NatsClientOptions): NatsClient {\n let nc: NatsConnection | null = null\n let statusLoopAbort: AbortController | null = null\n let connectInFlight: Promise<void> | null = null\n\n const backoff = options.exponentialBackoff\n ? createExponentialBackoffHandler(options.exponentialBackoff)\n : undefined\n\n const statusListeners = new Set<(event: NatsStatusEvent) => void>()\n\n function emitStatus(event: NatsStatusEvent) {\n for (const listener of statusListeners) {\n try {\n listener(event)\n } catch {\n // ignore listener failures\n }\n }\n }\n\n async function connect(): Promise<void> {\n if (nc && !nc.isClosed()) return\n if (connectInFlight) return connectInFlight\n assertClientSide()\n\n connectInFlight = (async () => {\n try {\n emitStatus({ status: 'connecting' })\n\n const nats = await importNats()\n const conn = await nats.connect(mapOptionsToConnectionOptions(options, backoff))\n nc = conn\n\n emitStatus({ status: 'connected' })\n\n statusLoopAbort = new AbortController()\n const signal = statusLoopAbort.signal\n\n ;(async () => {\n try {\n for await (const s of conn.status()) {\n if (signal.aborted) return\n const mapped = mapNatsTypeToStatus((s as any)?.type)\n if (mapped) {\n if (mapped === 'connected' && backoff) {\n backoff.reset()\n }\n emitStatus({ status: mapped, data: (s as any)?.data })\n if (mapped === 'closed') {\n nc = null\n }\n }\n }\n } catch (e) {\n if (!signal.aborted) {\n emitStatus({ status: 'error', data: e })\n nc = null\n }\n }\n })().catch(() => {\n // ignore\n })\n } finally {\n connectInFlight = null\n }\n })()\n\n return connectInFlight\n }\n\n async function close(): Promise<void> {\n const conn = nc\n nc = null\n\n if (statusLoopAbort) {\n try {\n statusLoopAbort.abort()\n } catch {\n // ignore\n }\n statusLoopAbort = null\n }\n\n if (!conn) return\n try {\n await conn.drain()\n } finally {\n try {\n await conn.close()\n } finally {\n emitStatus({ status: 'closed' })\n }\n }\n }\n\n function requireConnection(): NatsConnection {\n if (!nc) throw new Error('NATS is not connected. Call client.connect() first.')\n return nc\n }\n\n function isConnected(): boolean {\n return Boolean(nc) && !nc!.isClosed()\n }\n\n function publishBytes(subject: string, payload: Uint8Array, opts?: NatsPublishOptions): void {\n const conn = requireConnection()\n ;(async () => {\n const nats = await importNats()\n conn.publish(subject, payload, { headers: toNatsHeaders(nats, opts?.headers) })\n })().catch((e) => emitStatus({ status: 'error', data: e }))\n }\n\n function publishString(subject: string, payload: string, opts?: NatsPublishOptions): void {\n ;(async () => {\n const nats = await importNats()\n const sc = nats.StringCodec()\n publishBytes(subject, sc.encode(payload), opts)\n })().catch((e) => emitStatus({ status: 'error', data: e }))\n }\n\n function publishJson<T>(subject: string, payload: T, opts?: NatsPublishOptions): void {\n ;(async () => {\n const nats = await importNats()\n const jc = nats.JSONCodec<T>()\n publishBytes(subject, jc.encode(payload), opts)\n })().catch((e) => emitStatus({ status: 'error', data: e }))\n }\n\n async function requestBytes(subject: string, payload: Uint8Array, opts?: NatsRequestOptions): Promise<Msg> {\n const conn = requireConnection()\n const nats = await importNats()\n const msg = await conn.request(subject, payload, {\n timeout: opts?.timeoutMs ?? 2000,\n headers: toNatsHeaders(nats, opts?.headers),\n })\n return msg\n }\n\n async function requestString(subject: string, payload: string, opts?: NatsRequestOptions): Promise<string> {\n const nats = await importNats()\n const sc = nats.StringCodec()\n const msg = await requestBytes(subject, sc.encode(payload), opts)\n return sc.decode(msg.data)\n }\n\n async function requestJson<TResponse, TRequest = unknown>(\n subject: string,\n payload: TRequest,\n opts?: NatsRequestOptions,\n ): Promise<TResponse> {\n const nats = await importNats()\n const reqCodec = nats.JSONCodec<TRequest>()\n const resCodec = nats.JSONCodec<TResponse>()\n const msg = await requestBytes(subject, reqCodec.encode(payload), opts)\n return resCodec.decode(msg.data)\n }\n\n function subscribeBytes(\n subject: string,\n onMessage: (msg: Msg) => void | Promise<void>,\n opts?: NatsSubscribeOptions,\n ): NatsSubscriptionHandle {\n const conn = requireConnection()\n const sub = conn.subscribe(subject, { queue: opts?.queue })\n if (typeof opts?.max === 'number') sub.unsubscribe(opts.max)\n\n const abortController = new AbortController()\n const signal = opts?.signal ?? abortController.signal\n\n ;(async () => {\n try {\n for await (const msg of sub) {\n if (signal.aborted) break\n await onMessage(msg)\n }\n } catch (e) {\n emitStatus({ status: 'error', data: e })\n } finally {\n try {\n sub.unsubscribe()\n } catch {\n // ignore\n }\n }\n })().catch((e) => emitStatus({ status: 'error', data: e }))\n\n return {\n subscription: sub,\n unsubscribe() {\n try {\n abortController.abort()\n } catch {\n // ignore\n }\n try {\n sub.unsubscribe()\n } catch {\n // ignore\n }\n },\n }\n }\n\n function subscribeString(\n subject: string,\n onMessage: (payload: string, msg: Msg) => void | Promise<void>,\n opts?: NatsSubscribeOptions,\n ): NatsSubscriptionHandle {\n return subscribeBytes(\n subject,\n async (msg) => {\n const nats = await importNats()\n const sc = nats.StringCodec()\n await onMessage(sc.decode(msg.data), msg)\n },\n opts,\n )\n }\n\n function subscribeJson<T>(\n subject: string,\n onMessage: (payload: T, msg: Msg) => void | Promise<void>,\n opts?: NatsSubscribeOptions,\n ): NatsSubscriptionHandle {\n return subscribeBytes(\n subject,\n async (msg) => {\n const nats = await importNats()\n const jc = nats.JSONCodec<T>()\n await onMessage(jc.decode(msg.data), msg)\n },\n opts,\n )\n }\n\n async function subscribeJetStreamOrdered(\n onMessage: (msg: JsMsg) => void | Promise<void>,\n opts: JetStreamOrderedSubscribeOptions,\n ): Promise<JetStreamSubscriptionHandle> {\n const conn = requireConnection()\n if (opts.signal?.aborted) {\n return { unsubscribe() {} }\n }\n\n const nats = await importNats()\n if (opts.signal?.aborted) {\n return { unsubscribe() {} }\n }\n\n const inactiveThresholdNs =\n (opts.inactiveThresholdMs ?? 5 * 60_000) * 1_000_000\n\n const js = conn.jetstream()\n const consumer: Consumer = await js.consumers.get(opts.streamName, {\n filterSubjects: opts.filterSubject,\n deliver_policy: nats.DeliverPolicy.StartSequence,\n opt_start_seq: opts.optStartSeq ?? 0,\n inactive_threshold: inactiveThresholdNs,\n })\n\n const iterRef: { current: ConsumerMessages | null } = { current: null }\n let closed = false\n\n const onAbort = () => {\n void teardown()\n }\n opts.signal?.addEventListener('abort', onAbort, { once: true })\n\n async function teardown(): Promise<void> {\n if (closed) return\n closed = true\n opts.signal?.removeEventListener('abort', onAbort)\n const iter = iterRef.current\n iterRef.current = null\n if (iter) {\n try {\n await iter.close()\n } catch {\n // ignore\n }\n }\n }\n\n if (opts.signal?.aborted) {\n void teardown()\n return { unsubscribe() {} }\n }\n\n ;(async () => {\n try {\n const iter = await consumer.consume()\n if (closed) {\n try {\n await iter.close()\n } catch {\n // ignore\n }\n return\n }\n iterRef.current = iter\n for await (const msg of iter) {\n if (closed) break\n try {\n await onMessage(msg)\n } catch (e) {\n emitStatus({ status: 'error', data: e })\n }\n }\n } catch (e) {\n if (!closed) emitStatus({ status: 'error', data: e })\n }\n })().catch((e) => emitStatus({ status: 'error', data: e }))\n\n return {\n unsubscribe() {\n void teardown()\n },\n }\n }\n\n function onStatus(listener: (event: NatsStatusEvent) => void): () => void {\n statusListeners.add(listener)\n return () => statusListeners.delete(listener)\n }\n\n return {\n connect,\n close,\n isConnected,\n publishBytes,\n publishString,\n publishJson,\n requestBytes,\n requestString,\n requestJson,\n subscribeBytes,\n subscribeString,\n subscribeJson,\n subscribeJetStreamOrdered,\n onStatus,\n }\n}\n","import { createNatsClient, type NatsClient, type NatsStatus, type NatsStatusEvent } from './nats'\n\nexport const NATS_DEFAULTS = {\n SHARED_CLOSE_DELAY_MS: 3000,\n CONNECT_TIMEOUT_MS: 10_000,\n PING_INTERVAL_MS: 30_000,\n MAX_PING_OUT: 3,\n RETRY_INITIAL_DELAY_MS: 1000,\n RETRY_MAX_DELAY_MS: 30_000,\n RETRY_MULTIPLIER: 2,\n} as const\n\nexport interface NatsReconnectionBackoff {\n /** Number of fast retries before exponential phase kicks in. Default: 0. */\n fastRetries?: number\n /** Delay used during the fast-retry phase. Default: RETRY_INITIAL_DELAY_MS. */\n fastRetryDelayMs?: number\n /** Base delay for the exponential phase. Default: RETRY_INITIAL_DELAY_MS. */\n initialDelayMs?: number\n /** Upper cap on any single retry delay. Default: RETRY_MAX_DELAY_MS. */\n maxDelayMs?: number\n /** Per-attempt multiplier during exponential phase. Default: RETRY_MULTIPLIER. */\n multiplier?: number\n}\n\nexport interface SharedConnection {\n wsUrl: string\n client: NatsClient\n connectPromise: Promise<void> | null\n refCount: number\n closeTimer: ReturnType<typeof setTimeout> | null\n retryTimer: ReturnType<typeof setTimeout> | null\n /**\n * Identity of the consumer driving reconnect. When set, other consumers\n * should observe status only and skip their own scheduleRetry — otherwise\n * each disconnect triggers multiple concurrent connect() calls racing over\n * connectPromise.\n */\n retryOwner: object | null\n}\n\nexport interface AcquireClientOptions {\n name?: string\n user?: string\n pass?: string\n connectTimeoutMs?: number\n pingIntervalMs?: number\n maxPingOut?: number\n}\n\nexport interface ReleaseClientOptions {\n delayMs?: number\n}\n\nlet shared: SharedConnection | null = null\n\nexport function getSharedConnection(): SharedConnection | null {\n return shared\n}\n\nexport function acquireClient(url: string, opts?: AcquireClientOptions): SharedConnection {\n if (shared?.wsUrl !== url) {\n if (shared) {\n if (shared.closeTimer) clearTimeout(shared.closeTimer)\n const old = shared\n shared = null\n void old.client.close().catch(() => {})\n }\n\n const {\n name = 'openframe-frontend',\n user = 'machine',\n pass = '',\n connectTimeoutMs = NATS_DEFAULTS.CONNECT_TIMEOUT_MS,\n pingIntervalMs = NATS_DEFAULTS.PING_INTERVAL_MS,\n maxPingOut = NATS_DEFAULTS.MAX_PING_OUT,\n } = opts ?? {}\n\n const client = createNatsClient({\n servers: url,\n name,\n user,\n pass,\n connectTimeoutMs,\n reconnect: false,\n pingIntervalMs,\n maxPingOut,\n })\n\n shared = {\n wsUrl: url,\n client,\n connectPromise: null,\n refCount: 0,\n closeTimer: null,\n retryTimer: null,\n retryOwner: null,\n }\n }\n\n shared.refCount += 1\n if (shared.closeTimer) {\n clearTimeout(shared.closeTimer)\n shared.closeTimer = null\n }\n return shared\n}\n\nexport function releaseClient(url: string, opts?: ReleaseClientOptions): void {\n if (!shared || shared.wsUrl !== url) return\n\n shared.refCount = Math.max(0, shared.refCount - 1)\n if (shared.refCount > 0) return\n\n const delay = opts?.delayMs ?? NATS_DEFAULTS.SHARED_CLOSE_DELAY_MS\n shared.closeTimer = setTimeout(() => {\n const s = shared\n shared = null\n if (s) {\n if (s.retryTimer) {\n clearTimeout(s.retryTimer)\n s.retryTimer = null\n }\n void s.client.close().catch(() => {})\n }\n }, delay)\n}\n\nexport function getSharedConnectionFor(url: string | null | undefined): SharedConnection | null {\n if (!url) return null\n return shared && shared.wsUrl === url ? shared : null\n}\n\n// ---------------------------------------------------------------------------\n// Connection lifecycle: retry + status loop, shared by NatsProvider and the\n// chat hooks. Each consumer that wants to drive reconnect creates an\n// ownerToken and calls startConnectionLifecycle(). The first caller to claim\n// retryOwner runs the actual retry loop; subsequent claimants observe status\n// only. When the owner unmounts and releases retryOwner, the next status\n// event lets a surviving consumer pick up ownership opportunistically.\n// ---------------------------------------------------------------------------\n\nexport interface ConnectionLifecycleOptions {\n conn: SharedConnection\n wsUrl: string\n onBeforeReconnect?: () => Promise<void> | void\n backoff?: NatsReconnectionBackoff\n getFreshUrl: () => string | null\n /** Called on every status change (after closed-guard). */\n onStatusChange?: (status: NatsStatus, evt: NatsStatusEvent) => void\n /**\n * Decide which statuses should trigger a retry attempt. Defaults to closed +\n * disconnected. Override to skip 'error' (JetStream protocol errors that\n * don't close the WS) or include it.\n */\n shouldRetryOn?: (status: NatsStatus) => boolean\n}\n\nexport interface ConnectionLifecycleHandle {\n /** Stop observing status, clear any pending retry, release ownership if held. */\n stop(): void\n}\n\nconst defaultShouldRetryOn = (status: NatsStatus) => status === 'closed' || status === 'disconnected'\n\nexport function startConnectionLifecycle(options: ConnectionLifecycleOptions): ConnectionLifecycleHandle {\n const { conn, wsUrl } = options\n // Each lifecycle gets its own identity for retry ownership. The first lifecycle to claim\n // an unowned connection drives reconnect; later attachers observe status only until the\n // owner releases (see opportunistic claim in scheduleRetry).\n const ownerToken = {}\n if (!conn.retryOwner) conn.retryOwner = ownerToken\n\n let closed = false\n let retryAttempt = 0\n\n function emitSynthetic(status: NatsStatus) {\n if (closed) return\n options.onStatusChange?.(status, { status })\n if (status === 'connected') {\n retryAttempt = 0\n }\n }\n\n function scheduleRetry() {\n if (closed) return\n if (getSharedConnectionFor(wsUrl) !== conn) return\n if (!conn.retryOwner) conn.retryOwner = ownerToken\n if (conn.retryOwner !== ownerToken) return\n\n if (conn.retryTimer) {\n clearTimeout(conn.retryTimer)\n conn.retryTimer = null\n }\n\n const cfg = options.backoff ?? {}\n const fastRetries = cfg.fastRetries ?? 0\n const fastDelay = cfg.fastRetryDelayMs ?? NATS_DEFAULTS.RETRY_INITIAL_DELAY_MS\n const baseDelay = cfg.initialDelayMs ?? NATS_DEFAULTS.RETRY_INITIAL_DELAY_MS\n const maxDelay = cfg.maxDelayMs ?? NATS_DEFAULTS.RETRY_MAX_DELAY_MS\n const multiplier = cfg.multiplier ?? NATS_DEFAULTS.RETRY_MULTIPLIER\n\n const delay =\n retryAttempt < fastRetries\n ? fastDelay\n : Math.min(baseDelay * multiplier ** (retryAttempt - fastRetries), maxDelay)\n const jitteredDelay = delay * (0.5 + Math.random() * 0.5)\n retryAttempt++\n\n conn.retryTimer = setTimeout(async () => {\n conn.retryTimer = null\n if (closed) return\n if (getSharedConnectionFor(wsUrl) !== conn) return\n\n try {\n await options.onBeforeReconnect?.()\n } catch {\n // continue regardless of token-refresh outcome\n }\n if (closed) return\n if (getSharedConnectionFor(wsUrl) !== conn) return\n\n const freshUrl = options.getFreshUrl()\n if (freshUrl !== wsUrl) return\n\n try {\n conn.connectPromise = null\n conn.connectPromise = conn.client.connect()\n await conn.connectPromise\n if (!closed && getSharedConnectionFor(wsUrl) === conn) {\n retryAttempt = 0\n }\n } catch {\n conn.connectPromise = null\n if (!closed && getSharedConnectionFor(wsUrl) === conn) {\n scheduleRetry()\n }\n }\n }, jitteredDelay)\n }\n\n const shouldRetryOn = options.shouldRetryOn ?? defaultShouldRetryOn\n\n const unsubStatus = conn.client.onStatus((evt) => {\n if (closed) return\n options.onStatusChange?.(evt.status, evt)\n if (evt.status === 'connected') {\n retryAttempt = 0\n }\n if (shouldRetryOn(evt.status)) {\n scheduleRetry()\n }\n })\n\n if (conn.client.isConnected()) {\n emitSynthetic('connected')\n }\n\n void (async () => {\n try {\n conn.connectPromise ||= conn.client.connect()\n await conn.connectPromise\n } catch {\n conn.connectPromise = null\n if (closed) return\n\n emitSynthetic('disconnected')\n scheduleRetry()\n }\n })()\n\n return {\n stop() {\n closed = true\n unsubStatus()\n if (conn.retryTimer) {\n clearTimeout(conn.retryTimer)\n conn.retryTimer = null\n }\n if (conn.retryOwner === ownerToken) {\n conn.retryOwner = null\n }\n },\n }\n}\n","'use client'\n\nimport * as React from 'react'\nimport type { NatsClient, NatsStatus } from './nats'\nimport {\n acquireClient,\n releaseClient,\n startConnectionLifecycle,\n type AcquireClientOptions,\n type NatsReconnectionBackoff,\n} from './shared-connection'\n\nexport type { NatsReconnectionBackoff } from './shared-connection'\n\nexport interface NatsProviderProps {\n children: React.ReactNode\n /** Return the current NATS WebSocket URL (or null when not yet available, e.g. unauthenticated). */\n getWsUrl: () => string | null\n /** Called before each reconnect attempt. */\n onBeforeReconnect?: () => Promise<void> | void\n clientConfig?: AcquireClientOptions\n reconnectionBackoff?: NatsReconnectionBackoff\n /**\n * Bump this to force re-evaluating `getWsUrl()` (e.g. when auth state flips).\n * Provider does not subscribe to external auth state by itself.\n */\n urlRevision?: unknown\n}\n\nexport interface NatsContextValue {\n client: NatsClient | null\n status: NatsStatus\n isReady: boolean\n reconnectionCount: number\n}\n\nconst NatsContext = React.createContext<NatsContextValue | null>(null)\n\nexport function NatsProvider({\n children,\n getWsUrl,\n onBeforeReconnect,\n clientConfig,\n reconnectionBackoff,\n urlRevision,\n}: NatsProviderProps) {\n const [client, setClient] = React.useState<NatsClient | null>(null)\n const [status, setStatus] = React.useState<NatsStatus>('closed')\n const [reconnectionCount, setReconnectionCount] = React.useState(0)\n\n const getWsUrlRef = React.useRef(getWsUrl)\n React.useEffect(() => {\n getWsUrlRef.current = getWsUrl\n }, [getWsUrl])\n\n const onBeforeReconnectRef = React.useRef(onBeforeReconnect)\n React.useEffect(() => {\n onBeforeReconnectRef.current = onBeforeReconnect\n }, [onBeforeReconnect])\n\n const reconnectionBackoffRef = React.useRef(reconnectionBackoff)\n React.useEffect(() => {\n reconnectionBackoffRef.current = reconnectionBackoff\n }, [reconnectionBackoff])\n\n const clientConfigRef = React.useRef(clientConfig)\n React.useEffect(() => {\n clientConfigRef.current = clientConfig\n }, [clientConfig])\n\n const heldUrlRef = React.useRef<string | null>(null)\n const hadConnectionBeforeRef = React.useRef(false)\n\n React.useEffect(() => {\n const wsUrl = getWsUrlRef.current()\n\n if (!wsUrl) {\n if (heldUrlRef.current) {\n releaseClient(heldUrlRef.current)\n heldUrlRef.current = null\n setClient(null)\n setStatus('closed')\n }\n return\n }\n\n if (heldUrlRef.current && heldUrlRef.current !== wsUrl) {\n releaseClient(heldUrlRef.current)\n heldUrlRef.current = null\n }\n\n const conn = acquireClient(wsUrl, clientConfigRef.current)\n heldUrlRef.current = wsUrl\n setClient(conn.client)\n setStatus(conn.client.isConnected() ? 'connected' : 'connecting')\n\n const lifecycle = startConnectionLifecycle({\n conn,\n wsUrl,\n onBeforeReconnect: () => onBeforeReconnectRef.current?.(),\n backoff: reconnectionBackoffRef.current,\n getFreshUrl: () => getWsUrlRef.current(),\n onStatusChange: (newStatus) => {\n setStatus(newStatus)\n if (newStatus === 'connected') {\n if (hadConnectionBeforeRef.current) {\n setReconnectionCount((c) => c + 1)\n }\n hadConnectionBeforeRef.current = true\n }\n },\n })\n\n return () => {\n lifecycle.stop()\n if (heldUrlRef.current) {\n releaseClient(heldUrlRef.current)\n heldUrlRef.current = null\n }\n setClient(null)\n setStatus('closed')\n }\n }, [urlRevision])\n\n const value = React.useMemo<NatsContextValue>(\n () => ({\n client,\n status,\n isReady: status === 'connected' && client !== null,\n reconnectionCount,\n }),\n [client, status, reconnectionCount],\n )\n\n return <NatsContext.Provider value={value}>{children}</NatsContext.Provider>\n}\n\nexport function useNats(): NatsContextValue {\n const ctx = React.useContext(NatsContext)\n if (!ctx) throw new Error('useNats must be used inside <NatsProvider>')\n return ctx\n}\n\nexport function useOptionalNats(): NatsContextValue | null {\n return React.useContext(NatsContext)\n}\n","'use client'\n\nimport * as React from 'react'\nimport type { JsMsg, Msg, NatsSubscribeOptions } from './nats'\nimport { useOptionalNats } from './nats-provider'\n\nexport interface UseNatsSubscriptionOptions extends NatsSubscribeOptions {\n enabled?: boolean\n}\n\nexport interface UseNatsSubscriptionReturn {\n isSubscribed: boolean\n isReady: boolean\n}\n\n/**\n * Subscribe to a NATS subject using the shared connection from <NatsProvider>.\n * Automatically (re)subscribes when the connection becomes ready, when the\n * subject changes, and after reconnections.\n */\nexport function useNatsSubscription(\n subject: string | null,\n onMessage: (msg: Msg) => void | Promise<void>,\n options?: UseNatsSubscriptionOptions,\n): UseNatsSubscriptionReturn {\n const nats = useOptionalNats()\n const handlerRef = React.useRef(onMessage)\n React.useEffect(() => {\n handlerRef.current = onMessage\n }, [onMessage])\n\n const [isSubscribed, setIsSubscribed] = React.useState(false)\n\n const enabled = options?.enabled !== false\n const queue = options?.queue\n const max = options?.max\n const reconnectionCount = nats?.reconnectionCount ?? 0\n const isReady = !!nats?.isReady\n const client = nats?.client ?? null\n\n React.useEffect(() => {\n if (!client || !isReady || !subject || !enabled) {\n setIsSubscribed(false)\n return\n }\n\n const sub = client.subscribeBytes(\n subject,\n (msg) => handlerRef.current(msg),\n { queue, max },\n )\n setIsSubscribed(true)\n\n return () => {\n setIsSubscribed(false)\n try {\n sub.unsubscribe()\n } catch {\n // ignore\n }\n }\n // reconnectionCount intentionally in deps: re-subscribe after reconnect\n }, [client, isReady, subject, enabled, queue, max, reconnectionCount])\n\n return { isSubscribed, isReady }\n}\n\nexport type UseNatsJsonSubscriptionOptions = UseNatsSubscriptionOptions\n\nexport function useNatsJsonSubscription<T = unknown>(\n subject: string | null,\n onPayload: (payload: T, msg: Msg) => void | Promise<void>,\n options?: UseNatsJsonSubscriptionOptions,\n): UseNatsSubscriptionReturn {\n const handlerRef = React.useRef(onPayload)\n React.useEffect(() => {\n handlerRef.current = onPayload\n }, [onPayload])\n\n const decoderRef = React.useRef<TextDecoder | null>(null)\n if (!decoderRef.current && typeof TextDecoder !== 'undefined') {\n decoderRef.current = new TextDecoder()\n }\n\n const wrapped = React.useCallback(async (msg: Msg) => {\n const decoder = decoderRef.current\n if (!decoder) return\n try {\n const parsed = JSON.parse(decoder.decode(msg.data)) as T\n await handlerRef.current(parsed, msg)\n } catch {\n // ignore malformed payloads\n }\n }, [])\n\n return useNatsSubscription(subject, wrapped, options)\n}\n\nexport type NatsJsMsg = JsMsg\n"]}