@flamingo-stack/openframe-frontend-core 0.0.204 → 0.0.205

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 (509) hide show
  1. package/dist/{chunk-4CWSZPXH.cjs → chunk-24KCAECR.cjs} +9 -9
  2. package/dist/{chunk-4CWSZPXH.cjs.map → chunk-24KCAECR.cjs.map} +1 -1
  3. package/dist/chunk-27APPAJN.cjs +24 -0
  4. package/dist/chunk-27APPAJN.cjs.map +1 -0
  5. package/dist/{chunk-UC43NICZ.cjs → chunk-664KA5FI.cjs} +2 -35
  6. package/dist/chunk-664KA5FI.cjs.map +1 -0
  7. package/dist/chunk-6RZYJICV.cjs +24 -0
  8. package/dist/chunk-6RZYJICV.cjs.map +1 -0
  9. package/dist/chunk-7L4DWM7P.js +24 -0
  10. package/dist/chunk-7L4DWM7P.js.map +1 -0
  11. package/dist/chunk-BZFW3FOF.cjs +21 -0
  12. package/dist/chunk-BZFW3FOF.cjs.map +1 -0
  13. package/dist/{chunk-N57KWHDB.js → chunk-CIPO6DXK.js} +5 -5
  14. package/dist/chunk-EL5YVPD5.js +21 -0
  15. package/dist/chunk-EL5YVPD5.js.map +1 -0
  16. package/dist/{chunk-ARQ4XP64.cjs → chunk-FDCFI7YT.cjs} +40080 -31492
  17. package/dist/chunk-FDCFI7YT.cjs.map +1 -0
  18. package/dist/chunk-G7UE6RKV.cjs +121 -0
  19. package/dist/chunk-G7UE6RKV.cjs.map +1 -0
  20. package/dist/{chunk-25LVV26X.cjs → chunk-JUZGUQMX.cjs} +178 -50
  21. package/dist/chunk-JUZGUQMX.cjs.map +1 -0
  22. package/dist/{chunk-SZPJ5R5B.js → chunk-KSOOKNBG.js} +1 -34
  23. package/dist/chunk-KSOOKNBG.js.map +1 -0
  24. package/dist/{chunk-RMB5DVED.cjs → chunk-KUZGEA7U.cjs} +83 -66
  25. package/dist/chunk-KUZGEA7U.cjs.map +1 -0
  26. package/dist/chunk-LXC6P2EO.js +63 -0
  27. package/dist/chunk-LXC6P2EO.js.map +1 -0
  28. package/dist/chunk-MJNXIEV2.js +24 -0
  29. package/dist/chunk-MJNXIEV2.js.map +1 -0
  30. package/dist/{chunk-CPXLQ57U.js → chunk-MVGGXOFA.js} +37 -20
  31. package/dist/chunk-MVGGXOFA.js.map +1 -0
  32. package/dist/{chunk-LY34ORX6.js → chunk-O55ZUAX7.js} +39920 -31332
  33. package/dist/chunk-O55ZUAX7.js.map +1 -0
  34. package/dist/chunk-OHPI2HRK.js +47 -0
  35. package/dist/chunk-OHPI2HRK.js.map +1 -0
  36. package/dist/chunk-PLJLE4A4.js +121 -0
  37. package/dist/chunk-PLJLE4A4.js.map +1 -0
  38. package/dist/{chunk-XGL5FKIK.js → chunk-SCN5WFIZ.js} +148 -20
  39. package/dist/chunk-SCN5WFIZ.js.map +1 -0
  40. package/dist/chunk-WBR7H6E3.cjs +47 -0
  41. package/dist/chunk-WBR7H6E3.cjs.map +1 -0
  42. package/dist/chunk-XL4V2PYG.cjs +63 -0
  43. package/dist/chunk-XL4V2PYG.cjs.map +1 -0
  44. package/dist/components/announcement-bar.d.ts.map +1 -1
  45. package/dist/components/chat/chat-attachment-bar.d.ts +66 -0
  46. package/dist/components/chat/chat-attachment-bar.d.ts.map +1 -0
  47. package/dist/components/chat/chat-container.d.ts +21 -1
  48. package/dist/components/chat/chat-container.d.ts.map +1 -1
  49. package/dist/components/chat/chat-input.d.ts.map +1 -1
  50. package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
  51. package/dist/components/chat/chat-message-list.d.ts.map +1 -1
  52. package/dist/components/chat/chat-panel-context.d.ts +9 -0
  53. package/dist/components/chat/chat-panel-context.d.ts.map +1 -0
  54. package/dist/components/chat/chat-ticket-list.d.ts +1 -1
  55. package/dist/components/chat/chat-ticket-list.d.ts.map +1 -1
  56. package/dist/components/chat/embeddable-chat.d.ts +42 -0
  57. package/dist/components/chat/embeddable-chat.d.ts.map +1 -0
  58. package/dist/components/chat/entity-cards/admin-content-card.d.ts +34 -0
  59. package/dist/components/chat/entity-cards/admin-content-card.d.ts.map +1 -0
  60. package/dist/components/chat/entity-cards/block-card.d.ts.map +1 -0
  61. package/dist/components/chat/entity-cards/blog-card.d.ts +30 -0
  62. package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -0
  63. package/dist/components/chat/entity-cards/blog-image-placeholder.d.ts +26 -0
  64. package/dist/components/chat/entity-cards/blog-image-placeholder.d.ts.map +1 -0
  65. package/dist/components/chat/entity-cards/campaign-card-admin.d.ts +33 -0
  66. package/dist/components/chat/entity-cards/campaign-card-admin.d.ts.map +1 -0
  67. package/dist/components/chat/entity-cards/case-study-card.d.ts +20 -0
  68. package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -0
  69. package/dist/components/chat/entity-cards/chat-ticket-item.d.ts.map +1 -0
  70. package/dist/components/chat/{chat-video-entity-card.d.ts → entity-cards/chat-video-entity-card.d.ts} +1 -1
  71. package/dist/components/chat/entity-cards/chat-video-entity-card.d.ts.map +1 -0
  72. package/dist/components/chat/entity-cards/customer-interview-card.d.ts +19 -0
  73. package/dist/components/chat/entity-cards/customer-interview-card.d.ts.map +1 -0
  74. package/dist/components/chat/entity-cards/data-room-doc-card.d.ts +47 -0
  75. package/dist/components/chat/entity-cards/data-room-doc-card.d.ts.map +1 -0
  76. package/dist/components/chat/entity-cards/dispatch.d.ts +119 -0
  77. package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -0
  78. package/dist/components/chat/entity-cards/entity-author-card.d.ts +87 -0
  79. package/dist/components/chat/entity-cards/entity-author-card.d.ts.map +1 -0
  80. package/dist/components/chat/entity-cards/generic-entity-card.d.ts +42 -0
  81. package/dist/components/chat/entity-cards/generic-entity-card.d.ts.map +1 -0
  82. package/dist/components/chat/entity-cards/github-activity-card.d.ts +37 -0
  83. package/dist/components/chat/entity-cards/github-activity-card.d.ts.map +1 -0
  84. package/dist/components/chat/entity-cards/hubspot-ticket-card.d.ts +28 -0
  85. package/dist/components/chat/entity-cards/hubspot-ticket-card.d.ts.map +1 -0
  86. package/dist/components/chat/entity-cards/index.d.ts +32 -0
  87. package/dist/components/chat/entity-cards/index.d.ts.map +1 -0
  88. package/dist/components/chat/entity-cards/investor-update-card.d.ts +19 -0
  89. package/dist/components/chat/entity-cards/investor-update-card.d.ts.map +1 -0
  90. package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts +20 -0
  91. package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts.map +1 -0
  92. package/dist/components/chat/entity-cards/product-release-card-defaults.d.ts +21 -0
  93. package/dist/components/chat/entity-cards/product-release-card-defaults.d.ts.map +1 -0
  94. package/dist/components/chat/entity-cards/product-release-card.d.ts +12 -0
  95. package/dist/components/chat/entity-cards/product-release-card.d.ts.map +1 -0
  96. package/dist/components/chat/entity-cards/program-card-defaults.d.ts +32 -0
  97. package/dist/components/chat/entity-cards/program-card-defaults.d.ts.map +1 -0
  98. package/dist/components/chat/entity-cards/program-card.d.ts +37 -0
  99. package/dist/components/chat/entity-cards/program-card.d.ts.map +1 -0
  100. package/dist/components/chat/entity-cards/roadmap-card.d.ts +28 -0
  101. package/dist/components/chat/entity-cards/roadmap-card.d.ts.map +1 -0
  102. package/dist/components/chat/entity-cards/roadmap-vote-button.d.ts +12 -0
  103. package/dist/components/chat/entity-cards/roadmap-vote-button.d.ts.map +1 -0
  104. package/dist/components/chat/entity-cards/slack-message-card.d.ts +28 -0
  105. package/dist/components/chat/entity-cards/slack-message-card.d.ts.map +1 -0
  106. package/dist/components/chat/entity-cards/task-type-icon.d.ts +6 -0
  107. package/dist/components/chat/entity-cards/task-type-icon.d.ts.map +1 -0
  108. package/dist/components/chat/hooks/index.d.ts +10 -0
  109. package/dist/components/chat/hooks/index.d.ts.map +1 -1
  110. package/dist/components/chat/hooks/use-chat-attachment-image-gallery.d.ts +5 -0
  111. package/dist/components/chat/hooks/use-chat-attachment-image-gallery.d.ts.map +1 -0
  112. package/dist/components/chat/hooks/use-chat-attachments.d.ts +33 -0
  113. package/dist/components/chat/hooks/use-chat-attachments.d.ts.map +1 -0
  114. package/dist/components/chat/hooks/use-chat-card-item.d.ts +7 -0
  115. package/dist/components/chat/hooks/use-chat-card-item.d.ts.map +1 -0
  116. package/dist/components/chat/hooks/use-chat-identity.d.ts +44 -0
  117. package/dist/components/chat/hooks/use-chat-identity.d.ts.map +1 -0
  118. package/dist/components/chat/hooks/use-chat.d.ts +30 -0
  119. package/dist/components/chat/hooks/use-chat.d.ts.map +1 -0
  120. package/dist/components/chat/hooks/use-close-on-navigation.d.ts +2 -0
  121. package/dist/components/chat/hooks/use-close-on-navigation.d.ts.map +1 -0
  122. package/dist/components/chat/hooks/use-embedded-chat.d.ts +174 -0
  123. package/dist/components/chat/hooks/use-embedded-chat.d.ts.map +1 -0
  124. package/dist/components/chat/hooks/use-proxied-image-url.d.ts +18 -0
  125. package/dist/components/chat/hooks/use-proxied-image-url.d.ts.map +1 -0
  126. package/dist/components/chat/hooks/use-slash-commands.d.ts +32 -0
  127. package/dist/components/chat/hooks/use-slash-commands.d.ts.map +1 -0
  128. package/dist/components/chat/hooks/use-sse.d.ts +57 -0
  129. package/dist/components/chat/hooks/use-sse.d.ts.map +1 -0
  130. package/dist/components/chat/index.cjs +393 -0
  131. package/dist/components/chat/index.cjs.map +1 -0
  132. package/dist/components/chat/index.d.ts +5 -3
  133. package/dist/components/chat/index.d.ts.map +1 -1
  134. package/dist/components/chat/index.js +393 -0
  135. package/dist/components/chat/index.js.map +1 -0
  136. package/dist/components/chat/nav-link-anchor-via-runtime.d.ts +33 -0
  137. package/dist/components/chat/nav-link-anchor-via-runtime.d.ts.map +1 -0
  138. package/dist/components/chat/source-action-button.d.ts +39 -0
  139. package/dist/components/chat/source-action-button.d.ts.map +1 -0
  140. package/dist/components/chat/types/chat.types.d.ts +36 -0
  141. package/dist/components/chat/types/chat.types.d.ts.map +1 -1
  142. package/dist/components/chat/types/component.types.d.ts +56 -11
  143. package/dist/components/chat/types/component.types.d.ts.map +1 -1
  144. package/dist/components/chat/types/entities/blog.d.ts +14 -0
  145. package/dist/components/chat/types/entities/blog.d.ts.map +1 -0
  146. package/dist/components/chat/types/entities/case-study.d.ts +10 -0
  147. package/dist/components/chat/types/entities/case-study.d.ts.map +1 -0
  148. package/dist/components/chat/types/entities/content-ref.d.ts +23 -0
  149. package/dist/components/chat/types/entities/content-ref.d.ts.map +1 -0
  150. package/dist/components/chat/types/entities/customer-interview.d.ts +10 -0
  151. package/dist/components/chat/types/entities/customer-interview.d.ts.map +1 -0
  152. package/dist/components/chat/types/entities/data-room-doc.d.ts +37 -0
  153. package/dist/components/chat/types/entities/data-room-doc.d.ts.map +1 -0
  154. package/dist/components/chat/types/entities/github-activity.d.ts +29 -0
  155. package/dist/components/chat/types/entities/github-activity.d.ts.map +1 -0
  156. package/dist/components/chat/types/entities/hubspot-ticket.d.ts +39 -0
  157. package/dist/components/chat/types/entities/hubspot-ticket.d.ts.map +1 -0
  158. package/dist/components/chat/types/entities/index.d.ts +28 -0
  159. package/dist/components/chat/types/entities/index.d.ts.map +1 -0
  160. package/dist/components/chat/types/entities/investor-update.d.ts +83 -0
  161. package/dist/components/chat/types/entities/investor-update.d.ts.map +1 -0
  162. package/dist/components/chat/types/entities/onboarding-guide.d.ts +79 -0
  163. package/dist/components/chat/types/entities/onboarding-guide.d.ts.map +1 -0
  164. package/dist/components/chat/types/entities/program-types.d.ts +303 -0
  165. package/dist/components/chat/types/entities/program-types.d.ts.map +1 -0
  166. package/dist/components/chat/types/entities/roadmap-item.d.ts +41 -0
  167. package/dist/components/chat/types/entities/roadmap-item.d.ts.map +1 -0
  168. package/dist/components/chat/types/entities/slack-message.d.ts +28 -0
  169. package/dist/components/chat/types/entities/slack-message.d.ts.map +1 -0
  170. package/dist/components/chat/types/index.d.ts +1 -0
  171. package/dist/components/chat/types/index.d.ts.map +1 -1
  172. package/dist/components/chat/utils/agent-status-message.d.ts +18 -0
  173. package/dist/components/chat/utils/agent-status-message.d.ts.map +1 -0
  174. package/dist/components/chat/utils/auto-continuation-directive.d.ts +38 -0
  175. package/dist/components/chat/utils/auto-continuation-directive.d.ts.map +1 -0
  176. package/dist/components/chat/utils/chat-attachment-markdown.d.ts +114 -0
  177. package/dist/components/chat/utils/chat-attachment-markdown.d.ts.map +1 -0
  178. package/dist/components/chat/utils/chat-authed-fetch.d.ts +13 -0
  179. package/dist/components/chat/utils/chat-authed-fetch.d.ts.map +1 -0
  180. package/dist/components/chat/utils/chat-nav-resolution.d.ts +72 -0
  181. package/dist/components/chat/utils/chat-nav-resolution.d.ts.map +1 -0
  182. package/dist/components/chat/utils/chat-proxy-auth-storage.d.ts +43 -0
  183. package/dist/components/chat/utils/chat-proxy-auth-storage.d.ts.map +1 -0
  184. package/dist/components/chat/utils/chip-action-class.d.ts +16 -0
  185. package/dist/components/chat/utils/chip-action-class.d.ts.map +1 -0
  186. package/dist/components/chat/utils/chip-styles.d.ts +32 -0
  187. package/dist/components/chat/utils/chip-styles.d.ts.map +1 -0
  188. package/dist/components/chat/utils/clickup-task-type-utils.d.ts +38 -0
  189. package/dist/components/chat/utils/clickup-task-type-utils.d.ts.map +1 -0
  190. package/dist/components/chat/utils/compact-card-classes.d.ts +50 -0
  191. package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -0
  192. package/dist/components/chat/utils/decide-new-tab.d.ts +39 -0
  193. package/dist/components/chat/utils/decide-new-tab.d.ts.map +1 -0
  194. package/dist/components/chat/utils/external-app-urls.d.ts +14 -0
  195. package/dist/components/chat/utils/external-app-urls.d.ts.map +1 -0
  196. package/dist/components/chat/utils/flatten-assistant-content.d.ts +25 -0
  197. package/dist/components/chat/utils/flatten-assistant-content.d.ts.map +1 -0
  198. package/dist/components/chat/utils/icon-registry.d.ts +67 -0
  199. package/dist/components/chat/utils/icon-registry.d.ts.map +1 -0
  200. package/dist/components/chat/utils/index.d.ts +21 -0
  201. package/dist/components/chat/utils/index.d.ts.map +1 -1
  202. package/dist/components/chat/utils/is-cross-origin-url.d.ts +22 -0
  203. package/dist/components/chat/utils/is-cross-origin-url.d.ts.map +1 -0
  204. package/dist/components/chat/utils/nav-anchor-props.d.ts +54 -0
  205. package/dist/components/chat/utils/nav-anchor-props.d.ts.map +1 -0
  206. package/dist/components/chat/utils/nav-click-handler.d.ts +51 -0
  207. package/dist/components/chat/utils/nav-click-handler.d.ts.map +1 -0
  208. package/dist/components/chat/utils/scroll-anchor.d.ts +30 -0
  209. package/dist/components/chat/utils/scroll-anchor.d.ts.map +1 -0
  210. package/dist/components/chat/utils/slash-dispatch-utils.d.ts +109 -0
  211. package/dist/components/chat/utils/slash-dispatch-utils.d.ts.map +1 -0
  212. package/dist/components/chat/utils/source-icons.d.ts +8 -0
  213. package/dist/components/chat/utils/source-icons.d.ts.map +1 -0
  214. package/dist/components/chat/utils/source-row-cta.d.ts +111 -0
  215. package/dist/components/chat/utils/source-row-cta.d.ts.map +1 -0
  216. package/dist/components/features/figma-prototype-viewer.d.ts.map +1 -1
  217. package/dist/components/features/index.cjs +12 -6
  218. package/dist/components/features/index.cjs.map +1 -1
  219. package/dist/components/features/index.js +11 -5
  220. package/dist/components/features/video.d.ts.map +1 -1
  221. package/dist/components/icons/index.cjs +3 -3
  222. package/dist/components/icons/index.js +2 -2
  223. package/dist/components/index.cjs +274 -8
  224. package/dist/components/index.cjs.map +1 -1
  225. package/dist/components/index.js +273 -7
  226. package/dist/components/interactive-wrapper.d.ts +3 -3
  227. package/dist/components/navigation/index.cjs +12 -6
  228. package/dist/components/navigation/index.cjs.map +1 -1
  229. package/dist/components/navigation/index.js +11 -5
  230. package/dist/components/resizable.d.ts +1 -1
  231. package/dist/components/shared/product-release/product-release-card-skeleton.d.ts +1 -1
  232. package/dist/components/shared/product-release/product-release-card-skeleton.d.ts.map +1 -1
  233. package/dist/components/shared/product-release/product-release-card.d.ts +19 -12
  234. package/dist/components/shared/product-release/product-release-card.d.ts.map +1 -1
  235. package/dist/components/shared/product-release/release-detail-page.d.ts +2 -4
  236. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  237. package/dist/components/ui/button/button.d.ts +13 -0
  238. package/dist/components/ui/button/button.d.ts.map +1 -1
  239. package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
  240. package/dist/components/ui/entity-image.d.ts.map +1 -1
  241. package/dist/components/ui/file-manager/index.cjs +71 -70
  242. package/dist/components/ui/file-manager/index.cjs.map +1 -1
  243. package/dist/components/ui/file-manager/index.js +6 -5
  244. package/dist/components/ui/file-manager/index.js.map +1 -1
  245. package/dist/components/ui/hover-dropdown.d.ts +66 -0
  246. package/dist/components/ui/hover-dropdown.d.ts.map +1 -0
  247. package/dist/components/ui/index.cjs +276 -6
  248. package/dist/components/ui/index.cjs.map +1 -1
  249. package/dist/components/ui/index.d.ts +1 -0
  250. package/dist/components/ui/index.d.ts.map +1 -1
  251. package/dist/components/ui/index.js +278 -8
  252. package/dist/components/ui/simple-markdown-renderer.d.ts.map +1 -1
  253. package/dist/components/ui/square-avatar.d.ts.map +1 -1
  254. package/dist/contexts/chat-runtime-context.d.ts +109 -0
  255. package/dist/contexts/chat-runtime-context.d.ts.map +1 -0
  256. package/dist/contexts/endpoints-runtime-context.d.ts +28 -0
  257. package/dist/contexts/endpoints-runtime-context.d.ts.map +1 -0
  258. package/dist/contexts/index.cjs +30 -0
  259. package/dist/contexts/index.cjs.map +1 -0
  260. package/dist/contexts/index.d.ts +26 -0
  261. package/dist/contexts/index.d.ts.map +1 -0
  262. package/dist/contexts/index.js +30 -0
  263. package/dist/contexts/index.js.map +1 -0
  264. package/dist/contexts/use-outer-or-default.d.ts +29 -0
  265. package/dist/contexts/use-outer-or-default.d.ts.map +1 -0
  266. package/dist/embed-shims/index.cjs +51 -0
  267. package/dist/embed-shims/index.cjs.map +1 -0
  268. package/dist/embed-shims/index.d.ts +31 -0
  269. package/dist/embed-shims/index.d.ts.map +1 -0
  270. package/dist/embed-shims/index.js +51 -0
  271. package/dist/embed-shims/index.js.map +1 -0
  272. package/dist/embed-shims/next-dynamic.cjs +12 -0
  273. package/dist/embed-shims/next-dynamic.cjs.map +1 -0
  274. package/dist/embed-shims/next-dynamic.d.ts +47 -0
  275. package/dist/embed-shims/next-dynamic.d.ts.map +1 -0
  276. package/dist/embed-shims/next-dynamic.js +12 -0
  277. package/dist/embed-shims/next-dynamic.js.map +1 -0
  278. package/dist/embed-shims/next-image.cjs +12 -0
  279. package/dist/embed-shims/next-image.cjs.map +1 -0
  280. package/dist/embed-shims/next-image.d.ts +28 -0
  281. package/dist/embed-shims/next-image.d.ts.map +1 -0
  282. package/dist/embed-shims/next-image.js +12 -0
  283. package/dist/embed-shims/next-image.js.map +1 -0
  284. package/dist/embed-shims/next-link.cjs +14 -0
  285. package/dist/embed-shims/next-link.cjs.map +1 -0
  286. package/dist/embed-shims/next-link.d.ts +22 -0
  287. package/dist/embed-shims/next-link.d.ts.map +1 -0
  288. package/dist/embed-shims/next-link.js +14 -0
  289. package/dist/embed-shims/next-link.js.map +1 -0
  290. package/dist/embed-shims/next-navigation.cjs +30 -0
  291. package/dist/embed-shims/next-navigation.cjs.map +1 -0
  292. package/dist/embed-shims/next-navigation.d.ts +46 -0
  293. package/dist/embed-shims/next-navigation.d.ts.map +1 -0
  294. package/dist/embed-shims/next-navigation.js +30 -0
  295. package/dist/embed-shims/next-navigation.js.map +1 -0
  296. package/dist/hooks/index.cjs +10 -4
  297. package/dist/hooks/index.cjs.map +1 -1
  298. package/dist/hooks/index.d.ts +2 -0
  299. package/dist/hooks/index.d.ts.map +1 -1
  300. package/dist/hooks/index.js +9 -3
  301. package/dist/hooks/use-access-code-integration.d.ts +48 -0
  302. package/dist/hooks/use-access-code-integration.d.ts.map +1 -0
  303. package/dist/hooks/use-contact-submission.d.ts.map +1 -1
  304. package/dist/hooks/use-og-placeholder.d.ts +31 -0
  305. package/dist/hooks/use-og-placeholder.d.ts.map +1 -0
  306. package/dist/hooks/use-toast.d.ts +1 -1
  307. package/dist/index.cjs +367 -7
  308. package/dist/index.cjs.map +1 -1
  309. package/dist/index.js +378 -18
  310. package/dist/types/index.cjs.map +1 -1
  311. package/dist/types/index.js.map +1 -1
  312. package/dist/utils/access-code-client.d.ts +21 -37
  313. package/dist/utils/access-code-client.d.ts.map +1 -1
  314. package/dist/utils/cn.d.ts +0 -27
  315. package/dist/utils/cn.d.ts.map +1 -1
  316. package/dist/utils/color-analysis.d.ts +33 -0
  317. package/dist/utils/color-analysis.d.ts.map +1 -0
  318. package/dist/utils/date-formatters.d.ts +16 -5
  319. package/dist/utils/date-formatters.d.ts.map +1 -1
  320. package/dist/utils/fetch-priority.d.ts +3 -0
  321. package/dist/utils/fetch-priority.d.ts.map +1 -0
  322. package/dist/utils/format.d.ts +192 -1
  323. package/dist/utils/format.d.ts.map +1 -1
  324. package/dist/utils/image-proxy.d.ts +67 -2
  325. package/dist/utils/image-proxy.d.ts.map +1 -1
  326. package/dist/utils/index.cjs +1274 -155
  327. package/dist/utils/index.cjs.map +1 -1
  328. package/dist/utils/index.d.ts +19 -3
  329. package/dist/utils/index.d.ts.map +1 -1
  330. package/dist/utils/index.js +1200 -157
  331. package/dist/utils/index.js.map +1 -1
  332. package/dist/utils/local-storage-adapter.d.ts +46 -0
  333. package/dist/utils/local-storage-adapter.d.ts.map +1 -0
  334. package/dist/utils/source-icons.d.ts +78 -0
  335. package/dist/utils/source-icons.d.ts.map +1 -0
  336. package/package.json +29 -2
  337. package/src/components/announcement-bar.tsx +26 -4
  338. package/src/components/categories-cart.tsx +1 -1
  339. package/src/components/chat/chat-attachment-bar.tsx +323 -0
  340. package/src/components/chat/chat-container.tsx +39 -5
  341. package/src/components/chat/chat-input.tsx +7 -1
  342. package/src/components/chat/chat-message-enhanced.tsx +32 -22
  343. package/src/components/chat/chat-message-list.tsx +53 -4
  344. package/src/components/chat/chat-panel-context.tsx +37 -0
  345. package/src/components/chat/chat-ticket-list.tsx +1 -1
  346. package/src/components/chat/embeddable-chat.tsx +1106 -0
  347. package/src/components/chat/entity-cards/admin-content-card.tsx +155 -0
  348. package/src/components/chat/entity-cards/blog-card.tsx +259 -0
  349. package/src/components/chat/entity-cards/blog-image-placeholder.tsx +52 -0
  350. package/src/components/chat/entity-cards/campaign-card-admin.tsx +113 -0
  351. package/src/components/chat/entity-cards/case-study-card.tsx +192 -0
  352. package/src/components/chat/{chat-ticket-item.tsx → entity-cards/chat-ticket-item.tsx} +2 -2
  353. package/src/components/chat/{chat-video-entity-card.tsx → entity-cards/chat-video-entity-card.tsx} +2 -2
  354. package/src/components/chat/entity-cards/customer-interview-card.tsx +211 -0
  355. package/src/components/chat/entity-cards/data-room-doc-card.tsx +120 -0
  356. package/src/components/chat/entity-cards/dispatch.tsx +1093 -0
  357. package/src/components/chat/entity-cards/entity-author-card.tsx +193 -0
  358. package/src/components/chat/entity-cards/generic-entity-card.tsx +144 -0
  359. package/src/components/chat/entity-cards/github-activity-card.tsx +305 -0
  360. package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +205 -0
  361. package/src/components/chat/entity-cards/index.ts +125 -0
  362. package/src/components/chat/entity-cards/investor-update-card.tsx +150 -0
  363. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +326 -0
  364. package/src/components/chat/entity-cards/product-release-card-defaults.ts +57 -0
  365. package/src/components/chat/entity-cards/product-release-card.tsx +19 -0
  366. package/src/components/chat/entity-cards/program-card-defaults.ts +62 -0
  367. package/src/components/chat/entity-cards/program-card.tsx +451 -0
  368. package/src/components/chat/entity-cards/roadmap-card.tsx +356 -0
  369. package/src/components/chat/entity-cards/roadmap-vote-button.tsx +54 -0
  370. package/src/components/chat/entity-cards/slack-message-card.tsx +182 -0
  371. package/src/components/chat/entity-cards/task-type-icon.tsx +60 -0
  372. package/src/components/chat/hooks/index.ts +22 -0
  373. package/src/components/chat/hooks/use-chat-attachment-image-gallery.tsx +114 -0
  374. package/src/components/chat/hooks/use-chat-attachments.ts +429 -0
  375. package/src/components/chat/hooks/use-chat-card-item.ts +102 -0
  376. package/src/components/chat/hooks/use-chat-identity.ts +139 -0
  377. package/src/components/chat/hooks/use-chat.ts +501 -0
  378. package/src/components/chat/hooks/use-close-on-navigation.ts +87 -0
  379. package/src/components/chat/hooks/use-embedded-chat.ts +1023 -0
  380. package/src/components/chat/hooks/use-proxied-image-url.ts +31 -0
  381. package/src/components/chat/hooks/use-slash-commands.ts +106 -0
  382. package/src/components/chat/hooks/use-sse.ts +143 -0
  383. package/src/components/chat/index.ts +30 -4
  384. package/src/components/chat/nav-link-anchor-via-runtime.tsx +72 -0
  385. package/src/components/chat/source-action-button.tsx +120 -0
  386. package/src/components/chat/types/chat.types.ts +61 -0
  387. package/src/components/chat/types/component.types.ts +57 -11
  388. package/src/components/chat/types/entities/blog.ts +27 -0
  389. package/src/components/chat/types/entities/case-study.ts +14 -0
  390. package/src/components/chat/types/entities/content-ref.ts +23 -0
  391. package/src/components/chat/types/entities/customer-interview.ts +15 -0
  392. package/src/components/chat/types/entities/data-room-doc.ts +37 -0
  393. package/src/components/chat/types/entities/github-activity.ts +36 -0
  394. package/src/components/chat/types/entities/hubspot-ticket.ts +39 -0
  395. package/src/components/chat/types/entities/index.ts +28 -0
  396. package/src/components/chat/types/entities/investor-update.ts +100 -0
  397. package/src/components/chat/types/entities/onboarding-guide.ts +101 -0
  398. package/src/components/chat/types/entities/program-types.ts +433 -0
  399. package/src/components/chat/types/entities/roadmap-item.ts +42 -0
  400. package/src/components/chat/types/entities/slack-message.ts +28 -0
  401. package/src/components/chat/types/index.ts +1 -0
  402. package/src/components/chat/utils/agent-status-message.ts +52 -0
  403. package/src/components/chat/utils/auto-continuation-directive.ts +70 -0
  404. package/src/components/chat/utils/chat-attachment-markdown.ts +190 -0
  405. package/src/components/chat/utils/chat-authed-fetch.ts +73 -0
  406. package/src/components/chat/utils/chat-nav-resolution.ts +151 -0
  407. package/src/components/chat/utils/chat-proxy-auth-storage.ts +148 -0
  408. package/src/components/chat/utils/chip-action-class.ts +19 -0
  409. package/src/components/chat/utils/chip-styles.ts +51 -0
  410. package/src/components/chat/utils/clickup-task-type-utils.ts +59 -0
  411. package/src/components/chat/utils/compact-card-classes.ts +97 -0
  412. package/src/components/chat/utils/decide-new-tab.ts +57 -0
  413. package/src/components/chat/utils/external-app-urls.ts +19 -0
  414. package/src/components/chat/utils/flatten-assistant-content.ts +35 -0
  415. package/src/components/chat/utils/icon-registry.ts +297 -0
  416. package/src/components/chat/utils/index.ts +133 -0
  417. package/src/components/chat/utils/is-cross-origin-url.ts +28 -0
  418. package/src/components/chat/utils/nav-anchor-props.ts +78 -0
  419. package/src/components/chat/utils/nav-click-handler.ts +81 -0
  420. package/src/components/chat/utils/scroll-anchor.ts +35 -0
  421. package/src/components/chat/utils/slash-dispatch-utils.ts +183 -0
  422. package/src/components/chat/utils/source-icons.ts +14 -0
  423. package/src/components/chat/utils/source-row-cta.ts +215 -0
  424. package/src/components/empty-state.tsx +1 -1
  425. package/src/components/features/board/ticket-card.tsx +1 -1
  426. package/src/components/features/figma-prototype-viewer.tsx +2 -1
  427. package/src/components/features/media-gallery-manager.tsx +1 -1
  428. package/src/components/features/parallax-image-showcase.tsx +1 -1
  429. package/src/components/features/release-media-manager.tsx +1 -1
  430. package/src/components/features/seo-editor-preview.tsx +1 -1
  431. package/src/components/features/video.tsx +54 -3
  432. package/src/components/footer-waitlist-button.tsx +1 -1
  433. package/src/components/navigation/header.tsx +1 -1
  434. package/src/components/shared/onboarding/onboarding-step-card.tsx +1 -1
  435. package/src/components/shared/product-release/product-release-card-skeleton.tsx +8 -44
  436. package/src/components/shared/product-release/product-release-card.tsx +31 -116
  437. package/src/components/shared/product-release/release-detail-page.tsx +12 -16
  438. package/src/components/ui/actions-menu.tsx +1 -1
  439. package/src/components/ui/button/button.tsx +41 -11
  440. package/src/components/ui/button/split-button.tsx +1 -1
  441. package/src/components/ui/dashboard-info-card.tsx +2 -3
  442. package/src/components/ui/data-table/data-table-row.tsx +1 -1
  443. package/src/components/ui/entity-image.tsx +2 -8
  444. package/src/components/ui/hover-dropdown.tsx +258 -0
  445. package/src/components/ui/image-gallery-modal.tsx +1 -1
  446. package/src/components/ui/index.ts +1 -0
  447. package/src/components/ui/markdown-editor.tsx +1 -1
  448. package/src/components/ui/more-actions-menu.tsx +1 -1
  449. package/src/components/ui/organization-card.tsx +1 -1
  450. package/src/components/ui/simple-markdown-renderer.tsx +53 -5
  451. package/src/components/ui/square-avatar.tsx +3 -12
  452. package/src/components/ui/tab-navigation.tsx +1 -1
  453. package/src/components/ui/table/table-row.tsx +1 -1
  454. package/src/components/unified-filter-logic.tsx +1 -1
  455. package/src/components/unified-pagination.tsx +1 -1
  456. package/src/components/user-summary-stub.tsx +1 -1
  457. package/src/components/vendor-display-button.tsx +1 -1
  458. package/src/components/vendor-icon.tsx +1 -1
  459. package/src/contexts/chat-runtime-context.tsx +163 -0
  460. package/src/contexts/endpoints-runtime-context.tsx +68 -0
  461. package/src/contexts/index.ts +38 -0
  462. package/src/contexts/use-outer-or-default.ts +42 -0
  463. package/src/embed-shims/index.ts +42 -0
  464. package/src/embed-shims/next-dynamic.tsx +70 -0
  465. package/src/embed-shims/next-image.tsx +114 -0
  466. package/src/embed-shims/next-link.tsx +91 -0
  467. package/src/embed-shims/next-navigation.tsx +201 -0
  468. package/src/hooks/index.ts +9 -0
  469. package/src/hooks/state/use-api-params.ts +1 -1
  470. package/src/hooks/state/use-query-params.ts +1 -1
  471. package/src/hooks/use-access-code-integration.ts +107 -0
  472. package/src/hooks/use-contact-submission.ts +7 -3
  473. package/src/hooks/use-og-placeholder.ts +45 -0
  474. package/src/stories/OnboardingStepCard.stories.tsx +140 -0
  475. package/src/styles/chat-animations.css +65 -0
  476. package/src/styles/index.css +1 -0
  477. package/src/utils/access-code-client.ts +32 -75
  478. package/src/utils/cn.ts +0 -65
  479. package/src/utils/color-analysis.ts +205 -0
  480. package/src/utils/date-formatters.ts +54 -11
  481. package/src/utils/fetch-priority.ts +41 -0
  482. package/src/utils/format.ts +525 -1
  483. package/src/utils/image-proxy.ts +127 -7
  484. package/src/utils/index.ts +145 -5
  485. package/src/utils/local-storage-adapter.ts +105 -0
  486. package/src/utils/source-icons.ts +219 -0
  487. package/dist/chunk-25LVV26X.cjs.map +0 -1
  488. package/dist/chunk-ARQ4XP64.cjs.map +0 -1
  489. package/dist/chunk-CPXLQ57U.js.map +0 -1
  490. package/dist/chunk-LY34ORX6.js.map +0 -1
  491. package/dist/chunk-RMB5DVED.cjs.map +0 -1
  492. package/dist/chunk-SZPJ5R5B.js.map +0 -1
  493. package/dist/chunk-UC43NICZ.cjs.map +0 -1
  494. package/dist/chunk-XGL5FKIK.js.map +0 -1
  495. package/dist/components/chat/block-card.d.ts.map +0 -1
  496. package/dist/components/chat/chat-ticket-item.d.ts.map +0 -1
  497. package/dist/components/chat/chat-video-entity-card.d.ts.map +0 -1
  498. package/dist/utils/dynamic-icons.d.ts +0 -26
  499. package/dist/utils/dynamic-icons.d.ts.map +0 -1
  500. package/dist/utils/format-relative-time.d.ts +0 -21
  501. package/dist/utils/format-relative-time.d.ts.map +0 -1
  502. package/src/utils/.dynamic-icons.md +0 -30
  503. package/src/utils/.format-relative-time.md +0 -36
  504. package/src/utils/dynamic-icons.tsx +0 -120
  505. package/src/utils/format-relative-time.ts +0 -52
  506. /package/dist/{chunk-N57KWHDB.js.map → chunk-CIPO6DXK.js.map} +0 -0
  507. /package/dist/components/chat/{block-card.d.ts → entity-cards/block-card.d.ts} +0 -0
  508. /package/dist/components/chat/{chat-ticket-item.d.ts → entity-cards/chat-ticket-item.d.ts} +0 -0
  509. /package/src/components/chat/{block-card.tsx → entity-cards/block-card.tsx} +0 -0
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Single source of truth for "what does clicking THIS row do?" across
3
+ * the chat-adjacent surfaces (source chips, inline cards, search results).
4
+ *
5
+ * Lib-side refactor of the hub's `lib/utils/source-row-cta.ts`. Drops:
6
+ * - `currentPlatform()` — host injects via `ctx.currentPlatform`
7
+ * - `traceCompose()` logging — lib stays log-free; hosts can wrap
8
+ * - `tableIdForDocumentType` — host injects via `ctx.tableIdForDocumentType`
9
+ *
10
+ * The contract:
11
+ * - `icon` + `iconLabel` — for visual + a11y. Sourced from
12
+ * `SOURCE_ICON_NAMES` keyed by the row's `sourceRepo` (config id),
13
+ * resolved to a React component via `ICON_REGISTRY`.
14
+ * - `href` — destination URL. `null` means "no public viewer; Ask is
15
+ * the only action". Honors the inline card / chip / search bar's
16
+ * existing fallback chain (externalUrl → in-app path → null) and
17
+ * also runs `safeHref()` on the final value so a hostile RAG row
18
+ * can't land `javascript:` / `data:` in the DOM.
19
+ * - `askable` — whether the Ask drill-in flow can fire. Requires a
20
+ * non-empty `id` AND a `documentType`.
21
+ * - `chatRef` — pre-synthesized `ChatRef` for the Ask handler.
22
+ */
23
+
24
+ import React from 'react'
25
+ import { FileText } from 'lucide-react'
26
+ import { getSourceIconName } from './source-icons'
27
+ import { getIconComponent } from './icon-registry'
28
+ import { getBaseUrl } from '../../../utils/cn'
29
+ import { safeHref } from './compact-card-classes'
30
+ import type { ChatRef } from '../chat-ref.types'
31
+
32
+ /** Path sanitization — keep alphanumerics, slash, dash, dot, underscore;
33
+ * strip everything else. Defends against a hostile mapper returning a
34
+ * path with `..` traversal or query-string injection. */
35
+ function sanitizePath(path: string): string {
36
+ return (path || '').replace(/[^a-zA-Z0-9/_\-.]/g, '')
37
+ }
38
+
39
+ export interface SourceRowInput {
40
+ /** RagTableConfig.id (e.g. 'blog-posts', 'financial-cap-table'). Drives
41
+ * icon resolution via `SOURCE_ICON_NAMES` + `ICON_REGISTRY`. */
42
+ sourceRepo?: string | null
43
+ /** The config's `documentType` (e.g. 'blog_post', 'cap_table'). Drives
44
+ * the Ask drill-in's `ChatRef.type`. */
45
+ documentType?: string | null
46
+ /** Primary-key value of the row (config.primaryKey). Required for Ask. */
47
+ id?: string | null
48
+ /** Display title. */
49
+ title: string
50
+ /** Resolved public URL when the row HAS a viewer. `null`/undefined when
51
+ * the row has no public destination — surface decides Ask-only behavior. */
52
+ externalUrl?: string | null
53
+ /** Platform that owns `externalUrl`. */
54
+ targetPlatform?: string | null
55
+ /** In-app navigator path (e.g. `legal/fundraising/.../safe`). */
56
+ path?: string | null
57
+ }
58
+
59
+ export interface SourceRowContext {
60
+ /** Chat shell's base route — `/data-room`, `/knowledge-base`, etc. */
61
+ baseRoute?: string
62
+ /** Cross-platform target for the chip / card click. */
63
+ chipBasePlatform?: string
64
+ /**
65
+ * Host-supplied current-platform identifier. Used as the
66
+ * `targetPlatform` for path-based fallback URLs that point to the
67
+ * host's own surface. When omitted, path-based fallback rows get a
68
+ * `null` targetPlatform — consumers fall back to their legacy
69
+ * origin-check.
70
+ */
71
+ currentPlatform?: string | null
72
+ /**
73
+ * Host-supplied reverse map: documentType → tableId. Used to derive
74
+ * `sourceRepo` from `documentType` when the caller didn't supply it
75
+ * (inline cards know `ref.type` but not `sourceRepo`). When omitted,
76
+ * the resolver falls back to the documentType reverse-map miss and
77
+ * keeps the FileText icon.
78
+ */
79
+ tableIdForDocumentType?: (documentType: string) => string | null
80
+ }
81
+
82
+ export interface SourceRowCTA {
83
+ /** Source icon component. Always defined — falls back to `FileText`. */
84
+ icon: React.ComponentType<{ className?: string }>
85
+ /** Human-readable label for the icon. */
86
+ iconLabel: string
87
+ /** Resolved destination URL. `null` when the row has no openable
88
+ * target. Already passed through `safeHref()`. */
89
+ href: string | null
90
+ /** Platform that owns the destination. `null` when the row has no
91
+ * openable target OR the destination is external/unknown. */
92
+ targetPlatform: string | null
93
+ /** When true, the surface can fire the Ask drill-in flow for this row. */
94
+ askable: boolean
95
+ /** Pre-synthesized `ChatRef` for the Ask handler. `null` when not askable. */
96
+ chatRef: ChatRef | null
97
+ }
98
+
99
+ /**
100
+ * Pure icon-resolution helper — `sourceRepo` (RagTableConfig.id) →
101
+ * icon_name via `SOURCE_ICON_NAMES`, then icon_name → React component
102
+ * via `ICON_REGISTRY`.
103
+ */
104
+ function pickSourceIcon(sourceRepo: string | null, documentType: string | null | undefined) {
105
+ const iconName = sourceRepo ? getSourceIconName(sourceRepo) : undefined
106
+ const icon = iconName ? getIconComponent(iconName) : FileText
107
+ const iconLabel = documentType ?? 'Source'
108
+ return { icon, iconLabel }
109
+ }
110
+
111
+ /**
112
+ * Only certain row kinds should fall back to in-app `path` navigation
113
+ * when no `externalUrl` is set. Specifically: doc-tables (markdown,
114
+ * data-room PDFs) that the in-app doc viewer can render. Entity-table
115
+ * rows MUST come with an explicit `externalUrl` from the mapper.
116
+ */
117
+ function shouldFallbackToPathNav(row: SourceRowInput): boolean {
118
+ const t = row.documentType
119
+ return t === 'markdown' || t === 'data_room_doc'
120
+ }
121
+
122
+ /**
123
+ * Resolve the CTA contract for a row. Pure function — no DOM, no fetch,
124
+ * no logging. Call from any surface (chip, card, search result) with the
125
+ * same row shape and get the same answer back.
126
+ */
127
+ export function resolveSourceRowCTA(
128
+ row: SourceRowInput,
129
+ ctx: SourceRowContext = {},
130
+ ): SourceRowCTA {
131
+ // Derive sourceRepo from documentType when the caller didn't supply
132
+ // it. Inline cards know `ref.type` (documentType) but not `sourceRepo`;
133
+ // chips and search results have sourceRepo directly. The host supplies
134
+ // the reverse map via `ctx.tableIdForDocumentType`.
135
+ const sourceRepo = row.sourceRepo
136
+ ?? (row.documentType && ctx.tableIdForDocumentType ? ctx.tableIdForDocumentType(row.documentType) : null)
137
+ ?? null
138
+
139
+ const { icon, iconLabel } = pickSourceIcon(sourceRepo, row.documentType)
140
+
141
+ // URL resolution.
142
+ let href: string | null = null
143
+ let targetPlatform: string | null = null
144
+ if (row.externalUrl) {
145
+ href = safeHref(row.externalUrl) ?? null
146
+ targetPlatform = row.targetPlatform ?? null
147
+ } else if (ctx.baseRoute && row.path && shouldFallbackToPathNav(row)) {
148
+ const safePath = sanitizePath(row.path)
149
+ if (safePath) {
150
+ if (ctx.chipBasePlatform) {
151
+ const base = `${getBaseUrl(ctx.chipBasePlatform)}/knowledge-base/`
152
+ href = new URL(safePath, base).toString()
153
+ targetPlatform = ctx.chipBasePlatform
154
+ } else {
155
+ const synthetic = `https://_internal_.local${ctx.baseRoute.startsWith('/') ? ctx.baseRoute : '/' + ctx.baseRoute}/`
156
+ const absolute = new URL(safePath, synthetic).toString()
157
+ href = absolute.replace('https://_internal_.local', '')
158
+ targetPlatform = ctx.currentPlatform ?? null
159
+ }
160
+ // Final safeHref pass on the composed URL — defense-in-depth.
161
+ href = safeHref(href) ?? null
162
+ }
163
+ }
164
+
165
+ // Ask drill-in viability.
166
+ const idValue = (row.id ?? '').trim()
167
+ const askable = !!(idValue && row.documentType)
168
+ const chatRef: ChatRef | null = askable
169
+ ? ({
170
+ type: row.documentType!,
171
+ ...(sourceRepo ? { sourceRepo } : {}),
172
+ id: idValue,
173
+ title: row.title,
174
+ url: href,
175
+ targetPlatform,
176
+ // Carry `path` so a downstream inline card (rendered from this
177
+ // chatRef on a subsequent turn) gets the same doc-tree-swap
178
+ // routing the chip already used. Without it, the Ask drill-in
179
+ // would resolve to a same-tab full-page nav even when an in-app
180
+ // path is available.
181
+ ...(row.path ? { metadata: { path: row.path } } : {}),
182
+ } as ChatRef)
183
+ : null
184
+
185
+ return { icon, iconLabel, href, targetPlatform, askable, chatRef }
186
+ }
187
+
188
+ /**
189
+ * Convenience helper for callers that just need the source icon —
190
+ * inline cards' tracking strip + the search-bar dropdown row, today.
191
+ *
192
+ * Single source of truth: every consumer (chips, search results,
193
+ * inline cards) routes through `SOURCE_ICON_NAMES` + `ICON_REGISTRY`.
194
+ *
195
+ * Accepts a string for backward-compatibility with the single-arg call
196
+ * shape — treated as `documentType`.
197
+ */
198
+ export function resolveSourceIcon(
199
+ input: { sourceRepo?: string | null; documentType?: string | null } | string | null | undefined,
200
+ ctx: { tableIdForDocumentType?: (documentType: string) => string | null } = {},
201
+ ): {
202
+ Icon: React.ComponentType<{ className?: string }>
203
+ label: string
204
+ } {
205
+ if (!input) return { Icon: FileText, label: 'Source' }
206
+ const { sourceRepo, documentType } = typeof input === 'string'
207
+ ? { sourceRepo: null, documentType: input }
208
+ : input
209
+ if (!sourceRepo && !documentType) return { Icon: FileText, label: 'Source' }
210
+ const resolvedRepo = sourceRepo
211
+ ?? (documentType && ctx.tableIdForDocumentType ? ctx.tableIdForDocumentType(documentType) : null)
212
+ ?? null
213
+ const { icon, iconLabel } = pickSourceIcon(resolvedRepo, documentType)
214
+ return { Icon: icon, label: iconLabel }
215
+ }
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { Search, FileText, Package } from "lucide-react"
4
4
  import { Button } from "./ui/button"
5
- import { useRouter } from "next/navigation"
5
+ import { useRouter } from "../embed-shims/next-navigation"
6
6
 
7
7
  export interface EmptyStateProps {
8
8
  type: 'vendors' | 'posts' | 'search' | 'generic'
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { useSortable } from '@dnd-kit/sortable'
4
4
  import { CSS } from '@dnd-kit/utilities'
5
- import Link from 'next/link'
5
+ import Link from '../../../embed-shims/next-link'
6
6
  import * as React from 'react'
7
7
  import { LaptopIcon, Flag02Icon } from '../../icons-v2-generated'
8
8
  import { SquareAvatar } from '../../ui/square-avatar'
@@ -2,6 +2,7 @@
2
2
 
3
3
  import React, { useState, useRef, useEffect, useCallback, useMemo } from 'react'
4
4
  import { cn } from '../../utils/cn'
5
+ import { fetchPriorityProp } from '../../utils/fetch-priority'
5
6
  import { Badge } from '../ui/badge'
6
7
  import { SectionSelector, type SectionItem } from './section-selector'
7
8
 
@@ -421,7 +422,7 @@ function renderUnifiedUI(state: UnifiedState, handlers: {
421
422
  sandbox="allow-scripts allow-same-origin allow-popups allow-presentation"
422
423
  title={config.title}
423
424
  loading="eager"
424
- {...({ fetchPriority: 'high' } as any)}
425
+ {...fetchPriorityProp('high')}
425
426
  />
426
427
 
427
428
  {/* Loading Skeleton */}
@@ -11,7 +11,7 @@ import {
11
11
  GripVertical,
12
12
  Plus
13
13
  } from 'lucide-react';
14
- import Image from 'next/image';
14
+ import Image from '../../embed-shims/next-image';
15
15
 
16
16
  export interface MediaItem {
17
17
  id?: string | number; // Optional for new items
@@ -1,7 +1,7 @@
1
1
  "use client"
2
2
 
3
3
  import React, { useEffect, useState, useRef } from 'react'
4
- import Image from 'next/image'
4
+ import Image from '../../embed-shims/next-image'
5
5
  import { motion, useScroll, useTransform, useMotionValue, useSpring } from 'framer-motion'
6
6
 
7
7
  interface ParallaxImageShowcaseProps {
@@ -3,7 +3,7 @@
3
3
  import { useState, useRef } from 'react';
4
4
  import { Button, Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Textarea } from '../ui';
5
5
  import { Trash2, Plus, Image as ImageIcon, Video, Upload, Loader2, GripVertical } from 'lucide-react';
6
- import Image from 'next/image';
6
+ import Image from '../../embed-shims/next-image';
7
7
 
8
8
  export interface ReleaseMediaItem {
9
9
  media_type: 'image' | 'video' | 'screenshot' | 'demo';
@@ -5,7 +5,7 @@ import { Input, Textarea, Label, Button, Badge } from '../ui';
5
5
  import { ConfidenceBadge } from '../features';
6
6
  import { Globe, ExternalLink, Upload, X, Loader2, Sparkles } from 'lucide-react';
7
7
  import { cn } from '../../utils';
8
- import Image from 'next/image';
8
+ import Image from '../../embed-shims/next-image';
9
9
 
10
10
  export interface SEOEditorPreviewProps {
11
11
  // SEO fields - must be strings (not undefined)
@@ -33,6 +33,7 @@
33
33
  import React, { useEffect, useMemo, useRef, useState } from 'react';
34
34
  import MuxPlayer from '@mux/mux-player-react';
35
35
  import { PlayIcon } from '../icons-v2-generated/media-playback/play-icon';
36
+ import { fetchPriorityProp } from '../../utils/fetch-priority';
36
37
 
37
38
  // =============================================================================
38
39
  // Suppress Google Cast SDK loading (CSP-friendly)
@@ -64,6 +65,46 @@ if (typeof window !== 'undefined') {
64
65
  }
65
66
  }
66
67
 
68
+ // =============================================================================
69
+ // Suppress benign "Media Chrome: No style sheet found ..." warning.
70
+ // =============================================================================
71
+ //
72
+ // Why: MuxPlayer's UI is built on `media-chrome`, which uses custom
73
+ // elements with shadow-DOM `<style>` tags. `media-chrome`'s internal
74
+ // `insertCSSRule()` helper queries `style.sheet` during the element's
75
+ // `connectedCallback`. When the player mounts inside a React portal
76
+ // (the chat panel renders `<Video>` inside Radix's `<Dialog.Portal>`),
77
+ // the element is moved across DOM trees BEFORE the browser hydrates
78
+ // the shadow `<style>`'s `.sheet`. The helper then logs:
79
+ // "Media Chrome: No style sheet found on style tag of #shadow-root (open)"
80
+ // and returns a no-op style shim. The warning is purely cosmetic —
81
+ // playback, controls, and theming all render correctly because the
82
+ // shadow stylesheet does hydrate on the next paint.
83
+ //
84
+ // Until upstream `media-chrome` either retries on the next microtask
85
+ // or downgrades the warning (tracked in their issue tracker), patch
86
+ // `console.warn` once at module load to drop only THIS exact string.
87
+ // All other `console.warn` calls pass through unchanged.
88
+ //
89
+ // Why patch instead of opting out: `@mux/mux-player-react` exposes no
90
+ // prop to disable internal style queries, importing CSS explicitly
91
+ // doesn't seed the shadow-root stylesheets (they're per-element), and
92
+ // the warning fires before any consumer can intercept the element.
93
+ if (typeof window !== 'undefined' && typeof console !== 'undefined') {
94
+ const w = window as unknown as { __MEDIA_CHROME_WARN_PATCHED__?: boolean };
95
+ if (!w.__MEDIA_CHROME_WARN_PATCHED__) {
96
+ w.__MEDIA_CHROME_WARN_PATCHED__ = true;
97
+ const MEDIA_CHROME_NO_STYLESHEET_PREFIX = 'Media Chrome: No style sheet found on style tag of';
98
+ const originalWarn = console.warn.bind(console);
99
+ console.warn = (...args: unknown[]): void => {
100
+ if (typeof args[0] === 'string' && args[0].startsWith(MEDIA_CHROME_NO_STYLESHEET_PREFIX)) {
101
+ return;
102
+ }
103
+ originalWarn(...args);
104
+ };
105
+ }
106
+ }
107
+
67
108
  // =============================================================================
68
109
  // URL classifiers (private — `<Video>` is the only consumer)
69
110
  // =============================================================================
@@ -251,10 +292,16 @@ function wrapWithLayout(
251
292
  // doesn't flicker tiny→full while video metadata loads. Both branches
252
293
  // are sized to fill 100% of this container (MuxPlayer via `style`,
253
294
  // YouTube facade via internal `paddingBottom: 56.25%` which compounds
254
- // harmlessly inside an already-16:9 box).
295
+ // harmlessly inside an already-16:9 box). `rounded-lg overflow-hidden
296
+ // border border-ods-border` is on the wrapper (not the inner) so BOTH
297
+ // branches end up with the same rounded card look — YouTube's facade
298
+ // also paints its own internal rounded-lg on the button + iframe,
299
+ // matching the outer radius (so the corners stay sharp through the
300
+ // poster → iframe transition); MuxPlayer renders flat and inherits
301
+ // the wrapper's rounded corners via `overflow-hidden` clipping.
255
302
  return (
256
303
  <div className="flex justify-center w-full">
257
- <div className="w-full max-w-3xl aspect-video">{inner}</div>
304
+ <div className="w-full max-w-3xl aspect-video rounded-lg overflow-hidden border border-ods-border">{inner}</div>
258
305
  </div>
259
306
  );
260
307
  case 'fill':
@@ -564,7 +611,11 @@ function YouTubeFacadeInner({
564
611
  src={posterJpg}
565
612
  alt={title}
566
613
  loading="lazy"
567
- fetchPriority={priority ? 'high' : 'low'}
614
+ // React 18 wants lowercase (`fetchpriority` DOM attribute);
615
+ // React 19 wants camelCase (`fetchPriority` prop). Detect at
616
+ // module load and spread the right shape so both runtimes
617
+ // render the DOM attribute cleanly with no console warnings.
618
+ {...fetchPriorityProp(priority)}
568
619
  decoding={priority ? 'sync' : 'async'}
569
620
  className="absolute inset-0 w-full h-full object-cover"
570
621
  />
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { usePathname, useRouter } from 'next/navigation';
3
+ import { usePathname, useRouter } from '../embed-shims/next-navigation';
4
4
  import { useCallback } from 'react';
5
5
  import { OpenFrameLogo } from './icons';
6
6
  import { Button } from './ui/button';
@@ -1,6 +1,6 @@
1
1
  "use client"
2
2
 
3
- import Link from 'next/link'
3
+ import Link from '../../embed-shims/next-link'
4
4
  import React, { useEffect, useRef, useState } from 'react'
5
5
  import { HeaderConfig, NavigationItem } from '../../types/navigation'
6
6
  import { cn } from '../../utils'
@@ -53,7 +53,7 @@ export function OnboardingStepCard({
53
53
 
54
54
  return (
55
55
  <InteractiveCard
56
- clickable={true}
56
+ clickable={false}
57
57
  className={cn(
58
58
  'bg-ods-card border border-ods-border rounded-[6px]',
59
59
  'flex flex-col md:flex-row',
@@ -8,11 +8,11 @@ export interface ProductReleaseCardSkeletonProps {
8
8
  className?: string
9
9
  /** Card density. Must match the loaded card's `size` prop so the loading
10
10
  * height matches the resolved height (no layout shift on resolve). */
11
- size?: 'default' | 'sm' | 'catalog'
11
+ size?: 'lg' | 'sm'
12
12
  }
13
13
 
14
- export function ProductReleaseCardSkeleton({ className, size = 'default' }: ProductReleaseCardSkeletonProps) {
15
- // ----- CATALOG branch — must match ProductReleaseCard size='catalog'.
14
+ export function ProductReleaseCardSkeleton({ className, size = 'lg' }: ProductReleaseCardSkeletonProps) {
15
+ // ----- LG branch — must match ProductReleaseCard size='lg'.
16
16
  // Same outer frame (`bg-ods-system-greys-black border border-ods-border …
17
17
  // p-6 gap-4`). Inner: hero (16:9 cover + version pill + title + summary),
18
18
  // changelog strip placeholder, metadata-grid footer (4 cells via grid).
@@ -21,7 +21,7 @@ export function ProductReleaseCardSkeleton({ className, size = 'default' }: Prod
21
21
  // loaded card ALSO always renders the changelog strip + a fixed 4-cell
22
22
  // grid (with em-dash placeholders for missing values), so this
23
23
  // skeleton's shape matches exactly with zero load-to-resolve reflow.
24
- if (size === 'catalog') {
24
+ if (size === 'lg') {
25
25
  return (
26
26
  <div
27
27
  className={cn(
@@ -151,44 +151,8 @@ export function ProductReleaseCardSkeleton({ className, size = 'default' }: Prod
151
151
  )
152
152
  }
153
153
 
154
- return (
155
- <div
156
- className={cn(
157
- 'bg-ods-card border border-ods-border rounded-[6px]',
158
- 'flex flex-col md:flex-row',
159
- 'items-start md:items-center',
160
- 'gap-3 md:gap-4',
161
- 'p-4',
162
- 'animate-pulse',
163
- className
164
- )}
165
- >
166
- {/* Left column - content */}
167
- <div className="flex-1 w-full md:w-auto min-w-0 flex flex-col justify-center gap-2">
168
- {/* Title skeleton - 2 lines height */}
169
- <div className="min-h-[48px] flex items-center">
170
- <div className="flex flex-col gap-1 w-full">
171
- <div className="h-[24px] w-3/4 bg-ods-border rounded" />
172
- <div className="h-[24px] w-1/2 bg-ods-border rounded" />
173
- </div>
174
- </div>
175
- {/* Description skeleton - 3 lines */}
176
- <div className="flex flex-col gap-1">
177
- <div className="h-[24px] w-full bg-ods-border rounded" />
178
- <div className="h-[24px] w-full bg-ods-border rounded" />
179
- <div className="h-[24px] w-2/3 bg-ods-border rounded" />
180
- </div>
181
- </div>
182
-
183
- {/* Right column - version + date */}
184
- <div className="flex items-center gap-2 w-full md:w-auto justify-start md:justify-end shrink-0">
185
- <div className="w-[200px] flex flex-col justify-center gap-2">
186
- <div className="h-[24px] w-20 bg-ods-border rounded" />
187
- <div className="h-[20px] w-32 bg-ods-border rounded" />
188
- </div>
189
- {/* Icon column */}
190
- <div className="h-6 w-6 bg-ods-border rounded shrink-0 mx-3" />
191
- </div>
192
- </div>
193
- )
154
+ // Unreachable — `size` is typed `'lg' | 'sm'` and both branches return
155
+ // above. Kept as a defensive throw so a future variant addition that
156
+ // forgets to return doesn't silently render `undefined`.
157
+ throw new Error(`ProductReleaseCardSkeleton: unsupported size '${size as string}'`)
194
158
  }