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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (746) hide show
  1. package/dist/{chunk-35XIT2CF.cjs → chunk-2G3NXF6J.cjs} +17 -17
  2. package/dist/{chunk-35XIT2CF.cjs.map → chunk-2G3NXF6J.cjs.map} +1 -1
  3. package/dist/{chunk-IK2X5YJU.js → chunk-7PCP7YQR.js} +2 -2
  4. package/dist/{chunk-ZDF6F7ED.cjs → chunk-D4MNFY67.cjs} +4 -3
  5. package/dist/chunk-D4MNFY67.cjs.map +1 -0
  6. package/dist/{chunk-OTKJASSX.cjs → chunk-NGFP4RVL.cjs} +24 -24
  7. package/dist/{chunk-OTKJASSX.cjs.map → chunk-NGFP4RVL.cjs.map} +1 -1
  8. package/dist/{chunk-3JWIJJ44.js → chunk-R6MLPU4A.js} +2 -2
  9. package/dist/{chunk-ZTJVRSN5.js → chunk-WQZP3JIZ.js} +4 -3
  10. package/dist/chunk-WQZP3JIZ.js.map +1 -0
  11. package/dist/components/chat/index.cjs +2 -2
  12. package/dist/components/chat/index.js +1 -1
  13. package/dist/components/contact/index.cjs +3 -3
  14. package/dist/components/contact/index.js +2 -2
  15. package/dist/components/features/index.cjs +2 -2
  16. package/dist/components/features/index.js +1 -1
  17. package/dist/components/index.cjs +49 -49
  18. package/dist/components/index.js +2 -2
  19. package/dist/components/navigation/index.cjs +2 -2
  20. package/dist/components/navigation/index.js +1 -1
  21. package/dist/components/tickets/index.cjs +61 -61
  22. package/dist/components/tickets/index.js +3 -3
  23. package/dist/components/ui/index.cjs +2 -2
  24. package/dist/components/ui/index.js +1 -1
  25. package/dist/index.cjs +2 -2
  26. package/dist/index.js +1 -1
  27. package/package.json +1 -1
  28. package/src/.index.md +36 -34
  29. package/src/components/.alert-dialog.md +27 -23
  30. package/src/components/.announcement-bar.md +26 -21
  31. package/src/components/.breadcrumb.md +19 -15
  32. package/src/components/.calendar.md +24 -19
  33. package/src/components/.categories-cart.md +29 -24
  34. package/src/components/.checkbox.md +23 -25
  35. package/src/components/.chevron-button.md +37 -32
  36. package/src/components/.comment-card.md +32 -62
  37. package/src/components/.dialog.md +26 -26
  38. package/src/components/.dynamic-skeleton.md +54 -57
  39. package/src/components/.empty-state.md +42 -51
  40. package/src/components/.faq-accordion.md +27 -21
  41. package/src/components/.filter-chip.md +41 -24
  42. package/src/components/.flamingo-logo.md +20 -23
  43. package/src/components/.footer-waitlist-button.md +29 -22
  44. package/src/components/.footer.md +32 -32
  45. package/src/components/.icons-block.md +27 -17
  46. package/src/components/.image-cropper.md +41 -32
  47. package/src/components/.index.md +33 -39
  48. package/src/components/.input.md +31 -35
  49. package/src/components/.logs-list.md +31 -20
  50. package/src/components/.media-carousel.md +35 -36
  51. package/src/components/.open-source-features.md +33 -16
  52. package/src/components/.pagination.md +52 -51
  53. package/src/components/.provider-button.md +21 -23
  54. package/src/components/.select.md +31 -20
  55. package/src/components/.sidebar.md +34 -24
  56. package/src/components/.smooth-accordion.md +29 -24
  57. package/src/components/.social-icon-row.md +36 -32
  58. package/src/components/.textarea.md +25 -31
  59. package/src/components/.tool-icon.md +24 -26
  60. package/src/components/.unified-filter-logic.md +37 -30
  61. package/src/components/.unified-pagination.md +23 -22
  62. package/src/components/.user-summary-stub.md +38 -22
  63. package/src/components/.vendor-display-button.md +25 -25
  64. package/src/components/.vendor-icon.md +33 -25
  65. package/src/components/.why-it-matters.md +28 -25
  66. package/src/components/chat/.approval-batch-message.md +51 -0
  67. package/src/components/chat/.approval-request-message.md +35 -34
  68. package/src/components/chat/.chat-attachment-bar.md +64 -0
  69. package/src/components/chat/.chat-container.md +36 -18
  70. package/src/components/chat/.chat-input.md +37 -20
  71. package/src/components/chat/.chat-message-enhanced.md +30 -49
  72. package/src/components/chat/.chat-message-list.md +45 -32
  73. package/src/components/chat/.chat-message-skeleton.md +26 -22
  74. package/src/components/chat/.chat-panel-context.md +52 -0
  75. package/src/components/chat/.chat-ref.types.md +42 -0
  76. package/src/components/chat/.chat-sidebar-skeleton.md +34 -25
  77. package/src/components/chat/.chat-sidebar.md +31 -26
  78. package/src/components/chat/.chat-ticket-list.md +39 -0
  79. package/src/components/chat/.context-compaction-display.md +36 -0
  80. package/src/components/chat/.cycling-phrase.md +52 -0
  81. package/src/components/chat/.embeddable-chat.md +48 -0
  82. package/src/components/chat/.expand-chevron.md +24 -0
  83. package/src/components/chat/.index.md +31 -35
  84. package/src/components/chat/.mingo-onboarding-card-skeleton.md +44 -0
  85. package/src/components/chat/.mingo-onboarding-card.md +62 -0
  86. package/src/components/chat/.model-display.md +32 -30
  87. package/src/components/chat/.nav-link-anchor-via-runtime.md +40 -0
  88. package/src/components/chat/.remark-card-links.md +38 -0
  89. package/src/components/chat/.slash-command-suggestions.md +47 -0
  90. package/src/components/chat/.source-action-button.md +48 -0
  91. package/src/components/chat/.thinking-display.md +42 -0
  92. package/src/components/chat/.tool-call-blocks.md +45 -0
  93. package/src/components/chat/.tool-execution-display.md +44 -36
  94. package/src/components/chat/chat-container.tsx +1 -1
  95. package/src/components/chat/entity-cards/.admin-content-card.md +43 -0
  96. package/src/components/chat/entity-cards/.block-card.md +47 -0
  97. package/src/components/chat/entity-cards/.blog-card.md +52 -0
  98. package/src/components/chat/entity-cards/.blog-image-placeholder.md +39 -0
  99. package/src/components/chat/entity-cards/.campaign-card-admin.md +47 -0
  100. package/src/components/chat/entity-cards/.case-study-card.md +58 -0
  101. package/src/components/chat/entity-cards/.chat-ticket-item.md +40 -0
  102. package/src/components/chat/entity-cards/.chat-video-entity-card.md +43 -0
  103. package/src/components/chat/entity-cards/.customer-interview-card.md +53 -0
  104. package/src/components/chat/entity-cards/.data-room-doc-card.md +47 -0
  105. package/src/components/chat/entity-cards/.dispatch.md +39 -0
  106. package/src/components/chat/entity-cards/.entity-author-card.md +51 -0
  107. package/src/components/chat/entity-cards/.generic-entity-card.md +62 -0
  108. package/src/components/chat/entity-cards/.github-activity-card.md +61 -0
  109. package/src/components/chat/entity-cards/.hubspot-ticket-card.md +53 -0
  110. package/src/components/chat/entity-cards/.index.md +66 -0
  111. package/src/components/chat/entity-cards/.investor-update-card.md +47 -0
  112. package/src/components/chat/entity-cards/.onboarding-guide-card.md +58 -0
  113. package/src/components/chat/entity-cards/.product-release-card-defaults.md +31 -0
  114. package/src/components/chat/entity-cards/.product-release-card.md +29 -0
  115. package/src/components/chat/entity-cards/.program-card-defaults.md +41 -0
  116. package/src/components/chat/entity-cards/.program-card.md +59 -0
  117. package/src/components/chat/entity-cards/.roadmap-card.md +46 -0
  118. package/src/components/chat/entity-cards/.roadmap-vote-button.md +52 -0
  119. package/src/components/chat/entity-cards/.slack-message-card.md +48 -0
  120. package/src/components/chat/entity-cards/.task-type-icon.md +47 -0
  121. package/src/components/chat/hooks/.index.md +36 -21
  122. package/src/components/chat/hooks/.use-chat-attachment-image-gallery.md +51 -0
  123. package/src/components/chat/hooks/.use-chat-attachments.md +48 -0
  124. package/src/components/chat/hooks/.use-chat-card-item.md +39 -0
  125. package/src/components/chat/hooks/.use-chat-identity.md +45 -0
  126. package/src/components/chat/hooks/.use-chat.md +58 -0
  127. package/src/components/chat/hooks/.use-chunk-catchup.md +46 -48
  128. package/src/components/chat/hooks/.use-close-on-navigation.md +44 -0
  129. package/src/components/chat/hooks/.use-collapsible.md +48 -0
  130. package/src/components/chat/hooks/.use-embedded-chat.md +32 -0
  131. package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +40 -0
  132. package/src/components/chat/hooks/.use-nats-chat-adapter.md +52 -0
  133. package/src/components/chat/hooks/.use-nats-dialog-subscription.md +49 -30
  134. package/src/components/chat/hooks/.use-proxied-image-url.md +40 -0
  135. package/src/components/chat/hooks/.use-realtime-chunk-processor.md +43 -40
  136. package/src/components/chat/hooks/.use-slash-commands.md +46 -0
  137. package/src/components/chat/hooks/.use-sse-chat-adapter.md +34 -0
  138. package/src/components/chat/hooks/.use-sse.md +60 -0
  139. package/src/components/chat/hooks/.use-unified-chat.md +57 -0
  140. package/src/components/chat/types/.api.types.md +52 -38
  141. package/src/components/chat/types/.chat.types.md +43 -34
  142. package/src/components/chat/types/.component.types.md +47 -48
  143. package/src/components/chat/types/.index.md +20 -27
  144. package/src/components/chat/types/.message.types.md +58 -48
  145. package/src/components/chat/types/.network.types.md +57 -31
  146. package/src/components/chat/types/.processing.types.md +49 -31
  147. package/src/components/chat/types/.unified-chat-state.types.md +41 -0
  148. package/src/components/chat/types/entities/.blog.md +43 -0
  149. package/src/components/chat/types/entities/.case-study.md +26 -0
  150. package/src/components/chat/types/entities/.content-ref.md +41 -0
  151. package/src/components/chat/types/entities/.customer-interview.md +28 -0
  152. package/src/components/chat/types/entities/.data-room-doc.md +36 -0
  153. package/src/components/chat/types/entities/.github-activity.md +43 -0
  154. package/src/components/chat/types/entities/.hubspot-ticket.md +53 -0
  155. package/src/components/chat/types/entities/.index.md +42 -0
  156. package/src/components/chat/types/entities/.investor-update.md +45 -0
  157. package/src/components/chat/types/entities/.onboarding-guide.md +50 -0
  158. package/src/components/chat/types/entities/.program-types.md +57 -0
  159. package/src/components/chat/types/entities/.roadmap-item.md +58 -0
  160. package/src/components/chat/types/entities/.slack-message.md +35 -0
  161. package/src/components/chat/utils/.agent-status-message.md +45 -0
  162. package/src/components/chat/utils/.auto-continuation-directive.md +58 -0
  163. package/src/components/chat/utils/.chat-attachment-markdown.md +54 -0
  164. package/src/components/chat/utils/.chat-authed-fetch.md +25 -0
  165. package/src/components/chat/utils/.chat-nav-resolution.md +46 -0
  166. package/src/components/chat/utils/.chat-proxy-auth-storage.md +38 -0
  167. package/src/components/chat/utils/.chip-action-class.md +34 -0
  168. package/src/components/chat/utils/.chip-styles.md +46 -0
  169. package/src/components/chat/utils/.chunk-parser.md +38 -28
  170. package/src/components/chat/utils/.clickup-task-type-utils.md +48 -0
  171. package/src/components/chat/utils/.compact-card-classes.md +62 -0
  172. package/src/components/chat/utils/.decide-new-tab.md +51 -0
  173. package/src/components/chat/utils/.external-app-urls.md +29 -0
  174. package/src/components/chat/utils/.extract-incomplete-message-state.md +25 -29
  175. package/src/components/chat/utils/.flatten-assistant-content.md +34 -0
  176. package/src/components/chat/utils/.icon-registry.md +46 -0
  177. package/src/components/chat/utils/.index.md +37 -32
  178. package/src/components/chat/utils/.is-cross-origin-url.md +35 -0
  179. package/src/components/chat/utils/.message-segment-accumulator.md +25 -34
  180. package/src/components/chat/utils/.nav-anchor-props.md +44 -0
  181. package/src/components/chat/utils/.nav-click-handler.md +47 -0
  182. package/src/components/chat/utils/.onboarding-icons.md +28 -0
  183. package/src/components/chat/utils/.process-historical-messages.md +46 -35
  184. package/src/components/chat/utils/.scroll-anchor.md +40 -0
  185. package/src/components/chat/utils/.slash-dispatch-utils.md +44 -0
  186. package/src/components/chat/utils/.source-icons.md +35 -0
  187. package/src/components/chat/utils/.source-row-cta.md +54 -0
  188. package/src/components/chat/utils/.tool-call-helpers.md +42 -0
  189. package/src/components/contact/.contact-form.md +43 -0
  190. package/src/components/contact/.index.md +27 -0
  191. package/src/components/features/.array-entry-manager.md +36 -45
  192. package/src/components/features/.changelog-manager.md +47 -21
  193. package/src/components/features/.changelog-sections-manager.md +21 -26
  194. package/src/components/features/.command-box.md +31 -28
  195. package/src/components/features/.entity-summary-editor.md +46 -0
  196. package/src/components/features/.entity-video-section.md +51 -0
  197. package/src/components/features/.figma-prototype-viewer.md +48 -29
  198. package/src/components/features/.filters-dropdown.md +33 -46
  199. package/src/components/features/.highlight-config-section.md +42 -0
  200. package/src/components/features/.highlight-generation-section.md +46 -0
  201. package/src/components/features/.highlight-video-combined-section.md +47 -0
  202. package/src/components/features/.highlight-video-preview.md +44 -0
  203. package/src/components/features/.highlight-video-section.md +47 -0
  204. package/src/components/features/.index.md +40 -66
  205. package/src/components/features/.media-gallery-manager.md +48 -38
  206. package/src/components/features/.more-about-button.md +22 -19
  207. package/src/components/features/.og-editor-preview.md +40 -36
  208. package/src/components/features/.parallax-image-showcase.md +33 -26
  209. package/src/components/features/.paths-display.md +42 -43
  210. package/src/components/features/.platform-badge.md +37 -36
  211. package/src/components/features/.platform-filter.md +23 -16
  212. package/src/components/features/.policy-configuration-panel.md +48 -56
  213. package/src/components/features/.provider-button.md +33 -36
  214. package/src/components/features/.push-button-selector.md +40 -29
  215. package/src/components/features/.release-media-manager.md +46 -31
  216. package/src/components/features/.section-selector.md +26 -31
  217. package/src/components/features/.select-button.md +35 -25
  218. package/src/components/features/.seo-editor-preview.md +41 -44
  219. package/src/components/features/.social-links-manager.md +25 -19
  220. package/src/components/features/.start-with-openframe-button.md +37 -29
  221. package/src/components/features/.status-filter-component.md +36 -20
  222. package/src/components/features/.tags-selector.md +40 -24
  223. package/src/components/features/.transcribe-and-summarize-combined-section.md +45 -0
  224. package/src/components/features/.transcribe-summarize-section.md +48 -0
  225. package/src/components/features/.transcript-summary-editor.md +53 -0
  226. package/src/components/features/.video-bites-display.md +46 -0
  227. package/src/components/features/.video-clips-section.md +41 -0
  228. package/src/components/features/.video-ratio-tabs.md +56 -0
  229. package/src/components/features/.video-source-selector.md +60 -0
  230. package/src/components/features/.video.md +44 -0
  231. package/src/components/features/.waitlist-form.md +60 -0
  232. package/src/components/features/ai-enrich/.AIEnrichButton.md +30 -27
  233. package/src/components/features/ai-enrich/.AIEnrichSection.md +46 -42
  234. package/src/components/features/board/.board-column-header.md +38 -0
  235. package/src/components/features/board/.board-column.md +43 -0
  236. package/src/components/features/board/.board.md +51 -0
  237. package/src/components/features/board/.color-utils.md +26 -0
  238. package/src/components/features/board/.index.md +56 -0
  239. package/src/components/features/board/.ticket-card-skeleton.md +38 -0
  240. package/src/components/features/board/.ticket-card.md +47 -0
  241. package/src/components/features/board/.types.md +45 -0
  242. package/src/components/features/board/.use-board-collapse.md +34 -0
  243. package/src/components/features/notifications/.index.md +57 -0
  244. package/src/components/features/notifications/.notification-drawer.md +34 -0
  245. package/src/components/features/notifications/.notification-tile.md +39 -0
  246. package/src/components/features/notifications/.notifications-context.md +73 -0
  247. package/src/components/features/notifications/.types.md +45 -0
  248. package/src/components/icons/.about-icon.md +20 -28
  249. package/src/components/icons/.ai-robot-icon.md +15 -17
  250. package/src/components/icons/.bash-icon.md +16 -23
  251. package/src/components/icons/.buildings-icon.md +10 -24
  252. package/src/components/icons/.capterra-icon.md +30 -26
  253. package/src/components/icons/.carta-icon.md +29 -0
  254. package/src/components/icons/.clickup-icon.md +26 -0
  255. package/src/components/icons/.cmd-icon.md +15 -22
  256. package/src/components/icons/.coins-icon.md +17 -25
  257. package/src/components/icons/.community-hub-icon.md +19 -25
  258. package/src/components/icons/.community-icon.md +24 -21
  259. package/src/components/icons/.compare-icon.md +32 -19
  260. package/src/components/icons/.copy-icon.md +29 -15
  261. package/src/components/icons/.custom-external-link-icon.md +19 -17
  262. package/src/components/icons/.custom-fork-icon.md +32 -21
  263. package/src/components/icons/.custom-license-icon.md +29 -25
  264. package/src/components/icons/.custom-star-icon.md +20 -28
  265. package/src/components/icons/.custom-time-icon.md +21 -22
  266. package/src/components/icons/.cut-vendor-costs-icon.md +6 -19
  267. package/src/components/icons/.dashboard-icon.md +13 -18
  268. package/src/components/icons/.deno-icon.md +16 -23
  269. package/src/components/icons/.donut-icon.md +12 -23
  270. package/src/components/icons/.double-chevron-icon.md +28 -36
  271. package/src/components/icons/.elestio-logo.md +13 -23
  272. package/src/components/icons/.empty-vendor-icon.md +16 -18
  273. package/src/components/icons/.explore-categories-icon.md +18 -29
  274. package/src/components/icons/.eye-icon.md +16 -26
  275. package/src/components/icons/.facebook-icon.md +9 -20
  276. package/src/components/icons/.figma-icon.md +8 -17
  277. package/src/components/icons/.filter-icon.md +15 -17
  278. package/src/components/icons/.flamingo-logo.md +28 -27
  279. package/src/components/icons/.folder-shield-icon.md +28 -19
  280. package/src/components/icons/.g2-icon.md +22 -21
  281. package/src/components/icons/.getapp-icon.md +25 -21
  282. package/src/components/icons/.github-icon.md +13 -25
  283. package/src/components/icons/.globe-icon.md +14 -19
  284. package/src/components/icons/.google-gemini-icon.md +16 -19
  285. package/src/components/icons/.google-logo.md +15 -21
  286. package/src/components/icons/.grid-view-icon.md +30 -19
  287. package/src/components/icons/.hamburger-icon.md +22 -20
  288. package/src/components/icons/.hand-dollar-icon.md +24 -34
  289. package/src/components/icons/.hotel-icon.md +27 -21
  290. package/src/components/icons/.icon-utils.md +28 -29
  291. package/src/components/icons/.image-icon.md +15 -22
  292. package/src/components/icons/.index.md +25 -28
  293. package/src/components/icons/.info-circle-icon.md +29 -30
  294. package/src/components/icons/.instagram-icon.md +10 -24
  295. package/src/components/icons/.jump-in-icon.md +18 -18
  296. package/src/components/icons/.linux-icon.md +18 -18
  297. package/src/components/icons/.log-out-icon.md +15 -23
  298. package/src/components/icons/.logs-icon.md +14 -23
  299. package/src/components/icons/.margin-crisis-icon.md +21 -20
  300. package/src/components/icons/.menu-icon.md +18 -19
  301. package/src/components/icons/.miami-cyber-gang-logo-face-only.md +18 -21
  302. package/src/components/icons/.miami-cyber-gang-logo.md +22 -14
  303. package/src/components/icons/.mlg-logo.md +18 -16
  304. package/src/components/icons/.moon-icon.md +32 -22
  305. package/src/components/icons/.ms-icon.md +30 -19
  306. package/src/components/icons/.nushell-icon.md +7 -21
  307. package/src/components/icons/.open-source-icon.md +19 -23
  308. package/src/components/icons/.openai-icon.md +9 -24
  309. package/src/components/icons/.openframe-ai-icons.md +25 -26
  310. package/src/components/icons/.openframe-logo.md +28 -22
  311. package/src/components/icons/.openframe-text.md +24 -27
  312. package/src/components/icons/.openmsp-logo.md +26 -23
  313. package/src/components/icons/.pilot-icon.md +23 -0
  314. package/src/components/icons/.powershell-icon.md +17 -22
  315. package/src/components/icons/.python-icon.md +16 -23
  316. package/src/components/icons/.queries-icon.md +13 -21
  317. package/src/components/icons/.reddit-icon.md +28 -24
  318. package/src/components/icons/.remote-control-icon.md +13 -17
  319. package/src/components/icons/.script-icon.md +27 -19
  320. package/src/components/icons/.search-icon.md +21 -21
  321. package/src/components/icons/.send-icon.md +14 -16
  322. package/src/components/icons/.settings-icon.md +30 -19
  323. package/src/components/icons/.shape-circle-dash-icon.md +16 -21
  324. package/src/components/icons/.shell-icon.md +15 -19
  325. package/src/components/icons/.shield-check-icon.md +18 -31
  326. package/src/components/icons/.shield-key-icon.md +25 -25
  327. package/src/components/icons/.shield-lock-icon.md +8 -18
  328. package/src/components/icons/.slack-icon.md +28 -32
  329. package/src/components/icons/.sparkles-icon.md +18 -23
  330. package/src/components/icons/.sso-configuration-icon.md +29 -16
  331. package/src/components/icons/.sun-icon.md +20 -18
  332. package/src/components/icons/.table-view-icon.md +17 -19
  333. package/src/components/icons/.telegram-icon.md +8 -22
  334. package/src/components/icons/.thumbs-down-icon.md +10 -19
  335. package/src/components/icons/.thumbs-up-icon.md +8 -17
  336. package/src/components/icons/.tool-directory-icons.md +24 -28
  337. package/src/components/icons/.trustpilot-icon.md +25 -22
  338. package/src/components/icons/.user-icon.md +26 -28
  339. package/src/components/icons/.users-group-icon.md +28 -24
  340. package/src/components/icons/.vendor-showcase-icons.md +21 -29
  341. package/src/components/icons/.vendors-icon.md +18 -22
  342. package/src/components/icons/.whatsapp-icon.md +30 -14
  343. package/src/components/icons/.x-icon.md +18 -23
  344. package/src/components/icons/.x-logo.md +13 -38
  345. package/src/components/icons/.youtube-icon.md +8 -19
  346. package/src/components/icons/device-type-icons/.get-device-type-icon.md +26 -34
  347. package/src/components/icons-v2-generated/.index.md +52 -0
  348. package/src/components/icons-v2-generated/alphabet/.index.md +33 -0
  349. package/src/components/icons-v2-generated/arrows/.index.md +39 -0
  350. package/src/components/icons-v2-generated/audio-and-visual/.index.md +40 -0
  351. package/src/components/icons-v2-generated/brand-logos/.elestio-logo-icon.md +40 -0
  352. package/src/components/icons-v2-generated/brand-logos/.gemini-logo-icon.md +37 -0
  353. package/src/components/icons-v2-generated/brand-logos/.google-gemini-logo-icon.md +33 -0
  354. package/src/components/icons-v2-generated/brand-logos/.index.md +38 -0
  355. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-grey-icon.md +35 -0
  356. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-icon.md +36 -0
  357. package/src/components/icons-v2-generated/buildings/.index.md +48 -0
  358. package/src/components/icons-v2-generated/charts/.index.md +40 -0
  359. package/src/components/icons-v2-generated/clothes/.index.md +48 -0
  360. package/src/components/icons-v2-generated/coding/.index.md +42 -0
  361. package/src/components/icons-v2-generated/communication/.index.md +39 -0
  362. package/src/components/icons-v2-generated/date-and-time/.index.md +29 -0
  363. package/src/components/icons-v2-generated/design/.index.md +39 -0
  364. package/src/components/icons-v2-generated/devices/.index.md +38 -0
  365. package/src/components/icons-v2-generated/documents/.index.md +38 -0
  366. package/src/components/icons-v2-generated/finance/.index.md +34 -0
  367. package/src/components/icons-v2-generated/food-and-drinks/.index.md +34 -0
  368. package/src/components/icons-v2-generated/food-and-drinks/.leafy-green-icon.md +36 -0
  369. package/src/components/icons-v2-generated/food-and-drinks/.strawberry-icon.md +39 -0
  370. package/src/components/icons-v2-generated/health/.index.md +40 -0
  371. package/src/components/icons-v2-generated/household/.index.md +45 -0
  372. package/src/components/icons-v2-generated/interface/.index.md +36 -0
  373. package/src/components/icons-v2-generated/map-and-travel/.index.md +41 -0
  374. package/src/components/icons-v2-generated/media-playback/.index.md +51 -0
  375. package/src/components/icons-v2-generated/number/.index.md +41 -0
  376. package/src/components/icons-v2-generated/school/.index.md +37 -0
  377. package/src/components/icons-v2-generated/security/.fingerprint-icon.md +38 -0
  378. package/src/components/icons-v2-generated/security/.index.md +39 -0
  379. package/src/components/icons-v2-generated/shopping/.index.md +42 -0
  380. package/src/components/icons-v2-generated/signs-and-symbols/.index.md +32 -0
  381. package/src/components/icons-v2-generated/sort-and-filter/.index.md +35 -0
  382. package/src/components/icons-v2-generated/sport/.index.md +41 -0
  383. package/src/components/icons-v2-generated/text-editor/.index.md +44 -0
  384. package/src/components/icons-v2-generated/users/.index.md +45 -0
  385. package/src/components/icons-v2-generated/vehicles-and-delivery/.index.md +36 -0
  386. package/src/components/icons-v2-generated/weather-and-nature/.flower-sakura-icon.md +36 -0
  387. package/src/components/icons-v2-generated/weather-and-nature/.index.md +34 -0
  388. package/src/components/layout/.article-detail-layout.md +43 -0
  389. package/src/components/layout/.back-button.md +40 -0
  390. package/src/components/layout/.list-page-layout.md +35 -26
  391. package/src/components/layout/.page-container.md +27 -38
  392. package/src/components/layout/.page-layout.md +50 -0
  393. package/src/components/layout/.title-block.md +42 -0
  394. package/src/components/loading/.card-skeleton.md +38 -29
  395. package/src/components/loading/.device-card-skeleton.md +29 -25
  396. package/src/components/loading/.index.md +39 -46
  397. package/src/components/loading/.margin-report-skeleton.md +45 -34
  398. package/src/components/loading/.organization-card-skeleton.md +39 -44
  399. package/src/components/loading/.page-layout-skeleton.md +34 -45
  400. package/src/components/loading/.unified-skeleton.md +62 -36
  401. package/src/components/navigation/.app-header.md +40 -29
  402. package/src/components/navigation/.app-layout.md +25 -26
  403. package/src/components/navigation/.header-global-search.md +34 -37
  404. package/src/components/navigation/.header-organization-filter.md +23 -22
  405. package/src/components/navigation/.header.md +31 -35
  406. package/src/components/navigation/.mobile-burger-menu.md +39 -47
  407. package/src/components/navigation/.mobile-nav-panel.md +51 -32
  408. package/src/components/navigation/.navigation-sidebar-header.md +36 -0
  409. package/src/components/navigation/.navigation-sidebar-item.md +45 -0
  410. package/src/components/navigation/.navigation-sidebar-toggle.md +38 -0
  411. package/src/components/navigation/.navigation-sidebar.md +33 -34
  412. package/src/components/navigation/.sliding-sidebar.md +52 -41
  413. package/src/components/navigation/.sticky-section-nav.md +56 -48
  414. package/src/components/platform/.ScriptArguments.md +39 -25
  415. package/src/components/platform/.ScriptInfoSection.md +30 -26
  416. package/src/components/platform/.ShellTypeBadge.md +18 -13
  417. package/src/components/platform/.SoftwareInfo.md +23 -27
  418. package/src/components/platform/.SoftwareSourceBadge.md +28 -19
  419. package/src/components/platform/.ToolBadge.md +25 -26
  420. package/src/components/platform/ShellTypeBadge.tsx +2 -2
  421. package/src/components/providers/.theme-provider.md +52 -0
  422. package/src/components/shared/delivery/.delivery-lists.md +39 -0
  423. package/src/components/shared/delivery/.delivery-row.md +41 -0
  424. package/src/components/shared/delivery/.delivery-table.md +41 -0
  425. package/src/components/shared/delivery/.index.md +38 -0
  426. package/src/components/shared/dev-section/.dev-card-row.md +60 -0
  427. package/src/components/shared/dev-section/.dev-section-page.md +48 -0
  428. package/src/components/shared/dev-section/.dev-section-view.md +43 -0
  429. package/src/components/shared/dev-section/.index.md +38 -0
  430. package/src/components/shared/legal-document/.index.md +40 -0
  431. package/src/components/shared/legal-document/.legal-document-page.md +50 -0
  432. package/src/components/shared/legal-document/.use-legal-docs.md +42 -0
  433. package/src/components/shared/onboarding/.onboarding-step-card.md +32 -31
  434. package/src/components/shared/onboarding/.onboarding-walkthrough.md +39 -43
  435. package/src/components/shared/product-release/.index.md +28 -30
  436. package/src/components/shared/product-release/.product-release-card-skeleton.md +28 -28
  437. package/src/components/shared/product-release/.product-release-card.md +45 -27
  438. package/src/components/shared/product-release/.release-detail-page.md +23 -24
  439. package/src/components/shared/roadmap/.index.md +37 -0
  440. package/src/components/shared/roadmap/.roadmap-grid-skeleton.md +39 -0
  441. package/src/components/shared/roadmap/.roadmap-grid.md +66 -0
  442. package/src/components/shared/roadmap/.use-roadmap-voting.md +68 -0
  443. package/src/components/tickets/.help-center-card.md +51 -0
  444. package/src/components/tickets/.help-center-create-form.md +38 -0
  445. package/src/components/tickets/.help-center-list.md +40 -0
  446. package/src/components/tickets/.index.md +65 -0
  447. package/src/components/tickets/.ticket-center.md +51 -0
  448. package/src/components/tickets/.ticket-detail-drawer.md +48 -0
  449. package/src/components/tickets/.ticket-linked-delivery-card.md +36 -0
  450. package/src/components/tickets/.ticket-open-form.md +50 -0
  451. package/src/components/tickets/.ticket-row.md +30 -0
  452. package/src/components/tickets/.types.md +57 -0
  453. package/src/components/tickets/hooks/.use-ticket-actions.md +77 -0
  454. package/src/components/tickets/hooks/.use-ticket-engagements.md +42 -0
  455. package/src/components/tickets/hooks/.use-tickets-list.md +54 -0
  456. package/src/components/ui/.actions-menu.md +66 -41
  457. package/src/components/ui/.alert-dialog.md +29 -26
  458. package/src/components/ui/.allowed-domains-input.md +29 -21
  459. package/src/components/ui/.assignee-dropdown.md +45 -0
  460. package/src/components/ui/.autocomplete.md +47 -41
  461. package/src/components/ui/.benefit-card.md +51 -36
  462. package/src/components/ui/.brand-association-card.md +30 -27
  463. package/src/components/ui/.breadcrumb.md +17 -15
  464. package/src/components/ui/.checkbox-block.md +39 -35
  465. package/src/components/ui/.checkbox-with-description.md +23 -16
  466. package/src/components/ui/.checkbox.md +31 -23
  467. package/src/components/ui/.circular-progress.md +49 -19
  468. package/src/components/ui/.content-loader.md +32 -20
  469. package/src/components/ui/.cursor-pagination.md +41 -52
  470. package/src/components/ui/.dashboard-info-card.md +33 -26
  471. package/src/components/ui/.date-picker.md +27 -25
  472. package/src/components/ui/.device-card-compact.md +28 -29
  473. package/src/components/ui/.device-card.md +27 -27
  474. package/src/components/ui/.dialog.md +25 -16
  475. package/src/components/ui/.drawer.md +86 -0
  476. package/src/components/ui/.dropdown-button.md +45 -0
  477. package/src/components/ui/.entity-image.md +46 -0
  478. package/src/components/ui/.error-state.md +41 -28
  479. package/src/components/ui/.feature-card.md +35 -31
  480. package/src/components/ui/.feature-list.md +48 -0
  481. package/src/components/ui/.field-wrapper.md +47 -0
  482. package/src/components/ui/.file-upload.md +42 -0
  483. package/src/components/ui/.filter-checkbox-item.md +43 -0
  484. package/src/components/ui/.filter-list.md +57 -0
  485. package/src/components/ui/.filter-modal.md +59 -0
  486. package/src/components/ui/.floating-tooltip.md +43 -26
  487. package/src/components/ui/.hidden-tags-popup.md +49 -0
  488. package/src/components/ui/.hover-dropdown.md +54 -0
  489. package/src/components/ui/.image-gallery-modal.md +41 -34
  490. package/src/components/ui/.image-uploader.md +53 -0
  491. package/src/components/ui/.index.md +40 -34
  492. package/src/components/ui/.info-card.md +31 -31
  493. package/src/components/ui/.info-row.md +31 -27
  494. package/src/components/ui/.input-trigger.md +44 -0
  495. package/src/components/ui/.input.md +37 -31
  496. package/src/components/ui/.markdown-editor.md +57 -0
  497. package/src/components/ui/.modal-v2.md +51 -0
  498. package/src/components/ui/.modal.md +32 -31
  499. package/src/components/ui/.more-actions-menu.md +45 -38
  500. package/src/components/ui/.organization-card.md +31 -37
  501. package/src/components/ui/.page-actions.md +44 -54
  502. package/src/components/ui/.phone-input.md +54 -0
  503. package/src/components/ui/.progress-bar.md +35 -27
  504. package/src/components/ui/.radio-group.md +39 -27
  505. package/src/components/ui/.release-changelog-section.md +34 -34
  506. package/src/components/ui/.search-input.md +48 -0
  507. package/src/components/ui/.select.md +54 -34
  508. package/src/components/ui/.service-card.md +42 -40
  509. package/src/components/ui/.sheet.md +27 -18
  510. package/src/components/ui/.simple-markdown-renderer.md +29 -31
  511. package/src/components/ui/.sort-column-item.md +42 -0
  512. package/src/components/ui/.square-avatar.md +34 -24
  513. package/src/components/ui/.status-badge.md +26 -38
  514. package/src/components/ui/.switch.md +22 -35
  515. package/src/components/ui/.tab-navigation.md +56 -53
  516. package/src/components/ui/.tab-selector.md +40 -0
  517. package/src/components/ui/.tag-key-value-filter.md +56 -0
  518. package/src/components/ui/.tag-search-input.md +53 -0
  519. package/src/components/ui/.tag.md +49 -31
  520. package/src/components/ui/.tags-manager.md +60 -0
  521. package/src/components/ui/.textarea.md +44 -34
  522. package/src/components/ui/.ticket-attachments-list.md +45 -0
  523. package/src/components/ui/.ticket-detail-section.md +29 -0
  524. package/src/components/ui/.ticket-info-section.md +56 -0
  525. package/src/components/ui/.ticket-note-card.md +53 -0
  526. package/src/components/ui/.ticket-notes-section.md +54 -0
  527. package/src/components/ui/.ticket-status-tag.md +49 -0
  528. package/src/components/ui/.title-content-block.md +25 -26
  529. package/src/components/ui/.toaster.md +40 -28
  530. package/src/components/ui/.tooltip.md +22 -11
  531. package/src/components/ui/.truncate-text.md +39 -0
  532. package/src/components/ui/button/.button-styles.md +35 -0
  533. package/src/components/ui/button/.button.md +53 -0
  534. package/src/components/ui/button/.split-button.md +48 -0
  535. package/src/components/ui/data-table/.data-table-body.md +48 -0
  536. package/src/components/ui/data-table/.data-table-column-filter.md +45 -0
  537. package/src/components/ui/data-table/.data-table-cursor-footer.md +45 -0
  538. package/src/components/ui/data-table/.data-table-empty.md +43 -0
  539. package/src/components/ui/data-table/.data-table-header.md +55 -0
  540. package/src/components/ui/data-table/.data-table-infinite-footer.md +44 -0
  541. package/src/components/ui/data-table/.data-table-row-count.md +43 -0
  542. package/src/components/ui/data-table/.data-table-row.md +47 -0
  543. package/src/components/ui/data-table/.data-table-skeleton.md +42 -0
  544. package/src/components/ui/data-table/.data-table.md +47 -0
  545. package/src/components/ui/data-table/.index.md +55 -0
  546. package/src/components/ui/data-table/.types.md +54 -0
  547. package/src/components/ui/data-table/.use-data-table.md +45 -0
  548. package/src/components/ui/data-table/.utils.md +38 -0
  549. package/src/components/ui/file-manager/.file-manager-action-bar.md +39 -30
  550. package/src/components/ui/file-manager/.file-manager-breadcrumb.md +29 -27
  551. package/src/components/ui/file-manager/.file-manager-context-menu.md +38 -42
  552. package/src/components/ui/file-manager/.file-manager-empty.md +26 -39
  553. package/src/components/ui/file-manager/.file-manager-table-row.md +33 -41
  554. package/src/components/ui/file-manager/.file-manager.md +35 -31
  555. package/src/components/ui/query-report-table/.index.md +43 -0
  556. package/src/components/ui/query-report-table/.query-report-table-header.md +36 -0
  557. package/src/components/ui/query-report-table/.query-report-table-row.md +40 -0
  558. package/src/components/ui/query-report-table/.query-report-table-skeleton.md +44 -0
  559. package/src/components/ui/query-report-table/.query-report-table.md +47 -0
  560. package/src/components/ui/query-report-table/.types.md +41 -0
  561. package/src/components/ui/query-report-table/.utils.md +35 -0
  562. package/src/components/ui/table/.index.md +27 -48
  563. package/src/components/ui/table/.table-cell.md +18 -27
  564. package/src/components/ui/table/.table-column-filter-dropdown.md +40 -0
  565. package/src/components/ui/table/.table-description-cell.md +24 -14
  566. package/src/components/ui/table/.table-empty-state.md +21 -22
  567. package/src/components/ui/table/.table-header.md +25 -40
  568. package/src/components/ui/table/.table-row.md +22 -40
  569. package/src/components/ui/table/.table-skeleton.md +33 -26
  570. package/src/components/ui/table/.table-timestamp-cell.md +26 -16
  571. package/src/components/ui/table/.table.md +39 -59
  572. package/src/components/ui/table/.types.md +44 -36
  573. package/src/components/ui/table/.utils.md +18 -20
  574. package/src/contexts/.chat-runtime-context.md +54 -0
  575. package/src/contexts/.endpoints-runtime-context.md +58 -0
  576. package/src/contexts/.index.md +53 -0
  577. package/src/contexts/.use-outer-or-default.md +36 -0
  578. package/src/embed-shims/.index.md +45 -0
  579. package/src/embed-shims/.next-dynamic.md +43 -0
  580. package/src/embed-shims/.next-image.md +45 -0
  581. package/src/embed-shims/.next-link.md +59 -0
  582. package/src/embed-shims/.next-navigation.md +59 -0
  583. package/src/hooks/.index.md +34 -29
  584. package/src/hooks/.use-access-code-integration.md +49 -0
  585. package/src/hooks/.use-contact-submission.md +37 -26
  586. package/src/hooks/.use-copy-to-clipboard.md +42 -0
  587. package/src/hooks/.use-near-viewport.md +44 -0
  588. package/src/hooks/.use-og-placeholder.md +51 -0
  589. package/src/hooks/.use-toast.md +36 -35
  590. package/src/hooks/state/.use-api-params.md +29 -46
  591. package/src/hooks/state/.use-query-params.md +37 -33
  592. package/src/hooks/ui/.index.md +33 -32
  593. package/src/hooks/ui/.use-auto-limit-tags.md +54 -0
  594. package/src/hooks/ui/.use-horizontal-scrollbar.md +74 -0
  595. package/src/hooks/ui/.use-image-edge-color.md +42 -0
  596. package/src/hooks/ui/.use-media-query.md +33 -25
  597. package/src/hooks/ui/.use-search.md +51 -0
  598. package/src/nats/.nats.md +49 -28
  599. package/src/schemas/.contact-schema.md +45 -0
  600. package/src/stories/.AnnouncementBar.stories.md +45 -0
  601. package/src/stories/.AppLayout.stories.md +20 -21
  602. package/src/stories/.Autocomplete.stories.md +48 -34
  603. package/src/stories/.Board.stories.md +35 -0
  604. package/src/stories/.Button.stories.md +36 -33
  605. package/src/stories/.ChatTicketList.stories.md +33 -0
  606. package/src/stories/.CheckboxBlock.stories.md +40 -28
  607. package/src/stories/.ContentLoader.stories.md +47 -0
  608. package/src/stories/.DashboardInfoCard.stories.md +57 -0
  609. package/src/stories/.DataTable.stories.md +41 -0
  610. package/src/stories/.DatePicker.stories.md +66 -52
  611. package/src/stories/.DeviceCard.stories.md +41 -40
  612. package/src/stories/.DeviceCardCompact.stories.md +41 -0
  613. package/src/stories/.DotsLoaderIcon.stories.md +36 -0
  614. package/src/stories/.Drawer.stories.md +58 -0
  615. package/src/stories/.EmbeddableChat.stories.md +41 -0
  616. package/src/stories/.FileManager.stories.md +41 -0
  617. package/src/stories/.FileManagerActionBar.stories.md +38 -0
  618. package/src/stories/.FileUpload.stories.md +53 -0
  619. package/src/stories/.FilterList.stories.md +54 -0
  620. package/src/stories/.FilterModal.stories.md +72 -0
  621. package/src/stories/.FiltersDropdown.stories.md +57 -0
  622. package/src/stories/.Header.stories.md +48 -0
  623. package/src/stories/.ImageUploader.stories.md +49 -0
  624. package/src/stories/.InfoCard.stories.md +54 -0
  625. package/src/stories/.Input.stories.md +48 -30
  626. package/src/stories/.ListPageLayout.stories.md +56 -43
  627. package/src/stories/.MingoOnboardingCard.stories.md +42 -0
  628. package/src/stories/.MingoOnboardingCardSkeleton.stories.md +35 -0
  629. package/src/stories/.Modal.stories.md +40 -31
  630. package/src/stories/.NotificationDrawer.stories.md +55 -0
  631. package/src/stories/.OnboardingStepCard.stories.md +41 -0
  632. package/src/stories/.OrganizationCard.stories.md +61 -0
  633. package/src/stories/.PageActions.stories.md +52 -49
  634. package/src/stories/.PageContainer.stories.md +41 -35
  635. package/src/stories/.PageLayout.stories.md +60 -0
  636. package/src/stories/.ParallaxImageShowcase.stories.md +49 -0
  637. package/src/stories/.PhoneInput.stories.md +53 -0
  638. package/src/stories/.QueryReportTable.stories.md +44 -0
  639. package/src/stories/.RadioGroup.stories.md +46 -0
  640. package/src/stories/.RadioGroupBlock.stories.md +45 -0
  641. package/src/stories/.Select.stories.md +29 -15
  642. package/src/stories/.SlashCommandSuggestions.stories.md +41 -0
  643. package/src/stories/.SplitButton.stories.md +62 -0
  644. package/src/stories/.TabNavigation.stories.md +47 -38
  645. package/src/stories/.TabSelector.stories.md +65 -0
  646. package/src/stories/.Table.stories.md +38 -46
  647. package/src/stories/.TableColumnFilterDropdown.stories.md +46 -0
  648. package/src/stories/.Tag.stories.md +43 -32
  649. package/src/stories/.TagKeyValueFilter.stories.md +44 -0
  650. package/src/stories/.TagSearchInput.stories.md +61 -0
  651. package/src/stories/.Textarea.stories.md +49 -26
  652. package/src/stories/.Theme.stories.md +41 -0
  653. package/src/stories/.TicketAttachmentsList.stories.md +39 -0
  654. package/src/stories/.TicketDescriptionViewer.stories.md +39 -0
  655. package/src/stories/.TicketInfoSection.stories.md +40 -0
  656. package/src/stories/.TicketKnowledgeBaseList.stories.md +36 -0
  657. package/src/stories/.TicketNotesSection.stories.md +50 -0
  658. package/src/stories/.Toaster.stories.md +40 -0
  659. package/src/stories/.ToolExecutionDisplay.stories.md +41 -0
  660. package/src/stories/.Tooltip.stories.md +41 -0
  661. package/src/stories/.UserSummary.stories.md +41 -0
  662. package/src/stories/.WaitlistForm.stories.md +42 -0
  663. package/src/stories/BlogCard.stories.tsx +61 -0
  664. package/src/stories/CampaignCardAdmin.stories.tsx +52 -0
  665. package/src/stories/CaseStudyCard.stories.tsx +42 -0
  666. package/src/stories/ChatContainer.stories.tsx +186 -0
  667. package/src/stories/ChatInlineVideoPill.stories.tsx +63 -0
  668. package/src/stories/CustomerInterviewCard.stories.tsx +42 -0
  669. package/src/stories/DataRoomDocCard.stories.tsx +52 -0
  670. package/src/stories/GenericEntityCard.stories.tsx +66 -0
  671. package/src/stories/GitHubActivityCard.stories.tsx +61 -0
  672. package/src/stories/HubspotTicketCard.stories.tsx +98 -0
  673. package/src/stories/InvestorUpdateCard.stories.tsx +42 -0
  674. package/src/stories/OnboardingGuideCard.stories.tsx +52 -0
  675. package/src/stories/ProductReleaseCard.stories.tsx +61 -0
  676. package/src/stories/ProgramCard.stories.tsx +79 -0
  677. package/src/stories/RoadmapCard.stories.tsx +75 -0
  678. package/src/stories/SlackMessageCard.stories.tsx +41 -0
  679. package/src/stories/__fixtures__/chat-cards.ts +604 -0
  680. package/src/types/.blog.md +53 -29
  681. package/src/types/.case-study.md +44 -27
  682. package/src/types/.customer-interview.md +66 -44
  683. package/src/types/.delivery.md +40 -0
  684. package/src/types/.employee.md +24 -30
  685. package/src/types/.index.md +33 -47
  686. package/src/types/.marketing.md +49 -44
  687. package/src/types/.navigation.md +33 -25
  688. package/src/types/.os.types.md +32 -27
  689. package/src/types/.platform.md +31 -28
  690. package/src/types/.product-release.md +65 -38
  691. package/src/types/.supabase.md +37 -29
  692. package/src/types/.team.md +41 -33
  693. package/src/types/.video-processing.md +54 -0
  694. package/src/types/.waitlist.md +40 -36
  695. package/src/utils/.access-code-client.md +37 -36
  696. package/src/utils/.cn.md +31 -23
  697. package/src/utils/.color-analysis.md +35 -0
  698. package/src/utils/.country-phone-utils.md +39 -0
  699. package/src/utils/.date-formatters.md +19 -18
  700. package/src/utils/.embed-authed-fetch.md +39 -0
  701. package/src/utils/.embed-proxy-auth-storage.md +38 -0
  702. package/src/utils/.fetch-priority.md +41 -0
  703. package/src/utils/.format.md +74 -25
  704. package/src/utils/.generic-domain-utils.md +42 -0
  705. package/src/utils/.image-proxy.md +59 -23
  706. package/src/utils/.index.md +42 -49
  707. package/src/utils/.local-storage-adapter.md +50 -0
  708. package/src/utils/.ods-color-utils.md +55 -38
  709. package/src/utils/.platform-config.md +45 -25
  710. package/src/utils/.scroll-into-view.md +40 -0
  711. package/src/utils/.source-icons.md +53 -0
  712. package/src/utils/.sse-decision-frame.md +46 -0
  713. package/src/utils/dev-sections/.index.md +34 -0
  714. package/src/utils/dev-sections/.openframe-dev-sections.md +49 -0
  715. package/dist/chunk-ZDF6F7ED.cjs.map +0 -1
  716. package/dist/chunk-ZTJVRSN5.js.map +0 -1
  717. package/src/components/.card.md +0 -42
  718. package/src/components/.contact-button.md +0 -30
  719. package/src/components/.drawer.md +0 -46
  720. package/src/components/.fixed-layout-container.md +0 -47
  721. package/src/components/.footer-waitlist-card.md +0 -29
  722. package/src/components/.join-waitlist-cta.md +0 -29
  723. package/src/components/.sheet.md +0 -47
  724. package/src/components/.sliding-panel.md +0 -48
  725. package/src/components/.tooltip.md +0 -48
  726. package/src/components/.use-mobile.md +0 -42
  727. package/src/components/.vendor-compact-card.md +0 -66
  728. package/src/components/.x-button.md +0 -42
  729. package/src/components/features/.github-repo-button.md +0 -40
  730. package/src/components/features/.organization-icon.md +0 -47
  731. package/src/components/features/.organization-selector.md +0 -45
  732. package/src/components/icons/.fleet-icon.md +0 -39
  733. package/src/components/icons/.meshcentral-icon.md +0 -35
  734. package/src/components/icons/.refresh-icon.md +0 -34
  735. package/src/components/icons/.tactical-icon.md +0 -35
  736. package/src/components/ui/.button.md +0 -69
  737. package/src/components/ui/.log-table-row.md +0 -47
  738. package/src/components/ui/.selectable-device-card.md +0 -46
  739. package/src/hooks/.api-hooks-stub.md +0 -45
  740. package/src/hooks/api/.use-product-releases.md +0 -53
  741. package/src/stories/.OrganizationSelector.stories.md +0 -42
  742. package/src/stories/.SelectableDeviceCard.stories.md +0 -30
  743. package/src/utils/.lite-youtube-embed-stub.md +0 -37
  744. package/src/utils/.lite-youtube-embed.md +0 -33
  745. /package/dist/{chunk-IK2X5YJU.js.map → chunk-7PCP7YQR.js.map} +0 -0
  746. /package/dist/{chunk-3JWIJJ44.js.map → chunk-R6MLPU4A.js.map} +0 -0
@@ -0,0 +1,42 @@
1
+ <!-- source-hash: 38dbaa1fd6bace90952c3ff98f54f23a -->
2
+ A React hook that extracts the dominant edge color from an image URL for use as a background fill behind letterboxed (`object-contain`) images.
3
+
4
+ ## Key Components
5
+
6
+ ### `extractEdgeColor(img: HTMLImageElement): string`
7
+ Internal utility that performs canvas-based pixel analysis:
8
+ - Scales the image down to a 100×100 thumbnail for performance
9
+ - Samples a 15% border band along all four edges
10
+ - Quantizes RGB values into 32-step buckets to group similar colors
11
+ - Returns the averaged RGB of the most common bucket as a CSS `rgb(...)` string
12
+
13
+ ### `useImageEdgeColor(imageUrl, fallback?): string`
14
+ Exported React hook that wraps `extractEdgeColor` with async image loading:
15
+ - Sets `crossOrigin="anonymous"` for canvas pixel access on CDN-hosted images
16
+ - Cancels stale updates via cleanup flag on unmount or URL change
17
+ - Falls back to the provided color (default `#000000`) on load error or missing URL
18
+
19
+ ## Usage Example
20
+
21
+ ```typescript
22
+ import { useImageEdgeColor } from './use-image-edge-color';
23
+
24
+ function ProductImage({ src }: { src: string }) {
25
+ const bgColor = useImageEdgeColor(src, '#1a1a1a');
26
+
27
+ return (
28
+ <div style={{ backgroundColor: bgColor, padding: '1rem' }}>
29
+ <img
30
+ src={src}
31
+ style={{ objectFit: 'contain', width: '100%', height: '300px' }}
32
+ alt="Product"
33
+ />
34
+ </div>
35
+ );
36
+ }
37
+ ```
38
+
39
+ ## Notes
40
+
41
+ - **CORS requirement:** The image server must return CORS headers. Supabase, Cloudflare Images, and the Flamingo image proxy all support this. If CORS fails, `onerror` fires and the fallback color is used.
42
+ - **Why bucketing vs. averaging:** Simple pixel averaging produces muddy mid-tones when edges contain distinct color regions (e.g., blue sky above tan sand). Bucketing picks the *dominant* region instead.
@@ -1,40 +1,48 @@
1
- <!-- source-hash: ad8be7d69a54d22da2cee837d13753b7 -->
2
- A React hook for detecting CSS media query matches with SSR-safe hydration handling. Returns `undefined` during server-side rendering and initial client-side render to prevent hydration mismatches.
1
+ <!-- source-hash: 658ce45ffa6bcde5f5bc895ea6b0b28a -->
2
+ React hook for responsive design that detects whether a CSS media query matches the current viewport, returning `undefined` during SSR to avoid hydration mismatches.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`useMediaQuery(query: string)`** - Core hook that accepts any CSS media query string and returns match status
7
- - **`breakpoints`** - Predefined Tailwind CSS-compatible breakpoint definitions (sm, md, lg, xl, 2xl)
8
- - **Convenience hooks** - `useSmUp()`, `useMdUp()`, `useLgUp()`, `useXlUp()`, `use2xlUp()` for common responsive breakpoints
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `useMediaQuery` | Hook | Core hook accepting any CSS media query string |
9
+ | `breakpoints` | Object | Predefined breakpoints: `md` (800px), `lg` (1280px) |
10
+ | `useMdUp` | Hook | Returns `true` when viewport ≥ 800px |
11
+ | `useLgUp` | Hook | Returns `true` when viewport ≥ 1280px |
12
+ | `useSmUp` | Hook | ⚠️ Deprecated — alias for `useMdUp` |
9
13
 
10
14
  ## Usage Example
11
15
 
12
16
  ```typescript
13
- import { useMediaQuery, useMdUp, breakpoints } from './use-media-query'
14
-
15
- function ResponsiveComponent() {
16
- // Custom media query
17
- const isDarkMode = useMediaQuery('(prefers-color-scheme: dark)')
18
-
19
- // Predefined breakpoint
20
- const isMdUp = useMdUp()
21
-
22
- // Custom breakpoint
23
- const isWide = useMediaQuery('(min-width: 1400px)')
24
-
25
- // Handle undefined state during SSR/hydration
26
- if (isDarkMode === undefined || isMdUp === undefined) {
27
- return <div>Loading...</div>
28
- }
17
+ import { useMediaQuery, useMdUp, useLgUp, breakpoints } from "./use-media-query"
18
+
19
+ // Custom query
20
+ function Component() {
21
+ const isPortrait = useMediaQuery("(orientation: portrait)")
22
+
23
+ // Returns undefined on first render (SSR-safe)
24
+ if (isPortrait === undefined) return <Skeleton />
25
+ return <div>{isPortrait ? "Portrait" : "Landscape"}</div>
26
+ }
27
+
28
+ // Predefined breakpoints
29
+ function ResponsiveLayout() {
30
+ const isMd = useMdUp() // >= 800px
31
+ const isLg = useLgUp() // >= 1280px
29
32
 
30
33
  return (
31
34
  <div>
32
- <p>Dark mode: {isDarkMode ? 'Yes' : 'No'}</p>
33
- <p>Medium screen or larger: {isMdUp ? 'Yes' : 'No'}</p>
34
- <p>Wide screen: {isWide ? 'Yes' : 'No'}</p>
35
+ {isLg ? <DesktopNav /> : isMd ? <TabletNav /> : <MobileNav />}
35
36
  </div>
36
37
  )
37
38
  }
39
+
40
+ // Using breakpoints object directly
41
+ const isDesktop = useMediaQuery(breakpoints.lg)
38
42
  ```
39
43
 
40
- The hook uses `useLayoutEffect` to avoid visual flicker and properly cleans up event listeners to prevent memory leaks.
44
+ ## Notes
45
+
46
+ - Returns `undefined` during SSR and initial render — always guard against this before conditionally rendering UI
47
+ - Uses `useLayoutEffect` to synchronously read the media query state before paint, preventing layout flicker
48
+ - Automatically cleans up the `change` event listener on unmount
@@ -0,0 +1,51 @@
1
+ <!-- source-hash: 8ccc6891a2b3966ffa91a4330f0065e9 -->
2
+ Generic React hook for managing debounced async search state, including loading, error handling, and result mapping.
3
+
4
+ ## Key Components
5
+
6
+ ### `UseSearchConfig<T>`
7
+ Configuration interface for the hook:
8
+ - `searchFn` — async function that receives the query string and returns raw results
9
+ - `mapResult` — transforms each raw result into a `SearchResult`
10
+ - `debounceMs` — debounce delay in milliseconds (default: `300`)
11
+ - `minQueryLength` — minimum characters before triggering a search (default: `2`)
12
+
13
+ ### `UseSearchReturn`
14
+ Return shape exposing:
15
+ - `query` / `setQuery` — controlled input state
16
+ - `results` — mapped `SearchResult[]`
17
+ - `isLoading` — `true` while the async search is in flight
18
+ - `error` — error message string or `null`
19
+ - `clearResults` — resets results and error state
20
+
21
+ ### `useSearch<T>(config)`
22
+ Core hook that orchestrates debouncing via `useDebounce`, fires `searchFn` when the debounced query meets `minQueryLength`, and cancels stale in-flight requests via a `cancelled` flag on cleanup.
23
+
24
+ ## Usage Example
25
+
26
+ ```typescript
27
+ import { useSearch } from "@/hooks/use-search"
28
+ import type { Device } from "@/types"
29
+
30
+ const { query, setQuery, results, isLoading, error } = useSearch<Device>({
31
+ searchFn: async (q) => await api.devices.search(q),
32
+ mapResult: (device) => ({
33
+ id: device.id,
34
+ label: device.hostname,
35
+ description: device.ipAddress,
36
+ }),
37
+ debounceMs: 400,
38
+ minQueryLength: 3,
39
+ })
40
+
41
+ // Bind to an input
42
+ <SearchInput
43
+ value={query}
44
+ onChange={setQuery}
45
+ results={results}
46
+ loading={isLoading}
47
+ error={error}
48
+ />
49
+ ```
50
+
51
+ > Stale request cancellation is handled automatically — if the query changes before a previous search resolves, its result is silently discarded.
package/src/nats/.nats.md CHANGED
@@ -1,51 +1,72 @@
1
- <!-- source-hash: c85909ba81ed8077d3a889ff6145d073 -->
2
- A WebSocket-based NATS client wrapper that provides type-safe publish, subscribe, and request-reply messaging patterns for browser and Tauri environments. Built on top of the `nats.ws` library with automatic codec handling for bytes, strings, and JSON payloads.
1
+ <!-- source-hash: 418321f518535eef27f0004848e1e1b3 -->
2
+ A browser/Tauri-only NATS client factory for WebSocket-based NATS connections (`nats.ws`), providing typed pub/sub, request/reply, JetStream ordered consumer subscriptions, and connection lifecycle management.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`createNatsClient(options)`** - Factory function that creates a NATS client instance
7
- - **`NatsClient`** - Main interface providing connection management and messaging operations
8
- - **`NatsClientOptions`** - Configuration interface for server URLs, authentication, and connection behavior
9
- - **Message Publishing** - `publishBytes()`, `publishString()`, `publishJson()` methods for fire-and-forget messaging
10
- - **Request-Reply** - `requestBytes()`, `requestString()`, `requestJson()` methods for synchronous communication
11
- - **Subscriptions** - `subscribeBytes()`, `subscribeString()`, `subscribeJson()` methods with queue groups and auto-unsubscribe
12
- - **Status Monitoring** - `onStatus()` method for connection state changes and error handling
6
+ ### Interfaces & Types
7
+ | Export | Description |
8
+ |--------|-------------|
9
+ | `NatsClient` | Core client interface with all pub/sub/request/JetStream methods |
10
+ | `NatsClientOptions` | Connection config: servers, auth, reconnect, exponential backoff, ping |
11
+ | `NatsSubscribeOptions` | Per-subscription options: queue group, max messages, abort signal |
12
+ | `NatsPublishOptions` / `NatsRequestOptions` | Optional headers and timeout per operation |
13
+ | `JetStreamOrderedSubscribeOptions` | JetStream ephemeral consumer config: stream, filter, deliver policy, start sequence |
14
+ | `NatsStatus` / `NatsStatusEvent` | Connection state machine: `connecting`, `connected`, `disconnected`, `reconnecting`, `closed`, `error` |
15
+
16
+ ### Factory Function
17
+ - **`createNatsClient(options)`** — Returns a `NatsClient` instance. Lazily imports `nats.ws` (browser-safe). All methods are lazy-connected and browser-only (throws if `window` is undefined).
18
+
19
+ ### Internal Helpers
20
+ - **`createExponentialBackoffHandler`** — Configurable exponential backoff with optional crypto jitter for reconnect delays.
21
+ - **`toNatsHeaders`** — Converts `Record<string, string>` or native `NatsHeaders` into a `nats.ws` headers object.
22
+ - **`mapNatsTypeToStatus`** — Normalizes raw `nats.ws` status events to the typed `NatsStatus` union.
13
23
 
14
24
  ## Usage Example
15
25
 
16
26
  ```typescript
17
27
  import { createNatsClient } from './nats'
18
28
 
19
- // Create client with WebSocket connection
20
29
  const client = createNatsClient({
21
30
  servers: 'wss://nats.example.com:443',
22
- name: 'my-app',
23
- token: 'auth-token'
31
+ name: 'flamingo-ui',
32
+ token: 'my-token',
33
+ exponentialBackoff: {
34
+ initialDelayMs: 500,
35
+ maxDelayMs: 15_000,
36
+ multiplier: 2,
37
+ jitter: true,
38
+ },
39
+ })
40
+
41
+ // Listen for connection status changes
42
+ const off = client.onStatus((event) => {
43
+ console.log('NATS status:', event.status)
24
44
  })
25
45
 
26
- // Connect and handle status
27
46
  await client.connect()
28
- client.onStatus(({ status }) => console.log('NATS status:', status))
29
47
 
30
- // Publish JSON message
31
- client.publishJson('user.created', { id: 123, name: 'Alice' })
48
+ // Typed JSON publish
49
+ client.publishJson('telemetry.events', { deviceId: 'abc', value: 42 })
32
50
 
33
- // Subscribe to messages with queue group
34
- const handle = client.subscribeJson<UserEvent>('user.*',
35
- (payload, msg) => {
36
- console.log('Received:', payload, 'on subject:', msg.subject)
37
- },
38
- { queue: 'workers' }
51
+ // Typed JSON request/reply
52
+ const response = await client.requestJson<{ ok: boolean }>(
53
+ 'devices.query',
54
+ { id: 'abc' },
55
+ { timeoutMs: 3000 },
39
56
  )
40
57
 
41
- // Request-reply pattern
42
- const response = await client.requestJson<UserResponse, UserRequest>(
43
- 'user.get',
44
- { userId: 123 },
45
- { timeoutMs: 5000 }
58
+ // JetStream ordered consumer (live-tail)
59
+ const handle = await client.subscribeJetStreamOrdered(
60
+ (msg) => console.log('JetStream msg:', msg.seq),
61
+ {
62
+ streamName: 'EVENTS',
63
+ filterSubject: 'events.>',
64
+ deliverPolicy: 'new',
65
+ },
46
66
  )
47
67
 
48
- // Clean up
68
+ // Cleanup
49
69
  handle.unsubscribe()
70
+ off()
50
71
  await client.close()
51
72
  ```
@@ -0,0 +1,45 @@
1
+ <!-- source-hash: 571de537c275f3d8b2eefb0fa68e0454 -->
2
+ Defines and exports Zod validation schemas, type-safe option constants, and API response types for all contact-style forms across the Flamingo platform.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `companySizeOptions` | `const` tuple | Allowed company size values for Select widgets |
9
+ | `referralSourceOptions` | `const` tuple | Allowed referral source values for Select widgets |
10
+ | `defaultHelpCategoryOptions` | `const` tuple | Fallback help category options when none are supplied by the embedder |
11
+ | `LinkedInUrlSchema` | `z.ZodSchema` | Reusable LinkedIn URL validator with hostname-exact matching (prevents substring injection) |
12
+ | `ContactBaseSchema` | `z.ZodObject` | Shared base schema for all contact-style forms (contact, TMCG join, data-room, etc.) |
13
+ | `ContactSchema` | `z.ZodObject` | Extends `ContactBaseSchema` with dropdown-constrained `companySize` and `referralSource` fields |
14
+ | `ContactFormData` | `type` | Inferred TypeScript type from `ContactSchema` |
15
+ | `ContactApiResponse` | `interface` | Shape of the `POST /api/contact` JSON response |
16
+
17
+ ## Usage Example
18
+
19
+ ```typescript
20
+ import {
21
+ ContactSchema,
22
+ ContactBaseSchema,
23
+ LinkedInUrlSchema,
24
+ type ContactFormData,
25
+ defaultHelpCategoryOptions,
26
+ } from './contact-schema';
27
+
28
+ // Validate a generic contact form submission
29
+ const result = ContactSchema.safeParse(req.body);
30
+ if (!result.success) {
31
+ return res.status(400).json({ error: result.error.flatten() });
32
+ }
33
+ const data: ContactFormData = result.data;
34
+
35
+ // Extend the base schema for a custom form
36
+ const JoinSchema = ContactBaseSchema.extend({
37
+ companyName: z.string().min(2),
38
+ linkedin_url: LinkedInUrlSchema,
39
+ });
40
+
41
+ // Use option constants in a Select component
42
+ <Select options={defaultHelpCategoryOptions} name="helpCategory" />
43
+ ```
44
+
45
+ > **Note:** Always reference `LinkedInUrlSchema` directly rather than duplicating LinkedIn URL validation logic. Hostname-exact matching (`host === 'linkedin.com'` or `host.endsWith('.linkedin.com')`) is intentional — substring checks would accept adversarial inputs like `https://evil.com/linkedin.com/path`.
@@ -0,0 +1,45 @@
1
+ <!-- source-hash: cf04b71bf17cf6b35fdcdc036bdc8b09 -->
2
+ Storybook stories for the `AnnouncementBar` component, providing isolated visual variants with mocked API responses and localStorage state to simulate the full announcement lifecycle without a real backend.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Description |
7
+ |--------|-------------|
8
+ | `mockAnnouncement()` | Helper that intercepts `window.fetch` to return mock announcement data and clears dismiss flags from `localStorage` |
9
+ | `Default` | Basic announcement with icon and description using the Flamingo yellow (`#FFD951`) background |
10
+ | `WithCTA` | Announcement with a fully configured call-to-action button opening in a new tab |
11
+ | `WithCTASameTab` | CTA variant targeting `_self` for same-tab navigation |
12
+ | `BlueBackground` / `GreenBackground` | Color theme variants |
13
+ | `WithOpenFrameLogo` | Uses the `openframe-logo` SVG icon with a branded CTA |
14
+ | `WithPNGIcon` | Tests PNG icon rendering via `icon_png_url` |
15
+ | `LongContent` | Stress-tests truncation behavior on long titles and descriptions |
16
+ | `NoAnnouncement` | Renders with `null` announcement to verify the bar hides itself |
17
+
18
+ ## Usage Example
19
+
20
+ ```typescript
21
+ // How the fetch mock works in each story decorator
22
+ const cleanup = mockAnnouncement({
23
+ id: 'story-1',
24
+ title: 'New Feature Released',
25
+ description: 'Check out our latest updates.',
26
+ background_color: '#FFD951',
27
+ icon_type: 'svg',
28
+ icon_svg_name: 'rocket',
29
+ platform_id: 'openframe',
30
+ is_active: true,
31
+ created_at: new Date().toISOString(),
32
+ updated_at: new Date().toISOString(),
33
+ })
34
+
35
+ // The mock intercepts /api/announcements/active
36
+ // and returns the provided announcement object.
37
+ // Pass null to simulate no active announcement.
38
+ mockAnnouncement(null)
39
+ ```
40
+
41
+ ## Notes
42
+
43
+ - All stories use the `fullscreen` layout to replicate the top-of-page bar context
44
+ - The `mockAnnouncement` helper automatically restores `window.fetch` and removes `localStorage` dismiss keys to prevent state leaking between story renders
45
+ - `autodocs` is enabled, generating a component API table from the `Announcement` type
@@ -1,46 +1,45 @@
1
- <!-- source-hash: 7583eb7cd6a5e96c338c7af84ae7732b -->
2
- Storybook configuration file that defines stories for the AppLayout component, showcasing various layout configurations with sidebar navigation, header options, and main content areas.
1
+ <!-- source-hash: 6e460b9179ea9cfc7a0f83bf49f746bd -->
2
+ Storybook stories for the `AppLayout` component, showcasing layout configurations including sidebar states, header options, navigation interactions, and disabled states.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **Meta Configuration**: Storybook metadata with fullscreen layout and component documentation
7
- - **Navigation Items**: Pre-configured sidebar navigation with primary and secondary sections
8
- - **Story Variants**: Multiple story examples demonstrating different AppLayout configurations
9
- - **Interactive Examples**: Stories with stateful navigation and user interaction handling
6
+ - **`Default`** Standard layout with sidebar, header, and active navigation tracking via `useState`
7
+ - **`WithHeaderUserOnly`** Layout using only `headerProps` for user identity
8
+ - **`WithSearchAndOrganizations`** Header with search bar and org selector enabled
9
+ - **`WithLoadingFallback`** Custom Suspense fallback spinner injected via `loadingFallback` prop
10
+ - **`WithCustomMainClassName`** — Overrides main content area background styling
11
+ - **`MinimizedSidebar`** — Starts with sidebar collapsed to icon-only mode
12
+ - **`Interactive`** — Fully interactive story with live navigation state and current route display
13
+ - **`Disabled`** — All controls dimmed/inert except the mobile burger menu and sidebar collapse toggle
10
14
 
11
15
  ## Usage Example
12
16
 
13
17
  ```typescript
14
18
  import { AppLayout } from '../components/navigation/app-layout'
15
19
 
16
- // Basic layout with sidebar and header
20
+ // Basic usage with sidebar and header
17
21
  <AppLayout
18
22
  sidebarConfig={{
19
23
  items: navigationItems,
20
- onNavigate: handleNavigate,
21
- onToggleMinimized: toggleSidebar,
24
+ onNavigate: (path) => router.push(path),
25
+ onToggleMinimized: () => setMinimized(prev => !prev),
22
26
  }}
23
27
  headerProps={{
24
28
  showNotifications: true,
25
29
  showUser: true,
26
- userName: 'John Doe',
27
- userEmail: 'john@example.com',
28
- onProfile: handleProfile,
30
+ userName: 'Jane Smith',
31
+ userEmail: 'jane@example.com',
32
+ onProfile: () => router.push('/profile'),
29
33
  onLogout: handleLogout,
30
34
  }}
31
35
  mobileBurgerMenuProps={{
32
36
  user: {
33
- userName: 'Alex Developer',
34
- userEmail: 'alex@openframe.dev',
35
- userAvatarUrl: 'https://github.com/shadcn.png',
37
+ userName: 'Jane Smith',
38
+ userEmail: 'jane@example.com',
36
39
  userRole: 'Admin',
37
40
  },
38
41
  }}
39
42
  >
40
- <div className="p-4">
41
- <h1>Main Content</h1>
42
- </div>
43
+ <div className="p-4">Page content here</div>
43
44
  </AppLayout>
44
- ```
45
-
46
- The stories demonstrate features like responsive sidebar behavior, search functionality, organization selection, custom loading states, and interactive navigation with proper state management.
45
+ ```
@@ -1,42 +1,56 @@
1
- <!-- source-hash: 6597ac1ad9801aac3429308510f4f32b -->
2
- Storybook stories configuration for the Autocomplete component demonstrating all possible states and configurations including selection limits, validation states, and custom rendering options.
1
+ <!-- source-hash: aaa3356b95c56eaf4a969ac37cfe3145 -->
2
+ Storybook stories for the `Autocomplete` UI component, covering all major interaction modes including single/multiple select, creatable options, server-side filtering, and various configuration props.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **Meta Configuration**: Storybook metadata for the Autocomplete component under 'UI/Autocomplete' category
7
- - **Sample Options**: Predefined list of industry options for consistent testing across all stories
8
- - **Story Variants**: 13 different story configurations covering all component states:
9
- - `Default` - Basic autocomplete with no selection
10
- - `WithLabel` - Includes form label
11
- - `WithSelectedValues` - Pre-selected options demonstration
12
- - `WithoutSearchIcon` - Hides the search icon
13
- - `WithMaxItems` - Enforces selection limits
14
- - `MaxItemsReached` - Shows behavior at capacity
15
- - `Disabled` - Non-interactive state
16
- - `Invalid` - Error/validation state
17
- - `FreeSolo` - Allows custom option creation
18
- - `CustomOptionRender` - Custom option display with colored indicators
19
- - `LimitTags` - Truncates display with "+X more" indicator
20
- - `Loading` - Shows loading state with custom text
21
- - `AllVariants` - Comparison view of multiple configurations
6
+ - **`Single`** Basic single-select with no initial value
7
+ - **`SingleWithValue`** Single-select with a pre-selected option
8
+ - **`SingleDisabled`** / **`MultipleDisabled`** Disabled states
9
+ - **`SingleWithError`** / **`MultipleWithError`** Validation error display
10
+ - **`Multiple`** — Multi-select with tag chips
11
+ - **`MultipleWithValues`** — Multi-select with pre-selected values
12
+ - **`MultipleWithMaxItems`** Enforces a selection ceiling via `maxItems`
13
+ - **`MultipleFreeSolo`** Allows arbitrary text input without matching options
14
+ - **`MultipleLimitTags`** Collapses overflow tags via `limitTags`
15
+ - **`MultipleCustomOptionRender`** — Custom `renderOption` with status indicator dots
16
+ - **`Loading`** Loading skeleton state with custom `loadingText`
17
+ - **`SingleCreatable`** / **`MultipleCreatable`** Create new options on the fly via `onCreateOption`
18
+ - **`ServerSideFilter`** / **`ServerSideFilterCreatable`** — Disables client-side filtering; delegates to `onInputChange` with simulated async delay
19
+ - **`SingleNoChevron`** / **`MultipleNoChevron`** Hides the dropdown chevron icon via `showChevron={false}`
20
+ - **`SingleKeepValueOnOpen`** Preserves selected label text on focus via `clearOnOpen={false}`
22
21
 
23
22
  ## Usage Example
24
23
 
25
24
  ```typescript
26
- // Basic story setup pattern used throughout
27
- export const ExampleStory: Story = {
28
- args: {
29
- options: sampleOptions,
30
- value: ['enterprise', 'startup'],
31
- onChange: () => {},
32
- label: 'Industry Selection',
33
- placeholder: 'Select industries...',
34
- },
35
- render: function Render(args) {
36
- const [value, setValue] = useState<string[]>(args.value);
37
- return <Autocomplete {...args} value={value} onChange={setValue} />;
38
- },
39
- };
40
- ```
25
+ import { Autocomplete, AutocompleteOption } from '../components/ui/autocomplete';
41
26
 
42
- Each story uses the render function pattern to provide interactive state management, making the Storybook controls fully functional for testing component behavior.
27
+ const options: AutocompleteOption<string>[] = [
28
+ { label: 'Enterprise', value: 'enterprise' },
29
+ { label: 'Startup', value: 'startup' },
30
+ ];
31
+
32
+ // Single select
33
+ <Autocomplete
34
+ options={options}
35
+ value={value}
36
+ onChange={setValue}
37
+ label="Industry"
38
+ placeholder="Select..."
39
+ />
40
+
41
+ // Multi-select with creation + server-side filter
42
+ <Autocomplete
43
+ multiple
44
+ creatable
45
+ disableClientFilter
46
+ options={filteredOptions}
47
+ value={selected}
48
+ onChange={setSelected}
49
+ onInputChange={handleSearch}
50
+ onCreateOption={(input) => addOption(input)}
51
+ loading={isLoading}
52
+ loadingText="Searching..."
53
+ maxItems={5}
54
+ limitTags={2}
55
+ />
56
+ ```
@@ -0,0 +1,35 @@
1
+ <!-- source-hash: eded9627e041539da9106ebd71cd1d56 -->
2
+ Storybook stories for the `Board` component, demonstrating all major configuration variants including drag-and-drop, column types, pagination, loading states, and collapse behavior.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Description |
7
+ |--------|-------------|
8
+ | `Default` | Five canonical ticket-status columns with seeded tickets and full drag-and-drop wired up |
9
+ | `SystemAndCustom` | Mixed system and custom columns mirroring the OpenFrame Tickets layout, with DnD restrictions |
10
+ | `CustomColumns` | Fully custom columns proving column color is decoupled from `TicketStatus` |
11
+ | `Collapsible` | Columns with collapse toggle persisted to `localStorage` via `collapseStorageKey` |
12
+ | `Pagination` | Demonstrates `onLoadMore` with a 600ms simulated delay, appending 10 tickets per page from a pool of 50 |
13
+ | `InitialLoading` | All columns start in `isLoading` skeleton state, resolving to seeded data after 1 second |
14
+ | `Empty` | Empty columns to verify the drop placeholder render |
15
+
16
+ **Helpers used internally:**
17
+
18
+ - `buildSeedColumns()` — generates five default status columns with varied ticket data
19
+ - `applyChange()` — immutably applies a `BoardChange` (move/reorder) to the column state
20
+
21
+ ## Usage Example
22
+
23
+ ```typescript
24
+ // Minimal interactive board with DnD and immutable state update
25
+ const [columns, setColumns] = React.useState(buildSeedColumns())
26
+
27
+ <Board
28
+ columns={columns}
29
+ onChange={change => setColumns(prev => applyChange(prev, change))}
30
+ onTicketClick={id => console.log('clicked', id)}
31
+ onAddTicket={colId => console.log('add to', colId)}
32
+ collapseStorageKey="my-board-collapse"
33
+ onLoadMore={columnId => fetchNextPage(columnId)}
34
+ />
35
+ ```