@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,47 @@
1
+ <!-- source-hash: 756619c21c965403499e06eb7fef94fa -->
2
+ Pure presentation component for rendering investor update cards in two density modes (`default` and `sm`), with no internal click logic — callers supply the resolved `href`.
3
+
4
+ ## Key Components
5
+
6
+ ### `InvestorUpdateCard`
7
+ Main card component. Renders differently based on the `size` prop:
8
+ - **`default`** — delegates to `AdminContentCard` with image, title, summary, badges, and period meta
9
+ - **`sm`** — compact horizontal layout using shared `COMPACT_CARD_*` utility classes
10
+
11
+ ### `InvestorUpdateCardSkeleton`
12
+ Loading placeholder matching the visual footprint of each density mode. Uses `animate-pulse` for the default size.
13
+
14
+ ### `InvestorUpdateCardProps`
15
+
16
+ | Prop | Type | Description |
17
+ |------|------|-------------|
18
+ | `update` | `InvestorUpdate` | Entity data |
19
+ | `href` | `string` | Resolved detail URL (caller-supplied) |
20
+ | `target` | `'_blank'` | Optional new-tab behavior |
21
+ | `placeholderUrl` | `string \| null` | OG fallback when `featured_image` is absent |
22
+ | `size` | `'default' \| 'sm'` | Card density (defaults to `'default'`) |
23
+
24
+ ## Usage Example
25
+
26
+ ```typescript
27
+ // Default density — full card
28
+ <InvestorUpdateCard
29
+ update={investorUpdate}
30
+ href={`/investor-updates/${investorUpdate.slug}`}
31
+ placeholderUrl="/images/update-placeholder.png"
32
+ />
33
+
34
+ // Compact horizontal — e.g. inside a chat dispatch or sidebar list
35
+ <InvestorUpdateCard
36
+ update={investorUpdate}
37
+ href={`/investor-updates/${investorUpdate.slug}`}
38
+ target="_blank"
39
+ rel="noopener noreferrer"
40
+ size="sm"
41
+ />
42
+
43
+ // Skeleton while data loads
44
+ <InvestorUpdateCardSkeleton size="sm" />
45
+ ```
46
+
47
+ > **Design note:** The component intentionally owns zero click/navigation logic. Tab behavior (`target="_blank"`) is resolved externally (e.g. via `computeIsNewTab`) and passed in, keeping the component fully declarative.
@@ -0,0 +1,58 @@
1
+ <!-- source-hash: ecac941a52e178236e11d54fe42337ec -->
2
+ Pure presentation component that renders an onboarding guide card in three layout variants — `catalog`, `default`, and `sm` — plus matching skeleton states for loading UI.
3
+
4
+ ## Key Components
5
+
6
+ ### `OnboardingGuideCard`
7
+ Main card component. Stateless and click-logic-free; the caller wraps with navigation and provides the resolved `href`.
8
+
9
+ | Prop | Type | Description |
10
+ |------|------|-------------|
11
+ | `guide` | `OnboardingGuide` | Guide entity data |
12
+ | `href` | `string` | Detail URL resolved by caller |
13
+ | `target` | `'_blank'` | Optional new-tab behavior |
14
+ | `size` | `'catalog' \| 'default' \| 'sm'` | Layout variant (default: `'default'`) |
15
+ | `placeholderUrl` | `string \| null` | OG fallback image for catalog/sm |
16
+ | `className` | `string` | Additional CSS classes |
17
+
18
+ ### `OnboardingGuideCardSkeleton`
19
+ Loading placeholder that mirrors each layout variant's structure with animated pulse states.
20
+
21
+ ### `HORIZONTAL_SIZE_TOKENS`
22
+ Internal token map for spacing/typography in the `default` variant.
23
+
24
+ ## Variants
25
+
26
+ | Variant | Layout | Use Case |
27
+ |---------|--------|----------|
28
+ | `catalog` | Hero image + author grid | Public catalog page |
29
+ | `default` | Horizontal step-numbered | "More in section" rail |
30
+ | `sm` | Compact horizontal | Chat-inline rendering |
31
+
32
+ ## Usage Example
33
+
34
+ ```typescript
35
+ import { OnboardingGuideCard, OnboardingGuideCardSkeleton } from './onboarding-guide-card'
36
+
37
+ // Loading state
38
+ if (isLoading) {
39
+ return <OnboardingGuideCardSkeleton size="catalog" />
40
+ }
41
+
42
+ // Catalog variant (public listing)
43
+ <OnboardingGuideCard
44
+ guide={guide}
45
+ href={`/guides/${guide.slug}`}
46
+ size="catalog"
47
+ placeholderUrl={ogImageUrl}
48
+ />
49
+
50
+ // Chat inline (sm variant, new tab)
51
+ <OnboardingGuideCard
52
+ guide={guide}
53
+ href={`/guides/${guide.slug}`}
54
+ size="sm"
55
+ target="_blank"
56
+ rel="noopener noreferrer"
57
+ />
58
+ ```
@@ -0,0 +1,31 @@
1
+ <!-- source-hash: 192500e77aad1a0a4024a9e7d8dfcfec -->
2
+ Provides the lib-side default implementation of `buildProductReleaseCardProps` for chat dispatch, satisfying the three fields required by the compact (`size='sm'`) `<ProductReleaseCard>` variant without requiring hub-side extras.
3
+
4
+ ## Key Components
5
+
6
+ ### Interfaces
7
+ - **`ReleaseLike`** — Loosely typed shape for raw API row data, covering image URLs, video URLs, and release date fields
8
+ - **`DerivedSmProps`** — Output shape containing only the three sm-relevant props: `coverImage`, `hasVideoCover`, and `formattedDate`
9
+
10
+ ### Functions
11
+ - **`pickCover(item)`** — Resolves the best cover image URL by mirroring the hub's `resolveReleaseCover` precedence: video thumbnails take priority when a video is set, falling back to `featured_image` then `og_image_url`
12
+ - **`defaultBuildProductReleaseCardProps(item)`** — Main export; builds the `DerivedSmProps` bundle from an unknown API row, using `formatReleaseDate` for TZ-safe date formatting
13
+
14
+ ## Usage Example
15
+
16
+ ```typescript
17
+ import { defaultBuildProductReleaseCardProps } from './product-release-card-defaults'
18
+
19
+ // Used as fallback when opts.extras.buildProductReleaseCardProps is not supplied
20
+ const props = defaultBuildProductReleaseCardProps(apiRow)
21
+ // → { coverImage: 'https://...', hasVideoCover: true, formattedDate: 'Jan 15, 2025' }
22
+
23
+ // Hub-side embedders override with their richer builder via extras:
24
+ const cardProps = (opts.extras?.buildProductReleaseCardProps ?? defaultBuildProductReleaseCardProps)(row)
25
+ ```
26
+
27
+ ## Notes
28
+
29
+ - Uses `formatReleaseDate` (not `new Date().toLocaleDateString`) to avoid UTC off-by-one day shifts on date-only `YYYY-MM-DD` strings
30
+ - Produces an empty string for `formattedDate` when `release_date` is absent, rather than throwing
31
+ - lg-only fields (`changelogCounts`, badge color, view count) are intentionally omitted — hub embedders supply those via `extras`
@@ -0,0 +1,29 @@
1
+ <!-- source-hash: d44532c82b6ead050537a1a73696aeb3 -->
2
+ Re-export shim that surfaces the canonical `ProductReleaseCard` component and its related types/skeleton under the `entity-cards/` namespace for unified chat barrel imports.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Source | Description |
7
+ |--------|--------|-------------|
8
+ | `ProductReleaseCard` | `shared/product-release/product-release-card` | Main card component (lg + sm variants) |
9
+ | `ProductReleaseCardProps` | `shared/product-release/product-release-card` | Component props type |
10
+ | `ProductReleaseCardSize` | `shared/product-release/product-release-card` | Size variant union type |
11
+ | `ProductReleaseCardAnchorProps` | `shared/product-release/product-release-card` | Anchor/link props type |
12
+ | `ProductReleaseCardSkeleton` | `shared/product-release/product-release-card-skeleton` | Loading skeleton component |
13
+
14
+ ## Usage Example
15
+
16
+ ```typescript
17
+ // Via the chat barrel (preferred)
18
+ import {
19
+ ProductReleaseCard,
20
+ ProductReleaseCardSkeleton,
21
+ type ProductReleaseCardProps,
22
+ type ProductReleaseCardSize,
23
+ } from '@/components/chat'
24
+
25
+ // Direct import (bypasses indirection)
26
+ import { ProductReleaseCard } from '@/components/shared/product-release/product-release-card'
27
+ ```
28
+
29
+ > **Source of Truth:** All component logic and variants live in `src/components/shared/product-release/`. This file is purely a re-export — do not add logic here.
@@ -0,0 +1,41 @@
1
+ <!-- source-hash: b76130e377c5c19a3a90e82e946098da -->
2
+ Provides fallback `ProgramConfig` defaults for the chat dispatch layer, ensuring `<ProgramCard size='sm'>` renders correctly without requiring embedders to supply hub-side catalog configuration.
3
+
4
+ ## Key Components
5
+
6
+ ### `makeDefault<T>`
7
+ Generic factory function that constructs a minimal `ProgramConfig<T>` for a given program type. Populates only the fields the compact chat card actually reads (`type`, `labels.singular`) plus safe placeholder values for catalog-page fields (`dateField`, `table`, `apiEndpoint`, `icon`, `detailRoute`, `externalLinkLabel`) so TypeScript type-checking passes without binding embedders to hub-internal imports.
8
+
9
+ ### `DEFAULT_PROGRAM_CONFIGS`
10
+ Exported `const` map of ready-to-use defaults for all three program types:
11
+
12
+ | Key | `type` | `labels.singular` | `labels.plural` |
13
+ |--------|---------|-------------------|-----------------|
14
+ | `podcast` | `"podcast"` | `"Episode"` | `"Episodes"` |
15
+ | `webinar` | `"webinar"` | `"Webinar"` | `"Webinars"` |
16
+ | `event` | `"event"` | `"Event"` | `"Events"` |
17
+
18
+ ## Usage Example
19
+
20
+ The chat dispatch reads `extras.programConfigs.X ?? DEFAULT_PROGRAM_CONFIGS.X`, so overriding is opt-in:
21
+
22
+ ```typescript
23
+ import { DEFAULT_PROGRAM_CONFIGS } from './program-card-defaults'
24
+
25
+ // Use defaults — no hub-side config required
26
+ const config = DEFAULT_PROGRAM_CONFIGS.podcast
27
+ // config.labels.singular → "Episode"
28
+ // config.type → "podcast"
29
+
30
+ // Override only what you need; fallback handles the rest
31
+ const customConfigs = {
32
+ podcast: {
33
+ ...DEFAULT_PROGRAM_CONFIGS.podcast,
34
+ icon: MyPodcastIcon,
35
+ externalLinkLabel: 'Listen Now',
36
+ detailRoute: '/podcasts',
37
+ },
38
+ }
39
+ ```
40
+
41
+ > **Why this exists:** Previously, missing `extras.programConfigs` caused the dispatch to return `null`, falling back to a bare text chip. These defaults decouple non-hub embedders (e.g. the validation app) from `currentPlatform()` and `buildContentURL` — hub-internal dependencies they cannot safely import.
@@ -0,0 +1,59 @@
1
+ <!-- source-hash: 882a2c614fa33ecfd7b3ef948ea40a94 -->
2
+ Brief overview of the `program-card.tsx` component — a pure presentational card for displaying podcasts, webinars, and events with two density modes.
3
+
4
+ ## Key Components
5
+
6
+ ### Exports
7
+
8
+ | Export | Type | Description |
9
+ |--------|------|-------------|
10
+ | `ProgramCardSkeleton` | Component | Loading placeholder supporting `default` and `sm` sizes |
11
+ | `ProgramCard<T>` | Generic Component | Main card component, typed against `BaseProgramItem` |
12
+ | `ProgramCardProps<T>` | Interface | Props contract for `ProgramCard` |
13
+
14
+ ### Internal Helpers
15
+
16
+ - **`getHosts()`** — Normalizes host data from either a typed array or a JSON string
17
+ - **`MediaGallery`** — Scrollable thumbnail strip with `ImageGalleryModal` lightbox integration
18
+
19
+ ### Card Sizes (`CardSize`)
20
+
21
+ | Size | Layout | Use Case |
22
+ |------|--------|----------|
23
+ | `default` | Vertical, full detail | Standalone page/feed cards |
24
+ | `sm` | Compact horizontal | Chat-inline embeds |
25
+
26
+ ### Type-Aware Metadata
27
+
28
+ The card adapts displayed metadata based on `config.type`:
29
+
30
+ - **`podcast`** → Duration via `formatDurationCompact`
31
+ - **`event`** → Location name
32
+ - **`webinar`** → Start time + duration via `formatTimeWithTimezone` / `formatDurationFromRange`
33
+
34
+ ## Usage Example
35
+
36
+ ```typescript
37
+ import { ProgramCard } from './program-card'
38
+
39
+ // Default (vertical) layout
40
+ <ProgramCard
41
+ config={{ type: 'podcast', labels: { singular: 'Episode' } }}
42
+ item={episode}
43
+ href="/podcasts/ep-42"
44
+ size="default"
45
+ />
46
+
47
+ // Compact inline variant (e.g., inside chat)
48
+ <ProgramCard
49
+ config={{ type: 'webinar', labels: { singular: 'Webinar' } }}
50
+ item={webinarItem}
51
+ href="https://external.com/webinar"
52
+ target="_blank"
53
+ rel="noopener noreferrer"
54
+ size="sm"
55
+ placeholderUrl="https://cdn.example.com/og-fallback.png"
56
+ />
57
+ ```
58
+
59
+ > **Note:** `ProgramCard` is purely presentational — it owns no navigation logic. Callers are responsible for computing and passing `href` and `target`.
@@ -0,0 +1,46 @@
1
+ <!-- source-hash: 853672c07dc2c32f2542a936a393a3ad -->
2
+ Pure presentation component for roadmap items with two density modes — a rich default card (vote buttons, Figma/screenshot controls) and a compact horizontal variant for inline chat display.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Description |
7
+ |--------|-------------|
8
+ | `RoadmapCard` | Main card component, renders either `default` or `sm` layout |
9
+ | `RoadmapCardSkeleton` | Loading placeholder matching both card densities |
10
+ | `VoteType` | Union type `'up' \| 'down' \| null` for vote state |
11
+ | `RoadmapCardProps` | Full props interface for the card |
12
+
13
+ ## Usage Example
14
+
15
+ ```typescript
16
+ // Default (full roadmap page card with vote controls)
17
+ <RoadmapCard
18
+ item={roadmapItem}
19
+ userVote={currentVote}
20
+ onVote={(type) => handleVote(item.id, type)}
21
+ isVoting={isPending}
22
+ />
23
+
24
+ // Compact inline variant (chat/sidebar)
25
+ <a href={`/roadmap/${item.id}`}>
26
+ <RoadmapCard
27
+ item={roadmapItem}
28
+ size="sm"
29
+ href={`/roadmap/${item.id}`}
30
+ cardType="delivery_item"
31
+ target="_blank"
32
+ rel="noopener noreferrer"
33
+ />
34
+ </a>
35
+
36
+ // Skeleton loader
37
+ <RoadmapCardSkeleton size="sm" />
38
+ ```
39
+
40
+ ## Key Behaviors
41
+
42
+ - **Icon resolution**: prefers `item.icon` (proxied), falls back to `TaskTypeIcon` for internal tasks, then initials
43
+ - **`sm` branch**: wraps content in `<a>` when `href` is valid; renders a static `<span>` when no href is available
44
+ - **Vote UI** (`default` only): rendered only when `onVote` is provided; buttons disabled during `isVoting`
45
+ - **Screenshot gallery**: controlled via local `showScreenshots` state; Figma link and screenshot count displayed as metadata badges in the compact branch
46
+ - **Responsive status badge**: shown inline on `md+` screens, moves below the header row on mobile
@@ -0,0 +1,52 @@
1
+ <!-- source-hash: 69f5a0ba80b7e510b67573e50f546e85 -->
2
+ A pure-presentational thumbs-up / thumbs-down vote button used within `RoadmapCard`'s default variant. Renders an icon with an optional vote count; all interaction logic is delegated to the parent via `onClick`.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `RoadmapVoteButtonProps` | `interface` | Prop contract for the button |
9
+ | `RoadmapVoteButton` | `function` | Styled outline button with thumb icon and count |
10
+
11
+ ### Props
12
+
13
+ | Prop | Type | Default | Description |
14
+ |------|------|---------|-------------|
15
+ | `voteType` | `'up' \| 'down'` | — | Selects `ThumbsUpIcon` or `ThumbsDownIcon` |
16
+ | `count` | `number` | — | Vote tally displayed next to the icon |
17
+ | `isActive` | `boolean` | — | Applies active background when the user has voted |
18
+ | `onClick` | `() => void` | — | Click handler supplied by parent (e.g. `useRoadmapVoting`) |
19
+ | `disabled` | `boolean` | `false` | Disables interaction and applies reduced opacity |
20
+ | `showCount` | `boolean` | `true` | Toggles count label visibility |
21
+ | `color` | `string` | — | Forwarded to the icon as a fill/stroke color |
22
+ | `className` | `string` | — | Additional CSS classes merged via `cn()` |
23
+
24
+ ## Usage Example
25
+
26
+ ```typescript
27
+ import { RoadmapVoteButton } from './roadmap-vote-button'
28
+
29
+ function RoadmapCard() {
30
+ const { upvotes, hasVotedUp, handleVote } = useRoadmapVoting(itemId)
31
+
32
+ return (
33
+ <div className="flex gap-2">
34
+ <RoadmapVoteButton
35
+ voteType="up"
36
+ count={upvotes}
37
+ isActive={hasVotedUp}
38
+ onClick={() => handleVote('up')}
39
+ color="#FFC008"
40
+ />
41
+ <RoadmapVoteButton
42
+ voteType="down"
43
+ count={0}
44
+ isActive={false}
45
+ onClick={() => handleVote('down')}
46
+ showCount={false}
47
+ disabled
48
+ />
49
+ </div>
50
+ )
51
+ }
52
+ ```
@@ -0,0 +1,48 @@
1
+ <!-- source-hash: 82997feaf6df9370cc3057cd02b01be6 -->
2
+ Renders a visual card component for Slack message markers, supporting both `compact` and `row` display variants with optional anchor navigation and a loading skeleton state.
3
+
4
+ ## Key Components
5
+
6
+ ### `SlackMessageCard`
7
+ Main card component that displays a Slack message entry with icon, title, preview text, channel name, and date. Rendering behavior varies by nav context:
8
+ - Wraps in a caller-provided `<a>` via `anchorProps` if supplied
9
+ - Falls back to a direct external `<a href>` if `item.url` is valid
10
+ - Renders a static `<span>` when no link is available
11
+
12
+ ### `SlackMessageCardSkeleton`
13
+ Animated placeholder matching the card layout for loading states. Accepts `variant` and `className` props.
14
+
15
+ ### `parseChannelFromUrl` *(internal)*
16
+ Extracts the Slack channel ID from a Slack archive URL (`*.slack.com/archives/<channelId>/...`) as a fallback when `item.channel` is not set.
17
+
18
+ ### Interfaces
19
+
20
+ | Interface | Purpose |
21
+ |---|---|
22
+ | `SlackMessageCardProps` | `item`, `variant`, `className`, `anchorProps` |
23
+ | `SlackMessageCardAnchorProps` | Typed `<a>` prop bundle composed by the caller |
24
+
25
+ ## Usage Example
26
+
27
+ ```typescript
28
+ import { SlackMessageCard, SlackMessageCardSkeleton } from './slack-message-card'
29
+
30
+ // Compact card with caller-controlled navigation
31
+ <SlackMessageCard
32
+ item={slackMessageItem}
33
+ variant="compact"
34
+ anchorProps={{
35
+ href: '/messages/123',
36
+ onClick: (e) => handleNavigate(e),
37
+ }}
38
+ />
39
+
40
+ // Inline row variant (e.g. inside a list or table)
41
+ <SlackMessageCard
42
+ item={slackMessageItem}
43
+ variant="row"
44
+ />
45
+
46
+ // Skeleton while loading
47
+ <SlackMessageCardSkeleton variant="compact" />
48
+ ```
@@ -0,0 +1,47 @@
1
+ <!-- source-hash: 3003c61a214e3bd7c976af0a59119cb4 -->
2
+ Renders a Lucide icon corresponding to a ClickUp task type, resolved from `custom_item_id` via the `CUSTOM_ITEM_ID` map.
3
+
4
+ ## Key Components
5
+
6
+ **`iconFor(customItemId)`** — Internal function that maps a `custom_item_id` integer to a Lucide icon component. Falls back to `CheckSquare` for unknown or `null`/`undefined` values.
7
+
8
+ **`TaskTypeIcon`** — Client component that renders the resolved icon with configurable sizing via `className`.
9
+
10
+ | Prop | Type | Default | Description |
11
+ |------|------|---------|-------------|
12
+ | `customItemId` | `number \| null \| undefined` | — | ClickUp `custom_item_id` to resolve |
13
+ | `className` | `string` | `'h-5 w-5'` | Tailwind classes applied to the icon |
14
+
15
+ **Type → Icon mapping:**
16
+
17
+ | Task Type | Icon |
18
+ |-----------|------|
19
+ | `BUG` | `Bug` |
20
+ | `REQUEST` | `Inbox` |
21
+ | `FEATURE` | `Sparkles` |
22
+ | `STORY` | `BookOpen` |
23
+ | `EPIC` | `Trophy` |
24
+ | `COMPONENT` | `Component` |
25
+ | `INITIATIVE` | `Flag` |
26
+ | `MILESTONE` | `Goal` |
27
+ | `SUBTASK` | `ListTodo` |
28
+ | `FORM` | `FileText` |
29
+ | `RECURRING` | `Repeat` |
30
+ | `PLAN` / `STRATEGY` | `Compass` |
31
+ | `TASK` / default | `CheckSquare` |
32
+
33
+ ## Usage Example
34
+
35
+ ```typescript
36
+ import { TaskTypeIcon } from './task-type-icon'
37
+ import { CUSTOM_ITEM_ID } from '../utils/clickup-task-type-utils'
38
+
39
+ // Render a bug icon
40
+ <TaskTypeIcon customItemId={CUSTOM_ITEM_ID.BUG} />
41
+
42
+ // Custom size via className
43
+ <TaskTypeIcon customItemId={CUSTOM_ITEM_ID.EPIC} className="h-4 w-4 text-yellow-400" />
44
+
45
+ // Safely handles null/undefined — renders CheckSquare fallback
46
+ <TaskTypeIcon customItemId={task.custom_item_id} />
47
+ ```
@@ -1,31 +1,46 @@
1
- <!-- source-hash: c5ea66c3322aa31b6b73f0baba722b38 -->
2
- A centralized export module that provides access to all custom React hooks for real-time data processing and NATS messaging functionality in client-side components.
1
+ <!-- source-hash: d1cebe46eff04115f214c16b75a69467 -->
2
+ Barrel export file for the chat hooks module, re-exporting all public hooks from their individual files into a single `'use client'` entry point.
3
3
 
4
4
  ## Key Components
5
5
 
6
- **Re-exported Hooks:**
7
- - `use-chunk-catchup` - Hook for handling chunk synchronization and catch-up operations
8
- - `use-nats-dialog-subscription` - Hook for managing NATS dialog subscriptions and real-time messaging
9
- - `use-realtime-chunk-processor` - Hook for processing data chunks in real-time streams
6
+ | Export Group | Hooks |
7
+ |---|---|
8
+ | **Realtime / Streaming** | `useChunkCatchup`, `useRealtimeChunkProcessor`, `useJetstreamDialogSubscription`, `useNatsDialogSubscription` |
9
+ | **UI Utilities** | `useCollapsible`, `useCloseOnNavigation`, `useChatCardItem` |
10
+ | **Chat Core** | `useChat`, `useSSE`, `useChatIdentity`, `useChatAttachments`, `useChatAttachmentImageGallery`, `useSlashCommands` |
11
+ | **Transport Adapters** | `useSSEChatAdapter`, `useNatsChatAdapter` |
12
+ | **Unified Surface** | `useUnifiedChat` (primary), `useEmbeddedChat` (legacy SSE alias) |
13
+ | **Image Proxy** | `useProxiedImageUrl` |
10
14
 
11
15
  ## Usage Example
12
16
 
13
17
  ```typescript
14
- // Import individual hooks as needed
15
- import { useChunkCatchup, useNatsDialogSubscription, useRealtimeChunkProcessor } from './hooks'
16
-
17
- function RealtimeComponent() {
18
- const { catchup, isLoading } = useChunkCatchup()
19
- const { subscribe, unsubscribe, messages } = useNatsDialogSubscription()
20
- const { processChunk, queueSize } = useRealtimeChunkProcessor()
21
-
22
- // Use hooks for real-time data processing
23
- return (
24
- <div>
25
- {/* Component implementation */}
26
- </div>
27
- )
18
+ // Typical consumer — import directly from the module index
19
+ import {
20
+ useUnifiedChat,
21
+ useChatAttachments,
22
+ useSlashCommands,
23
+ } from '@flamingo/chat-hooks'
24
+
25
+ function ChatPanel({ modes, activeMode }) {
26
+ const chat = useUnifiedChat({ modes, activeMode })
27
+ const attachments = useChatAttachments()
28
+ const slashCommands = useSlashCommands()
29
+
30
+ // ...
31
+ }
32
+
33
+ // Advanced: direct transport access
34
+ import { useNatsChatAdapter } from '@flamingo/chat-hooks'
35
+
36
+ function CustomTransportPanel() {
37
+ const nats = useNatsChatAdapter({ /* config */ })
38
+ // ...
28
39
  }
29
40
  ```
30
41
 
31
- This barrel export pattern allows for clean imports while maintaining separation of concerns across different real-time processing capabilities in the Flamingo/OpenFrame platform.
42
+ ## Notes
43
+
44
+ - Marked `'use client'` — safe for React Server Component trees; hooks run only on the client.
45
+ - `useUnifiedChat` is the recommended entry point for new consumers; `useEmbeddedChat` is the legacy SSE alias kept for backward compatibility.
46
+ - `useProxiedImageUrl` reads proxy config from `ChatRuntime.endpoints`, keeping image-proxy resolution consistent between hub and embedder environments.
@@ -0,0 +1,51 @@
1
+ <!-- source-hash: 129697fa517b38437fd6fa76813ba652 -->
2
+ Provides a React hook that enables click-to-expand image gallery functionality for chat attachment images within a chat thread panel.
3
+
4
+ ## Key Components
5
+
6
+ ### `useChatAttachmentImageGallery()`
7
+ Primary export. Returns `{ panelRef, modal }`:
8
+ - **`panelRef`** — `RefObject<HTMLDivElement>` to attach to the chat content wrapper; installs a delegated `click` listener
9
+ - **`modal`** — JSX element (`ImageGalleryModal`) rendered when open, or `null` when closed (enabling React garbage collection of blob URLs)
10
+
11
+ ### `GalleryState` (interface)
12
+ Internal state shape: `{ isOpen: boolean, images: string[], initialIndex: number }`
13
+
14
+ ### `absolutize(prefix: string)` (internal)
15
+ Normalizes relative URL prefixes (e.g. `/api/storage/view/`) to absolute URLs for reliable comparison against browser-resolved `<img>.src` values.
16
+
17
+ ## Usage Example
18
+
19
+ ```typescript
20
+ // In a chat panel host component
21
+ export function ChatPanel() {
22
+ const { panelRef, modal } = useChatAttachmentImageGallery()
23
+
24
+ return (
25
+ <>
26
+ {/* panelRef wraps the scrollable message list */}
27
+ <div ref={panelRef} className="chat-thread-wrapper">
28
+ {/* ...message bubbles rendered here... */}
29
+ </div>
30
+
31
+ {/* modal renders outside overflow-hidden bubbles */}
32
+ {modal}
33
+ </>
34
+ )
35
+ }
36
+ ```
37
+
38
+ ## Click Delegation Flow
39
+
40
+ ```mermaid
41
+ graph TD
42
+ Click["Click Event"] --> ImgCheck{"img src starts\nwith viewUrlPrefix?"}
43
+ ImgCheck -->|No| Ignore["Ignore click"]
44
+ ImgCheck -->|Yes| BubbleWalk["Walk up to\n[data-message-role]"]
45
+ BubbleWalk --> NoBubble{"Bubble found?"}
46
+ NoBubble -->|No| SingleImg["Open modal with\nsingle image"]
47
+ NoBubble -->|Yes| Collect["Collect all matching\nimgs in bubble (DOM order)"]
48
+ Collect --> OpenModal["Open ImageGalleryModal\nwith computed initialIndex"]
49
+ ```
50
+
51
+ > **Note:** The hook filters `<img>` elements by `attachmentViewUrlPrefix` from the chat runtime context, ensuring avatar and UI images are never intercepted.
@@ -0,0 +1,48 @@
1
+ <!-- source-hash: aa7997b65102b2c65fd293fc9f3faa3d -->
2
+ Manages the upload state machine for chat file attachments, handling multi-file staging, magic-byte MIME validation, progress tracking, and per-file abort control before sending messages.
3
+
4
+ ## Key Components
5
+
6
+ ### `StagedAttachment`
7
+ Internal state shape for each file in the upload pipeline. Tracks `id`, `file`, `status` (`sniffing | uploading | ready | error`), `progress` (0–100), `storagePath`, `viewToken`, and `errorMessage`.
8
+
9
+ ### `uploadWithProgress(url, file, token, onProgress?, signal?)`
10
+ Inline XHR helper that PUTs file bytes to a Supabase signed URL. Maps raw network progress to the 10–95 range, supports `AbortSignal` cancellation, and handles timeout/error/abort events with proper cleanup.
11
+
12
+ ### `useChatAttachments()`
13
+ Primary hook exposing `UseChatAttachmentsApi`:
14
+
15
+ | Member | Description |
16
+ |---|---|
17
+ | `attachments` | Full staged array with state-machine metadata |
18
+ | `readyAttachments` | Wire-format `ChatAttachment[]` for `sendMessage` |
19
+ | `hasInflightUploads` | `true` while any upload is in-progress (disables Send) |
20
+ | `addFiles(files)` | Stages and begins uploading files; deduplicates by `(name, size, lastModified)` |
21
+ | `removeAttachment(id)` | Aborts in-flight XHR and removes the file |
22
+ | `clear()` | Aborts all controllers and resets state |
23
+
24
+ ## Usage Example
25
+
26
+ ```typescript
27
+ const {
28
+ attachments,
29
+ readyAttachments,
30
+ hasInflightUploads,
31
+ addFiles,
32
+ removeAttachment,
33
+ clear,
34
+ } = useChatAttachments()
35
+
36
+ // Stage files from an input element
37
+ const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
38
+ if (e.target.files) addFiles(e.target.files)
39
+ }
40
+
41
+ // Pass ready attachments when sending
42
+ await sendMessage(text, { pendingAttachments: readyAttachments })
43
+
44
+ // Abort a specific upload mid-flight
45
+ removeAttachment(attachmentId)
46
+ ```
47
+
48
+ > **Security note:** Files are validated via magic-byte sniffing (`file-type`) before upload, rejecting extension spoofs (e.g. `evil.exe` renamed `screenshot.png`). The sniffed MIME — not `file.type` — is sent to the server for URL minting.