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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (746) hide show
  1. package/dist/{chunk-35XIT2CF.cjs → chunk-2G3NXF6J.cjs} +17 -17
  2. package/dist/{chunk-35XIT2CF.cjs.map → chunk-2G3NXF6J.cjs.map} +1 -1
  3. package/dist/{chunk-IK2X5YJU.js → chunk-7PCP7YQR.js} +2 -2
  4. package/dist/{chunk-ZDF6F7ED.cjs → chunk-D4MNFY67.cjs} +4 -3
  5. package/dist/chunk-D4MNFY67.cjs.map +1 -0
  6. package/dist/{chunk-OTKJASSX.cjs → chunk-NGFP4RVL.cjs} +24 -24
  7. package/dist/{chunk-OTKJASSX.cjs.map → chunk-NGFP4RVL.cjs.map} +1 -1
  8. package/dist/{chunk-3JWIJJ44.js → chunk-R6MLPU4A.js} +2 -2
  9. package/dist/{chunk-ZTJVRSN5.js → chunk-WQZP3JIZ.js} +4 -3
  10. package/dist/chunk-WQZP3JIZ.js.map +1 -0
  11. package/dist/components/chat/index.cjs +2 -2
  12. package/dist/components/chat/index.js +1 -1
  13. package/dist/components/contact/index.cjs +3 -3
  14. package/dist/components/contact/index.js +2 -2
  15. package/dist/components/features/index.cjs +2 -2
  16. package/dist/components/features/index.js +1 -1
  17. package/dist/components/index.cjs +49 -49
  18. package/dist/components/index.js +2 -2
  19. package/dist/components/navigation/index.cjs +2 -2
  20. package/dist/components/navigation/index.js +1 -1
  21. package/dist/components/tickets/index.cjs +61 -61
  22. package/dist/components/tickets/index.js +3 -3
  23. package/dist/components/ui/index.cjs +2 -2
  24. package/dist/components/ui/index.js +1 -1
  25. package/dist/index.cjs +2 -2
  26. package/dist/index.js +1 -1
  27. package/package.json +1 -1
  28. package/src/.index.md +36 -34
  29. package/src/components/.alert-dialog.md +27 -23
  30. package/src/components/.announcement-bar.md +26 -21
  31. package/src/components/.breadcrumb.md +19 -15
  32. package/src/components/.calendar.md +24 -19
  33. package/src/components/.categories-cart.md +29 -24
  34. package/src/components/.checkbox.md +23 -25
  35. package/src/components/.chevron-button.md +37 -32
  36. package/src/components/.comment-card.md +32 -62
  37. package/src/components/.dialog.md +26 -26
  38. package/src/components/.dynamic-skeleton.md +54 -57
  39. package/src/components/.empty-state.md +42 -51
  40. package/src/components/.faq-accordion.md +27 -21
  41. package/src/components/.filter-chip.md +41 -24
  42. package/src/components/.flamingo-logo.md +20 -23
  43. package/src/components/.footer-waitlist-button.md +29 -22
  44. package/src/components/.footer.md +32 -32
  45. package/src/components/.icons-block.md +27 -17
  46. package/src/components/.image-cropper.md +41 -32
  47. package/src/components/.index.md +33 -39
  48. package/src/components/.input.md +31 -35
  49. package/src/components/.logs-list.md +31 -20
  50. package/src/components/.media-carousel.md +35 -36
  51. package/src/components/.open-source-features.md +33 -16
  52. package/src/components/.pagination.md +52 -51
  53. package/src/components/.provider-button.md +21 -23
  54. package/src/components/.select.md +31 -20
  55. package/src/components/.sidebar.md +34 -24
  56. package/src/components/.smooth-accordion.md +29 -24
  57. package/src/components/.social-icon-row.md +36 -32
  58. package/src/components/.textarea.md +25 -31
  59. package/src/components/.tool-icon.md +24 -26
  60. package/src/components/.unified-filter-logic.md +37 -30
  61. package/src/components/.unified-pagination.md +23 -22
  62. package/src/components/.user-summary-stub.md +38 -22
  63. package/src/components/.vendor-display-button.md +25 -25
  64. package/src/components/.vendor-icon.md +33 -25
  65. package/src/components/.why-it-matters.md +28 -25
  66. package/src/components/chat/.approval-batch-message.md +51 -0
  67. package/src/components/chat/.approval-request-message.md +35 -34
  68. package/src/components/chat/.chat-attachment-bar.md +64 -0
  69. package/src/components/chat/.chat-container.md +36 -18
  70. package/src/components/chat/.chat-input.md +37 -20
  71. package/src/components/chat/.chat-message-enhanced.md +30 -49
  72. package/src/components/chat/.chat-message-list.md +45 -32
  73. package/src/components/chat/.chat-message-skeleton.md +26 -22
  74. package/src/components/chat/.chat-panel-context.md +52 -0
  75. package/src/components/chat/.chat-ref.types.md +42 -0
  76. package/src/components/chat/.chat-sidebar-skeleton.md +34 -25
  77. package/src/components/chat/.chat-sidebar.md +31 -26
  78. package/src/components/chat/.chat-ticket-list.md +39 -0
  79. package/src/components/chat/.context-compaction-display.md +36 -0
  80. package/src/components/chat/.cycling-phrase.md +52 -0
  81. package/src/components/chat/.embeddable-chat.md +48 -0
  82. package/src/components/chat/.expand-chevron.md +24 -0
  83. package/src/components/chat/.index.md +31 -35
  84. package/src/components/chat/.mingo-onboarding-card-skeleton.md +44 -0
  85. package/src/components/chat/.mingo-onboarding-card.md +62 -0
  86. package/src/components/chat/.model-display.md +32 -30
  87. package/src/components/chat/.nav-link-anchor-via-runtime.md +40 -0
  88. package/src/components/chat/.remark-card-links.md +38 -0
  89. package/src/components/chat/.slash-command-suggestions.md +47 -0
  90. package/src/components/chat/.source-action-button.md +48 -0
  91. package/src/components/chat/.thinking-display.md +42 -0
  92. package/src/components/chat/.tool-call-blocks.md +45 -0
  93. package/src/components/chat/.tool-execution-display.md +44 -36
  94. package/src/components/chat/chat-container.tsx +1 -1
  95. package/src/components/chat/entity-cards/.admin-content-card.md +43 -0
  96. package/src/components/chat/entity-cards/.block-card.md +47 -0
  97. package/src/components/chat/entity-cards/.blog-card.md +52 -0
  98. package/src/components/chat/entity-cards/.blog-image-placeholder.md +39 -0
  99. package/src/components/chat/entity-cards/.campaign-card-admin.md +47 -0
  100. package/src/components/chat/entity-cards/.case-study-card.md +58 -0
  101. package/src/components/chat/entity-cards/.chat-ticket-item.md +40 -0
  102. package/src/components/chat/entity-cards/.chat-video-entity-card.md +43 -0
  103. package/src/components/chat/entity-cards/.customer-interview-card.md +53 -0
  104. package/src/components/chat/entity-cards/.data-room-doc-card.md +47 -0
  105. package/src/components/chat/entity-cards/.dispatch.md +39 -0
  106. package/src/components/chat/entity-cards/.entity-author-card.md +51 -0
  107. package/src/components/chat/entity-cards/.generic-entity-card.md +62 -0
  108. package/src/components/chat/entity-cards/.github-activity-card.md +61 -0
  109. package/src/components/chat/entity-cards/.hubspot-ticket-card.md +53 -0
  110. package/src/components/chat/entity-cards/.index.md +66 -0
  111. package/src/components/chat/entity-cards/.investor-update-card.md +47 -0
  112. package/src/components/chat/entity-cards/.onboarding-guide-card.md +58 -0
  113. package/src/components/chat/entity-cards/.product-release-card-defaults.md +31 -0
  114. package/src/components/chat/entity-cards/.product-release-card.md +29 -0
  115. package/src/components/chat/entity-cards/.program-card-defaults.md +41 -0
  116. package/src/components/chat/entity-cards/.program-card.md +59 -0
  117. package/src/components/chat/entity-cards/.roadmap-card.md +46 -0
  118. package/src/components/chat/entity-cards/.roadmap-vote-button.md +52 -0
  119. package/src/components/chat/entity-cards/.slack-message-card.md +48 -0
  120. package/src/components/chat/entity-cards/.task-type-icon.md +47 -0
  121. package/src/components/chat/hooks/.index.md +36 -21
  122. package/src/components/chat/hooks/.use-chat-attachment-image-gallery.md +51 -0
  123. package/src/components/chat/hooks/.use-chat-attachments.md +48 -0
  124. package/src/components/chat/hooks/.use-chat-card-item.md +39 -0
  125. package/src/components/chat/hooks/.use-chat-identity.md +45 -0
  126. package/src/components/chat/hooks/.use-chat.md +58 -0
  127. package/src/components/chat/hooks/.use-chunk-catchup.md +46 -48
  128. package/src/components/chat/hooks/.use-close-on-navigation.md +44 -0
  129. package/src/components/chat/hooks/.use-collapsible.md +48 -0
  130. package/src/components/chat/hooks/.use-embedded-chat.md +32 -0
  131. package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +40 -0
  132. package/src/components/chat/hooks/.use-nats-chat-adapter.md +52 -0
  133. package/src/components/chat/hooks/.use-nats-dialog-subscription.md +49 -30
  134. package/src/components/chat/hooks/.use-proxied-image-url.md +40 -0
  135. package/src/components/chat/hooks/.use-realtime-chunk-processor.md +43 -40
  136. package/src/components/chat/hooks/.use-slash-commands.md +46 -0
  137. package/src/components/chat/hooks/.use-sse-chat-adapter.md +34 -0
  138. package/src/components/chat/hooks/.use-sse.md +60 -0
  139. package/src/components/chat/hooks/.use-unified-chat.md +57 -0
  140. package/src/components/chat/types/.api.types.md +52 -38
  141. package/src/components/chat/types/.chat.types.md +43 -34
  142. package/src/components/chat/types/.component.types.md +47 -48
  143. package/src/components/chat/types/.index.md +20 -27
  144. package/src/components/chat/types/.message.types.md +58 -48
  145. package/src/components/chat/types/.network.types.md +57 -31
  146. package/src/components/chat/types/.processing.types.md +49 -31
  147. package/src/components/chat/types/.unified-chat-state.types.md +41 -0
  148. package/src/components/chat/types/entities/.blog.md +43 -0
  149. package/src/components/chat/types/entities/.case-study.md +26 -0
  150. package/src/components/chat/types/entities/.content-ref.md +41 -0
  151. package/src/components/chat/types/entities/.customer-interview.md +28 -0
  152. package/src/components/chat/types/entities/.data-room-doc.md +36 -0
  153. package/src/components/chat/types/entities/.github-activity.md +43 -0
  154. package/src/components/chat/types/entities/.hubspot-ticket.md +53 -0
  155. package/src/components/chat/types/entities/.index.md +42 -0
  156. package/src/components/chat/types/entities/.investor-update.md +45 -0
  157. package/src/components/chat/types/entities/.onboarding-guide.md +50 -0
  158. package/src/components/chat/types/entities/.program-types.md +57 -0
  159. package/src/components/chat/types/entities/.roadmap-item.md +58 -0
  160. package/src/components/chat/types/entities/.slack-message.md +35 -0
  161. package/src/components/chat/utils/.agent-status-message.md +45 -0
  162. package/src/components/chat/utils/.auto-continuation-directive.md +58 -0
  163. package/src/components/chat/utils/.chat-attachment-markdown.md +54 -0
  164. package/src/components/chat/utils/.chat-authed-fetch.md +25 -0
  165. package/src/components/chat/utils/.chat-nav-resolution.md +46 -0
  166. package/src/components/chat/utils/.chat-proxy-auth-storage.md +38 -0
  167. package/src/components/chat/utils/.chip-action-class.md +34 -0
  168. package/src/components/chat/utils/.chip-styles.md +46 -0
  169. package/src/components/chat/utils/.chunk-parser.md +38 -28
  170. package/src/components/chat/utils/.clickup-task-type-utils.md +48 -0
  171. package/src/components/chat/utils/.compact-card-classes.md +62 -0
  172. package/src/components/chat/utils/.decide-new-tab.md +51 -0
  173. package/src/components/chat/utils/.external-app-urls.md +29 -0
  174. package/src/components/chat/utils/.extract-incomplete-message-state.md +25 -29
  175. package/src/components/chat/utils/.flatten-assistant-content.md +34 -0
  176. package/src/components/chat/utils/.icon-registry.md +46 -0
  177. package/src/components/chat/utils/.index.md +37 -32
  178. package/src/components/chat/utils/.is-cross-origin-url.md +35 -0
  179. package/src/components/chat/utils/.message-segment-accumulator.md +25 -34
  180. package/src/components/chat/utils/.nav-anchor-props.md +44 -0
  181. package/src/components/chat/utils/.nav-click-handler.md +47 -0
  182. package/src/components/chat/utils/.onboarding-icons.md +28 -0
  183. package/src/components/chat/utils/.process-historical-messages.md +46 -35
  184. package/src/components/chat/utils/.scroll-anchor.md +40 -0
  185. package/src/components/chat/utils/.slash-dispatch-utils.md +44 -0
  186. package/src/components/chat/utils/.source-icons.md +35 -0
  187. package/src/components/chat/utils/.source-row-cta.md +54 -0
  188. package/src/components/chat/utils/.tool-call-helpers.md +42 -0
  189. package/src/components/contact/.contact-form.md +43 -0
  190. package/src/components/contact/.index.md +27 -0
  191. package/src/components/features/.array-entry-manager.md +36 -45
  192. package/src/components/features/.changelog-manager.md +47 -21
  193. package/src/components/features/.changelog-sections-manager.md +21 -26
  194. package/src/components/features/.command-box.md +31 -28
  195. package/src/components/features/.entity-summary-editor.md +46 -0
  196. package/src/components/features/.entity-video-section.md +51 -0
  197. package/src/components/features/.figma-prototype-viewer.md +48 -29
  198. package/src/components/features/.filters-dropdown.md +33 -46
  199. package/src/components/features/.highlight-config-section.md +42 -0
  200. package/src/components/features/.highlight-generation-section.md +46 -0
  201. package/src/components/features/.highlight-video-combined-section.md +47 -0
  202. package/src/components/features/.highlight-video-preview.md +44 -0
  203. package/src/components/features/.highlight-video-section.md +47 -0
  204. package/src/components/features/.index.md +40 -66
  205. package/src/components/features/.media-gallery-manager.md +48 -38
  206. package/src/components/features/.more-about-button.md +22 -19
  207. package/src/components/features/.og-editor-preview.md +40 -36
  208. package/src/components/features/.parallax-image-showcase.md +33 -26
  209. package/src/components/features/.paths-display.md +42 -43
  210. package/src/components/features/.platform-badge.md +37 -36
  211. package/src/components/features/.platform-filter.md +23 -16
  212. package/src/components/features/.policy-configuration-panel.md +48 -56
  213. package/src/components/features/.provider-button.md +33 -36
  214. package/src/components/features/.push-button-selector.md +40 -29
  215. package/src/components/features/.release-media-manager.md +46 -31
  216. package/src/components/features/.section-selector.md +26 -31
  217. package/src/components/features/.select-button.md +35 -25
  218. package/src/components/features/.seo-editor-preview.md +41 -44
  219. package/src/components/features/.social-links-manager.md +25 -19
  220. package/src/components/features/.start-with-openframe-button.md +37 -29
  221. package/src/components/features/.status-filter-component.md +36 -20
  222. package/src/components/features/.tags-selector.md +40 -24
  223. package/src/components/features/.transcribe-and-summarize-combined-section.md +45 -0
  224. package/src/components/features/.transcribe-summarize-section.md +48 -0
  225. package/src/components/features/.transcript-summary-editor.md +53 -0
  226. package/src/components/features/.video-bites-display.md +46 -0
  227. package/src/components/features/.video-clips-section.md +41 -0
  228. package/src/components/features/.video-ratio-tabs.md +56 -0
  229. package/src/components/features/.video-source-selector.md +60 -0
  230. package/src/components/features/.video.md +44 -0
  231. package/src/components/features/.waitlist-form.md +60 -0
  232. package/src/components/features/ai-enrich/.AIEnrichButton.md +30 -27
  233. package/src/components/features/ai-enrich/.AIEnrichSection.md +46 -42
  234. package/src/components/features/board/.board-column-header.md +38 -0
  235. package/src/components/features/board/.board-column.md +43 -0
  236. package/src/components/features/board/.board.md +51 -0
  237. package/src/components/features/board/.color-utils.md +26 -0
  238. package/src/components/features/board/.index.md +56 -0
  239. package/src/components/features/board/.ticket-card-skeleton.md +38 -0
  240. package/src/components/features/board/.ticket-card.md +47 -0
  241. package/src/components/features/board/.types.md +45 -0
  242. package/src/components/features/board/.use-board-collapse.md +34 -0
  243. package/src/components/features/notifications/.index.md +57 -0
  244. package/src/components/features/notifications/.notification-drawer.md +34 -0
  245. package/src/components/features/notifications/.notification-tile.md +39 -0
  246. package/src/components/features/notifications/.notifications-context.md +73 -0
  247. package/src/components/features/notifications/.types.md +45 -0
  248. package/src/components/icons/.about-icon.md +20 -28
  249. package/src/components/icons/.ai-robot-icon.md +15 -17
  250. package/src/components/icons/.bash-icon.md +16 -23
  251. package/src/components/icons/.buildings-icon.md +10 -24
  252. package/src/components/icons/.capterra-icon.md +30 -26
  253. package/src/components/icons/.carta-icon.md +29 -0
  254. package/src/components/icons/.clickup-icon.md +26 -0
  255. package/src/components/icons/.cmd-icon.md +15 -22
  256. package/src/components/icons/.coins-icon.md +17 -25
  257. package/src/components/icons/.community-hub-icon.md +19 -25
  258. package/src/components/icons/.community-icon.md +24 -21
  259. package/src/components/icons/.compare-icon.md +32 -19
  260. package/src/components/icons/.copy-icon.md +29 -15
  261. package/src/components/icons/.custom-external-link-icon.md +19 -17
  262. package/src/components/icons/.custom-fork-icon.md +32 -21
  263. package/src/components/icons/.custom-license-icon.md +29 -25
  264. package/src/components/icons/.custom-star-icon.md +20 -28
  265. package/src/components/icons/.custom-time-icon.md +21 -22
  266. package/src/components/icons/.cut-vendor-costs-icon.md +6 -19
  267. package/src/components/icons/.dashboard-icon.md +13 -18
  268. package/src/components/icons/.deno-icon.md +16 -23
  269. package/src/components/icons/.donut-icon.md +12 -23
  270. package/src/components/icons/.double-chevron-icon.md +28 -36
  271. package/src/components/icons/.elestio-logo.md +13 -23
  272. package/src/components/icons/.empty-vendor-icon.md +16 -18
  273. package/src/components/icons/.explore-categories-icon.md +18 -29
  274. package/src/components/icons/.eye-icon.md +16 -26
  275. package/src/components/icons/.facebook-icon.md +9 -20
  276. package/src/components/icons/.figma-icon.md +8 -17
  277. package/src/components/icons/.filter-icon.md +15 -17
  278. package/src/components/icons/.flamingo-logo.md +28 -27
  279. package/src/components/icons/.folder-shield-icon.md +28 -19
  280. package/src/components/icons/.g2-icon.md +22 -21
  281. package/src/components/icons/.getapp-icon.md +25 -21
  282. package/src/components/icons/.github-icon.md +13 -25
  283. package/src/components/icons/.globe-icon.md +14 -19
  284. package/src/components/icons/.google-gemini-icon.md +16 -19
  285. package/src/components/icons/.google-logo.md +15 -21
  286. package/src/components/icons/.grid-view-icon.md +30 -19
  287. package/src/components/icons/.hamburger-icon.md +22 -20
  288. package/src/components/icons/.hand-dollar-icon.md +24 -34
  289. package/src/components/icons/.hotel-icon.md +27 -21
  290. package/src/components/icons/.icon-utils.md +28 -29
  291. package/src/components/icons/.image-icon.md +15 -22
  292. package/src/components/icons/.index.md +25 -28
  293. package/src/components/icons/.info-circle-icon.md +29 -30
  294. package/src/components/icons/.instagram-icon.md +10 -24
  295. package/src/components/icons/.jump-in-icon.md +18 -18
  296. package/src/components/icons/.linux-icon.md +18 -18
  297. package/src/components/icons/.log-out-icon.md +15 -23
  298. package/src/components/icons/.logs-icon.md +14 -23
  299. package/src/components/icons/.margin-crisis-icon.md +21 -20
  300. package/src/components/icons/.menu-icon.md +18 -19
  301. package/src/components/icons/.miami-cyber-gang-logo-face-only.md +18 -21
  302. package/src/components/icons/.miami-cyber-gang-logo.md +22 -14
  303. package/src/components/icons/.mlg-logo.md +18 -16
  304. package/src/components/icons/.moon-icon.md +32 -22
  305. package/src/components/icons/.ms-icon.md +30 -19
  306. package/src/components/icons/.nushell-icon.md +7 -21
  307. package/src/components/icons/.open-source-icon.md +19 -23
  308. package/src/components/icons/.openai-icon.md +9 -24
  309. package/src/components/icons/.openframe-ai-icons.md +25 -26
  310. package/src/components/icons/.openframe-logo.md +28 -22
  311. package/src/components/icons/.openframe-text.md +24 -27
  312. package/src/components/icons/.openmsp-logo.md +26 -23
  313. package/src/components/icons/.pilot-icon.md +23 -0
  314. package/src/components/icons/.powershell-icon.md +17 -22
  315. package/src/components/icons/.python-icon.md +16 -23
  316. package/src/components/icons/.queries-icon.md +13 -21
  317. package/src/components/icons/.reddit-icon.md +28 -24
  318. package/src/components/icons/.remote-control-icon.md +13 -17
  319. package/src/components/icons/.script-icon.md +27 -19
  320. package/src/components/icons/.search-icon.md +21 -21
  321. package/src/components/icons/.send-icon.md +14 -16
  322. package/src/components/icons/.settings-icon.md +30 -19
  323. package/src/components/icons/.shape-circle-dash-icon.md +16 -21
  324. package/src/components/icons/.shell-icon.md +15 -19
  325. package/src/components/icons/.shield-check-icon.md +18 -31
  326. package/src/components/icons/.shield-key-icon.md +25 -25
  327. package/src/components/icons/.shield-lock-icon.md +8 -18
  328. package/src/components/icons/.slack-icon.md +28 -32
  329. package/src/components/icons/.sparkles-icon.md +18 -23
  330. package/src/components/icons/.sso-configuration-icon.md +29 -16
  331. package/src/components/icons/.sun-icon.md +20 -18
  332. package/src/components/icons/.table-view-icon.md +17 -19
  333. package/src/components/icons/.telegram-icon.md +8 -22
  334. package/src/components/icons/.thumbs-down-icon.md +10 -19
  335. package/src/components/icons/.thumbs-up-icon.md +8 -17
  336. package/src/components/icons/.tool-directory-icons.md +24 -28
  337. package/src/components/icons/.trustpilot-icon.md +25 -22
  338. package/src/components/icons/.user-icon.md +26 -28
  339. package/src/components/icons/.users-group-icon.md +28 -24
  340. package/src/components/icons/.vendor-showcase-icons.md +21 -29
  341. package/src/components/icons/.vendors-icon.md +18 -22
  342. package/src/components/icons/.whatsapp-icon.md +30 -14
  343. package/src/components/icons/.x-icon.md +18 -23
  344. package/src/components/icons/.x-logo.md +13 -38
  345. package/src/components/icons/.youtube-icon.md +8 -19
  346. package/src/components/icons/device-type-icons/.get-device-type-icon.md +26 -34
  347. package/src/components/icons-v2-generated/.index.md +52 -0
  348. package/src/components/icons-v2-generated/alphabet/.index.md +33 -0
  349. package/src/components/icons-v2-generated/arrows/.index.md +39 -0
  350. package/src/components/icons-v2-generated/audio-and-visual/.index.md +40 -0
  351. package/src/components/icons-v2-generated/brand-logos/.elestio-logo-icon.md +40 -0
  352. package/src/components/icons-v2-generated/brand-logos/.gemini-logo-icon.md +37 -0
  353. package/src/components/icons-v2-generated/brand-logos/.google-gemini-logo-icon.md +33 -0
  354. package/src/components/icons-v2-generated/brand-logos/.index.md +38 -0
  355. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-grey-icon.md +35 -0
  356. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-icon.md +36 -0
  357. package/src/components/icons-v2-generated/buildings/.index.md +48 -0
  358. package/src/components/icons-v2-generated/charts/.index.md +40 -0
  359. package/src/components/icons-v2-generated/clothes/.index.md +48 -0
  360. package/src/components/icons-v2-generated/coding/.index.md +42 -0
  361. package/src/components/icons-v2-generated/communication/.index.md +39 -0
  362. package/src/components/icons-v2-generated/date-and-time/.index.md +29 -0
  363. package/src/components/icons-v2-generated/design/.index.md +39 -0
  364. package/src/components/icons-v2-generated/devices/.index.md +38 -0
  365. package/src/components/icons-v2-generated/documents/.index.md +38 -0
  366. package/src/components/icons-v2-generated/finance/.index.md +34 -0
  367. package/src/components/icons-v2-generated/food-and-drinks/.index.md +34 -0
  368. package/src/components/icons-v2-generated/food-and-drinks/.leafy-green-icon.md +36 -0
  369. package/src/components/icons-v2-generated/food-and-drinks/.strawberry-icon.md +39 -0
  370. package/src/components/icons-v2-generated/health/.index.md +40 -0
  371. package/src/components/icons-v2-generated/household/.index.md +45 -0
  372. package/src/components/icons-v2-generated/interface/.index.md +36 -0
  373. package/src/components/icons-v2-generated/map-and-travel/.index.md +41 -0
  374. package/src/components/icons-v2-generated/media-playback/.index.md +51 -0
  375. package/src/components/icons-v2-generated/number/.index.md +41 -0
  376. package/src/components/icons-v2-generated/school/.index.md +37 -0
  377. package/src/components/icons-v2-generated/security/.fingerprint-icon.md +38 -0
  378. package/src/components/icons-v2-generated/security/.index.md +39 -0
  379. package/src/components/icons-v2-generated/shopping/.index.md +42 -0
  380. package/src/components/icons-v2-generated/signs-and-symbols/.index.md +32 -0
  381. package/src/components/icons-v2-generated/sort-and-filter/.index.md +35 -0
  382. package/src/components/icons-v2-generated/sport/.index.md +41 -0
  383. package/src/components/icons-v2-generated/text-editor/.index.md +44 -0
  384. package/src/components/icons-v2-generated/users/.index.md +45 -0
  385. package/src/components/icons-v2-generated/vehicles-and-delivery/.index.md +36 -0
  386. package/src/components/icons-v2-generated/weather-and-nature/.flower-sakura-icon.md +36 -0
  387. package/src/components/icons-v2-generated/weather-and-nature/.index.md +34 -0
  388. package/src/components/layout/.article-detail-layout.md +43 -0
  389. package/src/components/layout/.back-button.md +40 -0
  390. package/src/components/layout/.list-page-layout.md +35 -26
  391. package/src/components/layout/.page-container.md +27 -38
  392. package/src/components/layout/.page-layout.md +50 -0
  393. package/src/components/layout/.title-block.md +42 -0
  394. package/src/components/loading/.card-skeleton.md +38 -29
  395. package/src/components/loading/.device-card-skeleton.md +29 -25
  396. package/src/components/loading/.index.md +39 -46
  397. package/src/components/loading/.margin-report-skeleton.md +45 -34
  398. package/src/components/loading/.organization-card-skeleton.md +39 -44
  399. package/src/components/loading/.page-layout-skeleton.md +34 -45
  400. package/src/components/loading/.unified-skeleton.md +62 -36
  401. package/src/components/navigation/.app-header.md +40 -29
  402. package/src/components/navigation/.app-layout.md +25 -26
  403. package/src/components/navigation/.header-global-search.md +34 -37
  404. package/src/components/navigation/.header-organization-filter.md +23 -22
  405. package/src/components/navigation/.header.md +31 -35
  406. package/src/components/navigation/.mobile-burger-menu.md +39 -47
  407. package/src/components/navigation/.mobile-nav-panel.md +51 -32
  408. package/src/components/navigation/.navigation-sidebar-header.md +36 -0
  409. package/src/components/navigation/.navigation-sidebar-item.md +45 -0
  410. package/src/components/navigation/.navigation-sidebar-toggle.md +38 -0
  411. package/src/components/navigation/.navigation-sidebar.md +33 -34
  412. package/src/components/navigation/.sliding-sidebar.md +52 -41
  413. package/src/components/navigation/.sticky-section-nav.md +56 -48
  414. package/src/components/platform/.ScriptArguments.md +39 -25
  415. package/src/components/platform/.ScriptInfoSection.md +30 -26
  416. package/src/components/platform/.ShellTypeBadge.md +18 -13
  417. package/src/components/platform/.SoftwareInfo.md +23 -27
  418. package/src/components/platform/.SoftwareSourceBadge.md +28 -19
  419. package/src/components/platform/.ToolBadge.md +25 -26
  420. package/src/components/platform/ShellTypeBadge.tsx +2 -2
  421. package/src/components/providers/.theme-provider.md +52 -0
  422. package/src/components/shared/delivery/.delivery-lists.md +39 -0
  423. package/src/components/shared/delivery/.delivery-row.md +41 -0
  424. package/src/components/shared/delivery/.delivery-table.md +41 -0
  425. package/src/components/shared/delivery/.index.md +38 -0
  426. package/src/components/shared/dev-section/.dev-card-row.md +60 -0
  427. package/src/components/shared/dev-section/.dev-section-page.md +48 -0
  428. package/src/components/shared/dev-section/.dev-section-view.md +43 -0
  429. package/src/components/shared/dev-section/.index.md +38 -0
  430. package/src/components/shared/legal-document/.index.md +40 -0
  431. package/src/components/shared/legal-document/.legal-document-page.md +50 -0
  432. package/src/components/shared/legal-document/.use-legal-docs.md +42 -0
  433. package/src/components/shared/onboarding/.onboarding-step-card.md +32 -31
  434. package/src/components/shared/onboarding/.onboarding-walkthrough.md +39 -43
  435. package/src/components/shared/product-release/.index.md +28 -30
  436. package/src/components/shared/product-release/.product-release-card-skeleton.md +28 -28
  437. package/src/components/shared/product-release/.product-release-card.md +45 -27
  438. package/src/components/shared/product-release/.release-detail-page.md +23 -24
  439. package/src/components/shared/roadmap/.index.md +37 -0
  440. package/src/components/shared/roadmap/.roadmap-grid-skeleton.md +39 -0
  441. package/src/components/shared/roadmap/.roadmap-grid.md +66 -0
  442. package/src/components/shared/roadmap/.use-roadmap-voting.md +68 -0
  443. package/src/components/tickets/.help-center-card.md +51 -0
  444. package/src/components/tickets/.help-center-create-form.md +38 -0
  445. package/src/components/tickets/.help-center-list.md +40 -0
  446. package/src/components/tickets/.index.md +65 -0
  447. package/src/components/tickets/.ticket-center.md +51 -0
  448. package/src/components/tickets/.ticket-detail-drawer.md +48 -0
  449. package/src/components/tickets/.ticket-linked-delivery-card.md +36 -0
  450. package/src/components/tickets/.ticket-open-form.md +50 -0
  451. package/src/components/tickets/.ticket-row.md +30 -0
  452. package/src/components/tickets/.types.md +57 -0
  453. package/src/components/tickets/hooks/.use-ticket-actions.md +77 -0
  454. package/src/components/tickets/hooks/.use-ticket-engagements.md +42 -0
  455. package/src/components/tickets/hooks/.use-tickets-list.md +54 -0
  456. package/src/components/ui/.actions-menu.md +66 -41
  457. package/src/components/ui/.alert-dialog.md +29 -26
  458. package/src/components/ui/.allowed-domains-input.md +29 -21
  459. package/src/components/ui/.assignee-dropdown.md +45 -0
  460. package/src/components/ui/.autocomplete.md +47 -41
  461. package/src/components/ui/.benefit-card.md +51 -36
  462. package/src/components/ui/.brand-association-card.md +30 -27
  463. package/src/components/ui/.breadcrumb.md +17 -15
  464. package/src/components/ui/.checkbox-block.md +39 -35
  465. package/src/components/ui/.checkbox-with-description.md +23 -16
  466. package/src/components/ui/.checkbox.md +31 -23
  467. package/src/components/ui/.circular-progress.md +49 -19
  468. package/src/components/ui/.content-loader.md +32 -20
  469. package/src/components/ui/.cursor-pagination.md +41 -52
  470. package/src/components/ui/.dashboard-info-card.md +33 -26
  471. package/src/components/ui/.date-picker.md +27 -25
  472. package/src/components/ui/.device-card-compact.md +28 -29
  473. package/src/components/ui/.device-card.md +27 -27
  474. package/src/components/ui/.dialog.md +25 -16
  475. package/src/components/ui/.drawer.md +86 -0
  476. package/src/components/ui/.dropdown-button.md +45 -0
  477. package/src/components/ui/.entity-image.md +46 -0
  478. package/src/components/ui/.error-state.md +41 -28
  479. package/src/components/ui/.feature-card.md +35 -31
  480. package/src/components/ui/.feature-list.md +48 -0
  481. package/src/components/ui/.field-wrapper.md +47 -0
  482. package/src/components/ui/.file-upload.md +42 -0
  483. package/src/components/ui/.filter-checkbox-item.md +43 -0
  484. package/src/components/ui/.filter-list.md +57 -0
  485. package/src/components/ui/.filter-modal.md +59 -0
  486. package/src/components/ui/.floating-tooltip.md +43 -26
  487. package/src/components/ui/.hidden-tags-popup.md +49 -0
  488. package/src/components/ui/.hover-dropdown.md +54 -0
  489. package/src/components/ui/.image-gallery-modal.md +41 -34
  490. package/src/components/ui/.image-uploader.md +53 -0
  491. package/src/components/ui/.index.md +40 -34
  492. package/src/components/ui/.info-card.md +31 -31
  493. package/src/components/ui/.info-row.md +31 -27
  494. package/src/components/ui/.input-trigger.md +44 -0
  495. package/src/components/ui/.input.md +37 -31
  496. package/src/components/ui/.markdown-editor.md +57 -0
  497. package/src/components/ui/.modal-v2.md +51 -0
  498. package/src/components/ui/.modal.md +32 -31
  499. package/src/components/ui/.more-actions-menu.md +45 -38
  500. package/src/components/ui/.organization-card.md +31 -37
  501. package/src/components/ui/.page-actions.md +44 -54
  502. package/src/components/ui/.phone-input.md +54 -0
  503. package/src/components/ui/.progress-bar.md +35 -27
  504. package/src/components/ui/.radio-group.md +39 -27
  505. package/src/components/ui/.release-changelog-section.md +34 -34
  506. package/src/components/ui/.search-input.md +48 -0
  507. package/src/components/ui/.select.md +54 -34
  508. package/src/components/ui/.service-card.md +42 -40
  509. package/src/components/ui/.sheet.md +27 -18
  510. package/src/components/ui/.simple-markdown-renderer.md +29 -31
  511. package/src/components/ui/.sort-column-item.md +42 -0
  512. package/src/components/ui/.square-avatar.md +34 -24
  513. package/src/components/ui/.status-badge.md +26 -38
  514. package/src/components/ui/.switch.md +22 -35
  515. package/src/components/ui/.tab-navigation.md +56 -53
  516. package/src/components/ui/.tab-selector.md +40 -0
  517. package/src/components/ui/.tag-key-value-filter.md +56 -0
  518. package/src/components/ui/.tag-search-input.md +53 -0
  519. package/src/components/ui/.tag.md +49 -31
  520. package/src/components/ui/.tags-manager.md +60 -0
  521. package/src/components/ui/.textarea.md +44 -34
  522. package/src/components/ui/.ticket-attachments-list.md +45 -0
  523. package/src/components/ui/.ticket-detail-section.md +29 -0
  524. package/src/components/ui/.ticket-info-section.md +56 -0
  525. package/src/components/ui/.ticket-note-card.md +53 -0
  526. package/src/components/ui/.ticket-notes-section.md +54 -0
  527. package/src/components/ui/.ticket-status-tag.md +49 -0
  528. package/src/components/ui/.title-content-block.md +25 -26
  529. package/src/components/ui/.toaster.md +40 -28
  530. package/src/components/ui/.tooltip.md +22 -11
  531. package/src/components/ui/.truncate-text.md +39 -0
  532. package/src/components/ui/button/.button-styles.md +35 -0
  533. package/src/components/ui/button/.button.md +53 -0
  534. package/src/components/ui/button/.split-button.md +48 -0
  535. package/src/components/ui/data-table/.data-table-body.md +48 -0
  536. package/src/components/ui/data-table/.data-table-column-filter.md +45 -0
  537. package/src/components/ui/data-table/.data-table-cursor-footer.md +45 -0
  538. package/src/components/ui/data-table/.data-table-empty.md +43 -0
  539. package/src/components/ui/data-table/.data-table-header.md +55 -0
  540. package/src/components/ui/data-table/.data-table-infinite-footer.md +44 -0
  541. package/src/components/ui/data-table/.data-table-row-count.md +43 -0
  542. package/src/components/ui/data-table/.data-table-row.md +47 -0
  543. package/src/components/ui/data-table/.data-table-skeleton.md +42 -0
  544. package/src/components/ui/data-table/.data-table.md +47 -0
  545. package/src/components/ui/data-table/.index.md +55 -0
  546. package/src/components/ui/data-table/.types.md +54 -0
  547. package/src/components/ui/data-table/.use-data-table.md +45 -0
  548. package/src/components/ui/data-table/.utils.md +38 -0
  549. package/src/components/ui/file-manager/.file-manager-action-bar.md +39 -30
  550. package/src/components/ui/file-manager/.file-manager-breadcrumb.md +29 -27
  551. package/src/components/ui/file-manager/.file-manager-context-menu.md +38 -42
  552. package/src/components/ui/file-manager/.file-manager-empty.md +26 -39
  553. package/src/components/ui/file-manager/.file-manager-table-row.md +33 -41
  554. package/src/components/ui/file-manager/.file-manager.md +35 -31
  555. package/src/components/ui/query-report-table/.index.md +43 -0
  556. package/src/components/ui/query-report-table/.query-report-table-header.md +36 -0
  557. package/src/components/ui/query-report-table/.query-report-table-row.md +40 -0
  558. package/src/components/ui/query-report-table/.query-report-table-skeleton.md +44 -0
  559. package/src/components/ui/query-report-table/.query-report-table.md +47 -0
  560. package/src/components/ui/query-report-table/.types.md +41 -0
  561. package/src/components/ui/query-report-table/.utils.md +35 -0
  562. package/src/components/ui/table/.index.md +27 -48
  563. package/src/components/ui/table/.table-cell.md +18 -27
  564. package/src/components/ui/table/.table-column-filter-dropdown.md +40 -0
  565. package/src/components/ui/table/.table-description-cell.md +24 -14
  566. package/src/components/ui/table/.table-empty-state.md +21 -22
  567. package/src/components/ui/table/.table-header.md +25 -40
  568. package/src/components/ui/table/.table-row.md +22 -40
  569. package/src/components/ui/table/.table-skeleton.md +33 -26
  570. package/src/components/ui/table/.table-timestamp-cell.md +26 -16
  571. package/src/components/ui/table/.table.md +39 -59
  572. package/src/components/ui/table/.types.md +44 -36
  573. package/src/components/ui/table/.utils.md +18 -20
  574. package/src/contexts/.chat-runtime-context.md +54 -0
  575. package/src/contexts/.endpoints-runtime-context.md +58 -0
  576. package/src/contexts/.index.md +53 -0
  577. package/src/contexts/.use-outer-or-default.md +36 -0
  578. package/src/embed-shims/.index.md +45 -0
  579. package/src/embed-shims/.next-dynamic.md +43 -0
  580. package/src/embed-shims/.next-image.md +45 -0
  581. package/src/embed-shims/.next-link.md +59 -0
  582. package/src/embed-shims/.next-navigation.md +59 -0
  583. package/src/hooks/.index.md +34 -29
  584. package/src/hooks/.use-access-code-integration.md +49 -0
  585. package/src/hooks/.use-contact-submission.md +37 -26
  586. package/src/hooks/.use-copy-to-clipboard.md +42 -0
  587. package/src/hooks/.use-near-viewport.md +44 -0
  588. package/src/hooks/.use-og-placeholder.md +51 -0
  589. package/src/hooks/.use-toast.md +36 -35
  590. package/src/hooks/state/.use-api-params.md +29 -46
  591. package/src/hooks/state/.use-query-params.md +37 -33
  592. package/src/hooks/ui/.index.md +33 -32
  593. package/src/hooks/ui/.use-auto-limit-tags.md +54 -0
  594. package/src/hooks/ui/.use-horizontal-scrollbar.md +74 -0
  595. package/src/hooks/ui/.use-image-edge-color.md +42 -0
  596. package/src/hooks/ui/.use-media-query.md +33 -25
  597. package/src/hooks/ui/.use-search.md +51 -0
  598. package/src/nats/.nats.md +49 -28
  599. package/src/schemas/.contact-schema.md +45 -0
  600. package/src/stories/.AnnouncementBar.stories.md +45 -0
  601. package/src/stories/.AppLayout.stories.md +20 -21
  602. package/src/stories/.Autocomplete.stories.md +48 -34
  603. package/src/stories/.Board.stories.md +35 -0
  604. package/src/stories/.Button.stories.md +36 -33
  605. package/src/stories/.ChatTicketList.stories.md +33 -0
  606. package/src/stories/.CheckboxBlock.stories.md +40 -28
  607. package/src/stories/.ContentLoader.stories.md +47 -0
  608. package/src/stories/.DashboardInfoCard.stories.md +57 -0
  609. package/src/stories/.DataTable.stories.md +41 -0
  610. package/src/stories/.DatePicker.stories.md +66 -52
  611. package/src/stories/.DeviceCard.stories.md +41 -40
  612. package/src/stories/.DeviceCardCompact.stories.md +41 -0
  613. package/src/stories/.DotsLoaderIcon.stories.md +36 -0
  614. package/src/stories/.Drawer.stories.md +58 -0
  615. package/src/stories/.EmbeddableChat.stories.md +41 -0
  616. package/src/stories/.FileManager.stories.md +41 -0
  617. package/src/stories/.FileManagerActionBar.stories.md +38 -0
  618. package/src/stories/.FileUpload.stories.md +53 -0
  619. package/src/stories/.FilterList.stories.md +54 -0
  620. package/src/stories/.FilterModal.stories.md +72 -0
  621. package/src/stories/.FiltersDropdown.stories.md +57 -0
  622. package/src/stories/.Header.stories.md +48 -0
  623. package/src/stories/.ImageUploader.stories.md +49 -0
  624. package/src/stories/.InfoCard.stories.md +54 -0
  625. package/src/stories/.Input.stories.md +48 -30
  626. package/src/stories/.ListPageLayout.stories.md +56 -43
  627. package/src/stories/.MingoOnboardingCard.stories.md +42 -0
  628. package/src/stories/.MingoOnboardingCardSkeleton.stories.md +35 -0
  629. package/src/stories/.Modal.stories.md +40 -31
  630. package/src/stories/.NotificationDrawer.stories.md +55 -0
  631. package/src/stories/.OnboardingStepCard.stories.md +41 -0
  632. package/src/stories/.OrganizationCard.stories.md +61 -0
  633. package/src/stories/.PageActions.stories.md +52 -49
  634. package/src/stories/.PageContainer.stories.md +41 -35
  635. package/src/stories/.PageLayout.stories.md +60 -0
  636. package/src/stories/.ParallaxImageShowcase.stories.md +49 -0
  637. package/src/stories/.PhoneInput.stories.md +53 -0
  638. package/src/stories/.QueryReportTable.stories.md +44 -0
  639. package/src/stories/.RadioGroup.stories.md +46 -0
  640. package/src/stories/.RadioGroupBlock.stories.md +45 -0
  641. package/src/stories/.Select.stories.md +29 -15
  642. package/src/stories/.SlashCommandSuggestions.stories.md +41 -0
  643. package/src/stories/.SplitButton.stories.md +62 -0
  644. package/src/stories/.TabNavigation.stories.md +47 -38
  645. package/src/stories/.TabSelector.stories.md +65 -0
  646. package/src/stories/.Table.stories.md +38 -46
  647. package/src/stories/.TableColumnFilterDropdown.stories.md +46 -0
  648. package/src/stories/.Tag.stories.md +43 -32
  649. package/src/stories/.TagKeyValueFilter.stories.md +44 -0
  650. package/src/stories/.TagSearchInput.stories.md +61 -0
  651. package/src/stories/.Textarea.stories.md +49 -26
  652. package/src/stories/.Theme.stories.md +41 -0
  653. package/src/stories/.TicketAttachmentsList.stories.md +39 -0
  654. package/src/stories/.TicketDescriptionViewer.stories.md +39 -0
  655. package/src/stories/.TicketInfoSection.stories.md +40 -0
  656. package/src/stories/.TicketKnowledgeBaseList.stories.md +36 -0
  657. package/src/stories/.TicketNotesSection.stories.md +50 -0
  658. package/src/stories/.Toaster.stories.md +40 -0
  659. package/src/stories/.ToolExecutionDisplay.stories.md +41 -0
  660. package/src/stories/.Tooltip.stories.md +41 -0
  661. package/src/stories/.UserSummary.stories.md +41 -0
  662. package/src/stories/.WaitlistForm.stories.md +42 -0
  663. package/src/stories/BlogCard.stories.tsx +61 -0
  664. package/src/stories/CampaignCardAdmin.stories.tsx +52 -0
  665. package/src/stories/CaseStudyCard.stories.tsx +42 -0
  666. package/src/stories/ChatContainer.stories.tsx +186 -0
  667. package/src/stories/ChatInlineVideoPill.stories.tsx +63 -0
  668. package/src/stories/CustomerInterviewCard.stories.tsx +42 -0
  669. package/src/stories/DataRoomDocCard.stories.tsx +52 -0
  670. package/src/stories/GenericEntityCard.stories.tsx +66 -0
  671. package/src/stories/GitHubActivityCard.stories.tsx +61 -0
  672. package/src/stories/HubspotTicketCard.stories.tsx +98 -0
  673. package/src/stories/InvestorUpdateCard.stories.tsx +42 -0
  674. package/src/stories/OnboardingGuideCard.stories.tsx +52 -0
  675. package/src/stories/ProductReleaseCard.stories.tsx +61 -0
  676. package/src/stories/ProgramCard.stories.tsx +79 -0
  677. package/src/stories/RoadmapCard.stories.tsx +75 -0
  678. package/src/stories/SlackMessageCard.stories.tsx +41 -0
  679. package/src/stories/__fixtures__/chat-cards.ts +604 -0
  680. package/src/types/.blog.md +53 -29
  681. package/src/types/.case-study.md +44 -27
  682. package/src/types/.customer-interview.md +66 -44
  683. package/src/types/.delivery.md +40 -0
  684. package/src/types/.employee.md +24 -30
  685. package/src/types/.index.md +33 -47
  686. package/src/types/.marketing.md +49 -44
  687. package/src/types/.navigation.md +33 -25
  688. package/src/types/.os.types.md +32 -27
  689. package/src/types/.platform.md +31 -28
  690. package/src/types/.product-release.md +65 -38
  691. package/src/types/.supabase.md +37 -29
  692. package/src/types/.team.md +41 -33
  693. package/src/types/.video-processing.md +54 -0
  694. package/src/types/.waitlist.md +40 -36
  695. package/src/utils/.access-code-client.md +37 -36
  696. package/src/utils/.cn.md +31 -23
  697. package/src/utils/.color-analysis.md +35 -0
  698. package/src/utils/.country-phone-utils.md +39 -0
  699. package/src/utils/.date-formatters.md +19 -18
  700. package/src/utils/.embed-authed-fetch.md +39 -0
  701. package/src/utils/.embed-proxy-auth-storage.md +38 -0
  702. package/src/utils/.fetch-priority.md +41 -0
  703. package/src/utils/.format.md +74 -25
  704. package/src/utils/.generic-domain-utils.md +42 -0
  705. package/src/utils/.image-proxy.md +59 -23
  706. package/src/utils/.index.md +42 -49
  707. package/src/utils/.local-storage-adapter.md +50 -0
  708. package/src/utils/.ods-color-utils.md +55 -38
  709. package/src/utils/.platform-config.md +45 -25
  710. package/src/utils/.scroll-into-view.md +40 -0
  711. package/src/utils/.source-icons.md +53 -0
  712. package/src/utils/.sse-decision-frame.md +46 -0
  713. package/src/utils/dev-sections/.index.md +34 -0
  714. package/src/utils/dev-sections/.openframe-dev-sections.md +49 -0
  715. package/dist/chunk-ZDF6F7ED.cjs.map +0 -1
  716. package/dist/chunk-ZTJVRSN5.js.map +0 -1
  717. package/src/components/.card.md +0 -42
  718. package/src/components/.contact-button.md +0 -30
  719. package/src/components/.drawer.md +0 -46
  720. package/src/components/.fixed-layout-container.md +0 -47
  721. package/src/components/.footer-waitlist-card.md +0 -29
  722. package/src/components/.join-waitlist-cta.md +0 -29
  723. package/src/components/.sheet.md +0 -47
  724. package/src/components/.sliding-panel.md +0 -48
  725. package/src/components/.tooltip.md +0 -48
  726. package/src/components/.use-mobile.md +0 -42
  727. package/src/components/.vendor-compact-card.md +0 -66
  728. package/src/components/.x-button.md +0 -42
  729. package/src/components/features/.github-repo-button.md +0 -40
  730. package/src/components/features/.organization-icon.md +0 -47
  731. package/src/components/features/.organization-selector.md +0 -45
  732. package/src/components/icons/.fleet-icon.md +0 -39
  733. package/src/components/icons/.meshcentral-icon.md +0 -35
  734. package/src/components/icons/.refresh-icon.md +0 -34
  735. package/src/components/icons/.tactical-icon.md +0 -35
  736. package/src/components/ui/.button.md +0 -69
  737. package/src/components/ui/.log-table-row.md +0 -47
  738. package/src/components/ui/.selectable-device-card.md +0 -46
  739. package/src/hooks/.api-hooks-stub.md +0 -45
  740. package/src/hooks/api/.use-product-releases.md +0 -53
  741. package/src/stories/.OrganizationSelector.stories.md +0 -42
  742. package/src/stories/.SelectableDeviceCard.stories.md +0 -30
  743. package/src/utils/.lite-youtube-embed-stub.md +0 -37
  744. package/src/utils/.lite-youtube-embed.md +0 -33
  745. /package/dist/{chunk-IK2X5YJU.js.map → chunk-7PCP7YQR.js.map} +0 -0
  746. /package/dist/{chunk-3JWIJJ44.js.map → chunk-R6MLPU4A.js.map} +0 -0
@@ -0,0 +1,46 @@
1
+ <!-- source-hash: 5b4e3ad25ef1abb4f28d722afea48eb0 -->
2
+ Renders a responsive, lazily-loaded grid of short video bites grouped by aspect ratio (portrait, square, landscape), using viewport-gating to defer off-screen player mounts and prevent cumulative layout shift (CLS).
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `VideoBitesDisplay` | Component | Primary public component; filters, sorts, and groups bites by aspect ratio |
9
+ | `VideoBiteCard` | Component | Individual bite card wrapping `<Video>` inside a styled `<Card>` |
10
+ | `LazyBite` | Component (internal) | Defers child mount until within 500px of the viewport via `useNearViewport` |
11
+ | `BiteGrid` | Component (internal) | Renders ratio-appropriate column grid with each bite wrapped in `LazyBite` |
12
+
13
+ ## Key Behaviors
14
+
15
+ - **Filtering & sorting**: Optionally filters to published bites only, sorted newest-first by `created_at`
16
+ - **Aspect ratio grouping**: When multiple ratios exist, renders `<RatioTabs>`; otherwise falls back to a flat `<BiteGrid>`
17
+ - **CLS prevention**: `LazyBite` uses a CSS `aspect-ratio` placeholder matching the bite's ratio before the player mounts; `layout="fill"` on `<Video>` fills the card from first paint
18
+ - **Player routing**: All bites go through the `<Video>` primitive (no raw `VideoPlayer` carve-out) since MuxPlayer loads its HLS engine lazily
19
+
20
+ ## Usage Example
21
+
22
+ ```typescript
23
+ import { VideoBitesDisplay } from './video-bites-display';
24
+ import type { VideoTeaser } from '../../types/video-processing';
25
+
26
+ const bites: VideoTeaser[] = [
27
+ {
28
+ url: 'https://stream.example.com/clip1.mp4',
29
+ title: 'Product Demo',
30
+ thumbnail_url: 'https://cdn.example.com/thumb1.jpg',
31
+ published: true,
32
+ created_at: '2024-06-01T12:00:00Z',
33
+ },
34
+ ];
35
+
36
+ export function HighlightsSection() {
37
+ return (
38
+ <VideoBitesDisplay
39
+ bites={bites}
40
+ title="Product Highlights"
41
+ filterPublished={true}
42
+ showTitle={true}
43
+ />
44
+ );
45
+ }
46
+ ```
@@ -0,0 +1,41 @@
1
+ <!-- source-hash: 81400380536975a05d6ee9dc0f9ea30f -->
2
+ Reusable wrapper component around `AIEnrichSection` that provides a standardized UI for triggering and managing video clips extraction from uploaded media.
3
+
4
+ ## Key Components
5
+
6
+ ### `VideoClipsSection`
7
+ A pre-configured `AIEnrichSection` wrapper that handles the video clips extraction step for `CustomerInterview` and `ProductRelease` entities. Automatically toggles the button label between `"Generate Clips"` and `"Regenerate Clips"` based on whether a result already exists.
8
+
9
+ ### `VideoClipsSectionProps`
10
+ Full interface for controlling extraction state, UI labels, cancel behavior, and required field validation display.
11
+
12
+ ## Usage Example
13
+
14
+ ```typescript
15
+ import { VideoClipsSection } from './video-clips-section';
16
+
17
+ <VideoClipsSection
18
+ onExtractClips={handleExtract}
19
+ isProcessing={isLoading}
20
+ canEnrich={!!uploadedVideo}
21
+ requiredFields={[{ label: 'Video', isMet: !!uploadedVideo }]}
22
+ status={extractionStatus}
23
+ statusMessage="Clips extracted successfully"
24
+ hasResult={clips.length > 0}
25
+ showCancel={true}
26
+ onCancel={handleCancel}
27
+ isCancelling={isCancelling}
28
+ />
29
+ ```
30
+
31
+ ## Props Summary
32
+
33
+ | Prop | Type | Default | Description |
34
+ |------|------|---------|-------------|
35
+ | `onExtractClips` | `() => void` | — | Triggers extraction |
36
+ | `isProcessing` | `boolean` | — | Shows loading state |
37
+ | `canEnrich` | `boolean` | — | Enables the button |
38
+ | `hasResult` | `boolean` | `false` | Switches label to "Regenerate" |
39
+ | `disabledMessage` | `string` | `"Upload a video first"` | Tooltip when disabled |
40
+ | `loadingLabel` | `string` | `"Extracting clips..."` | In-progress button label |
41
+ | `showCancel` | `boolean` | `true` | Shows cancel option |
@@ -0,0 +1,56 @@
1
+ <!-- source-hash: d2815a723188c45f4c5d2910a19ffd76 -->
2
+ Aspect-ratio tab and grouping primitives for video grids, used by `VideoBitesDisplay` and admin editors to render portrait, square, and landscape clips in cohesive tabbed groups.
3
+
4
+ ## Key Components
5
+
6
+ ### Types & Interfaces
7
+ - **`VizardAspectRatio`** — Union type for Vizard clip ratios: `'9:16' | '16:9' | '1:1'`
8
+ - **`VideoTeaserWithRatio`** — Extends `VideoTeaser` with `aspect_ratio`, `confidence`, `viral_reason`, and timing metadata
9
+ - **`RatioCategory`** — Grid grouping label: `'portrait' | 'square' | 'landscape'`
10
+
11
+ ### Constants
12
+ - **`RATIO_GRID_CLASS`** — Tailwind grid classes for admin editor views (narrower columns)
13
+ - **`RATIO_DISPLAY_GRID_CLASS`** — Tailwind grid classes for public display pages (wider columns)
14
+
15
+ ### Components
16
+ - **`RatioTabs`** — Tab wrapper that only renders tabs with content; auto-collapses to flat render when only one ratio group is populated; uses `forceMount` to prevent scroll-jump on tab switch
17
+
18
+ ### Utilities
19
+ - **`detectAspectRatio(ratioString?, width?, height?)`** — Resolves a `VizardAspectRatio` from a string, falling back to dimension inference, defaulting to `'9:16'`
20
+ - **`ratioToCategory(ratio)`** — Maps `VizardAspectRatio` → `RatioCategory`
21
+ - **`groupByAspectRatio(items, getAspectRatio)`** — Buckets any item array into `{ portrait, square, landscape, hasMultiple }`
22
+
23
+ ## Usage Example
24
+
25
+ ```typescript
26
+ import {
27
+ RatioTabs,
28
+ groupByAspectRatio,
29
+ detectAspectRatio,
30
+ ratioToCategory,
31
+ RATIO_DISPLAY_GRID_CLASS,
32
+ } from './video-ratio-tabs';
33
+
34
+ // Group clips by detected aspect ratio
35
+ const { portrait, square, landscape, hasMultiple } = groupByAspectRatio(
36
+ clips,
37
+ (clip) => detectAspectRatio(clip.aspect_ratio, clip.width, clip.height),
38
+ );
39
+
40
+ // Render with tabbed UI
41
+ <RatioTabs
42
+ groups={{
43
+ portrait: {
44
+ count: portrait.length,
45
+ render: () => (
46
+ <div className={RATIO_DISPLAY_GRID_CLASS.portrait}>
47
+ {portrait.map((c) => <ClipCard key={c.id} clip={c} />)}
48
+ </div>
49
+ ),
50
+ },
51
+ square: { count: square.length, render: () => <SquareGrid items={square} /> },
52
+ landscape: { count: landscape.length, render: () => <LandscapeGrid items={landscape} /> },
53
+ }}
54
+ defaultTab="portrait"
55
+ />
56
+ ```
@@ -0,0 +1,60 @@
1
+ <!-- source-hash: 1995e98822c487bba791ce8689ae2447 -->
2
+ Unified toggle component for selecting between a YouTube URL input and a direct video file upload, managing upload state, progress, and preview rendering internally.
3
+
4
+ ## Key Components
5
+
6
+ ### Exports
7
+ - **`VideoSourceSelector`** — Main React component (default + named export)
8
+ - **`VideoSourceType`** — Union type: `'youtube' | 'uploaded'`
9
+ - **`VideoSourceSelectorProps`** — Full prop interface for the component
10
+
11
+ ### Internal State
12
+ | State | Purpose |
13
+ |---|---|
14
+ | `isUploading` | Tracks active upload operation |
15
+ | `uploadProgress` | Numeric progress (0–100) |
16
+ | `uploadMessage` | Status message during upload |
17
+ | `uploadError` | Error string if upload fails |
18
+
19
+ ### Key Handlers
20
+ - **`handleUploadClick`** — Programmatically triggers a hidden `<input type="file">`, invokes `onUploadVideo`, and manages progress callbacks
21
+ - **`handleDeleteVideo`** — Clears the uploaded video URL via `onMainVideoUrlChange('')`
22
+
23
+ ## Usage Example
24
+
25
+ ```typescript
26
+ import { VideoSourceSelector, VideoSourceType } from './video-source-selector';
27
+
28
+ function MyForm() {
29
+ const [sourceType, setSourceType] = useState<VideoSourceType>('youtube');
30
+ const [youtubeUrl, setYoutubeUrl] = useState('');
31
+ const [videoUrl, setVideoUrl] = useState('');
32
+
33
+ const handleUpload = async (file: File, onProgress?: (p: number) => void) => {
34
+ const formData = new FormData();
35
+ formData.append('file', file);
36
+ // ... upload logic with progress callbacks
37
+ return 'https://cdn.example.com/video.mp4';
38
+ };
39
+
40
+ return (
41
+ <VideoSourceSelector
42
+ videoSourceType={sourceType}
43
+ onVideoSourceTypeChange={setSourceType}
44
+ youtubeUrl={youtubeUrl}
45
+ onYoutubeUrlChange={setYoutubeUrl}
46
+ mainVideoUrl={videoUrl}
47
+ onMainVideoUrlChange={setVideoUrl}
48
+ onUploadVideo={handleUpload}
49
+ isAIGenerated={false}
50
+ title="Course Video"
51
+ />
52
+ );
53
+ }
54
+ ```
55
+
56
+ ## Notes
57
+
58
+ - Switching between `youtube` and `uploaded` tabs **preserves both values** — no data is cleared on toggle
59
+ - Accepts optional `VideoPreviewComponent` and `UploadProgressComponent` for custom rendering; falls back to built-in implementations if omitted
60
+ - All text labels and placeholders are customizable via props for reuse across different contexts
@@ -0,0 +1,44 @@
1
+ <!-- source-hash: 9e88b910bdaffc13eb668740a6d415f4 -->
2
+ Renders video content from YouTube URLs, bare video IDs, or file sources (HLS/MP4) with smart auto-detection and three layout modes. Consolidates the previous `<VideoPlayer>` and `<YouTubeEmbed>` primitives into a single component.
3
+
4
+ ## Key Components
5
+
6
+ - **`Video`** — Primary export. Discriminates on `kind` prop (`'youtube'` | `'file'` | `'auto'`) to route to the correct player branch, then wraps in the chosen layout
7
+ - **`extractYouTubeId`** — Exported utility that parses any YouTube URL shape or bare 11-char video ID into a raw video ID. Uses strict URL parsing + anchored regex (ReDoS-safe)
8
+ - **`VideoProps`** — Discriminated union type (`VideoFileProps | VideoYouTubeProps | VideoAutoProps`)
9
+ - **`VideoLayout`** — `'centered'` | `'fill'` | `'native'`
10
+ - **`resolveKind`** (internal) — URL classifier that maps a URL to `'youtube'` or `'file'`
11
+ - **`YouTubeFacade`** (internal) — Lite-YouTube poster + click-to-iframe embed
12
+ - **`FilePlayer`** (internal) — `<MuxPlayer>` wrapper handling HLS, MP4, captions, and Mux Data
13
+
14
+ ## Usage Example
15
+
16
+ ```typescript
17
+ // Auto-detect source from URL (recommended)
18
+ <Video url="https://www.youtube.com/watch?v=dQw4w9WgXcQ" layout="centered" />
19
+
20
+ // Bare YouTube ID
21
+ <Video url="dQw4w9WgXcQ" layout="native" priority />
22
+
23
+ // HLS or MP4 file with captions
24
+ <Video
25
+ kind="file"
26
+ url="https://cdn.example.com/video.m3u8"
27
+ captionsUrl="https://cdn.example.com/captions.vtt"
28
+ layout="fill"
29
+ muted
30
+ />
31
+
32
+ // Marketing embed — minimal YouTube controls
33
+ <Video
34
+ kind="youtube"
35
+ url="https://youtu.be/dQw4w9WgXcQ"
36
+ layout="centered"
37
+ minimalControls
38
+ title="Product demo"
39
+ />
40
+
41
+ // Validate a URL without rendering
42
+ import { extractYouTubeId } from './video';
43
+ const id = extractYouTubeId('https://youtu.be/dQw4w9WgXcQ'); // → "dQw4w9WgXcQ"
44
+ ```
@@ -0,0 +1,60 @@
1
+ <!-- source-hash: 6dd94b5db8fe43eb78a9a8032c387c0e -->
2
+ A platform-agnostic waitlist registration form component for OpenFrame/Flamingo, handling email capture, optional phone input with country detection, SMS consent, and submission state management.
3
+
4
+ ## Key Components
5
+
6
+ ### `WaitlistFormProps`
7
+ Configuration interface with the following notable props:
8
+
9
+ | Prop | Type | Description |
10
+ |------|------|-------------|
11
+ | `onRegister` | `(email, phone?) => Promise<void>` | Required submission handler; must throw on failure |
12
+ | `geoApiUrl` | `string \| null` | Geo-detection endpoint for auto-selecting country code (default: `"/api/geo"`) |
13
+ | `isSubmitting` | `boolean` | Controls loading state on the submit button |
14
+ | `isSuccess` | `boolean` | Switches button label to `successLabel` |
15
+ | `defaultEmail` / `defaultPhone` | `string` | Pre-filled values from auth context or user profile |
16
+ | `termsOfServiceUrl` / `privacyPolicyUrl` | `string` | Links rendered in SMS consent copy |
17
+
18
+ ### `WaitlistForm`
19
+ The exported form component. Key internal behaviors:
20
+
21
+ - **Hydration-safe skeleton** — renders animated placeholder blocks until client-side mount
22
+ - **Geo-detection** — fetches `geoApiUrl` on mount to pre-select the user's country code via `libphonenumber-js`
23
+ - **Generic email warning** — surfaces a warning (not a block) when a personal domain is detected
24
+ - **SMS consent gate** — requires checkbox agreement before submitting a phone number
25
+ - **E.164 formatting** — converts raw phone input via `formatPhoneE164` before calling `onRegister`
26
+ - **Enter key support** — `handleKeyDown` triggers submission from any field
27
+
28
+ ## Usage Example
29
+
30
+ ```typescript
31
+ import { WaitlistForm } from './waitlist-form'
32
+
33
+ function WaitlistPage() {
34
+ const [isSubmitting, setIsSubmitting] = useState(false)
35
+ const [isSuccess, setIsSuccess] = useState(false)
36
+
37
+ const handleRegister = async (email: string, phone?: string) => {
38
+ setIsSubmitting(true)
39
+ try {
40
+ await api.joinWaitlist({ email, phone })
41
+ setIsSuccess(true)
42
+ } finally {
43
+ setIsSubmitting(false)
44
+ }
45
+ }
46
+
47
+ return (
48
+ <WaitlistForm
49
+ onRegister={handleRegister}
50
+ isSubmitting={isSubmitting}
51
+ isSuccess={isSuccess}
52
+ geoApiUrl="/api/geo"
53
+ termsOfServiceUrl="/legal/terms"
54
+ privacyPolicyUrl="/legal/privacy"
55
+ />
56
+ )
57
+ }
58
+ ```
59
+
60
+ > **Note:** `onRegister` is responsible for its own error toasts. The form handles only email-empty and consent-missing validation client-side.
@@ -1,45 +1,48 @@
1
- <!-- source-hash: 85d234020490e54e3251b26b200e61b1 -->
2
- A specialized button component that provides AI-powered content enrichment functionality with loading states, customizable variants, and a sparkles icon.
1
+ <!-- source-hash: 553f8dbdfb9763d4ad797668077fd3a4 -->
2
+ A reusable client-side button component that triggers AI enrichment actions, featuring a sparkles icon, loading state, and configurable size/variant options.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`AIEnrichButton`** - Main React functional component that renders an AI enrichment button
7
- - **`AIEnrichButtonProps`** - TypeScript interface defining component props including onClick handler, loading states, and styling options
8
- - **`sizeMap`** - Maps component size props (`sm`, `md`, `lg`) to Button component sizes
9
- - **`variantMap`** - Maps component variants (`primary`, `secondary`, `outline`) to Button component variants
6
+ ### `AIEnrichButtonProps`
7
+ | Prop | Type | Default | Description |
8
+ |------|------|---------|-------------|
9
+ | `onClick` | `() => void` | | Handler called on button click |
10
+ | `disabled` | `boolean` | `false` | Disables the button |
11
+ | `loading` | `boolean` | `false` | Shows loading state and swaps label |
12
+ | `label` | `string` | `'AI Enrich'` | Default button text |
13
+ | `loadingLabel` | `string` | `'Enriching...'` | Text shown during loading |
14
+ | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Button size |
15
+ | `variant` | `'primary' \| 'secondary' \| 'outline'` | `'outline'` | Visual style |
16
+ | `className` | `string` | — | Additional CSS classes |
17
+
18
+ ### `AIEnrichButton`
19
+ The exported functional component. Internally maps the `size` and `variant` props to the underlying `Button` component's accepted values, and hides the `SparklesIcon` while loading.
10
20
 
11
21
  ## Usage Example
12
22
 
13
23
  ```typescript
14
24
  import { AIEnrichButton } from './components/AIEnrichButton'
15
25
 
16
- function ContentEditor() {
17
- const [isEnriching, setIsEnriching] = useState(false)
26
+ function TicketForm() {
27
+ const [enriching, setEnriching] = React.useState(false)
18
28
 
19
29
  const handleEnrich = async () => {
20
- setIsEnriching(true)
21
- try {
22
- // Call AI enrichment API
23
- await enrichContent()
24
- } finally {
25
- setIsEnriching(false)
26
- }
30
+ setEnriching(true)
31
+ await enrichTicketWithAI()
32
+ setEnriching(false)
27
33
  }
28
34
 
29
35
  return (
30
- <div>
31
- <AIEnrichButton
32
- onClick={handleEnrich}
33
- loading={isEnriching}
34
- label="Enhance with AI"
35
- loadingLabel="Processing..."
36
- variant="primary"
37
- size="md"
38
- className="my-4"
39
- />
40
- </div>
36
+ <AIEnrichButton
37
+ onClick={handleEnrich}
38
+ loading={enriching}
39
+ size="sm"
40
+ variant="primary"
41
+ label="Enrich Ticket"
42
+ loadingLabel="Analyzing..."
43
+ />
41
44
  )
42
45
  }
43
46
  ```
44
47
 
45
- The component automatically handles loading states, disables interaction during processing, and displays appropriate labels. The sparkles icon provides visual feedback for AI functionality and is hidden during loading.
48
+ > The button automatically disables itself during loading (`disabled || loading`), preventing duplicate submissions while Mingo AI processes the enrichment request.
@@ -1,51 +1,55 @@
1
- <!-- source-hash: 5552d95934cddb1d296daa3277e703de -->
2
- A React component that provides a comprehensive UI section for AI-powered data enrichment functionality. It handles the complete enrichment workflow including trigger button, status display, confidence metrics, warnings, and required field validation.
1
+ <!-- source-hash: 3297a26442c5b70d119e373c4687b748 -->
2
+ Reusable AI enrichment panel component that renders a full-featured UI section for triggering AI-powered data enrichment, displaying status feedback, confidence scores, warnings, and optional custom instructions.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **AIEnrichSection**: Main component that orchestrates the AI enrichment interface
7
- - **ConfidenceField**: Interface for displaying confidence scores of enriched fields
8
- - **AIRequiredField**: Interface for tracking required fields and their completion status
9
- - **AIEnrichSectionProps**: Comprehensive props interface supporting all enrichment states
6
+ ### Interfaces
7
+
8
+ | Interface | Purpose |
9
+ |-----------|---------|
10
+ | `ConfidenceField` | Defines a field with an optional confidence score for display |
11
+ | `AIRequiredField` | Describes a required form field, its fill state, and display label |
12
+ | `AIEnrichSectionProps` | Full prop contract for the `AIEnrichSection` component |
13
+
14
+ ### Component: `AIEnrichSection`
15
+
16
+ The main exported component. Renders a card-style panel with:
17
+
18
+ - **Header** — Icon (defaults to `SparklesIcon`), title, and optional description
19
+ - **Custom Instructions** (opt-in) — Controlled `<Textarea>` for user-provided AI focus hints, passed upstream to Claude via `buildEditorFocusBlock()`
20
+ - **Action Buttons** — `AIEnrichButton` (primary) and optional cancel button during loading
21
+ - **Disabled State** — Shows `disabledMessage` with badge-styled list of unfilled required fields
22
+ - **Loading State** — Spinner with live `statusMessage`
23
+ - **Results Section** — Success/error status indicator, confidence badge, `AIWarningsSection`, custom `children`, and a clear button
10
24
 
11
25
  ## Usage Example
12
26
 
13
27
  ```typescript
14
- import { AIEnrichSection } from './AIEnrichSection'
15
-
16
- function FormWithAIEnrichment() {
17
- const [status, setStatus] = useState<'idle' | 'loading' | 'success' | 'error'>('idle')
18
- const [warnings, setWarnings] = useState<string[]>([])
19
-
20
- const requiredFields = [
21
- { key: 'email', label: 'Email', isFilled: !!formData.email },
22
- { key: 'company', label: 'Company', isFilled: !!formData.company }
23
- ]
24
-
25
- const confidenceFields = [
26
- { label: 'Industry', key: 'industry', confidence: 85 },
27
- { label: 'Company Size', key: 'size', confidence: 92 }
28
- ]
29
-
30
- return (
31
- <AIEnrichSection
32
- onEnrich={handleAIEnrichment}
33
- loading={status === 'loading'}
34
- status={status}
35
- statusMessage="Analyzing company data..."
36
- overallConfidence={88}
37
- warnings={warnings}
38
- requiredFields={requiredFields}
39
- confidenceFields={confidenceFields}
40
- onClear={() => setStatus('idle')}
41
- canEnrich={requiredFields.every(f => f.isFilled)}
42
- >
43
- <div className="text-sm">
44
- Created 3 new tags based on industry analysis
45
- </div>
46
- </AIEnrichSection>
47
- )
48
- }
28
+ <AIEnrichSection
29
+ title="Enrich Asset"
30
+ description="Use AI to auto-fill missing asset details."
31
+ onEnrich={handleEnrich}
32
+ loading={isLoading}
33
+ canEnrich={hasRequiredFields}
34
+ status={enrichStatus}
35
+ statusMessage="Analyzing asset data..."
36
+ overallConfidence={87}
37
+ warnings={enrichWarnings}
38
+ requiredFields={[
39
+ { key: 'version', label: 'Version', isFilled: !!formValues.version },
40
+ { key: 'vendor', label: 'Vendor', isFilled: !!formValues.vendor },
41
+ ]}
42
+ showCustomInstructions
43
+ customInstructions={instructions}
44
+ onCustomInstructionsChange={setInstructions}
45
+ onClear={handleClear}
46
+ showCancel
47
+ onCancel={handleCancel}
48
+ />
49
49
  ```
50
50
 
51
- The component automatically handles disabled states when required fields are missing, displays confidence badges for enriched data, and provides a clean interface for managing the entire AI enrichment process.
51
+ ## Notes
52
+
53
+ - Supports `'default'` and `'compact'` layout variants via the `variant` prop
54
+ - `customInstructions` is fully controlled — the parent owns the string value
55
+ - `requiredFields` drives both `canEnrich` gating and the unfilled-fields badge display
@@ -0,0 +1,38 @@
1
+ <!-- source-hash: 1ad6ce49d76bfa9f7bbe6737c01b2305 -->
2
+ Renders the header for a Kanban board column, supporting both expanded and collapsed states with ticket status display, count, and optional ticket creation.
3
+
4
+ ## Key Components
5
+
6
+ ### `BoardColumnHeaderProps`
7
+ | Prop | Type | Description |
8
+ |------|------|-------------|
9
+ | `column` | `BoardColumnDef` | Column definition including id, label, color, and tickets |
10
+ | `collapsed` | `boolean` | Controls collapsed/expanded display mode |
11
+ | `onToggleCollapse` | `() => void` | Callback to toggle column collapse state |
12
+ | `onAddTicket` | `() => void` (optional) | Callback to trigger ticket creation |
13
+
14
+ ### `BoardColumnHeader`
15
+ Client component that renders two distinct layouts:
16
+ - **Collapsed:** Vertical layout with expand icon, rotated status tag, and ticket count
17
+ - **Expanded:** Horizontal layout with status tag, count, collapse button, and optional add-ticket button
18
+
19
+ Uses `getTicketStatusConfig` to determine whether to use a built-in status color or a custom column color for the `TicketStatusTag`.
20
+
21
+ ## Usage Example
22
+
23
+ ```typescript
24
+ import { BoardColumnHeader } from './board-column-header'
25
+
26
+ <BoardColumnHeader
27
+ column={{
28
+ id: 'in-progress',
29
+ label: 'In Progress',
30
+ color: '#FFC008',
31
+ tickets: [...],
32
+ total: 12,
33
+ }}
34
+ collapsed={false}
35
+ onToggleCollapse={() => setCollapsed(prev => !prev)}
36
+ onAddTicket={() => openCreateTicketModal('in-progress')}
37
+ />
38
+ ```
@@ -0,0 +1,43 @@
1
+ <!-- source-hash: 1bf9b2d5d2d477b1115c900de71defaa -->
2
+ Renders a single kanban board column with drag-and-drop support, collapsible layout, infinite scroll via IntersectionObserver, and ticket card rendering.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `BoardColumn` | Component | Main column shell handling collapsed/expanded state, border joining, and color tinting |
9
+ | `BoardColumnProps` | Interface | Public API for the column component |
10
+ | `ColumnBody` | Internal Component | Scrollable droppable zone with `SortableContext`, infinite scroll sentinel, and loading states |
11
+ | `SkeletonStack` | Internal Component | Renders `n` skeleton placeholders during initial load |
12
+ | `EmptyState` | Internal Component | Illustrated empty state shown when a column has no tickets |
13
+
14
+ ## Usage Example
15
+
16
+ ```typescript
17
+ <BoardColumn
18
+ column={{
19
+ id: 'open',
20
+ label: 'Open',
21
+ color: '#3B82F6',
22
+ tickets: myTickets,
23
+ hasMore: true,
24
+ isLoading: false,
25
+ isLoadingMore: false,
26
+ }}
27
+ collapsed={false}
28
+ onToggleCollapse={() => setCollapsed(c => !c)}
29
+ onAddTicket={(columnId) => openNewTicketModal(columnId)}
30
+ getTicketHref={(ticketId) => `/tickets/${ticketId}`}
31
+ renderAssignSlot={(ticket) => <AssigneePicker ticket={ticket} />}
32
+ onLoadMore={(columnId) => fetchNextPage(columnId)}
33
+ joinLeft={false}
34
+ joinRight={true}
35
+ />
36
+ ```
37
+
38
+ ## Notes
39
+
40
+ - **Drag-and-drop**: Uses `@dnd-kit/core` (`useDroppable`) and `@dnd-kit/sortable` (`SortableContext`) — drop target is disabled when `column.dropDisabled` is set.
41
+ - **Infinite scroll**: An `IntersectionObserver` watches a 1px sentinel div at the bottom of the scroll container; `onLoadMore` fires when it enters the viewport. Scroll is paused while `isLoadingMore` is true.
42
+ - **Collapsed state**: When `collapsed=true`, the column shrinks to `w-14` and hides the body; the header remains visible.
43
+ - **Joined borders**: `joinLeft`/`joinRight` props remove border radii and borders on adjacent edges for seamless multi-column layouts.
@@ -0,0 +1,51 @@
1
+ <!-- source-hash: 266e1c3c423b749f9d7def8ff717188e -->
2
+ A drag-and-drop Kanban board component that manages ticket movement across columns using `@dnd-kit/core`, with support for column collapsing, horizontal scrolling, and constrained drop rules.
3
+
4
+ ## Key Components
5
+
6
+ | Export / Symbol | Description |
7
+ |---|---|
8
+ | `Board` | Main board component rendering all columns with full DnD orchestration |
9
+ | `BoardProps` | Props interface defining columns, event handlers, and customization options |
10
+ | `collisionDetection` | Custom collision strategy: prefers ticket hits, falls back to column, then closest corners |
11
+ | `handleDragStart` | Records drag origin (ticket + source column) and sets overlay state |
12
+ | `handleDragOver` | Optimistically moves tickets across columns respecting `dropDisabled` and `allowedFromColumns` |
13
+ | `handleDragEnd` | Commits the move by calling `onChange` with positional context (`afterTicketId`, `beforeTicketId`), or rolls back |
14
+ | `handleDragCancel` | Reverts local state to the last server-provided `columns` prop |
15
+ | `locate` | Helper to find a ticket's column, index, and reference by ID |
16
+ | `findIndexInColumn` | Helper returning a ticket's index within a specific column |
17
+
18
+ ## Usage Example
19
+
20
+ ```typescript
21
+ <Board
22
+ columns={[
23
+ {
24
+ id: 'open',
25
+ label: 'Open',
26
+ tickets: [{ id: 'T-1', title: 'Fix login bug' }],
27
+ },
28
+ {
29
+ id: 'in-progress',
30
+ label: 'In Progress',
31
+ tickets: [],
32
+ allowedFromColumns: ['open'],
33
+ },
34
+ {
35
+ id: 'done',
36
+ label: 'Done',
37
+ tickets: [],
38
+ dropDisabled: true,
39
+ },
40
+ ]}
41
+ onChange={({ ticketId, fromColumnId, toColumnId, afterTicketId }) => {
42
+ api.moveTicket({ ticketId, toColumnId, afterTicketId })
43
+ }}
44
+ onLoadMore={(columnId) => fetchMore(columnId)}
45
+ getTicketHref={(ticketId) => `/tickets/${ticketId}`}
46
+ renderAssignSlot={(ticket) => <AssigneeAvatar ticket={ticket} />}
47
+ collapseStorageKey="board-collapse-state"
48
+ />
49
+ ```
50
+
51
+ > **Drop rules:** Set `dropDisabled: true` on a column to block all inbound drops. Use `allowedFromColumns: ['open']` to restrict which source columns can feed into a target — dragging back to the origin column is always permitted regardless of these rules.
@@ -0,0 +1,26 @@
1
+ <!-- source-hash: 908a5d80c6498d71475f70d268086189 -->
2
+ Computes a pre-blended background tint by mixing a given hex color at 10% opacity over a fixed dark background (`#161616`), returning the resulting opaque hex color.
3
+
4
+ ## Key Components
5
+
6
+ - **`tintOnDark(hex: string): string`** — Takes a hex color string (e.g. `#FFC008`), blends it at 10% over `#161616`, and returns the resulting opaque hex color.
7
+
8
+ ## Usage Example
9
+
10
+ ```typescript
11
+ import { tintOnDark } from './color-utils'
12
+
13
+ const tinted = tintOnDark('#FFC008')
14
+ // Returns the pre-blended hex, e.g. "#211e13"
15
+ // Useful for subtle colored backgrounds on dark UIs
16
+
17
+ const redTint = tintOnDark('#FF0000')
18
+ // Blends red at 10% over #161616 → "#281616"
19
+ ```
20
+
21
+ ## Notes
22
+
23
+ - The background is hardcoded to `#161616` (decimal `22`), matching Flamingo's dark theme base.
24
+ - Blend formula per channel: `round(0.1 * foreground + 0.9 * 22)`
25
+ - Input hex may include or omit the leading `#`.
26
+ - Returns a fully opaque hex string — no alpha channel — making it safe for any CSS `background-color` context.