@flamingo-stack/openframe-frontend-core 0.0.213 → 0.0.214-snapshot.20260528192313

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 (746) hide show
  1. package/dist/{chunk-35XIT2CF.cjs → chunk-2G3NXF6J.cjs} +17 -17
  2. package/dist/{chunk-35XIT2CF.cjs.map → chunk-2G3NXF6J.cjs.map} +1 -1
  3. package/dist/{chunk-IK2X5YJU.js → chunk-7PCP7YQR.js} +2 -2
  4. package/dist/{chunk-ZDF6F7ED.cjs → chunk-D4MNFY67.cjs} +4 -3
  5. package/dist/chunk-D4MNFY67.cjs.map +1 -0
  6. package/dist/{chunk-OTKJASSX.cjs → chunk-NGFP4RVL.cjs} +24 -24
  7. package/dist/{chunk-OTKJASSX.cjs.map → chunk-NGFP4RVL.cjs.map} +1 -1
  8. package/dist/{chunk-3JWIJJ44.js → chunk-R6MLPU4A.js} +2 -2
  9. package/dist/{chunk-ZTJVRSN5.js → chunk-WQZP3JIZ.js} +4 -3
  10. package/dist/chunk-WQZP3JIZ.js.map +1 -0
  11. package/dist/components/chat/index.cjs +2 -2
  12. package/dist/components/chat/index.js +1 -1
  13. package/dist/components/contact/index.cjs +3 -3
  14. package/dist/components/contact/index.js +2 -2
  15. package/dist/components/features/index.cjs +2 -2
  16. package/dist/components/features/index.js +1 -1
  17. package/dist/components/index.cjs +49 -49
  18. package/dist/components/index.js +2 -2
  19. package/dist/components/navigation/index.cjs +2 -2
  20. package/dist/components/navigation/index.js +1 -1
  21. package/dist/components/tickets/index.cjs +61 -61
  22. package/dist/components/tickets/index.js +3 -3
  23. package/dist/components/ui/index.cjs +2 -2
  24. package/dist/components/ui/index.js +1 -1
  25. package/dist/index.cjs +2 -2
  26. package/dist/index.js +1 -1
  27. package/package.json +1 -1
  28. package/src/.index.md +36 -34
  29. package/src/components/.alert-dialog.md +27 -23
  30. package/src/components/.announcement-bar.md +26 -21
  31. package/src/components/.breadcrumb.md +19 -15
  32. package/src/components/.calendar.md +24 -19
  33. package/src/components/.categories-cart.md +29 -24
  34. package/src/components/.checkbox.md +23 -25
  35. package/src/components/.chevron-button.md +37 -32
  36. package/src/components/.comment-card.md +32 -62
  37. package/src/components/.dialog.md +26 -26
  38. package/src/components/.dynamic-skeleton.md +54 -57
  39. package/src/components/.empty-state.md +42 -51
  40. package/src/components/.faq-accordion.md +27 -21
  41. package/src/components/.filter-chip.md +41 -24
  42. package/src/components/.flamingo-logo.md +20 -23
  43. package/src/components/.footer-waitlist-button.md +29 -22
  44. package/src/components/.footer.md +32 -32
  45. package/src/components/.icons-block.md +27 -17
  46. package/src/components/.image-cropper.md +41 -32
  47. package/src/components/.index.md +33 -39
  48. package/src/components/.input.md +31 -35
  49. package/src/components/.logs-list.md +31 -20
  50. package/src/components/.media-carousel.md +35 -36
  51. package/src/components/.open-source-features.md +33 -16
  52. package/src/components/.pagination.md +52 -51
  53. package/src/components/.provider-button.md +21 -23
  54. package/src/components/.select.md +31 -20
  55. package/src/components/.sidebar.md +34 -24
  56. package/src/components/.smooth-accordion.md +29 -24
  57. package/src/components/.social-icon-row.md +36 -32
  58. package/src/components/.textarea.md +25 -31
  59. package/src/components/.tool-icon.md +24 -26
  60. package/src/components/.unified-filter-logic.md +37 -30
  61. package/src/components/.unified-pagination.md +23 -22
  62. package/src/components/.user-summary-stub.md +38 -22
  63. package/src/components/.vendor-display-button.md +25 -25
  64. package/src/components/.vendor-icon.md +33 -25
  65. package/src/components/.why-it-matters.md +28 -25
  66. package/src/components/chat/.approval-batch-message.md +51 -0
  67. package/src/components/chat/.approval-request-message.md +35 -34
  68. package/src/components/chat/.chat-attachment-bar.md +64 -0
  69. package/src/components/chat/.chat-container.md +36 -18
  70. package/src/components/chat/.chat-input.md +37 -20
  71. package/src/components/chat/.chat-message-enhanced.md +30 -49
  72. package/src/components/chat/.chat-message-list.md +45 -32
  73. package/src/components/chat/.chat-message-skeleton.md +26 -22
  74. package/src/components/chat/.chat-panel-context.md +52 -0
  75. package/src/components/chat/.chat-ref.types.md +42 -0
  76. package/src/components/chat/.chat-sidebar-skeleton.md +34 -25
  77. package/src/components/chat/.chat-sidebar.md +31 -26
  78. package/src/components/chat/.chat-ticket-list.md +39 -0
  79. package/src/components/chat/.context-compaction-display.md +36 -0
  80. package/src/components/chat/.cycling-phrase.md +52 -0
  81. package/src/components/chat/.embeddable-chat.md +48 -0
  82. package/src/components/chat/.expand-chevron.md +24 -0
  83. package/src/components/chat/.index.md +31 -35
  84. package/src/components/chat/.mingo-onboarding-card-skeleton.md +44 -0
  85. package/src/components/chat/.mingo-onboarding-card.md +62 -0
  86. package/src/components/chat/.model-display.md +32 -30
  87. package/src/components/chat/.nav-link-anchor-via-runtime.md +40 -0
  88. package/src/components/chat/.remark-card-links.md +38 -0
  89. package/src/components/chat/.slash-command-suggestions.md +47 -0
  90. package/src/components/chat/.source-action-button.md +48 -0
  91. package/src/components/chat/.thinking-display.md +42 -0
  92. package/src/components/chat/.tool-call-blocks.md +45 -0
  93. package/src/components/chat/.tool-execution-display.md +44 -36
  94. package/src/components/chat/chat-container.tsx +1 -1
  95. package/src/components/chat/entity-cards/.admin-content-card.md +43 -0
  96. package/src/components/chat/entity-cards/.block-card.md +47 -0
  97. package/src/components/chat/entity-cards/.blog-card.md +52 -0
  98. package/src/components/chat/entity-cards/.blog-image-placeholder.md +39 -0
  99. package/src/components/chat/entity-cards/.campaign-card-admin.md +47 -0
  100. package/src/components/chat/entity-cards/.case-study-card.md +58 -0
  101. package/src/components/chat/entity-cards/.chat-ticket-item.md +40 -0
  102. package/src/components/chat/entity-cards/.chat-video-entity-card.md +43 -0
  103. package/src/components/chat/entity-cards/.customer-interview-card.md +53 -0
  104. package/src/components/chat/entity-cards/.data-room-doc-card.md +47 -0
  105. package/src/components/chat/entity-cards/.dispatch.md +39 -0
  106. package/src/components/chat/entity-cards/.entity-author-card.md +51 -0
  107. package/src/components/chat/entity-cards/.generic-entity-card.md +62 -0
  108. package/src/components/chat/entity-cards/.github-activity-card.md +61 -0
  109. package/src/components/chat/entity-cards/.hubspot-ticket-card.md +53 -0
  110. package/src/components/chat/entity-cards/.index.md +66 -0
  111. package/src/components/chat/entity-cards/.investor-update-card.md +47 -0
  112. package/src/components/chat/entity-cards/.onboarding-guide-card.md +58 -0
  113. package/src/components/chat/entity-cards/.product-release-card-defaults.md +31 -0
  114. package/src/components/chat/entity-cards/.product-release-card.md +29 -0
  115. package/src/components/chat/entity-cards/.program-card-defaults.md +41 -0
  116. package/src/components/chat/entity-cards/.program-card.md +59 -0
  117. package/src/components/chat/entity-cards/.roadmap-card.md +46 -0
  118. package/src/components/chat/entity-cards/.roadmap-vote-button.md +52 -0
  119. package/src/components/chat/entity-cards/.slack-message-card.md +48 -0
  120. package/src/components/chat/entity-cards/.task-type-icon.md +47 -0
  121. package/src/components/chat/hooks/.index.md +36 -21
  122. package/src/components/chat/hooks/.use-chat-attachment-image-gallery.md +51 -0
  123. package/src/components/chat/hooks/.use-chat-attachments.md +48 -0
  124. package/src/components/chat/hooks/.use-chat-card-item.md +39 -0
  125. package/src/components/chat/hooks/.use-chat-identity.md +45 -0
  126. package/src/components/chat/hooks/.use-chat.md +58 -0
  127. package/src/components/chat/hooks/.use-chunk-catchup.md +46 -48
  128. package/src/components/chat/hooks/.use-close-on-navigation.md +44 -0
  129. package/src/components/chat/hooks/.use-collapsible.md +48 -0
  130. package/src/components/chat/hooks/.use-embedded-chat.md +32 -0
  131. package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +40 -0
  132. package/src/components/chat/hooks/.use-nats-chat-adapter.md +52 -0
  133. package/src/components/chat/hooks/.use-nats-dialog-subscription.md +49 -30
  134. package/src/components/chat/hooks/.use-proxied-image-url.md +40 -0
  135. package/src/components/chat/hooks/.use-realtime-chunk-processor.md +43 -40
  136. package/src/components/chat/hooks/.use-slash-commands.md +46 -0
  137. package/src/components/chat/hooks/.use-sse-chat-adapter.md +34 -0
  138. package/src/components/chat/hooks/.use-sse.md +60 -0
  139. package/src/components/chat/hooks/.use-unified-chat.md +57 -0
  140. package/src/components/chat/types/.api.types.md +52 -38
  141. package/src/components/chat/types/.chat.types.md +43 -34
  142. package/src/components/chat/types/.component.types.md +47 -48
  143. package/src/components/chat/types/.index.md +20 -27
  144. package/src/components/chat/types/.message.types.md +58 -48
  145. package/src/components/chat/types/.network.types.md +57 -31
  146. package/src/components/chat/types/.processing.types.md +49 -31
  147. package/src/components/chat/types/.unified-chat-state.types.md +41 -0
  148. package/src/components/chat/types/entities/.blog.md +43 -0
  149. package/src/components/chat/types/entities/.case-study.md +26 -0
  150. package/src/components/chat/types/entities/.content-ref.md +41 -0
  151. package/src/components/chat/types/entities/.customer-interview.md +28 -0
  152. package/src/components/chat/types/entities/.data-room-doc.md +36 -0
  153. package/src/components/chat/types/entities/.github-activity.md +43 -0
  154. package/src/components/chat/types/entities/.hubspot-ticket.md +53 -0
  155. package/src/components/chat/types/entities/.index.md +42 -0
  156. package/src/components/chat/types/entities/.investor-update.md +45 -0
  157. package/src/components/chat/types/entities/.onboarding-guide.md +50 -0
  158. package/src/components/chat/types/entities/.program-types.md +57 -0
  159. package/src/components/chat/types/entities/.roadmap-item.md +58 -0
  160. package/src/components/chat/types/entities/.slack-message.md +35 -0
  161. package/src/components/chat/utils/.agent-status-message.md +45 -0
  162. package/src/components/chat/utils/.auto-continuation-directive.md +58 -0
  163. package/src/components/chat/utils/.chat-attachment-markdown.md +54 -0
  164. package/src/components/chat/utils/.chat-authed-fetch.md +25 -0
  165. package/src/components/chat/utils/.chat-nav-resolution.md +46 -0
  166. package/src/components/chat/utils/.chat-proxy-auth-storage.md +38 -0
  167. package/src/components/chat/utils/.chip-action-class.md +34 -0
  168. package/src/components/chat/utils/.chip-styles.md +46 -0
  169. package/src/components/chat/utils/.chunk-parser.md +38 -28
  170. package/src/components/chat/utils/.clickup-task-type-utils.md +48 -0
  171. package/src/components/chat/utils/.compact-card-classes.md +62 -0
  172. package/src/components/chat/utils/.decide-new-tab.md +51 -0
  173. package/src/components/chat/utils/.external-app-urls.md +29 -0
  174. package/src/components/chat/utils/.extract-incomplete-message-state.md +25 -29
  175. package/src/components/chat/utils/.flatten-assistant-content.md +34 -0
  176. package/src/components/chat/utils/.icon-registry.md +46 -0
  177. package/src/components/chat/utils/.index.md +37 -32
  178. package/src/components/chat/utils/.is-cross-origin-url.md +35 -0
  179. package/src/components/chat/utils/.message-segment-accumulator.md +25 -34
  180. package/src/components/chat/utils/.nav-anchor-props.md +44 -0
  181. package/src/components/chat/utils/.nav-click-handler.md +47 -0
  182. package/src/components/chat/utils/.onboarding-icons.md +28 -0
  183. package/src/components/chat/utils/.process-historical-messages.md +46 -35
  184. package/src/components/chat/utils/.scroll-anchor.md +40 -0
  185. package/src/components/chat/utils/.slash-dispatch-utils.md +44 -0
  186. package/src/components/chat/utils/.source-icons.md +35 -0
  187. package/src/components/chat/utils/.source-row-cta.md +54 -0
  188. package/src/components/chat/utils/.tool-call-helpers.md +42 -0
  189. package/src/components/contact/.contact-form.md +43 -0
  190. package/src/components/contact/.index.md +27 -0
  191. package/src/components/features/.array-entry-manager.md +36 -45
  192. package/src/components/features/.changelog-manager.md +47 -21
  193. package/src/components/features/.changelog-sections-manager.md +21 -26
  194. package/src/components/features/.command-box.md +31 -28
  195. package/src/components/features/.entity-summary-editor.md +46 -0
  196. package/src/components/features/.entity-video-section.md +51 -0
  197. package/src/components/features/.figma-prototype-viewer.md +48 -29
  198. package/src/components/features/.filters-dropdown.md +33 -46
  199. package/src/components/features/.highlight-config-section.md +42 -0
  200. package/src/components/features/.highlight-generation-section.md +46 -0
  201. package/src/components/features/.highlight-video-combined-section.md +47 -0
  202. package/src/components/features/.highlight-video-preview.md +44 -0
  203. package/src/components/features/.highlight-video-section.md +47 -0
  204. package/src/components/features/.index.md +40 -66
  205. package/src/components/features/.media-gallery-manager.md +48 -38
  206. package/src/components/features/.more-about-button.md +22 -19
  207. package/src/components/features/.og-editor-preview.md +40 -36
  208. package/src/components/features/.parallax-image-showcase.md +33 -26
  209. package/src/components/features/.paths-display.md +42 -43
  210. package/src/components/features/.platform-badge.md +37 -36
  211. package/src/components/features/.platform-filter.md +23 -16
  212. package/src/components/features/.policy-configuration-panel.md +48 -56
  213. package/src/components/features/.provider-button.md +33 -36
  214. package/src/components/features/.push-button-selector.md +40 -29
  215. package/src/components/features/.release-media-manager.md +46 -31
  216. package/src/components/features/.section-selector.md +26 -31
  217. package/src/components/features/.select-button.md +35 -25
  218. package/src/components/features/.seo-editor-preview.md +41 -44
  219. package/src/components/features/.social-links-manager.md +25 -19
  220. package/src/components/features/.start-with-openframe-button.md +37 -29
  221. package/src/components/features/.status-filter-component.md +36 -20
  222. package/src/components/features/.tags-selector.md +40 -24
  223. package/src/components/features/.transcribe-and-summarize-combined-section.md +45 -0
  224. package/src/components/features/.transcribe-summarize-section.md +48 -0
  225. package/src/components/features/.transcript-summary-editor.md +53 -0
  226. package/src/components/features/.video-bites-display.md +46 -0
  227. package/src/components/features/.video-clips-section.md +41 -0
  228. package/src/components/features/.video-ratio-tabs.md +56 -0
  229. package/src/components/features/.video-source-selector.md +60 -0
  230. package/src/components/features/.video.md +44 -0
  231. package/src/components/features/.waitlist-form.md +60 -0
  232. package/src/components/features/ai-enrich/.AIEnrichButton.md +30 -27
  233. package/src/components/features/ai-enrich/.AIEnrichSection.md +46 -42
  234. package/src/components/features/board/.board-column-header.md +38 -0
  235. package/src/components/features/board/.board-column.md +43 -0
  236. package/src/components/features/board/.board.md +51 -0
  237. package/src/components/features/board/.color-utils.md +26 -0
  238. package/src/components/features/board/.index.md +56 -0
  239. package/src/components/features/board/.ticket-card-skeleton.md +38 -0
  240. package/src/components/features/board/.ticket-card.md +47 -0
  241. package/src/components/features/board/.types.md +45 -0
  242. package/src/components/features/board/.use-board-collapse.md +34 -0
  243. package/src/components/features/notifications/.index.md +57 -0
  244. package/src/components/features/notifications/.notification-drawer.md +34 -0
  245. package/src/components/features/notifications/.notification-tile.md +39 -0
  246. package/src/components/features/notifications/.notifications-context.md +73 -0
  247. package/src/components/features/notifications/.types.md +45 -0
  248. package/src/components/icons/.about-icon.md +20 -28
  249. package/src/components/icons/.ai-robot-icon.md +15 -17
  250. package/src/components/icons/.bash-icon.md +16 -23
  251. package/src/components/icons/.buildings-icon.md +10 -24
  252. package/src/components/icons/.capterra-icon.md +30 -26
  253. package/src/components/icons/.carta-icon.md +29 -0
  254. package/src/components/icons/.clickup-icon.md +26 -0
  255. package/src/components/icons/.cmd-icon.md +15 -22
  256. package/src/components/icons/.coins-icon.md +17 -25
  257. package/src/components/icons/.community-hub-icon.md +19 -25
  258. package/src/components/icons/.community-icon.md +24 -21
  259. package/src/components/icons/.compare-icon.md +32 -19
  260. package/src/components/icons/.copy-icon.md +29 -15
  261. package/src/components/icons/.custom-external-link-icon.md +19 -17
  262. package/src/components/icons/.custom-fork-icon.md +32 -21
  263. package/src/components/icons/.custom-license-icon.md +29 -25
  264. package/src/components/icons/.custom-star-icon.md +20 -28
  265. package/src/components/icons/.custom-time-icon.md +21 -22
  266. package/src/components/icons/.cut-vendor-costs-icon.md +6 -19
  267. package/src/components/icons/.dashboard-icon.md +13 -18
  268. package/src/components/icons/.deno-icon.md +16 -23
  269. package/src/components/icons/.donut-icon.md +12 -23
  270. package/src/components/icons/.double-chevron-icon.md +28 -36
  271. package/src/components/icons/.elestio-logo.md +13 -23
  272. package/src/components/icons/.empty-vendor-icon.md +16 -18
  273. package/src/components/icons/.explore-categories-icon.md +18 -29
  274. package/src/components/icons/.eye-icon.md +16 -26
  275. package/src/components/icons/.facebook-icon.md +9 -20
  276. package/src/components/icons/.figma-icon.md +8 -17
  277. package/src/components/icons/.filter-icon.md +15 -17
  278. package/src/components/icons/.flamingo-logo.md +28 -27
  279. package/src/components/icons/.folder-shield-icon.md +28 -19
  280. package/src/components/icons/.g2-icon.md +22 -21
  281. package/src/components/icons/.getapp-icon.md +25 -21
  282. package/src/components/icons/.github-icon.md +13 -25
  283. package/src/components/icons/.globe-icon.md +14 -19
  284. package/src/components/icons/.google-gemini-icon.md +16 -19
  285. package/src/components/icons/.google-logo.md +15 -21
  286. package/src/components/icons/.grid-view-icon.md +30 -19
  287. package/src/components/icons/.hamburger-icon.md +22 -20
  288. package/src/components/icons/.hand-dollar-icon.md +24 -34
  289. package/src/components/icons/.hotel-icon.md +27 -21
  290. package/src/components/icons/.icon-utils.md +28 -29
  291. package/src/components/icons/.image-icon.md +15 -22
  292. package/src/components/icons/.index.md +25 -28
  293. package/src/components/icons/.info-circle-icon.md +29 -30
  294. package/src/components/icons/.instagram-icon.md +10 -24
  295. package/src/components/icons/.jump-in-icon.md +18 -18
  296. package/src/components/icons/.linux-icon.md +18 -18
  297. package/src/components/icons/.log-out-icon.md +15 -23
  298. package/src/components/icons/.logs-icon.md +14 -23
  299. package/src/components/icons/.margin-crisis-icon.md +21 -20
  300. package/src/components/icons/.menu-icon.md +18 -19
  301. package/src/components/icons/.miami-cyber-gang-logo-face-only.md +18 -21
  302. package/src/components/icons/.miami-cyber-gang-logo.md +22 -14
  303. package/src/components/icons/.mlg-logo.md +18 -16
  304. package/src/components/icons/.moon-icon.md +32 -22
  305. package/src/components/icons/.ms-icon.md +30 -19
  306. package/src/components/icons/.nushell-icon.md +7 -21
  307. package/src/components/icons/.open-source-icon.md +19 -23
  308. package/src/components/icons/.openai-icon.md +9 -24
  309. package/src/components/icons/.openframe-ai-icons.md +25 -26
  310. package/src/components/icons/.openframe-logo.md +28 -22
  311. package/src/components/icons/.openframe-text.md +24 -27
  312. package/src/components/icons/.openmsp-logo.md +26 -23
  313. package/src/components/icons/.pilot-icon.md +23 -0
  314. package/src/components/icons/.powershell-icon.md +17 -22
  315. package/src/components/icons/.python-icon.md +16 -23
  316. package/src/components/icons/.queries-icon.md +13 -21
  317. package/src/components/icons/.reddit-icon.md +28 -24
  318. package/src/components/icons/.remote-control-icon.md +13 -17
  319. package/src/components/icons/.script-icon.md +27 -19
  320. package/src/components/icons/.search-icon.md +21 -21
  321. package/src/components/icons/.send-icon.md +14 -16
  322. package/src/components/icons/.settings-icon.md +30 -19
  323. package/src/components/icons/.shape-circle-dash-icon.md +16 -21
  324. package/src/components/icons/.shell-icon.md +15 -19
  325. package/src/components/icons/.shield-check-icon.md +18 -31
  326. package/src/components/icons/.shield-key-icon.md +25 -25
  327. package/src/components/icons/.shield-lock-icon.md +8 -18
  328. package/src/components/icons/.slack-icon.md +28 -32
  329. package/src/components/icons/.sparkles-icon.md +18 -23
  330. package/src/components/icons/.sso-configuration-icon.md +29 -16
  331. package/src/components/icons/.sun-icon.md +20 -18
  332. package/src/components/icons/.table-view-icon.md +17 -19
  333. package/src/components/icons/.telegram-icon.md +8 -22
  334. package/src/components/icons/.thumbs-down-icon.md +10 -19
  335. package/src/components/icons/.thumbs-up-icon.md +8 -17
  336. package/src/components/icons/.tool-directory-icons.md +24 -28
  337. package/src/components/icons/.trustpilot-icon.md +25 -22
  338. package/src/components/icons/.user-icon.md +26 -28
  339. package/src/components/icons/.users-group-icon.md +28 -24
  340. package/src/components/icons/.vendor-showcase-icons.md +21 -29
  341. package/src/components/icons/.vendors-icon.md +18 -22
  342. package/src/components/icons/.whatsapp-icon.md +30 -14
  343. package/src/components/icons/.x-icon.md +18 -23
  344. package/src/components/icons/.x-logo.md +13 -38
  345. package/src/components/icons/.youtube-icon.md +8 -19
  346. package/src/components/icons/device-type-icons/.get-device-type-icon.md +26 -34
  347. package/src/components/icons-v2-generated/.index.md +52 -0
  348. package/src/components/icons-v2-generated/alphabet/.index.md +33 -0
  349. package/src/components/icons-v2-generated/arrows/.index.md +39 -0
  350. package/src/components/icons-v2-generated/audio-and-visual/.index.md +40 -0
  351. package/src/components/icons-v2-generated/brand-logos/.elestio-logo-icon.md +40 -0
  352. package/src/components/icons-v2-generated/brand-logos/.gemini-logo-icon.md +37 -0
  353. package/src/components/icons-v2-generated/brand-logos/.google-gemini-logo-icon.md +33 -0
  354. package/src/components/icons-v2-generated/brand-logos/.index.md +38 -0
  355. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-grey-icon.md +35 -0
  356. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-icon.md +36 -0
  357. package/src/components/icons-v2-generated/buildings/.index.md +48 -0
  358. package/src/components/icons-v2-generated/charts/.index.md +40 -0
  359. package/src/components/icons-v2-generated/clothes/.index.md +48 -0
  360. package/src/components/icons-v2-generated/coding/.index.md +42 -0
  361. package/src/components/icons-v2-generated/communication/.index.md +39 -0
  362. package/src/components/icons-v2-generated/date-and-time/.index.md +29 -0
  363. package/src/components/icons-v2-generated/design/.index.md +39 -0
  364. package/src/components/icons-v2-generated/devices/.index.md +38 -0
  365. package/src/components/icons-v2-generated/documents/.index.md +38 -0
  366. package/src/components/icons-v2-generated/finance/.index.md +34 -0
  367. package/src/components/icons-v2-generated/food-and-drinks/.index.md +34 -0
  368. package/src/components/icons-v2-generated/food-and-drinks/.leafy-green-icon.md +36 -0
  369. package/src/components/icons-v2-generated/food-and-drinks/.strawberry-icon.md +39 -0
  370. package/src/components/icons-v2-generated/health/.index.md +40 -0
  371. package/src/components/icons-v2-generated/household/.index.md +45 -0
  372. package/src/components/icons-v2-generated/interface/.index.md +36 -0
  373. package/src/components/icons-v2-generated/map-and-travel/.index.md +41 -0
  374. package/src/components/icons-v2-generated/media-playback/.index.md +51 -0
  375. package/src/components/icons-v2-generated/number/.index.md +41 -0
  376. package/src/components/icons-v2-generated/school/.index.md +37 -0
  377. package/src/components/icons-v2-generated/security/.fingerprint-icon.md +38 -0
  378. package/src/components/icons-v2-generated/security/.index.md +39 -0
  379. package/src/components/icons-v2-generated/shopping/.index.md +42 -0
  380. package/src/components/icons-v2-generated/signs-and-symbols/.index.md +32 -0
  381. package/src/components/icons-v2-generated/sort-and-filter/.index.md +35 -0
  382. package/src/components/icons-v2-generated/sport/.index.md +41 -0
  383. package/src/components/icons-v2-generated/text-editor/.index.md +44 -0
  384. package/src/components/icons-v2-generated/users/.index.md +45 -0
  385. package/src/components/icons-v2-generated/vehicles-and-delivery/.index.md +36 -0
  386. package/src/components/icons-v2-generated/weather-and-nature/.flower-sakura-icon.md +36 -0
  387. package/src/components/icons-v2-generated/weather-and-nature/.index.md +34 -0
  388. package/src/components/layout/.article-detail-layout.md +43 -0
  389. package/src/components/layout/.back-button.md +40 -0
  390. package/src/components/layout/.list-page-layout.md +35 -26
  391. package/src/components/layout/.page-container.md +27 -38
  392. package/src/components/layout/.page-layout.md +50 -0
  393. package/src/components/layout/.title-block.md +42 -0
  394. package/src/components/loading/.card-skeleton.md +38 -29
  395. package/src/components/loading/.device-card-skeleton.md +29 -25
  396. package/src/components/loading/.index.md +39 -46
  397. package/src/components/loading/.margin-report-skeleton.md +45 -34
  398. package/src/components/loading/.organization-card-skeleton.md +39 -44
  399. package/src/components/loading/.page-layout-skeleton.md +34 -45
  400. package/src/components/loading/.unified-skeleton.md +62 -36
  401. package/src/components/navigation/.app-header.md +40 -29
  402. package/src/components/navigation/.app-layout.md +25 -26
  403. package/src/components/navigation/.header-global-search.md +34 -37
  404. package/src/components/navigation/.header-organization-filter.md +23 -22
  405. package/src/components/navigation/.header.md +31 -35
  406. package/src/components/navigation/.mobile-burger-menu.md +39 -47
  407. package/src/components/navigation/.mobile-nav-panel.md +51 -32
  408. package/src/components/navigation/.navigation-sidebar-header.md +36 -0
  409. package/src/components/navigation/.navigation-sidebar-item.md +45 -0
  410. package/src/components/navigation/.navigation-sidebar-toggle.md +38 -0
  411. package/src/components/navigation/.navigation-sidebar.md +33 -34
  412. package/src/components/navigation/.sliding-sidebar.md +52 -41
  413. package/src/components/navigation/.sticky-section-nav.md +56 -48
  414. package/src/components/platform/.ScriptArguments.md +39 -25
  415. package/src/components/platform/.ScriptInfoSection.md +30 -26
  416. package/src/components/platform/.ShellTypeBadge.md +18 -13
  417. package/src/components/platform/.SoftwareInfo.md +23 -27
  418. package/src/components/platform/.SoftwareSourceBadge.md +28 -19
  419. package/src/components/platform/.ToolBadge.md +25 -26
  420. package/src/components/platform/ShellTypeBadge.tsx +2 -2
  421. package/src/components/providers/.theme-provider.md +52 -0
  422. package/src/components/shared/delivery/.delivery-lists.md +39 -0
  423. package/src/components/shared/delivery/.delivery-row.md +41 -0
  424. package/src/components/shared/delivery/.delivery-table.md +41 -0
  425. package/src/components/shared/delivery/.index.md +38 -0
  426. package/src/components/shared/dev-section/.dev-card-row.md +60 -0
  427. package/src/components/shared/dev-section/.dev-section-page.md +48 -0
  428. package/src/components/shared/dev-section/.dev-section-view.md +43 -0
  429. package/src/components/shared/dev-section/.index.md +38 -0
  430. package/src/components/shared/legal-document/.index.md +40 -0
  431. package/src/components/shared/legal-document/.legal-document-page.md +50 -0
  432. package/src/components/shared/legal-document/.use-legal-docs.md +42 -0
  433. package/src/components/shared/onboarding/.onboarding-step-card.md +32 -31
  434. package/src/components/shared/onboarding/.onboarding-walkthrough.md +39 -43
  435. package/src/components/shared/product-release/.index.md +28 -30
  436. package/src/components/shared/product-release/.product-release-card-skeleton.md +28 -28
  437. package/src/components/shared/product-release/.product-release-card.md +45 -27
  438. package/src/components/shared/product-release/.release-detail-page.md +23 -24
  439. package/src/components/shared/roadmap/.index.md +37 -0
  440. package/src/components/shared/roadmap/.roadmap-grid-skeleton.md +39 -0
  441. package/src/components/shared/roadmap/.roadmap-grid.md +66 -0
  442. package/src/components/shared/roadmap/.use-roadmap-voting.md +68 -0
  443. package/src/components/tickets/.help-center-card.md +51 -0
  444. package/src/components/tickets/.help-center-create-form.md +38 -0
  445. package/src/components/tickets/.help-center-list.md +40 -0
  446. package/src/components/tickets/.index.md +65 -0
  447. package/src/components/tickets/.ticket-center.md +51 -0
  448. package/src/components/tickets/.ticket-detail-drawer.md +48 -0
  449. package/src/components/tickets/.ticket-linked-delivery-card.md +36 -0
  450. package/src/components/tickets/.ticket-open-form.md +50 -0
  451. package/src/components/tickets/.ticket-row.md +30 -0
  452. package/src/components/tickets/.types.md +57 -0
  453. package/src/components/tickets/hooks/.use-ticket-actions.md +77 -0
  454. package/src/components/tickets/hooks/.use-ticket-engagements.md +42 -0
  455. package/src/components/tickets/hooks/.use-tickets-list.md +54 -0
  456. package/src/components/ui/.actions-menu.md +66 -41
  457. package/src/components/ui/.alert-dialog.md +29 -26
  458. package/src/components/ui/.allowed-domains-input.md +29 -21
  459. package/src/components/ui/.assignee-dropdown.md +45 -0
  460. package/src/components/ui/.autocomplete.md +47 -41
  461. package/src/components/ui/.benefit-card.md +51 -36
  462. package/src/components/ui/.brand-association-card.md +30 -27
  463. package/src/components/ui/.breadcrumb.md +17 -15
  464. package/src/components/ui/.checkbox-block.md +39 -35
  465. package/src/components/ui/.checkbox-with-description.md +23 -16
  466. package/src/components/ui/.checkbox.md +31 -23
  467. package/src/components/ui/.circular-progress.md +49 -19
  468. package/src/components/ui/.content-loader.md +32 -20
  469. package/src/components/ui/.cursor-pagination.md +41 -52
  470. package/src/components/ui/.dashboard-info-card.md +33 -26
  471. package/src/components/ui/.date-picker.md +27 -25
  472. package/src/components/ui/.device-card-compact.md +28 -29
  473. package/src/components/ui/.device-card.md +27 -27
  474. package/src/components/ui/.dialog.md +25 -16
  475. package/src/components/ui/.drawer.md +86 -0
  476. package/src/components/ui/.dropdown-button.md +45 -0
  477. package/src/components/ui/.entity-image.md +46 -0
  478. package/src/components/ui/.error-state.md +41 -28
  479. package/src/components/ui/.feature-card.md +35 -31
  480. package/src/components/ui/.feature-list.md +48 -0
  481. package/src/components/ui/.field-wrapper.md +47 -0
  482. package/src/components/ui/.file-upload.md +42 -0
  483. package/src/components/ui/.filter-checkbox-item.md +43 -0
  484. package/src/components/ui/.filter-list.md +57 -0
  485. package/src/components/ui/.filter-modal.md +59 -0
  486. package/src/components/ui/.floating-tooltip.md +43 -26
  487. package/src/components/ui/.hidden-tags-popup.md +49 -0
  488. package/src/components/ui/.hover-dropdown.md +54 -0
  489. package/src/components/ui/.image-gallery-modal.md +41 -34
  490. package/src/components/ui/.image-uploader.md +53 -0
  491. package/src/components/ui/.index.md +40 -34
  492. package/src/components/ui/.info-card.md +31 -31
  493. package/src/components/ui/.info-row.md +31 -27
  494. package/src/components/ui/.input-trigger.md +44 -0
  495. package/src/components/ui/.input.md +37 -31
  496. package/src/components/ui/.markdown-editor.md +57 -0
  497. package/src/components/ui/.modal-v2.md +51 -0
  498. package/src/components/ui/.modal.md +32 -31
  499. package/src/components/ui/.more-actions-menu.md +45 -38
  500. package/src/components/ui/.organization-card.md +31 -37
  501. package/src/components/ui/.page-actions.md +44 -54
  502. package/src/components/ui/.phone-input.md +54 -0
  503. package/src/components/ui/.progress-bar.md +35 -27
  504. package/src/components/ui/.radio-group.md +39 -27
  505. package/src/components/ui/.release-changelog-section.md +34 -34
  506. package/src/components/ui/.search-input.md +48 -0
  507. package/src/components/ui/.select.md +54 -34
  508. package/src/components/ui/.service-card.md +42 -40
  509. package/src/components/ui/.sheet.md +27 -18
  510. package/src/components/ui/.simple-markdown-renderer.md +29 -31
  511. package/src/components/ui/.sort-column-item.md +42 -0
  512. package/src/components/ui/.square-avatar.md +34 -24
  513. package/src/components/ui/.status-badge.md +26 -38
  514. package/src/components/ui/.switch.md +22 -35
  515. package/src/components/ui/.tab-navigation.md +56 -53
  516. package/src/components/ui/.tab-selector.md +40 -0
  517. package/src/components/ui/.tag-key-value-filter.md +56 -0
  518. package/src/components/ui/.tag-search-input.md +53 -0
  519. package/src/components/ui/.tag.md +49 -31
  520. package/src/components/ui/.tags-manager.md +60 -0
  521. package/src/components/ui/.textarea.md +44 -34
  522. package/src/components/ui/.ticket-attachments-list.md +45 -0
  523. package/src/components/ui/.ticket-detail-section.md +29 -0
  524. package/src/components/ui/.ticket-info-section.md +56 -0
  525. package/src/components/ui/.ticket-note-card.md +53 -0
  526. package/src/components/ui/.ticket-notes-section.md +54 -0
  527. package/src/components/ui/.ticket-status-tag.md +49 -0
  528. package/src/components/ui/.title-content-block.md +25 -26
  529. package/src/components/ui/.toaster.md +40 -28
  530. package/src/components/ui/.tooltip.md +22 -11
  531. package/src/components/ui/.truncate-text.md +39 -0
  532. package/src/components/ui/button/.button-styles.md +35 -0
  533. package/src/components/ui/button/.button.md +53 -0
  534. package/src/components/ui/button/.split-button.md +48 -0
  535. package/src/components/ui/data-table/.data-table-body.md +48 -0
  536. package/src/components/ui/data-table/.data-table-column-filter.md +45 -0
  537. package/src/components/ui/data-table/.data-table-cursor-footer.md +45 -0
  538. package/src/components/ui/data-table/.data-table-empty.md +43 -0
  539. package/src/components/ui/data-table/.data-table-header.md +55 -0
  540. package/src/components/ui/data-table/.data-table-infinite-footer.md +44 -0
  541. package/src/components/ui/data-table/.data-table-row-count.md +43 -0
  542. package/src/components/ui/data-table/.data-table-row.md +47 -0
  543. package/src/components/ui/data-table/.data-table-skeleton.md +42 -0
  544. package/src/components/ui/data-table/.data-table.md +47 -0
  545. package/src/components/ui/data-table/.index.md +55 -0
  546. package/src/components/ui/data-table/.types.md +54 -0
  547. package/src/components/ui/data-table/.use-data-table.md +45 -0
  548. package/src/components/ui/data-table/.utils.md +38 -0
  549. package/src/components/ui/file-manager/.file-manager-action-bar.md +39 -30
  550. package/src/components/ui/file-manager/.file-manager-breadcrumb.md +29 -27
  551. package/src/components/ui/file-manager/.file-manager-context-menu.md +38 -42
  552. package/src/components/ui/file-manager/.file-manager-empty.md +26 -39
  553. package/src/components/ui/file-manager/.file-manager-table-row.md +33 -41
  554. package/src/components/ui/file-manager/.file-manager.md +35 -31
  555. package/src/components/ui/query-report-table/.index.md +43 -0
  556. package/src/components/ui/query-report-table/.query-report-table-header.md +36 -0
  557. package/src/components/ui/query-report-table/.query-report-table-row.md +40 -0
  558. package/src/components/ui/query-report-table/.query-report-table-skeleton.md +44 -0
  559. package/src/components/ui/query-report-table/.query-report-table.md +47 -0
  560. package/src/components/ui/query-report-table/.types.md +41 -0
  561. package/src/components/ui/query-report-table/.utils.md +35 -0
  562. package/src/components/ui/table/.index.md +27 -48
  563. package/src/components/ui/table/.table-cell.md +18 -27
  564. package/src/components/ui/table/.table-column-filter-dropdown.md +40 -0
  565. package/src/components/ui/table/.table-description-cell.md +24 -14
  566. package/src/components/ui/table/.table-empty-state.md +21 -22
  567. package/src/components/ui/table/.table-header.md +25 -40
  568. package/src/components/ui/table/.table-row.md +22 -40
  569. package/src/components/ui/table/.table-skeleton.md +33 -26
  570. package/src/components/ui/table/.table-timestamp-cell.md +26 -16
  571. package/src/components/ui/table/.table.md +39 -59
  572. package/src/components/ui/table/.types.md +44 -36
  573. package/src/components/ui/table/.utils.md +18 -20
  574. package/src/contexts/.chat-runtime-context.md +54 -0
  575. package/src/contexts/.endpoints-runtime-context.md +58 -0
  576. package/src/contexts/.index.md +53 -0
  577. package/src/contexts/.use-outer-or-default.md +36 -0
  578. package/src/embed-shims/.index.md +45 -0
  579. package/src/embed-shims/.next-dynamic.md +43 -0
  580. package/src/embed-shims/.next-image.md +45 -0
  581. package/src/embed-shims/.next-link.md +59 -0
  582. package/src/embed-shims/.next-navigation.md +59 -0
  583. package/src/hooks/.index.md +34 -29
  584. package/src/hooks/.use-access-code-integration.md +49 -0
  585. package/src/hooks/.use-contact-submission.md +37 -26
  586. package/src/hooks/.use-copy-to-clipboard.md +42 -0
  587. package/src/hooks/.use-near-viewport.md +44 -0
  588. package/src/hooks/.use-og-placeholder.md +51 -0
  589. package/src/hooks/.use-toast.md +36 -35
  590. package/src/hooks/state/.use-api-params.md +29 -46
  591. package/src/hooks/state/.use-query-params.md +37 -33
  592. package/src/hooks/ui/.index.md +33 -32
  593. package/src/hooks/ui/.use-auto-limit-tags.md +54 -0
  594. package/src/hooks/ui/.use-horizontal-scrollbar.md +74 -0
  595. package/src/hooks/ui/.use-image-edge-color.md +42 -0
  596. package/src/hooks/ui/.use-media-query.md +33 -25
  597. package/src/hooks/ui/.use-search.md +51 -0
  598. package/src/nats/.nats.md +49 -28
  599. package/src/schemas/.contact-schema.md +45 -0
  600. package/src/stories/.AnnouncementBar.stories.md +45 -0
  601. package/src/stories/.AppLayout.stories.md +20 -21
  602. package/src/stories/.Autocomplete.stories.md +48 -34
  603. package/src/stories/.Board.stories.md +35 -0
  604. package/src/stories/.Button.stories.md +36 -33
  605. package/src/stories/.ChatTicketList.stories.md +33 -0
  606. package/src/stories/.CheckboxBlock.stories.md +40 -28
  607. package/src/stories/.ContentLoader.stories.md +47 -0
  608. package/src/stories/.DashboardInfoCard.stories.md +57 -0
  609. package/src/stories/.DataTable.stories.md +41 -0
  610. package/src/stories/.DatePicker.stories.md +66 -52
  611. package/src/stories/.DeviceCard.stories.md +41 -40
  612. package/src/stories/.DeviceCardCompact.stories.md +41 -0
  613. package/src/stories/.DotsLoaderIcon.stories.md +36 -0
  614. package/src/stories/.Drawer.stories.md +58 -0
  615. package/src/stories/.EmbeddableChat.stories.md +41 -0
  616. package/src/stories/.FileManager.stories.md +41 -0
  617. package/src/stories/.FileManagerActionBar.stories.md +38 -0
  618. package/src/stories/.FileUpload.stories.md +53 -0
  619. package/src/stories/.FilterList.stories.md +54 -0
  620. package/src/stories/.FilterModal.stories.md +72 -0
  621. package/src/stories/.FiltersDropdown.stories.md +57 -0
  622. package/src/stories/.Header.stories.md +48 -0
  623. package/src/stories/.ImageUploader.stories.md +49 -0
  624. package/src/stories/.InfoCard.stories.md +54 -0
  625. package/src/stories/.Input.stories.md +48 -30
  626. package/src/stories/.ListPageLayout.stories.md +56 -43
  627. package/src/stories/.MingoOnboardingCard.stories.md +42 -0
  628. package/src/stories/.MingoOnboardingCardSkeleton.stories.md +35 -0
  629. package/src/stories/.Modal.stories.md +40 -31
  630. package/src/stories/.NotificationDrawer.stories.md +55 -0
  631. package/src/stories/.OnboardingStepCard.stories.md +41 -0
  632. package/src/stories/.OrganizationCard.stories.md +61 -0
  633. package/src/stories/.PageActions.stories.md +52 -49
  634. package/src/stories/.PageContainer.stories.md +41 -35
  635. package/src/stories/.PageLayout.stories.md +60 -0
  636. package/src/stories/.ParallaxImageShowcase.stories.md +49 -0
  637. package/src/stories/.PhoneInput.stories.md +53 -0
  638. package/src/stories/.QueryReportTable.stories.md +44 -0
  639. package/src/stories/.RadioGroup.stories.md +46 -0
  640. package/src/stories/.RadioGroupBlock.stories.md +45 -0
  641. package/src/stories/.Select.stories.md +29 -15
  642. package/src/stories/.SlashCommandSuggestions.stories.md +41 -0
  643. package/src/stories/.SplitButton.stories.md +62 -0
  644. package/src/stories/.TabNavigation.stories.md +47 -38
  645. package/src/stories/.TabSelector.stories.md +65 -0
  646. package/src/stories/.Table.stories.md +38 -46
  647. package/src/stories/.TableColumnFilterDropdown.stories.md +46 -0
  648. package/src/stories/.Tag.stories.md +43 -32
  649. package/src/stories/.TagKeyValueFilter.stories.md +44 -0
  650. package/src/stories/.TagSearchInput.stories.md +61 -0
  651. package/src/stories/.Textarea.stories.md +49 -26
  652. package/src/stories/.Theme.stories.md +41 -0
  653. package/src/stories/.TicketAttachmentsList.stories.md +39 -0
  654. package/src/stories/.TicketDescriptionViewer.stories.md +39 -0
  655. package/src/stories/.TicketInfoSection.stories.md +40 -0
  656. package/src/stories/.TicketKnowledgeBaseList.stories.md +36 -0
  657. package/src/stories/.TicketNotesSection.stories.md +50 -0
  658. package/src/stories/.Toaster.stories.md +40 -0
  659. package/src/stories/.ToolExecutionDisplay.stories.md +41 -0
  660. package/src/stories/.Tooltip.stories.md +41 -0
  661. package/src/stories/.UserSummary.stories.md +41 -0
  662. package/src/stories/.WaitlistForm.stories.md +42 -0
  663. package/src/stories/BlogCard.stories.tsx +61 -0
  664. package/src/stories/CampaignCardAdmin.stories.tsx +52 -0
  665. package/src/stories/CaseStudyCard.stories.tsx +42 -0
  666. package/src/stories/ChatContainer.stories.tsx +186 -0
  667. package/src/stories/ChatInlineVideoPill.stories.tsx +63 -0
  668. package/src/stories/CustomerInterviewCard.stories.tsx +42 -0
  669. package/src/stories/DataRoomDocCard.stories.tsx +52 -0
  670. package/src/stories/GenericEntityCard.stories.tsx +66 -0
  671. package/src/stories/GitHubActivityCard.stories.tsx +61 -0
  672. package/src/stories/HubspotTicketCard.stories.tsx +98 -0
  673. package/src/stories/InvestorUpdateCard.stories.tsx +42 -0
  674. package/src/stories/OnboardingGuideCard.stories.tsx +52 -0
  675. package/src/stories/ProductReleaseCard.stories.tsx +61 -0
  676. package/src/stories/ProgramCard.stories.tsx +79 -0
  677. package/src/stories/RoadmapCard.stories.tsx +75 -0
  678. package/src/stories/SlackMessageCard.stories.tsx +41 -0
  679. package/src/stories/__fixtures__/chat-cards.ts +604 -0
  680. package/src/types/.blog.md +53 -29
  681. package/src/types/.case-study.md +44 -27
  682. package/src/types/.customer-interview.md +66 -44
  683. package/src/types/.delivery.md +40 -0
  684. package/src/types/.employee.md +24 -30
  685. package/src/types/.index.md +33 -47
  686. package/src/types/.marketing.md +49 -44
  687. package/src/types/.navigation.md +33 -25
  688. package/src/types/.os.types.md +32 -27
  689. package/src/types/.platform.md +31 -28
  690. package/src/types/.product-release.md +65 -38
  691. package/src/types/.supabase.md +37 -29
  692. package/src/types/.team.md +41 -33
  693. package/src/types/.video-processing.md +54 -0
  694. package/src/types/.waitlist.md +40 -36
  695. package/src/utils/.access-code-client.md +37 -36
  696. package/src/utils/.cn.md +31 -23
  697. package/src/utils/.color-analysis.md +35 -0
  698. package/src/utils/.country-phone-utils.md +39 -0
  699. package/src/utils/.date-formatters.md +19 -18
  700. package/src/utils/.embed-authed-fetch.md +39 -0
  701. package/src/utils/.embed-proxy-auth-storage.md +38 -0
  702. package/src/utils/.fetch-priority.md +41 -0
  703. package/src/utils/.format.md +74 -25
  704. package/src/utils/.generic-domain-utils.md +42 -0
  705. package/src/utils/.image-proxy.md +59 -23
  706. package/src/utils/.index.md +42 -49
  707. package/src/utils/.local-storage-adapter.md +50 -0
  708. package/src/utils/.ods-color-utils.md +55 -38
  709. package/src/utils/.platform-config.md +45 -25
  710. package/src/utils/.scroll-into-view.md +40 -0
  711. package/src/utils/.source-icons.md +53 -0
  712. package/src/utils/.sse-decision-frame.md +46 -0
  713. package/src/utils/dev-sections/.index.md +34 -0
  714. package/src/utils/dev-sections/.openframe-dev-sections.md +49 -0
  715. package/dist/chunk-ZDF6F7ED.cjs.map +0 -1
  716. package/dist/chunk-ZTJVRSN5.js.map +0 -1
  717. package/src/components/.card.md +0 -42
  718. package/src/components/.contact-button.md +0 -30
  719. package/src/components/.drawer.md +0 -46
  720. package/src/components/.fixed-layout-container.md +0 -47
  721. package/src/components/.footer-waitlist-card.md +0 -29
  722. package/src/components/.join-waitlist-cta.md +0 -29
  723. package/src/components/.sheet.md +0 -47
  724. package/src/components/.sliding-panel.md +0 -48
  725. package/src/components/.tooltip.md +0 -48
  726. package/src/components/.use-mobile.md +0 -42
  727. package/src/components/.vendor-compact-card.md +0 -66
  728. package/src/components/.x-button.md +0 -42
  729. package/src/components/features/.github-repo-button.md +0 -40
  730. package/src/components/features/.organization-icon.md +0 -47
  731. package/src/components/features/.organization-selector.md +0 -45
  732. package/src/components/icons/.fleet-icon.md +0 -39
  733. package/src/components/icons/.meshcentral-icon.md +0 -35
  734. package/src/components/icons/.refresh-icon.md +0 -34
  735. package/src/components/icons/.tactical-icon.md +0 -35
  736. package/src/components/ui/.button.md +0 -69
  737. package/src/components/ui/.log-table-row.md +0 -47
  738. package/src/components/ui/.selectable-device-card.md +0 -46
  739. package/src/hooks/.api-hooks-stub.md +0 -45
  740. package/src/hooks/api/.use-product-releases.md +0 -53
  741. package/src/stories/.OrganizationSelector.stories.md +0 -42
  742. package/src/stories/.SelectableDeviceCard.stories.md +0 -30
  743. package/src/utils/.lite-youtube-embed-stub.md +0 -37
  744. package/src/utils/.lite-youtube-embed.md +0 -33
  745. /package/dist/{chunk-IK2X5YJU.js.map → chunk-7PCP7YQR.js.map} +0 -0
  746. /package/dist/{chunk-3JWIJJ44.js.map → chunk-R6MLPU4A.js.map} +0 -0
@@ -0,0 +1,42 @@
1
+ <!-- source-hash: d4d35ff06ab39090293de947a43da21c -->
2
+ Utility module for detecting personal/consumer email providers, distinguishing them from business/corporate domains.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `GENERIC_EMAIL_DOMAINS` | `const` array | Readonly list of ~30 known generic email domains (Gmail, Yahoo, iCloud, ISPs, international providers) |
9
+ | `GenericEmailDomain` | `type` | Union type inferred from `GENERIC_EMAIL_DOMAINS` entries |
10
+ | `extractDomainFromEmail` | `function` | Parses the domain portion from an email address string |
11
+ | `normalizeDomain` | `function` | Strips protocol, `www.`, and paths from a domain or URL string |
12
+ | `isGenericDomain` | `function` | Returns `true` if a domain matches any entry in `GENERIC_EMAIL_DOMAINS` |
13
+ | `hasGenericEmailDomain` | `function` | Checks whether an email address belongs to a generic provider |
14
+ | `isGenericWebsiteDomain` | `function` | Checks whether a website URL resolves to a generic provider domain |
15
+
16
+ ## Usage Example
17
+
18
+ ```typescript
19
+ import {
20
+ extractDomainFromEmail,
21
+ hasGenericEmailDomain,
22
+ isGenericDomain,
23
+ isGenericWebsiteDomain,
24
+ } from './generic-domain-utils'
25
+
26
+ // Extract domain from email
27
+ extractDomainFromEmail('user@gmail.com') // → 'gmail.com'
28
+ extractDomainFromEmail('invalid-email') // → null
29
+
30
+ // Check if an email uses a generic provider
31
+ hasGenericEmailDomain('user@gmail.com') // → true
32
+ hasGenericEmailDomain('user@acme.com') // → false
33
+
34
+ // Check a raw domain string
35
+ isGenericDomain('yahoo.com') // → true
36
+
37
+ // Check a website URL (strips protocol/www automatically)
38
+ isGenericWebsiteDomain('https://www.gmail.com/inbox') // → true
39
+ isGenericWebsiteDomain('https://acme.com') // → false
40
+ ```
41
+
42
+ > **Typical use case:** Gate B2B sign-up flows or lead enrichment pipelines by rejecting personal email addresses — ensuring only corporate domains are accepted for company-linked records.
@@ -1,32 +1,68 @@
1
- <!-- source-hash: a3e23fbda2c4277896e5630ca901a462 -->
2
- A utility module for handling image URL proxying and responsive image sizing in web applications.
1
+ <!-- source-hash: 96c8aeb6b887afbf8566d95db7ee4847 -->
2
+ Pure utility module for building image proxy URLs and related image-loading helpers, with no side effects or environment dependencies.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`getProxiedImageUrl(url: string): string`** - Returns a proxied version of the image URL (currently a pass-through implementation)
7
- - **`generateImageSizes(url: string): string`** - Generates responsive image size attributes for optimal loading across different viewport widths
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `GetProxiedImageUrlOptions` | Type | Configuration shape for proxy prefix, skip domains, and direct-HTTPS bypass |
9
+ | `getProxiedImageUrl` | Function | Core URL resolver — routes an image URL through the proxy or returns it unchanged based on resolution rules |
10
+ | `urlPathLooksLikeSvg` | Function | Heuristic check for `.svg` file extension in a URL path |
11
+ | `shouldProxyImage` | Function | Boolean guard indicating whether a URL requires proxying |
12
+ | `generateImageSizes` | Function | Returns a standard responsive `sizes` attribute string for `<img>` tags |
13
+
14
+ ## Resolution Order (`getProxiedImageUrl`)
15
+
16
+ ```mermaid
17
+ graph TD
18
+ A["imageUrl input"] --> B{"Already contains proxyPrefix?"}
19
+ B -- Yes --> C["Return unchanged (self-skip)"]
20
+ B -- No --> D{"Relative / data: / blob:?"}
21
+ D -- Yes --> E["Return unchanged"]
22
+ D -- No --> F{"directHttps + starts with https://?"}
23
+ F -- Yes --> G["Return unchanged"]
24
+ F -- No --> H{"proxyPrefix unset?"}
25
+ H -- Yes --> I["Return unchanged"]
26
+ H -- No --> J{"Matches skipDomains?"}
27
+ J -- Yes --> K["Return unchanged"]
28
+ J -- No --> L["Return proxyPrefix?url=encoded"]
29
+ ```
8
30
 
9
31
  ## Usage Example
10
32
 
11
33
  ```typescript
12
- import { getProxiedImageUrl, generateImageSizes } from './image-proxy'
13
-
14
- // Get proxied image URL
15
- const originalUrl = 'https://example.com/image.jpg'
16
- const proxiedUrl = getProxiedImageUrl(originalUrl)
17
-
18
- // Generate responsive sizes for img element
19
- const sizes = generateImageSizes(originalUrl)
20
-
21
- // Use in HTML img element
22
- const imgElement = `
23
- <img
24
- src="${proxiedUrl}"
25
- sizes="${sizes}"
26
- alt="Responsive image"
27
- />
28
- `
29
- // Result sizes: "(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw"
34
+ import {
35
+ getProxiedImageUrl,
36
+ urlPathLooksLikeSvg,
37
+ shouldProxyImage,
38
+ } from './image-proxy';
39
+
40
+ const proxyPrefix = '/api/image-proxy';
41
+ const skipDomains = ['cdn.mycompany.com'];
42
+
43
+ // Standard proxy wrap
44
+ getProxiedImageUrl('https://external.com/photo.jpg', { proxyPrefix, skipDomains });
45
+ // → '/api/image-proxy?url=https%3A%2F%2Fexternal.com%2Fphoto.jpg'
46
+
47
+ // Skip proxy for own CDN
48
+ getProxiedImageUrl('https://cdn.mycompany.com/logo.png', { proxyPrefix, skipDomains });
49
+ // → 'https://cdn.mycompany.com/logo.png'
50
+
51
+ // Bypass proxy for SVGs only
52
+ const url = 'https://external.com/icon.svg';
53
+ getProxiedImageUrl(url, {
54
+ proxyPrefix,
55
+ directHttps: urlPathLooksLikeSvg(url), // true → bypass
56
+ });
57
+ // → 'https://external.com/icon.svg'
58
+
59
+ // Guard before proxying
60
+ shouldProxyImage('https://external.com/img.png', proxyPrefix); // → true
61
+ shouldProxyImage('/relative/path.png', proxyPrefix); // → false
30
62
  ```
31
63
 
32
- The `getProxiedImageUrl` function is designed as a placeholder for future image proxy implementation, while `generateImageSizes` provides a mobile-first responsive sizing strategy where images take full width on mobile devices, half width on tablets, and one-third width on desktop screens.
64
+ ## Notes
65
+
66
+ - **Caller-owned config** — no env reads; proxy prefix and skip list are passed in at the call site, typically from `ChatRuntime.endpoints.imageProxyUrlPrefix`.
67
+ - **HTTP stays proxied** even when `directHttps: true` to avoid mixed-content issues.
68
+ - Relative URLs, `data:`, and `blob:` URIs always pass through unchanged.
@@ -1,56 +1,49 @@
1
- <!-- source-hash: b234713efcc25b611bb99fa454537cfb -->
2
- Central utility exports module providing client-side helper functions and type definitions for the Flamingo platform. This barrel export file aggregates commonly used utilities across different categories.
1
+ <!-- source-hash: a199bfb2e9675c73161c9b56f81904f7 -->
2
+ Barrel export index for the `utils` package, re-exporting all utility functions, types, and constants from their canonical source files to provide a single stable import path for consumers across the frontend library and hub.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### **Core Utilities**
7
- - `cn` - Class name utility for conditional styling
8
- - `formatDate`, `formatNumber`, `formatPrice`, `formatBytes` - Data formatting functions
9
- - `getAllPlatformBaseDomains` - Platform domain configuration helper
10
- - `getBaseUrl` - Base URL resolution utility
11
-
12
- ### **Platform & Color Management**
13
- - `getPlatformAccentColor`, `getCurrentPlatform` - Platform detection and theming
14
- - `ColorCategory` - TypeScript type for color categorization
15
- - Platform configuration exports from `./platform-config`
16
- - OS platform utilities from `./os-platforms`
17
-
18
- ### **Helper Functions**
19
- - `delay` - Async delay utility
20
- - `generateRandomString`, `truncateString` - String manipulation
21
- - `deepClone` - Object cloning utility
22
- - `getSlackCommunityJoinUrl` - Community integration helper
23
-
24
- ### **Specialized Modules**
25
- - Access code client utilities
26
- - Validation helpers
27
- - AI confidence scoring
28
- - Date/time formatting
29
- - Dynamic icon registry
30
- - Tool, shell, and OS type utilities
6
+ | Export Group | Source | Description |
7
+ |---|---|---|
8
+ | `cn`, `getAllPlatformBaseDomains`, `getBaseUrl`, `getPlatformProductionUrl` | `./cn` | CSS class merging and platform URL helpers |
9
+ | `formatDate`, `formatNumber`, `formatPrice`, `formatBytes`, `formatCurrency`, `formatPercent`, etc. | `./format` | Number, currency, byte, date, and metric formatters |
10
+ | `getPlatformAccentColor`, `getCurrentPlatform` | `./ods-color-utils` | Platform theming and color utilities |
11
+ | `getDynamicIcon`, `ICON_REGISTRY`, `getIconComponent` | `chat/utils/icon-registry` | Dynamic icon registry |
12
+ | `embedAuthedFetch`, `getEmbedProxyAuth`, `setEmbedProxyAuth` | `./embed-*` | Embed-surface authentication helpers |
13
+ | `formatRelativeTime`, `formatAbsoluteDate`, `isToday`, `createUTCTimestamp` | `./date-utils` | Date/time formatting and comparison |
14
+ | `escapeMarkdownInline`, `buildChatAttachmentViewUrl` | `chat/utils/chat-attachment-markdown` | Chat attachment markdown helpers |
15
+ | `scrollElementIntoView` | `./scroll-into-view` | Smooth scroll with sticky-chrome offset |
16
+ | `readLeadingDecisionFrame` | `./sse-decision-frame` | SSE frame reader for confirm-tool route |
17
+ | `isCrossOriginUrl` | `chat/utils/is-cross-origin-url` | Cross-origin URL detection (server-safe) |
31
18
 
32
19
  ## Usage Example
33
20
 
34
21
  ```typescript
35
- import {
36
- cn,
37
- formatPrice,
38
- getPlatformAccentColor,
39
- delay
40
- } from '@/utils'
41
-
42
- // Conditional styling
43
- const buttonClass = cn('btn', {
44
- 'btn-primary': isPrimary,
45
- 'btn-disabled': isDisabled
46
- })
47
-
48
- // Format currency
49
- const price = formatPrice(29.99, 'USD')
50
-
51
- // Get platform theme color
52
- const accentColor = getPlatformAccentColor('flamingo')
53
-
54
- // Async delay
55
- await delay(1000)
56
- ```
22
+ // Import any utility directly from the utils barrel
23
+ import {
24
+ cn,
25
+ formatCurrency,
26
+ formatRelativeTime,
27
+ getDynamicIcon,
28
+ getEmbedProxyAuth,
29
+ scrollElementIntoView,
30
+ getCurrentPlatform,
31
+ } from '@flamingo-stack/openframe-frontend-core/utils'
32
+
33
+ // CSS class merging
34
+ const className = cn('base-class', isActive && 'active')
35
+
36
+ // Format a currency value
37
+ const price = formatCurrency(4999, 'USD') // "$49.99"
38
+
39
+ // Relative time display
40
+ const label = formatRelativeTime(new Date('2024-01-01')) // "6 months ago"
41
+
42
+ // Retrieve embed proxy auth for non-chat surfaces
43
+ const auth = getEmbedProxyAuth()
44
+
45
+ // Scroll an element into view respecting sticky chrome
46
+ scrollElementIntoView(targetElement, { offsetPx: 64 })
47
+ ```
48
+
49
+ > **Note:** Several exports are intentionally re-routed through this barrel to keep server-safe utilities (e.g. `CUSTOM_ITEM_ID`, `getSourceLabel`, `isCrossOriginUrl`) accessible from SSR/server code without crossing `"use client"` boundaries.
@@ -0,0 +1,50 @@
1
+ <!-- source-hash: 68d691e94558097753faed6dd1e6e15f -->
2
+ A typed Web Storage adapter factory that centralizes SSR-guarding, JSON serialization, quota-failure handling, and optional namespace partitioning for both `localStorage` and `sessionStorage`.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `WebStorageBackend` | Type | `'local' \| 'session'` — selects the storage backend |
9
+ | `LocalStorageAdapter<T>` | Interface | Runtime API: `load()`, `save()`, `clear()`, `resolveKey()` |
10
+ | `LocalStorageAdapterOptions<T>` | Interface | Configuration including `key`, `namespace`, `validate`, `logTag`, `backend` |
11
+ | `createLocalStorageAdapter<T>()` | Function | Factory that returns a typed adapter instance |
12
+
13
+ **Backend guidance:**
14
+ - `'local'` (default) — persists across sessions; use for UI state, chat history, feature flags
15
+ - `'session'` — clears on tab close; use for **any auth-adjacent value** (tokens, proxy credentials) to minimize XSS exfiltration window
16
+
17
+ ## Usage Example
18
+
19
+ ```typescript
20
+ import { createLocalStorageAdapter } from './local-storage-adapter'
21
+
22
+ interface ChatPrefs {
23
+ theme: 'light' | 'dark'
24
+ fontSize: number
25
+ }
26
+
27
+ // Basic persistent adapter
28
+ const prefsAdapter = createLocalStorageAdapter<ChatPrefs>({
29
+ key: 'chat-prefs',
30
+ validate: (v): v is ChatPrefs =>
31
+ typeof v === 'object' && v !== null && 'theme' in v,
32
+ logTag: '[chat-prefs]',
33
+ })
34
+
35
+ prefsAdapter.save({ theme: 'dark', fontSize: 14 })
36
+ const prefs = prefsAdapter.load() // ChatPrefs | null
37
+
38
+ // Auth-adjacent value with session backend + dynamic namespace
39
+ const tokenAdapter = createLocalStorageAdapter<string>({
40
+ key: 'bearer-token',
41
+ backend: 'session',
42
+ namespace: () => currentUser?.orgId ?? null,
43
+ })
44
+
45
+ tokenAdapter.save('eyJ...')
46
+ tokenAdapter.resolveKey() // → "org-123.bearer-token"
47
+ tokenAdapter.clear()
48
+ ```
49
+
50
+ > **SSR safe:** All storage access is guarded against `window === undefined` and sandboxed-context throws (e.g. Safari private mode), returning `null` silently instead of crashing.
@@ -1,54 +1,71 @@
1
- <!-- source-hash: b216de0ab6478666f2528bc940971eea -->
2
- Provides runtime utilities for working with ODS (Open Design System) color tokens across multiple platforms. This module handles platform detection, theme switching, and color token management for dynamic theming in web applications.
1
+ <!-- source-hash: 8d0a4e249109b10a270ca0755176abc6 -->
2
+ Runtime utility library for working with ODS (OpenFrame Design System) color tokens, providing platform-aware theming, token lookup, CSS generation, and React integration helpers.
3
3
 
4
4
  ## Key Components
5
5
 
6
- **Core Functions:**
7
- - `getODSToken()` - Retrieves raw ODS token values by category, color, and variant
8
- - `getPlatformAccentColor()` - Gets CSS custom property for platform-specific accent colors
9
- - `getCurrentPlatform()` - Detects current platform from environment or DOM attributes
10
- - `switchPlatformTheme()` - Dynamically changes platform theme via CSS custom properties
11
-
12
- **Utility Functions:**
13
- - `tokenToTailwindClass()` - Converts ODS tokens to Tailwind CSS classes
14
- - `getTokensByCategory()` - Retrieves all tokens for a specific color category
15
- - `generatePlatformCSS()` - Creates CSS custom property declarations for platforms
16
- - `interpolateColors()` - Blends between two ODS color tokens with progress value
17
-
18
- **React Integration:**
19
- - `usePlatformColors()` - Hook providing platform-aware color utilities and theme controls
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `Platform` | Type | Union of `'openmsp' \| 'openframe' \| 'flamingo'` |
9
+ | `ColorCategory` | Type | Union of `'open' \| 'flamingo' \| 'system' \| 'attention'` |
10
+ | `ColorVariant` | Type | Union of `'base' \| 'hover' \| 'active' \| 'focus' \| 'disabled'` |
11
+ | `getODSToken` | Function | Looks up a raw token value by category, color name, and variant |
12
+ | `getPlatformAccentColor` | Function | Returns the CSS variable for the current or specified platform's accent color |
13
+ | `getCurrentPlatform` | Function | Resolves platform from DOM attribute or `NEXT_PUBLIC_APP_TYPE` env var |
14
+ | `switchPlatformTheme` | Function | Updates `data-app-type` on `<html>` and dispatches `platformThemeChanged` event |
15
+ | `getSemanticColor` | Function | Reads a computed `--color-*` CSS property for a given platform |
16
+ | `tokenToTailwindClass` | Function | Maps a semantic token key to its corresponding Tailwind utility class |
17
+ | `getTokensByCategory` | Function | Returns all tokens matching a given `ColorCategory` prefix |
18
+ | `isValidODSToken` | Function | Checks whether a token key exists in the ODS token map |
19
+ | `getPlatformConfig` | Function | Returns a config object with accent color, theme type, and brand name |
20
+ | `generatePlatformCSS` | Function | Builds a CSS block of custom property overrides for a platform |
21
+ | `applyColorToken` | Function | Directly sets a CSS custom property on an `HTMLElement` |
22
+ | `interpolateColors` | Function | Linearly interpolates between two hex ODS tokens by progress (0–1) |
23
+ | `usePlatformColors` | Function | React-friendly helper returning platform config and token accessors |
24
+ | `getReadableTextColor` | Function | Returns `#212121` or `#fafafa` based on Rec. 601 luminance of a hex color |
20
25
 
21
26
  ## Usage Example
22
27
 
23
28
  ```typescript
24
- import {
25
- getCurrentPlatform,
26
- getPlatformAccentColor,
29
+ import {
30
+ getCurrentPlatform,
31
+ getPlatformConfig,
27
32
  getODSToken,
28
- switchPlatformTheme,
29
- usePlatformColors
33
+ tokenToTailwindClass,
34
+ interpolateColors,
35
+ getReadableTextColor,
36
+ usePlatformColors,
37
+ switchPlatformTheme
30
38
  } from './ods-color-utils';
31
39
 
32
- // Get platform-specific accent color
33
- const platform = getCurrentPlatform(); // 'openmsp' | 'openframe' | 'flamingo'
34
- const accentColor = getPlatformAccentColor(platform); // 'var(--ods-open-yellow-base)'
40
+ // Resolve the active platform (SSR + CSR safe)
41
+ const platform = getCurrentPlatform(); // 'openframe'
42
+
43
+ // Get full platform configuration
44
+ const config = getPlatformConfig(platform);
45
+ // { platform: 'openframe', accentColor: 'var(--ods-open-yellow-base)',
46
+ // isDarkTheme: true, isLightTheme: false, brandName: 'OpenFrame' }
47
+
48
+ // Look up a raw design token
49
+ const tokenValue = getODSToken('system', 'greys-background', 'base');
35
50
 
36
- // Get specific ODS token
37
- const primaryButton = getODSToken('open', 'blue', 'hover');
51
+ // Map a semantic token to a Tailwind class
52
+ const twClass = tokenToTailwindClass('text-primary', 'text');
53
+ // → 'text-ods-text-primary'
38
54
 
39
- // Switch theme dynamically
55
+ // Interpolate between two hex tokens (e.g. for animations)
56
+ const midColor = interpolateColors('open-yellow-base', 'flamingo-pink-base', 0.5);
57
+
58
+ // Ensure readable text on a dynamic background
59
+ const textColor = getReadableTextColor('#FFC008'); // → '#212121'
60
+
61
+ // Switch platform at runtime (updates <html data-app-type> + fires event)
40
62
  switchPlatformTheme('flamingo');
41
63
 
42
64
  // React component usage
43
- function ThemeAwareComponent() {
44
- const { accentColor, isDarkTheme, switchTheme } = usePlatformColors();
45
-
46
- return (
47
- <div style={{ backgroundColor: accentColor }}>
48
- <button onClick={() => switchTheme('openframe')}>
49
- Switch to OpenFrame Theme
50
- </button>
51
- </div>
52
- );
65
+ function MyComponent() {
66
+ const { accentColor, isDarkTheme, getToken, switchTheme } = usePlatformColors();
67
+ return <div style={{ color: accentColor }}>{isDarkTheme ? 'Dark' : 'Light'}</div>;
53
68
  }
54
- ```
69
+ ```
70
+
71
+ > **Note:** `getSemanticColor` and `applyColorToken` are browser-only — they return `undefined` or no-op on the server. `switchPlatformTheme` cannot persist `process.env` changes in production; use it for UI-layer toggling only.
@@ -1,37 +1,57 @@
1
- <!-- source-hash: ade60c17f20dfc7ddc717f3b7a4e1e24 -->
2
- A centralized configuration module that provides unified branding assets (icons, colors, names, descriptions) for all platforms in the Flamingo ecosystem including OpenFrame, OpenMSP, and various specialized hubs.
1
+ <!-- source-hash: 744818572300c7f98b30a728467179eb -->
2
+ Centralized configuration module for all platform branding assets and metadata across the Flamingo/OpenFrame ecosystem, providing icons, colors, display names, descriptions, and utility functions for consistent platform presentation.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **Platform Asset Maps**: Exports for `platformIcons`, `platformColors`, `platformDisplayNames`, `platformDescriptions`, `platformSlogans`, `platformHexColors`, and `platformIconNames`
7
- - **Utility Functions**: Helper functions `getDefaultColorForPlatform`, `getDefaultIconForPlatform`, `getPlatformIcon`, `getPlatformColor`, etc.
8
- - **Icon Components**: Specialized icon getters `getSmallPlatformIcon` (4x4) and `getPlatformIconComponent` (6x6) with platform-specific styling
9
- - **Data Transformation**: `transformPlatformConfigsToOptions` converts platform configs to selectable options
6
+ ### Lookup Maps (exported constants)
7
+
8
+ | Export | Purpose |
9
+ |--------|---------|
10
+ | `platformIcons` | React icon components keyed by platform name |
11
+ | `platformColors` | Tailwind `bg-*` class strings per platform |
12
+ | `platformDisplayNames` | Human-readable names (e.g., `"Flamingo Marketing Hub"`) |
13
+ | `platformDescriptions` | Full marketing copy per platform |
14
+ | `platformSlogans` | Short taglines for branding use |
15
+ | `platformHexColors` | Raw hex values for non-Tailwind contexts |
16
+ | `platformIconNames` | String icon identifiers for config serialization |
17
+
18
+ Supported platform keys: `openframe`, `openmsp`, `flamingo`, `flamingo-teaser`, `marketing-hub`, `product-hub`, `revenue-hub`, `people-hub`, `company-hub`, `tmcg`, `universal`
19
+
20
+ ### Utility Functions
21
+
22
+ | Function | Returns | Notes |
23
+ |----------|---------|-------|
24
+ | `getPlatformIcon(name)` | `React.ReactNode` | Falls back to `universal` Globe icon |
25
+ | `getPlatformColor(name)` | `string` | Tailwind `bg-*` class |
26
+ | `getPlatformDisplayName(name)` | `string` | Falls back to raw name |
27
+ | `getPlatformDescription(name)` | `string` | Falls back to raw name |
28
+ | `getPlatformSlogan(name)` | `string` | Falls back to raw name |
29
+ | `getDefaultColorForPlatform(name)` | `string` | Hex value, falls back to `universal` |
30
+ | `getDefaultIconForPlatform(name)` | `string` | Icon name string, falls back to `universal` |
31
+ | `getSmallPlatformIcon(name)` | `React.ReactNode` | 4×4 (`h-4 w-4`), uses CSS variables for hub variants |
32
+ | `getPlatformIconComponent(name, className?)` | `React.ReactNode` | 6×6 default, accepts custom `className` |
33
+ | `transformPlatformConfigsToOptions(configs)` | `SelectableOption[]` | Maps `PlatformConfig[]` to UI-selectable options with icon and color |
10
34
 
11
35
  ## Usage Example
12
36
 
13
37
  ```typescript
14
- import {
15
- getPlatformIcon,
16
- getPlatformColor,
38
+ import {
17
39
  getPlatformDisplayName,
18
- getSmallPlatformIcon
40
+ getPlatformColor,
41
+ getSmallPlatformIcon,
42
+ transformPlatformConfigsToOptions
19
43
  } from './platform-config';
20
44
 
21
- // Get platform assets
22
- const flamingoIcon = getPlatformIcon('flamingo');
23
- const openFrameColor = getPlatformColor('openframe'); // 'bg-[#8B5CF6]'
24
- const displayName = getPlatformDisplayName('openmsp'); // 'OpenMSP'
25
-
26
- // Use in components
27
- function PlatformSelector({ platformName }: { platformName: string }) {
28
- return (
29
- <div className={getPlatformColor(platformName)}>
30
- {getSmallPlatformIcon(platformName)}
31
- <span>{getPlatformDisplayName(platformName)}</span>
32
- </div>
33
- );
34
- }
45
+ // Render a platform badge
46
+ const PlatformBadge = ({ name }: { name: string }) => (
47
+ <span className={`px-2 py-1 rounded ${getPlatformColor(name)}`}>
48
+ {getSmallPlatformIcon(name)}
49
+ {getPlatformDisplayName(name)}
50
+ </span>
51
+ );
52
+
53
+ // Populate a platform selector dropdown
54
+ const options = transformPlatformConfigsToOptions(platformConfigs);
35
55
  ```
36
56
 
37
- The module ensures consistent branding across the entire platform by centralizing all visual and textual representations of each service in the Flamingo stack.
57
+ > All lookup functions fall back gracefully to the `universal` platform or the raw input string, so unknown platform keys never produce `undefined` in UI renders.
@@ -0,0 +1,40 @@
1
+ <!-- source-hash: ec93c3a6544d7f572c8219bc65ceaf67 -->
2
+ Smooth-scroll utility that positions an element at the top of the viewport with support for sticky header offsets and pre-computed layout-shift adjustments.
3
+
4
+ ## Key Components
5
+
6
+ ### `ScrollElementIntoViewOptions`
7
+
8
+ | Option | Type | Default | Description |
9
+ |---|---|---|---|
10
+ | `headerOffset` | `number` | `0` | Pixels to subtract for sticky chrome (e.g., `96` for `scroll-mt-24`) |
11
+ | `behavior` | `ScrollBehavior` | `'smooth'` | `'smooth'` for animated scrolls, `'instant'` for deep-link jumps |
12
+ | `adjustTargetY` | `(raw: number) => number` | — | Callback to correct the pixel target before animation starts |
13
+
14
+ ### `scrollElementIntoView(target, options?)`
15
+
16
+ Computes a fixed pixel target via `getBoundingClientRect().top + scrollY - headerOffset`, then calls `window.scrollTo()` directly. This avoids the jitter caused by `element.scrollIntoView()`, which re-targets continuously during layout shifts. Handles `null`/`undefined` refs as a no-op and short-circuits in SSR environments.
17
+
18
+ ## Usage Example
19
+
20
+ ```typescript
21
+ import { scrollElementIntoView } from './scroll-into-view'
22
+
23
+ // Basic — scroll a ref to top, accounting for a 96px sticky header
24
+ scrollElementIntoView(cardRef.current, { headerOffset: 96 })
25
+
26
+ // Instant jump on deep-link land
27
+ scrollElementIntoView(anchorRef.current, {
28
+ headerOffset: 96,
29
+ behavior: 'instant',
30
+ })
31
+
32
+ // Pre-computed layout-shift adjustment (e.g. HelpCenterCard accordion)
33
+ // Row A (above target) collapses simultaneously — shift target up by A's height
34
+ scrollElementIntoView(rowBRef.current, {
35
+ headerOffset: 96,
36
+ adjustTargetY: (raw) => raw - getAboveDrawerHeight(),
37
+ })
38
+ ```
39
+
40
+ > **Why not `element.scrollIntoView()`?** That API re-targets continuously as the page reflows during the animation, causing visible jitter when sibling content is also moving. Pre-computing a fixed pixel value lets the browser commit to a clean, uninterrupted animation.
@@ -0,0 +1,53 @@
1
+ <!-- source-hash: 4129d05ad3798983504dba26d6153a8c -->
2
+ Maps RAG table IDs to their display icons, human-readable labels, and document type lookups for the OpenFrame chat source chip system. Server-safe with no client-only imports.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `SOURCE_ICON_NAMES` | `Record<string, string>` | Maps `RagTableConfig.id` → icon name string (resolved to React components via `icon-registry.ts`) |
9
+ | `SOURCE_LABELS_BY_TABLE` | `Record<string, string>` | Maps `RagTableConfig.id` → human-readable display label used in chat source chips |
10
+ | `DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID` | `Record<string, string>` | Reverse maps LLM-emitted `documentType` strings → `RagTableConfig.id` |
11
+ | `getSourceIconName()` | Function | Safe lookup returning `undefined` for unknown table IDs |
12
+ | `getSourceLabel()` | Function | Lookup with fallback to raw table slug when no label is registered |
13
+ | `defaultTableIdForDocumentType()` | Function | Default resolver for `useEmbeddedChat` when no custom callback is provided; returns `null` for unknown types |
14
+
15
+ ## Usage Example
16
+
17
+ ```typescript
18
+ import {
19
+ getSourceIconName,
20
+ getSourceLabel,
21
+ defaultTableIdForDocumentType,
22
+ } from '@/utils/source-icons'
23
+
24
+ // Resolve icon name for a known RAG table
25
+ const iconName = getSourceIconName('github-commits')
26
+ // → 'github'
27
+
28
+ // Get display label for a chip strip
29
+ const label = getSourceLabel('hubspot-tickets-anon')
30
+ // → 'Known Issues'
31
+
32
+ // Map a documentType emitted by the LLM to its table ID
33
+ const tableId = defaultTableIdForDocumentType('slack_message')
34
+ // → 'slack-messages'
35
+
36
+ // Graceful handling of unknown types
37
+ const unknown = defaultTableIdForDocumentType('custom_type')
38
+ // → null
39
+ ```
40
+
41
+ ## Supported Source Categories
42
+
43
+ | Category | Tables Covered |
44
+ |----------|---------------|
45
+ | **Docs** | `openframe-docs`, `data-room-docs` |
46
+ | **CMS / Programs** | Blog posts, releases, case studies, webinars, events, podcasts, interviews |
47
+ | **Financials** | KPIs, cap table, P&L, balance sheet, cash flow, investor updates |
48
+ | **ClickUp** | Roadmap, delivery, internal tasks |
49
+ | **GitHub** | Commits, PRs, PR reviews (public + internal variants) |
50
+ | **HubSpot** | Tickets (full, anon, self) |
51
+ | **Communications** | Slack messages |
52
+
53
+ > **Design note:** Icon names are intentionally decoupled from React components — the resolver (`icon-registry.ts`) stays client-only while this file remains server-safe, allowing hub-side RAG mappers and chat route handlers to call these utilities directly.
@@ -0,0 +1,46 @@
1
+ <!-- source-hash: ca8aad98b81a1dbccc525ac143c34ff1 -->
2
+ Shared decoder for the `decision_resolved` leading frame emitted by the `confirm-tool` SSE route. Parses the first NUL-delimited JSON chunk from the stream, drains remaining bytes to avoid half-closed socket hangs, and returns a typed `DecisionResolvedFrame`.
3
+
4
+ ## Key Components
5
+
6
+ ### `DecisionResolvedFrame` (interface)
7
+ Typed shape of the leading SSE frame returned by `confirm-tool/route.ts`. Key fields:
8
+
9
+ | Field | Type | Description |
10
+ |---|---|---|
11
+ | `kind` | `'decision_resolved'` | Frame discriminator |
12
+ | `ok` | `boolean` | Whether the operation succeeded |
13
+ | `action` | `'approved' \| 'rejected'` | Tool confirmation outcome |
14
+ | `willAutoContinue` | `boolean?` | Auto-continue flag post-approval |
15
+ | `result` | `object?` | Approve-path envelope; `mirror_synced: false` means HubSpot succeeded but local mirror lagged — callers should optimistic-render and schedule a delayed refetch |
16
+ | `card` | `object?` | UI card metadata |
17
+ | `receiptText` | `string?` | Human-readable receipt |
18
+
19
+ ### `readLeadingDecisionFrame(response)` (async function)
20
+ Reads and decodes the first `decision_resolved` frame from a `confirm-tool` SSE `Response`. Drains the full stream before resolving. Throws if the body is empty, the first frame is not `decision_resolved`, or the leading JSON is malformed.
21
+
22
+ ### `normalizeDecisionFrame(obj)` (internal)
23
+ Safely casts a raw parsed object into a `DecisionResolvedFrame`, applying defaults and conditional spreads for optional fields.
24
+
25
+ ## Usage Example
26
+
27
+ ```typescript
28
+ const response = await fetch('/api/confirm-tool', {
29
+ method: 'POST',
30
+ body: JSON.stringify({ proposalId: 'prop_123' }),
31
+ })
32
+
33
+ const frame = await readLeadingDecisionFrame(response)
34
+
35
+ if (!frame.ok || frame.action === 'rejected') {
36
+ console.warn('Tool rejected:', frame.receiptText)
37
+ return
38
+ }
39
+
40
+ if (frame.result?.mirror_synced === false) {
41
+ // HubSpot succeeded but mirror lagged — optimistic render + refetch
42
+ scheduleDelayedRefetch(frame.result.ticket_id)
43
+ }
44
+ ```
45
+
46
+ > **Protocol note:** The tickets-UI path sends `messages: []`, making the stream a single `decision_resolved` frame followed by EOF. The `\x1E` record-separator sentinel (phase-2 text body) is structurally unreachable in this path — its presence before `\0` is treated as a protocol violation and throws.