@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
@@ -1,44 +1,54 @@
1
- <!-- source-hash: c0c15fc6a2db52816eb6102a785d7fa9 -->
2
- A customizable button component that displays as a selectable option with support for icons, images, descriptions, and tags. Used for creating interactive selection lists or option grids with visual feedback for selected states.
1
+ <!-- source-hash: e190543dcb8ddd78af0a45f332d3eefe -->
2
+ A selectable button component that supports icons, images, tags, and selected/disabled states, designed for use in option-selection UIs such as lists or grids.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **SelectButton** - Main component with `forwardRef` support for external ref management
7
- - **SelectButtonProps** - TypeScript interface defining all available props including styling and content options
8
- - **Conditional rendering** - Smart display logic for icons, images, descriptions, and tags based on screen size
6
+ ### `SelectButtonProps`
7
+ | Prop | Type | Description |
8
+ |------|------|-------------|
9
+ | `title` | `string` | Primary label text (required) |
10
+ | `description` | `string` | Optional subtitle, visible on `md+` screens |
11
+ | `selected` | `boolean` | Highlights the button with accent styling and shows a check icon |
12
+ | `disabled` | `boolean` | Disables interaction and reduces opacity |
13
+ | `icon` | `React.ReactNode` | Optional leading icon |
14
+ | `image` | `{ src, alt }` | Optional thumbnail image |
15
+ | `tag` | `string` | Optional badge label rendered via `Tag` |
16
+ | `tagVariant` | `TagProps['variant']` | Controls tag style, defaults to `"outline"` |
17
+ | `onClick` | `() => void` | Click handler |
18
+ | `className` | `string` | Additional CSS classes |
19
+
20
+ ### `SelectButton`
21
+ A `forwardRef` button with `role="option"` and `aria-selected`, suitable for accessible listbox patterns. Applies ODS design tokens for color, spacing, and focus states.
9
22
 
10
23
  ## Usage Example
11
24
 
12
25
  ```typescript
13
26
  import { SelectButton } from './select-button'
14
- import { UserIcon } from '../icons'
27
+ import { ServerIcon } from '../icons-v2-generated/...'
15
28
 
16
- // Basic usage
29
+ // Basic selectable option
17
30
  <SelectButton
18
- title="Premium Plan"
19
- description="Advanced features included"
20
- selected={selectedPlan === 'premium'}
21
- onClick={() => setSelectedPlan('premium')}
31
+ title="Standard Plan"
32
+ description="Up to 10 devices"
33
+ selected={selectedPlan === 'standard'}
34
+ onClick={() => setSelectedPlan('standard')}
22
35
  />
23
36
 
24
37
  // With icon and tag
25
38
  <SelectButton
26
- title="Team Workspace"
27
- description="Collaborate with your team"
28
- icon={<UserIcon />}
39
+ title="Enterprise Plan"
40
+ description="Unlimited devices"
41
+ icon={<ServerIcon />}
29
42
  tag="Popular"
30
- tagVariant="default"
31
- selected={workspace === 'team'}
32
- onClick={() => setWorkspace('team')}
43
+ tagVariant="solid"
44
+ selected={selectedPlan === 'enterprise'}
45
+ onClick={() => setSelectedPlan('enterprise')}
33
46
  />
34
47
 
35
- // With image
48
+ // With thumbnail image
36
49
  <SelectButton
37
- title="Custom Theme"
38
- image={{ src: "/theme-preview.jpg", alt: "Theme preview" }}
39
- disabled={!isPremium}
40
- onClick={handleThemeSelect}
50
+ title="Acme Corp"
51
+ image={{ src: '/logos/acme.png', alt: 'Acme Corp logo' }}
52
+ selected={true}
41
53
  />
42
- ```
43
-
44
- The component includes responsive design with different sizing for mobile/desktop, accessibility support with ARIA attributes, and visual states for hover, active, and selected interactions.
54
+ ```
@@ -1,54 +1,51 @@
1
- <!-- source-hash: 410b6e5a31286d450355a5354f7b013a -->
2
- This file provides a comprehensive SEO editor component with real-time social media preview functionality for managing meta tags, Open Graph data, and image uploads in content management workflows.
1
+ <!-- source-hash: e691658139dcf0e352222348aeae0a32 -->
2
+ Self-contained React component that combines SEO metadata editing fields with a live social media (Open Graph) card preview, used across blog posts, case studies, and product releases in the Flamingo/OpenFrame platform.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **SEOEditorPreview**: Main component for editing SEO meta tags with live preview
7
- - **SEOEditorPreviewProps**: TypeScript interface defining all props including SEO fields, change handlers, and AI confidence scores
8
- - **Image upload handling**: File upload with progress states and error handling
9
- - **Live preview**: Real-time Open Graph card preview showing how content appears on social media
10
- - **AI integration**: Support for displaying AI-generated content with confidence badges
6
+ ### `SEOEditorPreview` (default export)
7
+ The main component rendering a two-panel layout:
8
+ - **Editor fields** SEO title, description, keywords, and OG image upload
9
+ - **Live OG card preview** real-time social media card simulation
10
+
11
+ ### `SEOEditorPreviewProps` interface
12
+ | Prop | Type | Description |
13
+ |------|------|-------------|
14
+ | `seoTitle` / `seoDescription` / `seoKeywords` / `ogImageUrl` | `string` | Controlled SEO field values |
15
+ | `title` / `summary` / `featuredImage` | `string` | Auto-populate fallback sources |
16
+ | `onSeo*Change` / `onOgImageUrlChange` | `(value: string) => void` | Change handlers per field |
17
+ | `onOgImageUpload` | `(file: File) => Promise<string>` | Optional parent-provided upload handler |
18
+ | `aiConfidenceSeo*` | `number` (optional) | AI confidence scores shown via `ConfidenceBadge` |
19
+ | `domain` | `string` | Preview domain label (default: `'openmsp.ai'`) |
20
+ | `disabled` | `boolean` | Disables all inputs |
21
+
22
+ ### Internal State
23
+ - `imageError` — falls back to placeholder when OG image fails to load
24
+ - `isUploading` — shows `Loader2` spinner during file upload
25
+ - `fileInputRef` — ref to hidden `<input type="file">` for programmatic click
11
26
 
12
27
  ## Usage Example
13
28
 
14
29
  ```typescript
15
- import { SEOEditorPreview } from './seo-editor-preview';
16
-
17
- function BlogEditor() {
18
- const [seoData, setSeoData] = useState({
19
- seoTitle: '',
20
- seoDescription: '',
21
- seoKeywords: '',
22
- ogImageUrl: ''
23
- });
24
-
25
- const handleImageUpload = async (file: File) => {
26
- const formData = new FormData();
27
- formData.append('image', file);
28
- const response = await fetch('/api/upload', { method: 'POST', body: formData });
29
- const { url } = await response.json();
30
+ <SEOEditorPreview
31
+ seoTitle={post.seoTitle}
32
+ seoDescription={post.seoDescription}
33
+ seoKeywords={post.seoKeywords}
34
+ ogImageUrl={post.ogImageUrl}
35
+ title={post.title}
36
+ summary={post.summary}
37
+ featuredImage={post.featuredImage}
38
+ onSeoTitleChange={(v) => updatePost({ seoTitle: v })}
39
+ onSeoDescriptionChange={(v) => updatePost({ seoDescription: v })}
40
+ onSeoKeywordsChange={(v) => updatePost({ seoKeywords: v })}
41
+ onOgImageUrlChange={(v) => updatePost({ ogImageUrl: v })}
42
+ onOgImageUpload={async (file) => {
43
+ const { url } = await uploadAsset(file);
30
44
  return url;
31
- };
32
-
33
- return (
34
- <SEOEditorPreview
35
- seoTitle={seoData.seoTitle}
36
- seoDescription={seoData.seoDescription}
37
- seoKeywords={seoData.seoKeywords}
38
- ogImageUrl={seoData.ogImageUrl}
39
- title="Blog Post Title"
40
- summary="Blog post summary"
41
- featuredImage="/featured.jpg"
42
- onSeoTitleChange={(value) => setSeoData(prev => ({ ...prev, seoTitle: value }))}
43
- onSeoDescriptionChange={(value) => setSeoData(prev => ({ ...prev, seoDescription: value }))}
44
- onSeoKeywordsChange={(value) => setSeoData(prev => ({ ...prev, seoKeywords: value }))}
45
- onOgImageUrlChange={(value) => setSeoData(prev => ({ ...prev, ogImageUrl: value }))}
46
- onOgImageUpload={handleImageUpload}
47
- aiConfidenceSeoTitle={0.85}
48
- domain="example.com"
49
- />
50
- );
51
- }
45
+ }}
46
+ aiConfidenceSeoTitle={0.92}
47
+ domain="flamingo.run"
48
+ />
52
49
  ```
53
50
 
54
- The component automatically falls back to content fields (title, summary, featuredImage) when SEO fields are empty, displays AI confidence scores when available, and provides drag-and-drop image upload functionality with real-time preview updates.
51
+ > All SEO fields accept empty strings (never `undefined`). When a field is empty, the component automatically falls back to `title`, `summary`, or `featuredImage` props, showing an "Auto-populated" hint label beneath the input.
@@ -1,12 +1,25 @@
1
- <!-- source-hash: 0d462bb6c17817fbe23701be501c0223 -->
2
- A React component for managing social media links with platform selection, URL input, and dynamic icon rendering.
1
+ <!-- source-hash: d38fe303fe5fb74d67b5d888ec7ca267 -->
2
+ A client-side React component for managing a dynamic list of social media profile links, supporting add, update, and remove operations with platform-aware icons.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **SocialLinksManager**: Main component for adding, editing, and removing social media links
7
- - **SocialLink**: Interface defining platform, URL, and optional username fields
8
- - **SocialPlatform**: Interface for platform configuration with display names, icons, and URL patterns
9
- - **iconMap**: Static mapping of platform names to their corresponding icon components
6
+ ### Interfaces
7
+
8
+ | Interface | Description |
9
+ |---|---|
10
+ | `SocialLink` | Represents a single link entry with `platform`, `url`, and optional `username` |
11
+ | `SocialPlatform` | Describes a platform definition sourced from dynamic data (e.g., database), including `icon_name`, `url_pattern`, and `placeholder` |
12
+ | `SocialLinksManagerProps` | Component props: `links`, `onChange` callback, optional `platforms` array, and optional `className` |
13
+
14
+ ### `SocialLinksManager`
15
+
16
+ The primary exported component. Renders a list of social link rows, each with:
17
+ - A platform icon (resolved via `iconMap` using `icon_name` from `SocialPlatform` or falls back to `platform` string)
18
+ - A `Select` dropdown for choosing the platform
19
+ - An `Input` for the profile URL
20
+ - A delete button (`Trash2`) to remove the entry
21
+
22
+ Supported icon keys in `iconMap`: `linkedin`, `github`, `twitter`, `reddit`, `slack`, `whatsapp`, `website`, `youtube`, `instagram`, `facebook`, `discord`, `telegram`, `tiktok`.
10
23
 
11
24
  ## Usage Example
12
25
 
@@ -14,28 +27,21 @@ A React component for managing social media links with platform selection, URL i
14
27
  import { SocialLinksManager, SocialLink, SocialPlatform } from './social-links-manager';
15
28
 
16
29
  const platforms: SocialPlatform[] = [
17
- {
18
- id: '1',
19
- name: 'linkedin',
20
- display_name: 'LinkedIn',
21
- icon_name: 'linkedin',
22
- placeholder: 'LinkedIn profile URL',
23
- enabled: true
24
- }
30
+ { id: '1', name: 'linkedin', display_name: 'LinkedIn', icon_name: 'linkedin', enabled: true, placeholder: 'https://linkedin.com/in/...' },
31
+ { id: '2', name: 'github', display_name: 'GitHub', icon_name: 'github', enabled: true, placeholder: 'https://github.com/...' },
25
32
  ];
26
33
 
27
34
  function ProfileEditor() {
28
- const [socialLinks, setSocialLinks] = useState<SocialLink[]>([]);
35
+ const [links, setLinks] = useState<SocialLink[]>([]);
29
36
 
30
37
  return (
31
38
  <SocialLinksManager
32
- links={socialLinks}
33
- onChange={setSocialLinks}
39
+ links={links}
40
+ onChange={setLinks}
34
41
  platforms={platforms}
35
- className="max-w-2xl"
36
42
  />
37
43
  );
38
44
  }
39
45
  ```
40
46
 
41
- The component provides a user-friendly interface with platform dropdowns, URL inputs, icon previews, and remove buttons. It supports dynamic platform configuration and includes built-in icons for popular social media platforms.
47
+ > **Note:** `platforms` defaults to an empty array, so platform data should always be passed explicitly typically fetched from your database to keep icon and URL patterns in sync.
@@ -1,14 +1,32 @@
1
- <!-- source-hash: b3af358fc7532622afce87b502165a25 -->
2
- A customizable button component for promoting OpenFrame with multiple visual themes and an integrated beta status badge.
1
+ <!-- source-hash: 12ec98968857443cbefad0230bd2d335 -->
2
+ A client-side React button component that renders a branded "Start with OpenFrame" CTA button, supporting five visual modes with the OpenFrame logo icon and a "Beta" status badge.
3
3
 
4
4
  ## Key Components
5
5
 
6
- **StartWithOpenFrameButton** - Main React component with forwardRef support
7
- - **Props Interface**: `StartWithOpenFrameButtonProps` extending base ButtonProps
8
- - **Visual Modes**: 5 color schemes (outline, yellow, pink, purple, cyan)
9
- - **Size Options**: Small, medium, and large variants
10
- - **Icon Integration**: OpenFrameLogo with dynamic colors
11
- - **Status Badge**: Built-in "Beta" badge indicator
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `StartWithOpenFrameButton` | `React.ForwardRefExoticComponent` | Main button component with OpenFrame branding |
9
+ | `StartWithOpenFrameButtonProps` | `interface` | Extends `ButtonProps`, omitting `variant`, `size`, and `leftIcon` |
10
+
11
+ ### Props
12
+
13
+ | Prop | Type | Default | Description |
14
+ |------|------|---------|-------------|
15
+ | `mode` | `'outline' \| 'yellow' \| 'pink' \| 'purple' \| 'cyan'` | `'outline'` | Visual color mode |
16
+ | `buttonSize` | `'sm' \| 'md' \| 'lg'` | — | Maps to internal Button size tokens |
17
+ | `loading` | `boolean` | `false` | Shows loading state, hides the OpenFrame icon |
18
+ | `buttonBackgroundColor` | `string` | — | Custom background override (cyan mode only) |
19
+ | `buttonTextColor` | `string` | — | Custom text color override (cyan mode only) |
20
+ | `children` | `React.ReactNode` | `'Start Free Trial'` | Button label |
21
+
22
+ ### Mode Behavior
23
+
24
+ | Mode | Variant | Background Token |
25
+ |------|---------|-----------------|
26
+ | `outline` | `outline` | Default outline style |
27
+ | `yellow` | `accent` | `--ods-open-yellow-base` |
28
+ | `pink` / `purple` | `accent` | `--ods-flamingo-pink-base` |
29
+ | `cyan` | `accent` | `--ods-flamingo-cyan-base` |
12
30
 
13
31
  ## Usage Example
14
32
 
@@ -16,30 +34,20 @@ A customizable button component for promoting OpenFrame with multiple visual the
16
34
  import { StartWithOpenFrameButton } from './start-with-openframe-button';
17
35
 
18
36
  // Default outline mode
19
- <StartWithOpenFrameButton
20
- onClick={() => window.open('/openframe')}
21
- >
22
- Start Free Trial
23
- </StartWithOpenFrameButton>
37
+ <StartWithOpenFrameButton onClick={() => router.push('/signup')} />
24
38
 
25
- // Yellow primary mode with large size
26
- <StartWithOpenFrameButton
27
- mode="yellow"
28
- buttonSize="lg"
29
- onClick={handleStartTrial}
30
- >
31
- Get Started Now
39
+ // Yellow accent, large size
40
+ <StartWithOpenFrameButton mode="yellow" buttonSize="lg">
41
+ Get Started
32
42
  </StartWithOpenFrameButton>
33
43
 
34
- // Cyan mode with custom colors
35
- <StartWithOpenFrameButton
44
+ // Cyan with custom brand colors
45
+ <StartWithOpenFrameButton
36
46
  mode="cyan"
37
- buttonBackgroundColor="#00D4FF"
47
+ buttonBackgroundColor="#00BCD4"
38
48
  buttonTextColor="#000000"
39
- loading={isLoading}
40
- >
41
- Launch OpenFrame
42
- </StartWithOpenFrameButton>
43
- ```
49
+ />
44
50
 
45
- The component automatically adjusts icon colors based on the selected mode to maintain proper contrast and visual hierarchy. Each mode follows Flamingo's design system color tokens for consistent branding.
51
+ // Loading state
52
+ <StartWithOpenFrameButton loading={isSubmitting} />
53
+ ```
@@ -1,40 +1,56 @@
1
- <!-- source-hash: 4db0e02f86ff4b3306433ead043438a2 -->
2
- A reusable status filter component for admin dashboards that displays filter buttons with an optional item count.
1
+ <!-- source-hash: f987a6879214f07a120da4bd03335b15 -->
2
+ Reusable client-side status filter component that renders a row of toggle buttons for filtering content by status, following the admin dashboard pattern used across the Flamingo/OpenFrame platform.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **StatusFilterComponent**: Main React component that renders a horizontal row of status filter buttons
7
- - **StatusOption**: Interface defining the structure for filter options with value and label
8
- - **StatusFilterComponentProps**: Props interface supporting status selection, change handlers, options, and optional count display
6
+ ### Interfaces
9
7
 
10
- The component automatically handles the "All" filter option separately and applies the ODS design system styling with responsive typography.
8
+ | Interface | Description |
9
+ |-----------|-------------|
10
+ | `StatusOption` | Defines a filter option with `value` and `label` strings |
11
+ | `StatusFilterComponentProps` | Full props contract for the component |
12
+
13
+ ### Props
14
+
15
+ | Prop | Type | Default | Description |
16
+ |------|------|---------|-------------|
17
+ | `selectedStatus` | `string` | — | Currently active filter value |
18
+ | `onStatusChange` | `(status: string) => void` | — | Callback fired on filter selection |
19
+ | `statusOptions` | `StatusOption[]` | — | Array of filter options to render |
20
+ | `showCount` | `boolean` | `false` | Toggles item count display |
21
+ | `count` | `number` | `0` | Number shown when `showCount` is enabled |
22
+ | `className` | `string` | `''` | Additional CSS classes for the wrapper |
23
+
24
+ ### Exported
25
+
26
+ - `StatusFilterComponent` — named export, main component
27
+ - `StatusOption` — exported interface
28
+ - `StatusFilterComponentProps` — exported interface
11
29
 
12
30
  ## Usage Example
13
31
 
14
32
  ```typescript
15
33
  import { StatusFilterComponent, StatusOption } from './status-filter-component';
16
34
 
17
- const statusOptions: StatusOption[] = [
18
- { value: 'published', label: 'Published' },
19
- { value: 'draft', label: 'Draft' },
20
- { value: 'archived', label: 'Archived' }
35
+ const ticketStatusOptions: StatusOption[] = [
36
+ { value: 'open', label: 'Open' },
37
+ { value: 'in_progress', label: 'In Progress' },
38
+ { value: 'closed', label: 'Closed' },
21
39
  ];
22
40
 
23
- function BlogDashboard() {
24
- const [selectedStatus, setSelectedStatus] = useState('all');
25
- const [itemCount, setItemCount] = useState(42);
41
+ export function TicketDashboard() {
42
+ const [status, setStatus] = React.useState('all');
26
43
 
27
44
  return (
28
45
  <StatusFilterComponent
29
- selectedStatus={selectedStatus}
30
- onStatusChange={setSelectedStatus}
31
- statusOptions={statusOptions}
32
- showCount={true}
33
- count={itemCount}
34
- className="mb-6"
46
+ selectedStatus={status}
47
+ onStatusChange={setStatus}
48
+ statusOptions={ticketStatusOptions}
49
+ showCount
50
+ count={42}
35
51
  />
36
52
  );
37
53
  }
38
54
  ```
39
55
 
40
- The component uses the Filter icon from Lucide React and integrates with the ODS design system for consistent styling across admin interfaces.
56
+ > **Note:** The `'all'` option is always rendered as a dedicated button any `StatusOption` with `value: 'all'` in the input array is automatically excluded from the mapped list to prevent duplication.
@@ -1,45 +1,61 @@
1
- <!-- source-hash: 47cbe94daf59a2aa16dfaa405816a3d9 -->
2
- A comprehensive React component for selecting multiple tags with search functionality and visual chip display inside the input field.
1
+ <!-- source-hash: 0d6f9a8deca3671804c89abef2d0469f -->
2
+ A reusable React component for selecting and creating tags with search autocomplete, chip display, and tag limit enforcement.
3
3
 
4
4
  ## Key Components
5
5
 
6
- **TagsSelector** - Main component featuring:
7
- - Search autocomplete with dropdown suggestions
8
- - Selected tags displayed as removable chips inside the search input
9
- - Configurable tag limits (default 10)
10
- - Focus-triggered dropdown with all available tags
11
- - Real-time filtering based on search query
12
- - Disabled state support with visual feedback
6
+ ### `TagsSelector`
7
+ Main exported component that renders a search input with inline tag chips, an autocomplete dropdown, and a tag counter.
13
8
 
14
- **Interfaces**:
15
- - `Tag` - Defines tag structure with id, name, and slug
16
- - `TagsSelectorProps` - Component configuration including available tags, selection state, and UI options
9
+ **Props (`TagsSelectorProps`):**
10
+
11
+ | Prop | Type | Default | Description |
12
+ |------|------|---------|-------------|
13
+ | `availableTags` | `Tag[]` | — | Pool of tags to search from |
14
+ | `selectedTagIds` | `number[]` | — | Currently selected tag IDs |
15
+ | `onTagsChange` | `(tagIds: number[]) => void` | — | Callback when selection changes |
16
+ | `onCreateTag` | `(name: string) => Promise<Tag \| null>` | — | Optional async tag creation handler |
17
+ | `maxTags` | `number` | `10` | Maximum selectable tags |
18
+ | `allowCreate` | `boolean` | `true` | Enables the "Create tag" option |
19
+ | `disabled` | `boolean` | `false` | Disables all interactions |
20
+
21
+ ### Internal Helpers
22
+
23
+ - `handleTagAdd` — Adds a tag if not already selected and under the limit
24
+ - `handleTagRemove` — Removes a tag chip from selection
25
+ - `handleCreateTag` — Calls `onCreateTag`, auto-selects the result, manages loading state
26
+ - `getFilteredTagsForAutocomplete` — Filters available tags by search query, excluding already selected
27
+ - `tagExistsWithName` — Case-insensitive duplicate check before showing "Create" option
17
28
 
18
29
  ## Usage Example
19
30
 
20
31
  ```typescript
21
- import { TagsSelector } from './components/tags-selector';
32
+ import { TagsSelector } from './tags-selector';
22
33
 
23
- const availableTags = [
24
- { id: 1, name: 'React', slug: 'react' },
25
- { id: 2, name: 'TypeScript', slug: 'typescript' },
26
- { id: 3, name: 'Next.js', slug: 'nextjs' }
27
- ];
28
-
29
- function BlogEditor() {
34
+ function BlogPostForm() {
30
35
  const [selectedTagIds, setSelectedTagIds] = useState<number[]>([]);
31
36
 
37
+ const handleCreateTag = async (name: string) => {
38
+ const res = await fetch('/api/tags', {
39
+ method: 'POST',
40
+ body: JSON.stringify({ name }),
41
+ });
42
+ return res.json(); // { id, name, slug }
43
+ };
44
+
32
45
  return (
33
46
  <TagsSelector
34
- availableTags={availableTags}
47
+ availableTags={[
48
+ { id: 1, name: 'MSP', slug: 'msp' },
49
+ { id: 2, name: 'AI', slug: 'ai' },
50
+ ]}
35
51
  selectedTagIds={selectedTagIds}
36
52
  onTagsChange={setSelectedTagIds}
53
+ onCreateTag={handleCreateTag}
37
54
  maxTags={5}
38
- placeholder="Search and select tags..."
39
- className="w-full"
55
+ placeholder="Search tags..."
40
56
  />
41
57
  );
42
58
  }
43
59
  ```
44
60
 
45
- The component automatically handles tag addition/removal, search filtering, and displays a counter showing current selection against the maximum limit. Selected tags appear as yellow chips with remove buttons directly in the search input area.
61
+ > **Note:** The dropdown auto-opens on focus and supports keyboard creation pressing `Enter` while typing a new tag name triggers `handleCreateTag` when `allowCreate` is enabled.
@@ -0,0 +1,45 @@
1
+ <!-- source-hash: a9ac065f3da523be3fea0a878f95156f -->
2
+ Unified React component that combines the `AIEnrichSection` (trigger button + status) and `TranscriptSummaryEditor` (editable output fields) into a single cohesive UI for video transcription and summarization workflows.
3
+
4
+ ## Key Components
5
+
6
+ - **`TranscribeAndSummarizeCombinedSection`** — Default export; renders an `AIEnrichSection` followed by a `TranscriptSummaryEditor` in a vertical stack
7
+ - **`TranscribeAndSummarizeCombinedSectionProps`** — Full interface merging props from both child components, split into two logical groups via inline comments
8
+ - Automatically resolves `buttonLabel` to `"Generate"` or `"Regenerate"` based on the `hasResult` flag when no custom label is provided
9
+
10
+ ## Usage Example
11
+
12
+ ```typescript
13
+ import { TranscribeAndSummarizeCombinedSection } from './transcribe-and-summarize-combined-section';
14
+
15
+ <TranscribeAndSummarizeCombinedSection
16
+ // Trigger controls
17
+ onTranscribe={handleTranscribe}
18
+ isProcessing={isLoading}
19
+ canEnrich={!!videoFile}
20
+ requiredFields={[{ label: 'Video file', met: !!videoFile }]}
21
+ status={status}
22
+ statusMessage={statusMessage}
23
+ hasResult={!!transcript}
24
+ showCancel
25
+ onCancel={handleCancel}
26
+
27
+ // Editor content
28
+ videoSummary={summary}
29
+ onVideoSummaryChange={setSummary}
30
+ transcript={transcript}
31
+ onTranscriptChange={setTranscript}
32
+ isAIGenerated={isAIGenerated}
33
+ videoSummaryConfidence={0.92}
34
+ transcriptConfidence={0.88}
35
+ subtitles={srtContent}
36
+ onSubtitlesChange={setSrtContent}
37
+ hasSubtitles={hasSubtitles}
38
+ />
39
+ ```
40
+
41
+ ## Notes
42
+
43
+ - Used by both `CustomerInterview` and `ProductRelease` modals
44
+ - All text labels (`title`, `description`, `videoSummaryLabel`, etc.) are fully customizable with sensible defaults
45
+ - The `disabled` prop propagates only to `TranscriptSummaryEditor`, not to the enrich trigger button
@@ -0,0 +1,48 @@
1
+ <!-- source-hash: e9e7f82a90db0014d3b7c868be383461 -->
2
+ A reusable React wrapper around `AIEnrichSection` that provides a standardized UI for video transcription and summarization workflows across `CustomerInterview` and `ProductRelease` entities.
3
+
4
+ ## Key Components
5
+
6
+ ### `TranscribeSummarizeSection`
7
+ The primary export — a client-side React component that delegates rendering to `AIEnrichSection` with transcription-specific defaults.
8
+
9
+ ### `TranscribeSummarizeSectionProps`
10
+ Full TypeScript interface exposing all configurable props:
11
+
12
+ | Prop | Type | Default | Description |
13
+ |------|------|---------|-------------|
14
+ | `onTranscribe` | `() => void` | — | Triggers transcription processing |
15
+ | `isProcessing` | `boolean` | — | Controls loading state |
16
+ | `canEnrich` | `boolean` | — | Enables/disables the action button |
17
+ | `requiredFields` | `AIRequiredField[]` | — | Fields displayed as prerequisites |
18
+ | `hasResult` | `boolean` | `false` | Switches button label to "Regenerate" |
19
+ | `disabledMessage` | `string` | `"Upload a video first"` | Shown when button is disabled |
20
+ | `title` | `string` | `"Transcribe & Summarize"` | Section heading |
21
+ | `description` | `string` | `"Generate transcript..."` | Section subtext |
22
+ | `loadingLabel` | `string` | `"Processing..."` | Label during active processing |
23
+ | `showCancel` | `boolean` | `true` | Toggles cancel button visibility |
24
+
25
+ ## Usage Example
26
+
27
+ ```typescript
28
+ import { TranscribeSummarizeSection } from './transcribe-summarize-section';
29
+
30
+ function CustomerInterviewPanel() {
31
+ const [isProcessing, setIsProcessing] = React.useState(false);
32
+
33
+ return (
34
+ <TranscribeSummarizeSection
35
+ onTranscribe={() => setIsProcessing(true)}
36
+ isProcessing={isProcessing}
37
+ canEnrich={true}
38
+ requiredFields={[{ key: 'videoUrl', label: 'Video URL' }]}
39
+ hasResult={false}
40
+ onCancel={() => setIsProcessing(false)}
41
+ status="loading"
42
+ statusMessage="Transcribing video..."
43
+ />
44
+ );
45
+ }
46
+ ```
47
+
48
+ The button label automatically toggles between `"Generate"` and `"Regenerate"` based on the `hasResult` prop, or can be fully overridden via `buttonLabel`.
@@ -0,0 +1,53 @@
1
+ <!-- source-hash: 82679c7416bd1640d332a170504ba800 -->
2
+ A reusable React component that renders editable textarea fields for video summary, transcript, and optional SRT subtitles — with AI generation badges and confidence score indicators.
3
+
4
+ ## Key Components
5
+
6
+ ### `TranscriptSummaryEditor`
7
+ The default export. Renders up to three labeled textarea sections:
8
+
9
+ | Section | Shown When |
10
+ |---|---|
11
+ | **Video Summary** | Always |
12
+ | **Transcript** | Always |
13
+ | **Subtitles (SRT)** | `subtitles` content exists OR `onSubtitlesChange` is provided |
14
+
15
+ Each section supports:
16
+ - Customizable label, helper text, and placeholder
17
+ - Configurable minimum height
18
+ - `isAIGenerated` badge (Sparkles icon / CC icon for subtitles)
19
+ - `ConfidenceBadge` for AI confidence scores (video summary and transcript only)
20
+ - `disabled` state propagated to all textareas
21
+
22
+ ### `TranscriptSummaryEditorProps`
23
+ Full TypeScript interface with all configurable props — all optional except `onVideoSummaryChange` and `onTranscriptChange`.
24
+
25
+ ## Usage Example
26
+
27
+ ```typescript
28
+ import { TranscriptSummaryEditor } from './transcript-summary-editor';
29
+
30
+ function InterviewEditor() {
31
+ const [summary, setSummary] = useState('');
32
+ const [transcript, setTranscript] = useState('');
33
+ const [subtitles, setSubtitles] = useState('');
34
+
35
+ return (
36
+ <TranscriptSummaryEditor
37
+ videoSummary={summary}
38
+ onVideoSummaryChange={setSummary}
39
+ transcript={transcript}
40
+ onTranscriptChange={setTranscript}
41
+ isAIGenerated={true}
42
+ videoSummaryConfidence={87}
43
+ transcriptConfidence={92}
44
+ subtitles={subtitles}
45
+ onSubtitlesChange={setSubtitles}
46
+ videoSummaryMinHeight={250}
47
+ transcriptMinHeight={400}
48
+ />
49
+ );
50
+ }
51
+ ```
52
+
53
+ > Designed for use with `CustomerInterview` and `ProductRelease` entities in the Flamingo/OpenFrame platform, providing a consistent editing UI across entity types.