@flamingo-stack/openframe-frontend-core 0.0.213 → 0.0.214

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 (745) hide show
  1. package/dist/{chunk-3JWIJJ44.js → chunk-5OWDOFKK.js} +2 -2
  2. package/dist/{chunk-IK2X5YJU.js → chunk-HWY35EAK.js} +2 -2
  3. package/dist/{chunk-OTKJASSX.cjs → chunk-IZL2KEH6.cjs} +24 -24
  4. package/dist/{chunk-OTKJASSX.cjs.map → chunk-IZL2KEH6.cjs.map} +1 -1
  5. package/dist/{chunk-35XIT2CF.cjs → chunk-KDNGUYZM.cjs} +17 -17
  6. package/dist/{chunk-35XIT2CF.cjs.map → chunk-KDNGUYZM.cjs.map} +1 -1
  7. package/dist/{chunk-ZTJVRSN5.js → chunk-UKND27XC.js} +2 -2
  8. package/dist/chunk-UKND27XC.js.map +1 -0
  9. package/dist/{chunk-ZDF6F7ED.cjs → chunk-YZUUFTIK.cjs} +2 -2
  10. package/dist/chunk-YZUUFTIK.cjs.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/providers/.theme-provider.md +52 -0
  421. package/src/components/shared/delivery/.delivery-lists.md +39 -0
  422. package/src/components/shared/delivery/.delivery-row.md +41 -0
  423. package/src/components/shared/delivery/.delivery-table.md +41 -0
  424. package/src/components/shared/delivery/.index.md +38 -0
  425. package/src/components/shared/dev-section/.dev-card-row.md +60 -0
  426. package/src/components/shared/dev-section/.dev-section-page.md +48 -0
  427. package/src/components/shared/dev-section/.dev-section-view.md +43 -0
  428. package/src/components/shared/dev-section/.index.md +38 -0
  429. package/src/components/shared/legal-document/.index.md +40 -0
  430. package/src/components/shared/legal-document/.legal-document-page.md +50 -0
  431. package/src/components/shared/legal-document/.use-legal-docs.md +42 -0
  432. package/src/components/shared/onboarding/.onboarding-step-card.md +32 -31
  433. package/src/components/shared/onboarding/.onboarding-walkthrough.md +39 -43
  434. package/src/components/shared/product-release/.index.md +28 -30
  435. package/src/components/shared/product-release/.product-release-card-skeleton.md +28 -28
  436. package/src/components/shared/product-release/.product-release-card.md +45 -27
  437. package/src/components/shared/product-release/.release-detail-page.md +23 -24
  438. package/src/components/shared/roadmap/.index.md +37 -0
  439. package/src/components/shared/roadmap/.roadmap-grid-skeleton.md +39 -0
  440. package/src/components/shared/roadmap/.roadmap-grid.md +66 -0
  441. package/src/components/shared/roadmap/.use-roadmap-voting.md +68 -0
  442. package/src/components/tickets/.help-center-card.md +51 -0
  443. package/src/components/tickets/.help-center-create-form.md +38 -0
  444. package/src/components/tickets/.help-center-list.md +40 -0
  445. package/src/components/tickets/.index.md +65 -0
  446. package/src/components/tickets/.ticket-center.md +51 -0
  447. package/src/components/tickets/.ticket-detail-drawer.md +48 -0
  448. package/src/components/tickets/.ticket-linked-delivery-card.md +36 -0
  449. package/src/components/tickets/.ticket-open-form.md +50 -0
  450. package/src/components/tickets/.ticket-row.md +30 -0
  451. package/src/components/tickets/.types.md +57 -0
  452. package/src/components/tickets/hooks/.use-ticket-actions.md +77 -0
  453. package/src/components/tickets/hooks/.use-ticket-engagements.md +42 -0
  454. package/src/components/tickets/hooks/.use-tickets-list.md +54 -0
  455. package/src/components/ui/.actions-menu.md +66 -41
  456. package/src/components/ui/.alert-dialog.md +29 -26
  457. package/src/components/ui/.allowed-domains-input.md +29 -21
  458. package/src/components/ui/.assignee-dropdown.md +45 -0
  459. package/src/components/ui/.autocomplete.md +47 -41
  460. package/src/components/ui/.benefit-card.md +51 -36
  461. package/src/components/ui/.brand-association-card.md +30 -27
  462. package/src/components/ui/.breadcrumb.md +17 -15
  463. package/src/components/ui/.checkbox-block.md +39 -35
  464. package/src/components/ui/.checkbox-with-description.md +23 -16
  465. package/src/components/ui/.checkbox.md +31 -23
  466. package/src/components/ui/.circular-progress.md +49 -19
  467. package/src/components/ui/.content-loader.md +32 -20
  468. package/src/components/ui/.cursor-pagination.md +41 -52
  469. package/src/components/ui/.dashboard-info-card.md +33 -26
  470. package/src/components/ui/.date-picker.md +27 -25
  471. package/src/components/ui/.device-card-compact.md +28 -29
  472. package/src/components/ui/.device-card.md +27 -27
  473. package/src/components/ui/.dialog.md +25 -16
  474. package/src/components/ui/.drawer.md +86 -0
  475. package/src/components/ui/.dropdown-button.md +45 -0
  476. package/src/components/ui/.entity-image.md +46 -0
  477. package/src/components/ui/.error-state.md +41 -28
  478. package/src/components/ui/.feature-card.md +35 -31
  479. package/src/components/ui/.feature-list.md +48 -0
  480. package/src/components/ui/.field-wrapper.md +47 -0
  481. package/src/components/ui/.file-upload.md +42 -0
  482. package/src/components/ui/.filter-checkbox-item.md +43 -0
  483. package/src/components/ui/.filter-list.md +57 -0
  484. package/src/components/ui/.filter-modal.md +59 -0
  485. package/src/components/ui/.floating-tooltip.md +43 -26
  486. package/src/components/ui/.hidden-tags-popup.md +49 -0
  487. package/src/components/ui/.hover-dropdown.md +54 -0
  488. package/src/components/ui/.image-gallery-modal.md +41 -34
  489. package/src/components/ui/.image-uploader.md +53 -0
  490. package/src/components/ui/.index.md +40 -34
  491. package/src/components/ui/.info-card.md +31 -31
  492. package/src/components/ui/.info-row.md +31 -27
  493. package/src/components/ui/.input-trigger.md +44 -0
  494. package/src/components/ui/.input.md +37 -31
  495. package/src/components/ui/.markdown-editor.md +57 -0
  496. package/src/components/ui/.modal-v2.md +51 -0
  497. package/src/components/ui/.modal.md +32 -31
  498. package/src/components/ui/.more-actions-menu.md +45 -38
  499. package/src/components/ui/.organization-card.md +31 -37
  500. package/src/components/ui/.page-actions.md +44 -54
  501. package/src/components/ui/.phone-input.md +54 -0
  502. package/src/components/ui/.progress-bar.md +35 -27
  503. package/src/components/ui/.radio-group.md +39 -27
  504. package/src/components/ui/.release-changelog-section.md +34 -34
  505. package/src/components/ui/.search-input.md +48 -0
  506. package/src/components/ui/.select.md +54 -34
  507. package/src/components/ui/.service-card.md +42 -40
  508. package/src/components/ui/.sheet.md +27 -18
  509. package/src/components/ui/.simple-markdown-renderer.md +29 -31
  510. package/src/components/ui/.sort-column-item.md +42 -0
  511. package/src/components/ui/.square-avatar.md +34 -24
  512. package/src/components/ui/.status-badge.md +26 -38
  513. package/src/components/ui/.switch.md +22 -35
  514. package/src/components/ui/.tab-navigation.md +56 -53
  515. package/src/components/ui/.tab-selector.md +40 -0
  516. package/src/components/ui/.tag-key-value-filter.md +56 -0
  517. package/src/components/ui/.tag-search-input.md +53 -0
  518. package/src/components/ui/.tag.md +49 -31
  519. package/src/components/ui/.tags-manager.md +60 -0
  520. package/src/components/ui/.textarea.md +44 -34
  521. package/src/components/ui/.ticket-attachments-list.md +45 -0
  522. package/src/components/ui/.ticket-detail-section.md +29 -0
  523. package/src/components/ui/.ticket-info-section.md +56 -0
  524. package/src/components/ui/.ticket-note-card.md +53 -0
  525. package/src/components/ui/.ticket-notes-section.md +54 -0
  526. package/src/components/ui/.ticket-status-tag.md +49 -0
  527. package/src/components/ui/.title-content-block.md +25 -26
  528. package/src/components/ui/.toaster.md +40 -28
  529. package/src/components/ui/.tooltip.md +22 -11
  530. package/src/components/ui/.truncate-text.md +39 -0
  531. package/src/components/ui/button/.button-styles.md +35 -0
  532. package/src/components/ui/button/.button.md +53 -0
  533. package/src/components/ui/button/.split-button.md +48 -0
  534. package/src/components/ui/data-table/.data-table-body.md +48 -0
  535. package/src/components/ui/data-table/.data-table-column-filter.md +45 -0
  536. package/src/components/ui/data-table/.data-table-cursor-footer.md +45 -0
  537. package/src/components/ui/data-table/.data-table-empty.md +43 -0
  538. package/src/components/ui/data-table/.data-table-header.md +55 -0
  539. package/src/components/ui/data-table/.data-table-infinite-footer.md +44 -0
  540. package/src/components/ui/data-table/.data-table-row-count.md +43 -0
  541. package/src/components/ui/data-table/.data-table-row.md +47 -0
  542. package/src/components/ui/data-table/.data-table-skeleton.md +42 -0
  543. package/src/components/ui/data-table/.data-table.md +47 -0
  544. package/src/components/ui/data-table/.index.md +55 -0
  545. package/src/components/ui/data-table/.types.md +54 -0
  546. package/src/components/ui/data-table/.use-data-table.md +45 -0
  547. package/src/components/ui/data-table/.utils.md +38 -0
  548. package/src/components/ui/file-manager/.file-manager-action-bar.md +39 -30
  549. package/src/components/ui/file-manager/.file-manager-breadcrumb.md +29 -27
  550. package/src/components/ui/file-manager/.file-manager-context-menu.md +38 -42
  551. package/src/components/ui/file-manager/.file-manager-empty.md +26 -39
  552. package/src/components/ui/file-manager/.file-manager-table-row.md +33 -41
  553. package/src/components/ui/file-manager/.file-manager.md +35 -31
  554. package/src/components/ui/query-report-table/.index.md +43 -0
  555. package/src/components/ui/query-report-table/.query-report-table-header.md +36 -0
  556. package/src/components/ui/query-report-table/.query-report-table-row.md +40 -0
  557. package/src/components/ui/query-report-table/.query-report-table-skeleton.md +44 -0
  558. package/src/components/ui/query-report-table/.query-report-table.md +47 -0
  559. package/src/components/ui/query-report-table/.types.md +41 -0
  560. package/src/components/ui/query-report-table/.utils.md +35 -0
  561. package/src/components/ui/table/.index.md +27 -48
  562. package/src/components/ui/table/.table-cell.md +18 -27
  563. package/src/components/ui/table/.table-column-filter-dropdown.md +40 -0
  564. package/src/components/ui/table/.table-description-cell.md +24 -14
  565. package/src/components/ui/table/.table-empty-state.md +21 -22
  566. package/src/components/ui/table/.table-header.md +25 -40
  567. package/src/components/ui/table/.table-row.md +22 -40
  568. package/src/components/ui/table/.table-skeleton.md +33 -26
  569. package/src/components/ui/table/.table-timestamp-cell.md +26 -16
  570. package/src/components/ui/table/.table.md +39 -59
  571. package/src/components/ui/table/.types.md +44 -36
  572. package/src/components/ui/table/.utils.md +18 -20
  573. package/src/contexts/.chat-runtime-context.md +54 -0
  574. package/src/contexts/.endpoints-runtime-context.md +58 -0
  575. package/src/contexts/.index.md +53 -0
  576. package/src/contexts/.use-outer-or-default.md +36 -0
  577. package/src/embed-shims/.index.md +45 -0
  578. package/src/embed-shims/.next-dynamic.md +43 -0
  579. package/src/embed-shims/.next-image.md +45 -0
  580. package/src/embed-shims/.next-link.md +59 -0
  581. package/src/embed-shims/.next-navigation.md +59 -0
  582. package/src/hooks/.index.md +34 -29
  583. package/src/hooks/.use-access-code-integration.md +49 -0
  584. package/src/hooks/.use-contact-submission.md +37 -26
  585. package/src/hooks/.use-copy-to-clipboard.md +42 -0
  586. package/src/hooks/.use-near-viewport.md +44 -0
  587. package/src/hooks/.use-og-placeholder.md +51 -0
  588. package/src/hooks/.use-toast.md +36 -35
  589. package/src/hooks/state/.use-api-params.md +29 -46
  590. package/src/hooks/state/.use-query-params.md +37 -33
  591. package/src/hooks/ui/.index.md +33 -32
  592. package/src/hooks/ui/.use-auto-limit-tags.md +54 -0
  593. package/src/hooks/ui/.use-horizontal-scrollbar.md +74 -0
  594. package/src/hooks/ui/.use-image-edge-color.md +42 -0
  595. package/src/hooks/ui/.use-media-query.md +33 -25
  596. package/src/hooks/ui/.use-search.md +51 -0
  597. package/src/nats/.nats.md +49 -28
  598. package/src/schemas/.contact-schema.md +45 -0
  599. package/src/stories/.AnnouncementBar.stories.md +45 -0
  600. package/src/stories/.AppLayout.stories.md +20 -21
  601. package/src/stories/.Autocomplete.stories.md +48 -34
  602. package/src/stories/.Board.stories.md +35 -0
  603. package/src/stories/.Button.stories.md +36 -33
  604. package/src/stories/.ChatTicketList.stories.md +33 -0
  605. package/src/stories/.CheckboxBlock.stories.md +40 -28
  606. package/src/stories/.ContentLoader.stories.md +47 -0
  607. package/src/stories/.DashboardInfoCard.stories.md +57 -0
  608. package/src/stories/.DataTable.stories.md +41 -0
  609. package/src/stories/.DatePicker.stories.md +66 -52
  610. package/src/stories/.DeviceCard.stories.md +41 -40
  611. package/src/stories/.DeviceCardCompact.stories.md +41 -0
  612. package/src/stories/.DotsLoaderIcon.stories.md +36 -0
  613. package/src/stories/.Drawer.stories.md +58 -0
  614. package/src/stories/.EmbeddableChat.stories.md +41 -0
  615. package/src/stories/.FileManager.stories.md +41 -0
  616. package/src/stories/.FileManagerActionBar.stories.md +38 -0
  617. package/src/stories/.FileUpload.stories.md +53 -0
  618. package/src/stories/.FilterList.stories.md +54 -0
  619. package/src/stories/.FilterModal.stories.md +72 -0
  620. package/src/stories/.FiltersDropdown.stories.md +57 -0
  621. package/src/stories/.Header.stories.md +48 -0
  622. package/src/stories/.ImageUploader.stories.md +49 -0
  623. package/src/stories/.InfoCard.stories.md +54 -0
  624. package/src/stories/.Input.stories.md +48 -30
  625. package/src/stories/.ListPageLayout.stories.md +56 -43
  626. package/src/stories/.MingoOnboardingCard.stories.md +42 -0
  627. package/src/stories/.MingoOnboardingCardSkeleton.stories.md +35 -0
  628. package/src/stories/.Modal.stories.md +40 -31
  629. package/src/stories/.NotificationDrawer.stories.md +55 -0
  630. package/src/stories/.OnboardingStepCard.stories.md +41 -0
  631. package/src/stories/.OrganizationCard.stories.md +61 -0
  632. package/src/stories/.PageActions.stories.md +52 -49
  633. package/src/stories/.PageContainer.stories.md +41 -35
  634. package/src/stories/.PageLayout.stories.md +60 -0
  635. package/src/stories/.ParallaxImageShowcase.stories.md +49 -0
  636. package/src/stories/.PhoneInput.stories.md +53 -0
  637. package/src/stories/.QueryReportTable.stories.md +44 -0
  638. package/src/stories/.RadioGroup.stories.md +46 -0
  639. package/src/stories/.RadioGroupBlock.stories.md +45 -0
  640. package/src/stories/.Select.stories.md +29 -15
  641. package/src/stories/.SlashCommandSuggestions.stories.md +41 -0
  642. package/src/stories/.SplitButton.stories.md +62 -0
  643. package/src/stories/.TabNavigation.stories.md +47 -38
  644. package/src/stories/.TabSelector.stories.md +65 -0
  645. package/src/stories/.Table.stories.md +38 -46
  646. package/src/stories/.TableColumnFilterDropdown.stories.md +46 -0
  647. package/src/stories/.Tag.stories.md +43 -32
  648. package/src/stories/.TagKeyValueFilter.stories.md +44 -0
  649. package/src/stories/.TagSearchInput.stories.md +61 -0
  650. package/src/stories/.Textarea.stories.md +49 -26
  651. package/src/stories/.Theme.stories.md +41 -0
  652. package/src/stories/.TicketAttachmentsList.stories.md +39 -0
  653. package/src/stories/.TicketDescriptionViewer.stories.md +39 -0
  654. package/src/stories/.TicketInfoSection.stories.md +40 -0
  655. package/src/stories/.TicketKnowledgeBaseList.stories.md +36 -0
  656. package/src/stories/.TicketNotesSection.stories.md +50 -0
  657. package/src/stories/.Toaster.stories.md +40 -0
  658. package/src/stories/.ToolExecutionDisplay.stories.md +41 -0
  659. package/src/stories/.Tooltip.stories.md +41 -0
  660. package/src/stories/.UserSummary.stories.md +41 -0
  661. package/src/stories/.WaitlistForm.stories.md +42 -0
  662. package/src/stories/BlogCard.stories.tsx +61 -0
  663. package/src/stories/CampaignCardAdmin.stories.tsx +52 -0
  664. package/src/stories/CaseStudyCard.stories.tsx +42 -0
  665. package/src/stories/ChatContainer.stories.tsx +186 -0
  666. package/src/stories/ChatInlineVideoPill.stories.tsx +63 -0
  667. package/src/stories/CustomerInterviewCard.stories.tsx +42 -0
  668. package/src/stories/DataRoomDocCard.stories.tsx +52 -0
  669. package/src/stories/GenericEntityCard.stories.tsx +66 -0
  670. package/src/stories/GitHubActivityCard.stories.tsx +61 -0
  671. package/src/stories/HubspotTicketCard.stories.tsx +98 -0
  672. package/src/stories/InvestorUpdateCard.stories.tsx +42 -0
  673. package/src/stories/OnboardingGuideCard.stories.tsx +52 -0
  674. package/src/stories/ProductReleaseCard.stories.tsx +61 -0
  675. package/src/stories/ProgramCard.stories.tsx +79 -0
  676. package/src/stories/RoadmapCard.stories.tsx +75 -0
  677. package/src/stories/SlackMessageCard.stories.tsx +41 -0
  678. package/src/stories/__fixtures__/chat-cards.ts +604 -0
  679. package/src/types/.blog.md +53 -29
  680. package/src/types/.case-study.md +44 -27
  681. package/src/types/.customer-interview.md +66 -44
  682. package/src/types/.delivery.md +40 -0
  683. package/src/types/.employee.md +24 -30
  684. package/src/types/.index.md +33 -47
  685. package/src/types/.marketing.md +49 -44
  686. package/src/types/.navigation.md +33 -25
  687. package/src/types/.os.types.md +32 -27
  688. package/src/types/.platform.md +31 -28
  689. package/src/types/.product-release.md +65 -38
  690. package/src/types/.supabase.md +37 -29
  691. package/src/types/.team.md +41 -33
  692. package/src/types/.video-processing.md +54 -0
  693. package/src/types/.waitlist.md +40 -36
  694. package/src/utils/.access-code-client.md +37 -36
  695. package/src/utils/.cn.md +31 -23
  696. package/src/utils/.color-analysis.md +35 -0
  697. package/src/utils/.country-phone-utils.md +39 -0
  698. package/src/utils/.date-formatters.md +19 -18
  699. package/src/utils/.embed-authed-fetch.md +39 -0
  700. package/src/utils/.embed-proxy-auth-storage.md +38 -0
  701. package/src/utils/.fetch-priority.md +41 -0
  702. package/src/utils/.format.md +74 -25
  703. package/src/utils/.generic-domain-utils.md +42 -0
  704. package/src/utils/.image-proxy.md +59 -23
  705. package/src/utils/.index.md +42 -49
  706. package/src/utils/.local-storage-adapter.md +50 -0
  707. package/src/utils/.ods-color-utils.md +55 -38
  708. package/src/utils/.platform-config.md +45 -25
  709. package/src/utils/.scroll-into-view.md +40 -0
  710. package/src/utils/.source-icons.md +53 -0
  711. package/src/utils/.sse-decision-frame.md +46 -0
  712. package/src/utils/dev-sections/.index.md +34 -0
  713. package/src/utils/dev-sections/.openframe-dev-sections.md +49 -0
  714. package/dist/chunk-ZDF6F7ED.cjs.map +0 -1
  715. package/dist/chunk-ZTJVRSN5.js.map +0 -1
  716. package/src/components/.card.md +0 -42
  717. package/src/components/.contact-button.md +0 -30
  718. package/src/components/.drawer.md +0 -46
  719. package/src/components/.fixed-layout-container.md +0 -47
  720. package/src/components/.footer-waitlist-card.md +0 -29
  721. package/src/components/.join-waitlist-cta.md +0 -29
  722. package/src/components/.sheet.md +0 -47
  723. package/src/components/.sliding-panel.md +0 -48
  724. package/src/components/.tooltip.md +0 -48
  725. package/src/components/.use-mobile.md +0 -42
  726. package/src/components/.vendor-compact-card.md +0 -66
  727. package/src/components/.x-button.md +0 -42
  728. package/src/components/features/.github-repo-button.md +0 -40
  729. package/src/components/features/.organization-icon.md +0 -47
  730. package/src/components/features/.organization-selector.md +0 -45
  731. package/src/components/icons/.fleet-icon.md +0 -39
  732. package/src/components/icons/.meshcentral-icon.md +0 -35
  733. package/src/components/icons/.refresh-icon.md +0 -34
  734. package/src/components/icons/.tactical-icon.md +0 -35
  735. package/src/components/ui/.button.md +0 -69
  736. package/src/components/ui/.log-table-row.md +0 -47
  737. package/src/components/ui/.selectable-device-card.md +0 -46
  738. package/src/hooks/.api-hooks-stub.md +0 -45
  739. package/src/hooks/api/.use-product-releases.md +0 -53
  740. package/src/stories/.OrganizationSelector.stories.md +0 -42
  741. package/src/stories/.SelectableDeviceCard.stories.md +0 -30
  742. package/src/utils/.lite-youtube-embed-stub.md +0 -37
  743. package/src/utils/.lite-youtube-embed.md +0 -33
  744. /package/dist/{chunk-3JWIJJ44.js.map → chunk-5OWDOFKK.js.map} +0 -0
  745. /package/dist/{chunk-IK2X5YJU.js.map → chunk-HWY35EAK.js.map} +0 -0
@@ -0,0 +1,28 @@
1
+ <!-- source-hash: 32750bb1be67e7dcd8caa8e94a4aab6b -->
2
+ Resolves backend `SlashCommandSummary.iconName` strings to React icon components for empty-state onboarding cards, with a `FileIcon` fallback for unknown keys.
3
+
4
+ ## Key Components
5
+
6
+ - **`OnboardingIconComponent`** — Exported type describing the shared prop interface (`size`, `className`, `color`) for all registered icons.
7
+ - **`LogoOpenframeIcon`** — Internal wrapper around `OpenFrameLogo` that overrides size via `style` (bypasses hardcoded `width`/`height` attributes) and pins both path colors to `currentColor` for correct rendering on card surfaces.
8
+ - **`ONBOARDING_ICONS`** — Static registry mapping `iconName` strings to React components, organized into three tiers:
9
+ - **Production keys** — short identifiers matching the `/api/docs/commands` contract (e.g., `clickup`, `slack`, `github`, `openframe`).
10
+ - **Figma-canonical aliases** — long-form names (e.g., `clickup-logo-grey`, `rocket-02`) kept for Storybook fixtures and legacy feed entries.
11
+ - **Generic v2 fall-throughs** — brand-agnostic glyphs (e.g., `search`, `ticket`, `bug`) for slash commands without a dedicated brand icon.
12
+ - **`resolveOnboardingIcon(iconName)`** — Exported lookup function; returns the matched component or `FileIcon` when the key is unknown or `null`/`undefined`.
13
+
14
+ ## Usage Example
15
+
16
+ ```typescript
17
+ import { resolveOnboardingIcon } from './onboarding-icons'
18
+
19
+ function OnboardingCard({ iconName }: { iconName: string | null }) {
20
+ const Icon = resolveOnboardingIcon(iconName)
21
+
22
+ return (
23
+ <div className="onboarding-card">
24
+ <Icon size={24} className="text-ods-text-secondary" />
25
+ </div>
26
+ )
27
+ }
28
+ ```
@@ -1,46 +1,57 @@
1
- <!-- source-hash: 7e09c2236a5e011ba67fbc791276c8dc -->
2
- Utility for converting raw historical messages from GraphQL/API responses into structured, display-ready format for chat interfaces. Handles message grouping, approval workflows, tool executions, and error processing.
1
+ <!-- source-hash: abb044a6e8d133979dfd31cca4044960 -->
2
+ Transforms raw `HistoricalMessage` arrays from GraphQL/API responses into display-ready `ProcessedMessage` objects, handling message grouping, approval state resolution, and tool call rendering.
3
3
 
4
4
  ## Key Components
5
5
 
6
- ### Main Functions
7
- - **`processHistoricalMessages()`** - Primary function that converts historical messages into display format
8
- - **`processHistoricalMessagesWithErrors()`** - Enhanced version that includes error messages in correct chronological order
9
- - **`extractErrorMessages()`** - Extracts and formats error messages separately
10
- - **`processMessageData()`** - Processes individual message data items into segments
6
+ ### `processHistoricalMessages(messages, options)`
7
+ Main export. Iterates over historical messages, groups consecutive assistant turns into single display messages, and returns a `ProcessHistoricalMessagesResult` containing:
8
+ - `messages` fully rendered `ProcessedMessage[]` ready for UI consumption
9
+ - `escalatedApprovals` — approvals filtered out by `displayApprovalTypes` that the consumer handles separately (e.g., admin-side approvals in a client-facing view)
11
10
 
12
- ### Types
13
- - **`ProcessHistoricalMessagesResult`** - Return type containing processed messages and escalated approvals map
14
- - **`MessageProcessingOptions`** - Configuration options for message processing behavior
11
+ ### `processMessageData(data, accumulator, approvalStatuses, options, escalatedApprovals)`
12
+ Internal dispatcher. Routes each `MessageData` item by `MESSAGE_TYPE` to the correct accumulator method:
15
13
 
16
- ### Message Processing Features
17
- - Groups consecutive assistant messages into single display units
18
- - Handles approval request/result pairing and escalation
19
- - Processes tool execution states (executing/executed)
20
- - Filters messages by chat type when specified
21
- - Manages approval status tracking and display permissions
14
+ | Type | Action |
15
+ |---|---|
16
+ | `TEXT` | `appendText` |
17
+ | `THINKING` | `appendThinking` |
18
+ | `EXECUTING_TOOL` / `EXECUTED_TOOL` | `addToolExecution` |
19
+ | `APPROVAL_REQUEST` | Batch or legacy approval card, or escalate |
20
+ | `APPROVAL_RESULT` | Resolves pending/escalated approvals |
21
+
22
+ ### `flushAssistantMessage()` *(internal closure)*
23
+ Drains the segment accumulator into a single assistant `ProcessedMessage`. Uses the **last** message ID in the group as the React key for stable pagination behavior.
24
+
25
+ ### `ProcessHistoricalMessagesResult`
26
+ ```typescript
27
+ export interface ProcessHistoricalMessagesResult {
28
+ messages: ProcessedMessage[]
29
+ escalatedApprovals: Map<
30
+ string,
31
+ { command: string; explanation?: string; approvalType: string; toolCalls?: PendingToolCallData[] }
32
+ >
33
+ }
34
+ ```
22
35
 
23
36
  ## Usage Example
24
37
 
25
38
  ```typescript
26
39
  import { processHistoricalMessages } from './process-historical-messages'
27
40
 
28
- // Basic usage
29
- const result = processHistoricalMessages(rawMessages, {
30
- assistantName: 'Fae',
31
- assistantType: 'fae',
32
- chatTypeFilter: 'support'
33
- })
34
-
35
- // With approval handling
36
- const resultWithApprovals = processHistoricalMessages(rawMessages, {
37
- assistantName: 'Mingo',
38
- onApprove: (requestId) => handleApproval(requestId, true),
39
- onReject: (requestId) => handleApproval(requestId, false),
40
- approvalStatuses: { 'req-123': 'approved' },
41
- displayApprovalTypes: ['CLIENT', 'ADMIN']
42
- })
43
-
44
- console.log(result.messages) // Array of ProcessedMessage objects
45
- console.log(result.escalatedApprovals) // Map of escalated approval requests
46
- ```
41
+ const { messages, escalatedApprovals } = processHistoricalMessages(
42
+ rawMessages,
43
+ {
44
+ assistantName: 'Fae',
45
+ assistantType: 'fae',
46
+ approvalStatuses: { 'req-123': 'approved' },
47
+ displayApprovalTypes: ['CLIENT'],
48
+ batchApprovalsEnabled: true,
49
+ onApprove: (id) => handleApprove(id),
50
+ onReject: (id) => handleReject(id),
51
+ }
52
+ )
53
+
54
+ // escalatedApprovals contains ADMIN-type approvals for separate rendering
55
+ ```
56
+
57
+ > **Note on `batchApprovalsEnabled`:** Defaults to `true`. Pass `false` to unfold batch approval requests into individual legacy approval cards — useful when the consuming UI has not yet adopted the batch approval component.
@@ -0,0 +1,40 @@
1
+ <!-- source-hash: 39c5170915f66dc4b8399abe15eb750e -->
2
+ Provides wire-layer glue for the per-message `scrollAnchor` render hint, re-exporting the canonical constant and type alongside a wire-frame key and a validation parser so server and client code share a single source of truth.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Kind | Description |
7
+ |---|---|---|
8
+ | `SCROLL_ANCHOR` | Re-export (const) | Canonical registry of valid scroll anchor values (`TOP`, `BOTTOM`) |
9
+ | `ScrollAnchor` | Re-export (type) | TypeScript type derived from `SCROLL_ANCHOR` |
10
+ | `SCROLL_ANCHOR_WIRE_KEY` | `const string` | Literal key `"scrollAnchor"` used on the metadata leading frame wire format |
11
+ | `parseScrollAnchor` | `function` | Narrows an unknown wire value to `ScrollAnchor \| null` |
12
+
13
+ ## Usage Example
14
+
15
+ ```typescript
16
+ import {
17
+ SCROLL_ANCHOR,
18
+ SCROLL_ANCHOR_WIRE_KEY,
19
+ parseScrollAnchor,
20
+ } from './scroll-anchor'
21
+
22
+ // SERVER — emit into the metadata leading frame
23
+ const metadataFrame = {
24
+ ...(scrollAnchor ? { [SCROLL_ANCHOR_WIRE_KEY]: scrollAnchor } : {}),
25
+ }
26
+
27
+ // CLIENT — parse and validate incoming wire frame
28
+ const parsed = parseScrollAnchor(frame[SCROLL_ANCHOR_WIRE_KEY])
29
+
30
+ if (parsed !== null) {
31
+ // Safe to use: parsed is narrowed to ScrollAnchor
32
+ applyScrollAnchor(parsed) // e.g. SCROLL_ANCHOR.TOP | SCROLL_ANCHOR.BOTTOM
33
+ }
34
+ // null is silently dropped by metadata-merge logic
35
+ ```
36
+
37
+ ## Notes
38
+
39
+ - Malformed or unrecognised wire values return `null` and are filtered out by metadata-merge logic — they never overwrite a previously valid anchor value.
40
+ - Centralising `SCROLL_ANCHOR_WIRE_KEY` here means renaming the wire field requires a change in exactly one place.
@@ -0,0 +1,44 @@
1
+ <!-- source-hash: 445fe5d7652052e5502c2026ce010a3c -->
2
+ Portable wire-contract utilities and text helpers for slash-command dispatch, shared between the lib layer and hub UI chat surfaces.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `WireCommandOverride` | Interface | Client-safe wire shape for chat request bodies; excludes `systemPromptAddendum` to prevent Rule-5b injection |
9
+ | `CommandOverride` | Interface | Server-built dispatch result passed to `buildChatContext`; includes entity lookup, ID filter, browse scope, and presentation hint |
10
+ | `parseWireCommandOverride` | Function | Validates and parses raw wire input; enforces regex + length constraints on `entityIdFilter` and `retrievalQueryOverride` |
11
+ | `extractEntityIdFilter` | Function | Safely resolves `entityIdFilter` from a `CommandOverride`, with optional `tableId` narrowing |
12
+ | `sanitizeTitleForChat` | Function | Collapses control characters (`\r`, `\n`, `\t`) in free-text titles to single spaces |
13
+ | `formatSingularLookupInvocation` | Function | Builds a `/cmd "value"` string with two-pass backslash/quote escaping for safe re-parsing |
14
+ | `buildDiscussAddendum` | Function | Composes a server-trusted system-prompt addendum for the inline object-card "Discuss" action |
15
+
16
+ ## Usage Example
17
+
18
+ ```typescript
19
+ import {
20
+ parseWireCommandOverride,
21
+ extractEntityIdFilter,
22
+ formatSingularLookupInvocation,
23
+ buildDiscussAddendum,
24
+ } from './slash-dispatch-utils'
25
+
26
+ // Validate incoming wire payload
27
+ const override = parseWireCommandOverride(req.body.commandOverride)
28
+ // override is null if malformed; typed WireCommandOverride if valid
29
+
30
+ // Narrow to a specific table
31
+ const filter = extractEntityIdFilter(override, 'tickets')
32
+ if (filter) {
33
+ const { tableId, id } = filter // safe, both non-empty and tableId === 'tickets'
34
+ }
35
+
36
+ // Build a user-visible slash invocation
37
+ const msg = formatSingularLookupInvocation('ticket', 'Fix "login" bug\\path')
38
+ // → /ticket "Fix \"login\" bug\\path"
39
+
40
+ // Compose a Discuss addendum server-side (never from wire input)
41
+ const addendum = buildDiscussAddendum({ tableId: 'tickets', id: 'tkt-001' })
42
+ ```
43
+
44
+ > **Security note:** `systemPromptAddendum` is intentionally absent from `WireCommandOverride`. Addendum text is always composed server-side via `buildDiscussAddendum` from trusted values, preventing arbitrary prompt injection from the client.
@@ -0,0 +1,35 @@
1
+ <!-- source-hash: d57dc21ab260007a759f5621c538fd6e -->
2
+ Client-side re-export shim that proxies source-icons utilities from the server-safe implementation at `src/utils/source-icons.ts`, allowing chat-side consumers to import from the chat-utils barrel path without duplication.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Description |
7
+ |--------|-------------|
8
+ | `SOURCE_ICON_NAMES` | Static map of source names to their icon identifiers |
9
+ | `getSourceIconName` | Helper to resolve an icon name for a given source |
10
+ | `SOURCE_LABELS_BY_TABLE` | Map of table IDs to human-readable source labels |
11
+ | `getSourceLabel` | Helper to resolve a display label for a given table |
12
+ | `DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID` | Static map of document types to their default table IDs |
13
+ | `defaultTableIdForDocumentType` | Helper to resolve the default table ID for a document type |
14
+
15
+ ## Usage Example
16
+
17
+ ```typescript
18
+ // Chat-side consumers import via the chat-utils barrel
19
+ import {
20
+ getSourceIconName,
21
+ getSourceLabel,
22
+ defaultTableIdForDocumentType,
23
+ } from '@/chat-utils'
24
+
25
+ // Resolve a source icon for rendering
26
+ const iconName = getSourceIconName('zendesk') // e.g. "ZendeskIcon"
27
+
28
+ // Get a human-readable label for a table
29
+ const label = getSourceLabel('tickets') // e.g. "Zendesk Tickets"
30
+
31
+ // Resolve the default table for a document type
32
+ const tableId = defaultTableIdForDocumentType('article') // e.g. "kb_articles"
33
+ ```
34
+
35
+ > **Note:** The actual logic lives in `src/utils/source-icons.ts`, which carries no `'use client'` directive, keeping it safe for server-side hub code. This shim exists purely to preserve the chat-utils barrel import path.
@@ -0,0 +1,54 @@
1
+ <!-- source-hash: e259d6e958fa331a13973e9d2749ffbc -->
2
+ Resolves the "what does clicking this row do?" CTA contract for source rows across chat-adjacent surfaces (chips, inline cards, search results). Pure function — no DOM, no fetch, no side effects.
3
+
4
+ ## Key Components
5
+
6
+ ### Interfaces
7
+
8
+ | Interface | Purpose |
9
+ |---|---|
10
+ | `SourceRowInput` | Row data — `sourceRepo`, `documentType`, `id`, `title`, `externalUrl`, `path` |
11
+ | `SourceRowContext` | Host-injected context — `baseRoute`, `chipBasePlatform`, `currentPlatform`, `tableIdForDocumentType` |
12
+ | `SourceRowCTA` | Resolved contract — `icon`, `iconLabel`, `href`, `targetPlatform`, `askable`, `chatRef` |
13
+
14
+ ### Exports
15
+
16
+ - **`resolveSourceRowCTA(row, ctx)`** — Primary resolver. Returns the full CTA contract for a row. Handles icon resolution, URL safety (`safeHref`), path sanitization, and Ask drill-in viability.
17
+ - **`resolveSourceIcon(input, ctx)`** — Lightweight helper for surfaces that only need the icon + label (inline cards, search dropdown). Accepts `{ sourceRepo, documentType }` or a bare `string` (treated as `documentType`) for backward compatibility.
18
+
19
+ ### Internal Helpers
20
+
21
+ - **`sanitizePath(path)`** — Strips non-alphanumeric characters except `/`, `-`, `.`, `_` to prevent path traversal or query injection.
22
+ - **`shouldFallbackToPathNav(row)`** — Limits in-app path fallback to `markdown` and `data_room_doc` document types only.
23
+ - **`pickSourceIcon(sourceRepo, documentType)`** — Maps `sourceRepo` → icon name → React component via `SOURCE_ICON_NAMES` + `ICON_REGISTRY`; falls back to `FileText`.
24
+
25
+ ## Usage Example
26
+
27
+ ```typescript
28
+ import { resolveSourceRowCTA, resolveSourceIcon } from './source-row-cta'
29
+
30
+ // Full CTA resolution for a chip or search result
31
+ const cta = resolveSourceRowCTA(
32
+ {
33
+ sourceRepo: 'blog-posts',
34
+ documentType: 'blog_post',
35
+ id: 'post-42',
36
+ title: 'Series A Playbook',
37
+ externalUrl: 'https://example.com/posts/42',
38
+ targetPlatform: 'hub',
39
+ },
40
+ {
41
+ baseRoute: '/knowledge-base',
42
+ currentPlatform: 'hub',
43
+ tableIdForDocumentType: (type) => type === 'blog_post' ? 'blog-posts' : null,
44
+ },
45
+ )
46
+ // cta.href → 'https://example.com/posts/42' (safeHref-validated)
47
+ // cta.askable → true
48
+ // cta.chatRef → { type: 'blog_post', sourceRepo: 'blog-posts', id: 'post-42', ... }
49
+
50
+ // Icon-only resolution for an inline card tracking strip
51
+ const { Icon, label } = resolveSourceIcon({ documentType: 'cap_table' }, { tableIdForDocumentType })
52
+ ```
53
+
54
+ > `href` is always `safeHref()`-sanitized — a hostile RAG row cannot inject `javascript:` or `data:` URIs into the DOM. Ask drill-in (`askable`) requires both a non-empty `id` and a `documentType`.
@@ -0,0 +1,42 @@
1
+ <!-- source-hash: 6aecca2e05a8c612241168939fffcf70 -->
2
+ Utility helpers for resolving, formatting, and rendering tool call data — titles, argument values, and execution results — used across approval and execution UI cards.
3
+
4
+ ## Key Components
5
+
6
+ ### Constants
7
+ - **`COMMAND_BODY_ARG_KEYS`** — Ordered list of argument keys (`command`, `query`, `script`, `scriptContent`, `code`) checked when resolving a tool call's display title.
8
+
9
+ ### Functions
10
+
11
+ | Function | Description |
12
+ |---|---|
13
+ | `getToolCallTitle(opts)` | Resolves a human-readable title from args, title, or name — shape-agnostic for both approval and execution cards. |
14
+ | `getCommandText(call)` | Thin adapter over `getToolCallTitle` for `PendingToolCallData`. |
15
+ | `expandedJsonStringify(value)` | Pretty-prints JSON with real newlines for multi-line strings instead of escaped `\n` sequences. |
16
+ | `formatToolArgValue(value)` | Determines inline vs. block rendering for a single tool argument value. |
17
+ | `formatToolResult(value)` | Determines inline vs. block rendering for a tool execution result, stripping markdown code fences if present. |
18
+
19
+ ### Types
20
+ - **`FormattedArgValue`** — Discriminated union: `{ kind: 'inline'; text: string }` or `{ kind: 'block'; text: string; language: 'json' | 'text' }`.
21
+
22
+ ## Usage Example
23
+
24
+ ```typescript
25
+ import {
26
+ getCommandText,
27
+ formatToolArgValue,
28
+ formatToolResult,
29
+ } from './tool-call-helpers'
30
+
31
+ // Resolve display title from a pending tool call
32
+ const title = getCommandText(pendingCall)
33
+ // → e.g. "Get-Process | Where-Object CPU -gt 50"
34
+
35
+ // Render an argument value
36
+ const rendered = formatToolArgValue({ host: 'server-01', port: 22 })
37
+ // → { kind: 'block', text: '{\n "host": "server-01",\n "port": 22\n}', language: 'json' }
38
+
39
+ // Render a tool execution result (strips fences, detects JSON)
40
+ const result = formatToolResult('```json\n{"status":"ok"}\n```')
41
+ // → { kind: 'block', text: '{\n "status": "ok"\n}', language: 'json' }
42
+ ```
@@ -0,0 +1,43 @@
1
+ <!-- source-hash: e6e63274e2215026ef420402aa7a9e8f -->
2
+ A self-contained, reusable contact form component that supports both standard contact submission and custom ticket-creation flows via configurable props. It handles field visibility toggling, attachment staging, Zod validation, and dual submit paths (built-in API vs. caller-provided handler).
3
+
4
+ ## Key Components
5
+
6
+ **Exported Types**
7
+ - `ContactFormHideableField` — Union type of the six fields that can be suppressed from the UI (`name`, `email`, `companySize`, `referralSource`, `helpCategory`, `message`)
8
+ - `ContactFormProps` — Full prop interface covering attribution, pre-fill, layout, submission, and slot customization
9
+
10
+ **Main Export**
11
+ - `ContactForm` — The primary form component
12
+
13
+ **Internal Hooks Used**
14
+ - `useForm` (react-hook-form) + `zodResolver` against `ContactSchema`
15
+ - `useContactSubmission` — built-in `/api/contact` submit path with toast + redirect
16
+ - `useChatAttachments` — file staging shared with the chat composer
17
+ - `useState` — tracks in-flight state for the custom submit path
18
+
19
+ ## Usage Example
20
+
21
+ ```typescript
22
+ // Standard contact page — built-in submit flow
23
+ <ContactForm
24
+ userId={user?.id}
25
+ helpCategoryOptions={appConfig.contact.contactReasons}
26
+ rdtCid={getStoredRedditClickId()}
27
+ onSubmitSuccess={clearStoredRedditClickId}
28
+ />
29
+
30
+ // Ticket creation — custom submit, hidden fields, extra Subject input
31
+ <ContactForm
32
+ hideFields={['name', 'email', 'companySize', 'referralSource', 'helpCategory']}
33
+ defaultValues={{ name: user.name, email: user.email, helpCategory: 'Support' }}
34
+ attachmentsEnabled
35
+ extraTopField={<SubjectInput value={subject} onChange={setSubject} />}
36
+ submitLabel="Open ticket"
37
+ onCustomSubmit={async (data, attachments) => {
38
+ await actions.submitTicket({ ...data, subject, attachments })
39
+ }}
40
+ />
41
+ ```
42
+
43
+ > **Note:** When hiding `name`, `email`, or `helpCategory`, you **must** supply their values via `defaultValues` — Zod still validates them even when the fields are not rendered. Hidden `<input type="hidden">` elements ensure react-hook-form includes them in the submit payload.
@@ -0,0 +1,27 @@
1
+ <!-- source-hash: 29826720baf088c1409fbd30046713a4 -->
2
+ Re-exports the `ContactForm` component along with its associated TypeScript types from the `contact-form` module.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `ContactForm` | Component | The main contact form component |
9
+ | `ContactFormProps` | Type | Props interface for the `ContactForm` component |
10
+ | `ContactFormHideableField` | Type | Type representing fields that can be hidden in the form |
11
+
12
+ ## Usage Example
13
+
14
+ ```typescript
15
+ import {
16
+ ContactForm,
17
+ type ContactFormProps,
18
+ type ContactFormHideableField,
19
+ } from '@/components/contact-form'
20
+
21
+ const hiddenFields: ContactFormHideableField[] = ['phone', 'company']
22
+
23
+ const props: ContactFormProps = {
24
+ onSubmit: (data) => console.log(data),
25
+ hideFields: hiddenFields,
26
+ }
27
+ ```
@@ -1,53 +1,44 @@
1
- <!-- source-hash: b9899c71d148f2b5407351f417b4f050 -->
2
- A React component for managing arrays of entries with add/edit/remove functionality, supporting both immediate and deferred save modes.
1
+ <!-- source-hash: 9a66a790bb4e14efee7ac5e9ffc0cfb8 -->
2
+ A generic, reusable React component for managing arrays of objects with inline add, edit, remove, and multi-line paste support. Supports both immediate and deferred (save-gated) change modes.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **ArrayEntryManager** - Generic TypeScript component for managing array entries with configurable fields
7
- - **Props Interface** - Comprehensive configuration options including custom renderers, save modes, and styling
8
- - **State Management** - Handles both immediate updates and draft mode with dirty state tracking
9
- - **Paste Handling** - Smart multi-line paste support for bulk entry addition
6
+ ### `ArrayEntryManager<T>`
7
+ A generic client component that renders a labeled list of editable input entries backed by a typed array.
10
8
 
11
- ## Usage Example
12
-
13
- ```typescript
14
- import { ArrayEntryManager } from './array-entry-manager';
15
- import { Github } from 'lucide-react';
9
+ **Props:**
16
10
 
17
- interface Release {
18
- github_release_url: string;
19
- version?: string;
20
- }
11
+ | Prop | Type | Description |
12
+ |------|------|-------------|
13
+ | `title` | `ReactNode` | Section label; supports strings or badge components |
14
+ | `items` | `T[]` | Array of objects to manage |
15
+ | `onChange` | `(items: T[]) => void` | Called on change (immediate) or save (deferred) |
16
+ | `fieldKey` | `keyof T` | Object key to bind each input to |
17
+ | `requireSave` | `boolean` | When `true`, buffers edits locally until "Save" is clicked |
18
+ | `onDirtyChange` | `(isDirty: boolean) => void` | Notifies parent of unsaved changes |
19
+ | `renderLabel` | `(item: T, index: number) => ReactNode` | Custom renderer above each input |
20
+ | `isSaving` | `boolean` | Shows spinner on the save button during async operations |
21
21
 
22
- function ReleaseManager() {
23
- const [releases, setReleases] = useState<Release[]>([]);
24
- const [isSaving, setIsSaving] = useState(false);
22
+ **Behaviors:**
23
+ - **Draft mode** (`requireSave=true`): edits are buffered in local state; `onChange` fires only on explicit save
24
+ - **Immediate mode** (`requireSave=false`): every edit calls `onChange` directly
25
+ - **Multi-line paste**: pasting newline-separated values auto-creates multiple entries
26
+ - **Add at top**: new items are prepended for better UX
25
27
 
26
- const handleSave = async (items: Release[]) => {
27
- setIsSaving(true);
28
- // Save to API
29
- await saveReleases(items);
30
- setIsSaving(false);
31
- };
32
-
33
- return (
34
- <ArrayEntryManager
35
- title="GitHub Releases"
36
- items={releases}
37
- onChange={handleSave}
38
- fieldKey="github_release_url"
39
- placeholder="https://github.com/owner/repo/releases/tag/v1.0.0"
40
- emptyMessage="No releases configured"
41
- addButtonText="Add Release"
42
- icon={<Github className="h-5 w-5" />}
43
- requireSave={true}
44
- isSaving={isSaving}
45
- renderLabel={(item, index) =>
46
- item.version && <span className="badge">{item.version}</span>
47
- }
48
- />
49
- );
50
- }
51
- ```
28
+ ## Usage Example
52
29
 
53
- The component supports immediate onChange updates or deferred saves with dirty state tracking, multi-line paste for bulk additions, and custom label rendering for enhanced UX.
30
+ ```typescript
31
+ <ArrayEntryManager<{ github_release_url: string }>
32
+ title="Release URLs"
33
+ items={releaseUrls}
34
+ onChange={setReleaseUrls}
35
+ fieldKey="github_release_url"
36
+ placeholder="https://github.com/org/repo/releases/tag/v1.0.0"
37
+ emptyMessage="No release URLs configured."
38
+ addButtonText="Add URL"
39
+ saveButtonText="Save URLs"
40
+ requireSave={true}
41
+ onDirtyChange={(dirty) => setHasUnsavedChanges(dirty)}
42
+ isSaving={isSaving}
43
+ />
44
+ ```
@@ -1,12 +1,35 @@
1
- <!-- source-hash: 3644c900574f6a351d839d94b7f4446b -->
2
- A client-side React component for managing changelog entries with expandable/collapsible sections, providing an interface to add, edit, and remove changelog items with title and description fields.
1
+ <!-- source-hash: 2cb028936365715865c9571d3df0261e -->
2
+ A reusable React component for managing a dynamic list of changelog entries, supporting add, remove, expand/collapse, and optional per-entry visibility toggling.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **ChangelogManager**: Main component that renders a list of expandable changelog entries
7
- - **ChangelogManagerProps**: Interface defining component props including title, entries array, change handler, and optional expand control
8
- - **State Management**: Uses `useState` for tracking expanded items and `useEffect` for handling expand-all functionality
9
- - **Entry Operations**: Functions for adding, removing, and updating changelog entries with automatic expansion state management
6
+ ### `ChangelogManager` (default export)
7
+
8
+ A controlled list manager rendered as a collapsible accordion of `ChangelogEntry` items.
9
+
10
+ **Props (`ChangelogManagerProps`):**
11
+
12
+ | Prop | Type | Description |
13
+ |------|------|-------------|
14
+ | `title` | `string` | Section label displayed above the entry list |
15
+ | `entries` | `ChangelogEntry[]` | Controlled array of changelog entries |
16
+ | `onChange` | `(entries: ChangelogEntry[]) => void` | Callback fired on any mutation |
17
+ | `className` | `string?` | Optional wrapper class override |
18
+ | `expandAll` | `boolean?` | When `true`, expands all items (e.g. post-AI enrichment) |
19
+ | `showVisibilityToggle` | `boolean?` | Renders a per-entry `Eye`/`EyeOff` toggle; used by investor updates |
20
+
21
+ **Internal state:**
22
+ - `expandedIndices` — `Set<number>` tracking which accordion items are open
23
+
24
+ **Key functions:**
25
+
26
+ | Function | Behavior |
27
+ |----------|----------|
28
+ | `addEntry()` | Appends a blank entry and auto-expands it |
29
+ | `removeEntry(index)` | Removes entry and adjusts the expanded indices set |
30
+ | `updateEntry(index, field, value)` | Immutably updates a single field on an entry |
31
+ | `toggleExpanded(index)` | Toggles accordion open/close state |
32
+ | `toggleVisibility(index)` | Flips `visibility` between `'public'` and `'internal'` |
10
33
 
11
34
  ## Usage Example
12
35
 
@@ -14,20 +37,23 @@ A client-side React component for managing changelog entries with expandable/col
14
37
  import { ChangelogManager } from './changelog-manager';
15
38
  import type { ChangelogEntry } from '../../types/product-release';
16
39
 
17
- function ReleaseNotesForm() {
18
- const [features, setFeatures] = useState<ChangelogEntry[]>([]);
19
- const [expandFeatures, setExpandFeatures] = useState(false);
20
-
21
- return (
22
- <ChangelogManager
23
- title="New Features"
24
- entries={features}
25
- onChange={setFeatures}
26
- expandAll={expandFeatures}
27
- className="mb-6"
28
- />
29
- );
30
- }
40
+ const [entries, setEntries] = useState<ChangelogEntry[]>([]);
41
+
42
+ // Basic product release changelog
43
+ <ChangelogManager
44
+ title="What's New"
45
+ entries={entries}
46
+ onChange={setEntries}
47
+ />
48
+
49
+ // Investor update with visibility control + auto-expand after AI fill
50
+ <ChangelogManager
51
+ title="Highlights"
52
+ entries={entries}
53
+ onChange={setEntries}
54
+ showVisibilityToggle
55
+ expandAll={aiEnrichmentComplete}
56
+ />
31
57
  ```
32
58
 
33
- The component provides a clean interface for managing changelog sections with collapsible entries, automatic expansion of new items, and responsive design with dark theme styling. Each entry includes title and description fields with validation indicators.
59
+ > **Note:** `showVisibilityToggle` is intended for investor update flows. Leave it unset for standard product release changelogs to preserve their default UX. New entries default to `visibility: 'public'` when the toggle is enabled.