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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (745) hide show
  1. package/dist/{chunk-3JWIJJ44.js → chunk-5OWDOFKK.js} +2 -2
  2. package/dist/{chunk-IK2X5YJU.js → chunk-HWY35EAK.js} +2 -2
  3. package/dist/{chunk-OTKJASSX.cjs → chunk-IZL2KEH6.cjs} +24 -24
  4. package/dist/{chunk-OTKJASSX.cjs.map → chunk-IZL2KEH6.cjs.map} +1 -1
  5. package/dist/{chunk-35XIT2CF.cjs → chunk-KDNGUYZM.cjs} +17 -17
  6. package/dist/{chunk-35XIT2CF.cjs.map → chunk-KDNGUYZM.cjs.map} +1 -1
  7. package/dist/{chunk-ZTJVRSN5.js → chunk-UKND27XC.js} +2 -2
  8. package/dist/chunk-UKND27XC.js.map +1 -0
  9. package/dist/{chunk-ZDF6F7ED.cjs → chunk-YZUUFTIK.cjs} +2 -2
  10. package/dist/chunk-YZUUFTIK.cjs.map +1 -0
  11. package/dist/components/chat/index.cjs +2 -2
  12. package/dist/components/chat/index.js +1 -1
  13. package/dist/components/contact/index.cjs +3 -3
  14. package/dist/components/contact/index.js +2 -2
  15. package/dist/components/features/index.cjs +2 -2
  16. package/dist/components/features/index.js +1 -1
  17. package/dist/components/index.cjs +49 -49
  18. package/dist/components/index.js +2 -2
  19. package/dist/components/navigation/index.cjs +2 -2
  20. package/dist/components/navigation/index.js +1 -1
  21. package/dist/components/tickets/index.cjs +61 -61
  22. package/dist/components/tickets/index.js +3 -3
  23. package/dist/components/ui/index.cjs +2 -2
  24. package/dist/components/ui/index.js +1 -1
  25. package/dist/index.cjs +2 -2
  26. package/dist/index.js +1 -1
  27. package/package.json +1 -1
  28. package/src/.index.md +36 -34
  29. package/src/components/.alert-dialog.md +27 -23
  30. package/src/components/.announcement-bar.md +26 -21
  31. package/src/components/.breadcrumb.md +19 -15
  32. package/src/components/.calendar.md +24 -19
  33. package/src/components/.categories-cart.md +29 -24
  34. package/src/components/.checkbox.md +23 -25
  35. package/src/components/.chevron-button.md +37 -32
  36. package/src/components/.comment-card.md +32 -62
  37. package/src/components/.dialog.md +26 -26
  38. package/src/components/.dynamic-skeleton.md +54 -57
  39. package/src/components/.empty-state.md +42 -51
  40. package/src/components/.faq-accordion.md +27 -21
  41. package/src/components/.filter-chip.md +41 -24
  42. package/src/components/.flamingo-logo.md +20 -23
  43. package/src/components/.footer-waitlist-button.md +29 -22
  44. package/src/components/.footer.md +32 -32
  45. package/src/components/.icons-block.md +27 -17
  46. package/src/components/.image-cropper.md +41 -32
  47. package/src/components/.index.md +33 -39
  48. package/src/components/.input.md +31 -35
  49. package/src/components/.logs-list.md +31 -20
  50. package/src/components/.media-carousel.md +35 -36
  51. package/src/components/.open-source-features.md +33 -16
  52. package/src/components/.pagination.md +52 -51
  53. package/src/components/.provider-button.md +21 -23
  54. package/src/components/.select.md +31 -20
  55. package/src/components/.sidebar.md +34 -24
  56. package/src/components/.smooth-accordion.md +29 -24
  57. package/src/components/.social-icon-row.md +36 -32
  58. package/src/components/.textarea.md +25 -31
  59. package/src/components/.tool-icon.md +24 -26
  60. package/src/components/.unified-filter-logic.md +37 -30
  61. package/src/components/.unified-pagination.md +23 -22
  62. package/src/components/.user-summary-stub.md +38 -22
  63. package/src/components/.vendor-display-button.md +25 -25
  64. package/src/components/.vendor-icon.md +33 -25
  65. package/src/components/.why-it-matters.md +28 -25
  66. package/src/components/chat/.approval-batch-message.md +51 -0
  67. package/src/components/chat/.approval-request-message.md +35 -34
  68. package/src/components/chat/.chat-attachment-bar.md +64 -0
  69. package/src/components/chat/.chat-container.md +36 -18
  70. package/src/components/chat/.chat-input.md +37 -20
  71. package/src/components/chat/.chat-message-enhanced.md +30 -49
  72. package/src/components/chat/.chat-message-list.md +45 -32
  73. package/src/components/chat/.chat-message-skeleton.md +26 -22
  74. package/src/components/chat/.chat-panel-context.md +52 -0
  75. package/src/components/chat/.chat-ref.types.md +42 -0
  76. package/src/components/chat/.chat-sidebar-skeleton.md +34 -25
  77. package/src/components/chat/.chat-sidebar.md +31 -26
  78. package/src/components/chat/.chat-ticket-list.md +39 -0
  79. package/src/components/chat/.context-compaction-display.md +36 -0
  80. package/src/components/chat/.cycling-phrase.md +52 -0
  81. package/src/components/chat/.embeddable-chat.md +48 -0
  82. package/src/components/chat/.expand-chevron.md +24 -0
  83. package/src/components/chat/.index.md +31 -35
  84. package/src/components/chat/.mingo-onboarding-card-skeleton.md +44 -0
  85. package/src/components/chat/.mingo-onboarding-card.md +62 -0
  86. package/src/components/chat/.model-display.md +32 -30
  87. package/src/components/chat/.nav-link-anchor-via-runtime.md +40 -0
  88. package/src/components/chat/.remark-card-links.md +38 -0
  89. package/src/components/chat/.slash-command-suggestions.md +47 -0
  90. package/src/components/chat/.source-action-button.md +48 -0
  91. package/src/components/chat/.thinking-display.md +42 -0
  92. package/src/components/chat/.tool-call-blocks.md +45 -0
  93. package/src/components/chat/.tool-execution-display.md +44 -36
  94. package/src/components/chat/chat-container.tsx +1 -1
  95. package/src/components/chat/entity-cards/.admin-content-card.md +43 -0
  96. package/src/components/chat/entity-cards/.block-card.md +47 -0
  97. package/src/components/chat/entity-cards/.blog-card.md +52 -0
  98. package/src/components/chat/entity-cards/.blog-image-placeholder.md +39 -0
  99. package/src/components/chat/entity-cards/.campaign-card-admin.md +47 -0
  100. package/src/components/chat/entity-cards/.case-study-card.md +58 -0
  101. package/src/components/chat/entity-cards/.chat-ticket-item.md +40 -0
  102. package/src/components/chat/entity-cards/.chat-video-entity-card.md +43 -0
  103. package/src/components/chat/entity-cards/.customer-interview-card.md +53 -0
  104. package/src/components/chat/entity-cards/.data-room-doc-card.md +47 -0
  105. package/src/components/chat/entity-cards/.dispatch.md +39 -0
  106. package/src/components/chat/entity-cards/.entity-author-card.md +51 -0
  107. package/src/components/chat/entity-cards/.generic-entity-card.md +62 -0
  108. package/src/components/chat/entity-cards/.github-activity-card.md +61 -0
  109. package/src/components/chat/entity-cards/.hubspot-ticket-card.md +53 -0
  110. package/src/components/chat/entity-cards/.index.md +66 -0
  111. package/src/components/chat/entity-cards/.investor-update-card.md +47 -0
  112. package/src/components/chat/entity-cards/.onboarding-guide-card.md +58 -0
  113. package/src/components/chat/entity-cards/.product-release-card-defaults.md +31 -0
  114. package/src/components/chat/entity-cards/.product-release-card.md +29 -0
  115. package/src/components/chat/entity-cards/.program-card-defaults.md +41 -0
  116. package/src/components/chat/entity-cards/.program-card.md +59 -0
  117. package/src/components/chat/entity-cards/.roadmap-card.md +46 -0
  118. package/src/components/chat/entity-cards/.roadmap-vote-button.md +52 -0
  119. package/src/components/chat/entity-cards/.slack-message-card.md +48 -0
  120. package/src/components/chat/entity-cards/.task-type-icon.md +47 -0
  121. package/src/components/chat/hooks/.index.md +36 -21
  122. package/src/components/chat/hooks/.use-chat-attachment-image-gallery.md +51 -0
  123. package/src/components/chat/hooks/.use-chat-attachments.md +48 -0
  124. package/src/components/chat/hooks/.use-chat-card-item.md +39 -0
  125. package/src/components/chat/hooks/.use-chat-identity.md +45 -0
  126. package/src/components/chat/hooks/.use-chat.md +58 -0
  127. package/src/components/chat/hooks/.use-chunk-catchup.md +46 -48
  128. package/src/components/chat/hooks/.use-close-on-navigation.md +44 -0
  129. package/src/components/chat/hooks/.use-collapsible.md +48 -0
  130. package/src/components/chat/hooks/.use-embedded-chat.md +32 -0
  131. package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +40 -0
  132. package/src/components/chat/hooks/.use-nats-chat-adapter.md +52 -0
  133. package/src/components/chat/hooks/.use-nats-dialog-subscription.md +49 -30
  134. package/src/components/chat/hooks/.use-proxied-image-url.md +40 -0
  135. package/src/components/chat/hooks/.use-realtime-chunk-processor.md +43 -40
  136. package/src/components/chat/hooks/.use-slash-commands.md +46 -0
  137. package/src/components/chat/hooks/.use-sse-chat-adapter.md +34 -0
  138. package/src/components/chat/hooks/.use-sse.md +60 -0
  139. package/src/components/chat/hooks/.use-unified-chat.md +57 -0
  140. package/src/components/chat/types/.api.types.md +52 -38
  141. package/src/components/chat/types/.chat.types.md +43 -34
  142. package/src/components/chat/types/.component.types.md +47 -48
  143. package/src/components/chat/types/.index.md +20 -27
  144. package/src/components/chat/types/.message.types.md +58 -48
  145. package/src/components/chat/types/.network.types.md +57 -31
  146. package/src/components/chat/types/.processing.types.md +49 -31
  147. package/src/components/chat/types/.unified-chat-state.types.md +41 -0
  148. package/src/components/chat/types/entities/.blog.md +43 -0
  149. package/src/components/chat/types/entities/.case-study.md +26 -0
  150. package/src/components/chat/types/entities/.content-ref.md +41 -0
  151. package/src/components/chat/types/entities/.customer-interview.md +28 -0
  152. package/src/components/chat/types/entities/.data-room-doc.md +36 -0
  153. package/src/components/chat/types/entities/.github-activity.md +43 -0
  154. package/src/components/chat/types/entities/.hubspot-ticket.md +53 -0
  155. package/src/components/chat/types/entities/.index.md +42 -0
  156. package/src/components/chat/types/entities/.investor-update.md +45 -0
  157. package/src/components/chat/types/entities/.onboarding-guide.md +50 -0
  158. package/src/components/chat/types/entities/.program-types.md +57 -0
  159. package/src/components/chat/types/entities/.roadmap-item.md +58 -0
  160. package/src/components/chat/types/entities/.slack-message.md +35 -0
  161. package/src/components/chat/utils/.agent-status-message.md +45 -0
  162. package/src/components/chat/utils/.auto-continuation-directive.md +58 -0
  163. package/src/components/chat/utils/.chat-attachment-markdown.md +54 -0
  164. package/src/components/chat/utils/.chat-authed-fetch.md +25 -0
  165. package/src/components/chat/utils/.chat-nav-resolution.md +46 -0
  166. package/src/components/chat/utils/.chat-proxy-auth-storage.md +38 -0
  167. package/src/components/chat/utils/.chip-action-class.md +34 -0
  168. package/src/components/chat/utils/.chip-styles.md +46 -0
  169. package/src/components/chat/utils/.chunk-parser.md +38 -28
  170. package/src/components/chat/utils/.clickup-task-type-utils.md +48 -0
  171. package/src/components/chat/utils/.compact-card-classes.md +62 -0
  172. package/src/components/chat/utils/.decide-new-tab.md +51 -0
  173. package/src/components/chat/utils/.external-app-urls.md +29 -0
  174. package/src/components/chat/utils/.extract-incomplete-message-state.md +25 -29
  175. package/src/components/chat/utils/.flatten-assistant-content.md +34 -0
  176. package/src/components/chat/utils/.icon-registry.md +46 -0
  177. package/src/components/chat/utils/.index.md +37 -32
  178. package/src/components/chat/utils/.is-cross-origin-url.md +35 -0
  179. package/src/components/chat/utils/.message-segment-accumulator.md +25 -34
  180. package/src/components/chat/utils/.nav-anchor-props.md +44 -0
  181. package/src/components/chat/utils/.nav-click-handler.md +47 -0
  182. package/src/components/chat/utils/.onboarding-icons.md +28 -0
  183. package/src/components/chat/utils/.process-historical-messages.md +46 -35
  184. package/src/components/chat/utils/.scroll-anchor.md +40 -0
  185. package/src/components/chat/utils/.slash-dispatch-utils.md +44 -0
  186. package/src/components/chat/utils/.source-icons.md +35 -0
  187. package/src/components/chat/utils/.source-row-cta.md +54 -0
  188. package/src/components/chat/utils/.tool-call-helpers.md +42 -0
  189. package/src/components/contact/.contact-form.md +43 -0
  190. package/src/components/contact/.index.md +27 -0
  191. package/src/components/features/.array-entry-manager.md +36 -45
  192. package/src/components/features/.changelog-manager.md +47 -21
  193. package/src/components/features/.changelog-sections-manager.md +21 -26
  194. package/src/components/features/.command-box.md +31 -28
  195. package/src/components/features/.entity-summary-editor.md +46 -0
  196. package/src/components/features/.entity-video-section.md +51 -0
  197. package/src/components/features/.figma-prototype-viewer.md +48 -29
  198. package/src/components/features/.filters-dropdown.md +33 -46
  199. package/src/components/features/.highlight-config-section.md +42 -0
  200. package/src/components/features/.highlight-generation-section.md +46 -0
  201. package/src/components/features/.highlight-video-combined-section.md +47 -0
  202. package/src/components/features/.highlight-video-preview.md +44 -0
  203. package/src/components/features/.highlight-video-section.md +47 -0
  204. package/src/components/features/.index.md +40 -66
  205. package/src/components/features/.media-gallery-manager.md +48 -38
  206. package/src/components/features/.more-about-button.md +22 -19
  207. package/src/components/features/.og-editor-preview.md +40 -36
  208. package/src/components/features/.parallax-image-showcase.md +33 -26
  209. package/src/components/features/.paths-display.md +42 -43
  210. package/src/components/features/.platform-badge.md +37 -36
  211. package/src/components/features/.platform-filter.md +23 -16
  212. package/src/components/features/.policy-configuration-panel.md +48 -56
  213. package/src/components/features/.provider-button.md +33 -36
  214. package/src/components/features/.push-button-selector.md +40 -29
  215. package/src/components/features/.release-media-manager.md +46 -31
  216. package/src/components/features/.section-selector.md +26 -31
  217. package/src/components/features/.select-button.md +35 -25
  218. package/src/components/features/.seo-editor-preview.md +41 -44
  219. package/src/components/features/.social-links-manager.md +25 -19
  220. package/src/components/features/.start-with-openframe-button.md +37 -29
  221. package/src/components/features/.status-filter-component.md +36 -20
  222. package/src/components/features/.tags-selector.md +40 -24
  223. package/src/components/features/.transcribe-and-summarize-combined-section.md +45 -0
  224. package/src/components/features/.transcribe-summarize-section.md +48 -0
  225. package/src/components/features/.transcript-summary-editor.md +53 -0
  226. package/src/components/features/.video-bites-display.md +46 -0
  227. package/src/components/features/.video-clips-section.md +41 -0
  228. package/src/components/features/.video-ratio-tabs.md +56 -0
  229. package/src/components/features/.video-source-selector.md +60 -0
  230. package/src/components/features/.video.md +44 -0
  231. package/src/components/features/.waitlist-form.md +60 -0
  232. package/src/components/features/ai-enrich/.AIEnrichButton.md +30 -27
  233. package/src/components/features/ai-enrich/.AIEnrichSection.md +46 -42
  234. package/src/components/features/board/.board-column-header.md +38 -0
  235. package/src/components/features/board/.board-column.md +43 -0
  236. package/src/components/features/board/.board.md +51 -0
  237. package/src/components/features/board/.color-utils.md +26 -0
  238. package/src/components/features/board/.index.md +56 -0
  239. package/src/components/features/board/.ticket-card-skeleton.md +38 -0
  240. package/src/components/features/board/.ticket-card.md +47 -0
  241. package/src/components/features/board/.types.md +45 -0
  242. package/src/components/features/board/.use-board-collapse.md +34 -0
  243. package/src/components/features/notifications/.index.md +57 -0
  244. package/src/components/features/notifications/.notification-drawer.md +34 -0
  245. package/src/components/features/notifications/.notification-tile.md +39 -0
  246. package/src/components/features/notifications/.notifications-context.md +73 -0
  247. package/src/components/features/notifications/.types.md +45 -0
  248. package/src/components/icons/.about-icon.md +20 -28
  249. package/src/components/icons/.ai-robot-icon.md +15 -17
  250. package/src/components/icons/.bash-icon.md +16 -23
  251. package/src/components/icons/.buildings-icon.md +10 -24
  252. package/src/components/icons/.capterra-icon.md +30 -26
  253. package/src/components/icons/.carta-icon.md +29 -0
  254. package/src/components/icons/.clickup-icon.md +26 -0
  255. package/src/components/icons/.cmd-icon.md +15 -22
  256. package/src/components/icons/.coins-icon.md +17 -25
  257. package/src/components/icons/.community-hub-icon.md +19 -25
  258. package/src/components/icons/.community-icon.md +24 -21
  259. package/src/components/icons/.compare-icon.md +32 -19
  260. package/src/components/icons/.copy-icon.md +29 -15
  261. package/src/components/icons/.custom-external-link-icon.md +19 -17
  262. package/src/components/icons/.custom-fork-icon.md +32 -21
  263. package/src/components/icons/.custom-license-icon.md +29 -25
  264. package/src/components/icons/.custom-star-icon.md +20 -28
  265. package/src/components/icons/.custom-time-icon.md +21 -22
  266. package/src/components/icons/.cut-vendor-costs-icon.md +6 -19
  267. package/src/components/icons/.dashboard-icon.md +13 -18
  268. package/src/components/icons/.deno-icon.md +16 -23
  269. package/src/components/icons/.donut-icon.md +12 -23
  270. package/src/components/icons/.double-chevron-icon.md +28 -36
  271. package/src/components/icons/.elestio-logo.md +13 -23
  272. package/src/components/icons/.empty-vendor-icon.md +16 -18
  273. package/src/components/icons/.explore-categories-icon.md +18 -29
  274. package/src/components/icons/.eye-icon.md +16 -26
  275. package/src/components/icons/.facebook-icon.md +9 -20
  276. package/src/components/icons/.figma-icon.md +8 -17
  277. package/src/components/icons/.filter-icon.md +15 -17
  278. package/src/components/icons/.flamingo-logo.md +28 -27
  279. package/src/components/icons/.folder-shield-icon.md +28 -19
  280. package/src/components/icons/.g2-icon.md +22 -21
  281. package/src/components/icons/.getapp-icon.md +25 -21
  282. package/src/components/icons/.github-icon.md +13 -25
  283. package/src/components/icons/.globe-icon.md +14 -19
  284. package/src/components/icons/.google-gemini-icon.md +16 -19
  285. package/src/components/icons/.google-logo.md +15 -21
  286. package/src/components/icons/.grid-view-icon.md +30 -19
  287. package/src/components/icons/.hamburger-icon.md +22 -20
  288. package/src/components/icons/.hand-dollar-icon.md +24 -34
  289. package/src/components/icons/.hotel-icon.md +27 -21
  290. package/src/components/icons/.icon-utils.md +28 -29
  291. package/src/components/icons/.image-icon.md +15 -22
  292. package/src/components/icons/.index.md +25 -28
  293. package/src/components/icons/.info-circle-icon.md +29 -30
  294. package/src/components/icons/.instagram-icon.md +10 -24
  295. package/src/components/icons/.jump-in-icon.md +18 -18
  296. package/src/components/icons/.linux-icon.md +18 -18
  297. package/src/components/icons/.log-out-icon.md +15 -23
  298. package/src/components/icons/.logs-icon.md +14 -23
  299. package/src/components/icons/.margin-crisis-icon.md +21 -20
  300. package/src/components/icons/.menu-icon.md +18 -19
  301. package/src/components/icons/.miami-cyber-gang-logo-face-only.md +18 -21
  302. package/src/components/icons/.miami-cyber-gang-logo.md +22 -14
  303. package/src/components/icons/.mlg-logo.md +18 -16
  304. package/src/components/icons/.moon-icon.md +32 -22
  305. package/src/components/icons/.ms-icon.md +30 -19
  306. package/src/components/icons/.nushell-icon.md +7 -21
  307. package/src/components/icons/.open-source-icon.md +19 -23
  308. package/src/components/icons/.openai-icon.md +9 -24
  309. package/src/components/icons/.openframe-ai-icons.md +25 -26
  310. package/src/components/icons/.openframe-logo.md +28 -22
  311. package/src/components/icons/.openframe-text.md +24 -27
  312. package/src/components/icons/.openmsp-logo.md +26 -23
  313. package/src/components/icons/.pilot-icon.md +23 -0
  314. package/src/components/icons/.powershell-icon.md +17 -22
  315. package/src/components/icons/.python-icon.md +16 -23
  316. package/src/components/icons/.queries-icon.md +13 -21
  317. package/src/components/icons/.reddit-icon.md +28 -24
  318. package/src/components/icons/.remote-control-icon.md +13 -17
  319. package/src/components/icons/.script-icon.md +27 -19
  320. package/src/components/icons/.search-icon.md +21 -21
  321. package/src/components/icons/.send-icon.md +14 -16
  322. package/src/components/icons/.settings-icon.md +30 -19
  323. package/src/components/icons/.shape-circle-dash-icon.md +16 -21
  324. package/src/components/icons/.shell-icon.md +15 -19
  325. package/src/components/icons/.shield-check-icon.md +18 -31
  326. package/src/components/icons/.shield-key-icon.md +25 -25
  327. package/src/components/icons/.shield-lock-icon.md +8 -18
  328. package/src/components/icons/.slack-icon.md +28 -32
  329. package/src/components/icons/.sparkles-icon.md +18 -23
  330. package/src/components/icons/.sso-configuration-icon.md +29 -16
  331. package/src/components/icons/.sun-icon.md +20 -18
  332. package/src/components/icons/.table-view-icon.md +17 -19
  333. package/src/components/icons/.telegram-icon.md +8 -22
  334. package/src/components/icons/.thumbs-down-icon.md +10 -19
  335. package/src/components/icons/.thumbs-up-icon.md +8 -17
  336. package/src/components/icons/.tool-directory-icons.md +24 -28
  337. package/src/components/icons/.trustpilot-icon.md +25 -22
  338. package/src/components/icons/.user-icon.md +26 -28
  339. package/src/components/icons/.users-group-icon.md +28 -24
  340. package/src/components/icons/.vendor-showcase-icons.md +21 -29
  341. package/src/components/icons/.vendors-icon.md +18 -22
  342. package/src/components/icons/.whatsapp-icon.md +30 -14
  343. package/src/components/icons/.x-icon.md +18 -23
  344. package/src/components/icons/.x-logo.md +13 -38
  345. package/src/components/icons/.youtube-icon.md +8 -19
  346. package/src/components/icons/device-type-icons/.get-device-type-icon.md +26 -34
  347. package/src/components/icons-v2-generated/.index.md +52 -0
  348. package/src/components/icons-v2-generated/alphabet/.index.md +33 -0
  349. package/src/components/icons-v2-generated/arrows/.index.md +39 -0
  350. package/src/components/icons-v2-generated/audio-and-visual/.index.md +40 -0
  351. package/src/components/icons-v2-generated/brand-logos/.elestio-logo-icon.md +40 -0
  352. package/src/components/icons-v2-generated/brand-logos/.gemini-logo-icon.md +37 -0
  353. package/src/components/icons-v2-generated/brand-logos/.google-gemini-logo-icon.md +33 -0
  354. package/src/components/icons-v2-generated/brand-logos/.index.md +38 -0
  355. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-grey-icon.md +35 -0
  356. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-icon.md +36 -0
  357. package/src/components/icons-v2-generated/buildings/.index.md +48 -0
  358. package/src/components/icons-v2-generated/charts/.index.md +40 -0
  359. package/src/components/icons-v2-generated/clothes/.index.md +48 -0
  360. package/src/components/icons-v2-generated/coding/.index.md +42 -0
  361. package/src/components/icons-v2-generated/communication/.index.md +39 -0
  362. package/src/components/icons-v2-generated/date-and-time/.index.md +29 -0
  363. package/src/components/icons-v2-generated/design/.index.md +39 -0
  364. package/src/components/icons-v2-generated/devices/.index.md +38 -0
  365. package/src/components/icons-v2-generated/documents/.index.md +38 -0
  366. package/src/components/icons-v2-generated/finance/.index.md +34 -0
  367. package/src/components/icons-v2-generated/food-and-drinks/.index.md +34 -0
  368. package/src/components/icons-v2-generated/food-and-drinks/.leafy-green-icon.md +36 -0
  369. package/src/components/icons-v2-generated/food-and-drinks/.strawberry-icon.md +39 -0
  370. package/src/components/icons-v2-generated/health/.index.md +40 -0
  371. package/src/components/icons-v2-generated/household/.index.md +45 -0
  372. package/src/components/icons-v2-generated/interface/.index.md +36 -0
  373. package/src/components/icons-v2-generated/map-and-travel/.index.md +41 -0
  374. package/src/components/icons-v2-generated/media-playback/.index.md +51 -0
  375. package/src/components/icons-v2-generated/number/.index.md +41 -0
  376. package/src/components/icons-v2-generated/school/.index.md +37 -0
  377. package/src/components/icons-v2-generated/security/.fingerprint-icon.md +38 -0
  378. package/src/components/icons-v2-generated/security/.index.md +39 -0
  379. package/src/components/icons-v2-generated/shopping/.index.md +42 -0
  380. package/src/components/icons-v2-generated/signs-and-symbols/.index.md +32 -0
  381. package/src/components/icons-v2-generated/sort-and-filter/.index.md +35 -0
  382. package/src/components/icons-v2-generated/sport/.index.md +41 -0
  383. package/src/components/icons-v2-generated/text-editor/.index.md +44 -0
  384. package/src/components/icons-v2-generated/users/.index.md +45 -0
  385. package/src/components/icons-v2-generated/vehicles-and-delivery/.index.md +36 -0
  386. package/src/components/icons-v2-generated/weather-and-nature/.flower-sakura-icon.md +36 -0
  387. package/src/components/icons-v2-generated/weather-and-nature/.index.md +34 -0
  388. package/src/components/layout/.article-detail-layout.md +43 -0
  389. package/src/components/layout/.back-button.md +40 -0
  390. package/src/components/layout/.list-page-layout.md +35 -26
  391. package/src/components/layout/.page-container.md +27 -38
  392. package/src/components/layout/.page-layout.md +50 -0
  393. package/src/components/layout/.title-block.md +42 -0
  394. package/src/components/loading/.card-skeleton.md +38 -29
  395. package/src/components/loading/.device-card-skeleton.md +29 -25
  396. package/src/components/loading/.index.md +39 -46
  397. package/src/components/loading/.margin-report-skeleton.md +45 -34
  398. package/src/components/loading/.organization-card-skeleton.md +39 -44
  399. package/src/components/loading/.page-layout-skeleton.md +34 -45
  400. package/src/components/loading/.unified-skeleton.md +62 -36
  401. package/src/components/navigation/.app-header.md +40 -29
  402. package/src/components/navigation/.app-layout.md +25 -26
  403. package/src/components/navigation/.header-global-search.md +34 -37
  404. package/src/components/navigation/.header-organization-filter.md +23 -22
  405. package/src/components/navigation/.header.md +31 -35
  406. package/src/components/navigation/.mobile-burger-menu.md +39 -47
  407. package/src/components/navigation/.mobile-nav-panel.md +51 -32
  408. package/src/components/navigation/.navigation-sidebar-header.md +36 -0
  409. package/src/components/navigation/.navigation-sidebar-item.md +45 -0
  410. package/src/components/navigation/.navigation-sidebar-toggle.md +38 -0
  411. package/src/components/navigation/.navigation-sidebar.md +33 -34
  412. package/src/components/navigation/.sliding-sidebar.md +52 -41
  413. package/src/components/navigation/.sticky-section-nav.md +56 -48
  414. package/src/components/platform/.ScriptArguments.md +39 -25
  415. package/src/components/platform/.ScriptInfoSection.md +30 -26
  416. package/src/components/platform/.ShellTypeBadge.md +18 -13
  417. package/src/components/platform/.SoftwareInfo.md +23 -27
  418. package/src/components/platform/.SoftwareSourceBadge.md +28 -19
  419. package/src/components/platform/.ToolBadge.md +25 -26
  420. package/src/components/providers/.theme-provider.md +52 -0
  421. package/src/components/shared/delivery/.delivery-lists.md +39 -0
  422. package/src/components/shared/delivery/.delivery-row.md +41 -0
  423. package/src/components/shared/delivery/.delivery-table.md +41 -0
  424. package/src/components/shared/delivery/.index.md +38 -0
  425. package/src/components/shared/dev-section/.dev-card-row.md +60 -0
  426. package/src/components/shared/dev-section/.dev-section-page.md +48 -0
  427. package/src/components/shared/dev-section/.dev-section-view.md +43 -0
  428. package/src/components/shared/dev-section/.index.md +38 -0
  429. package/src/components/shared/legal-document/.index.md +40 -0
  430. package/src/components/shared/legal-document/.legal-document-page.md +50 -0
  431. package/src/components/shared/legal-document/.use-legal-docs.md +42 -0
  432. package/src/components/shared/onboarding/.onboarding-step-card.md +32 -31
  433. package/src/components/shared/onboarding/.onboarding-walkthrough.md +39 -43
  434. package/src/components/shared/product-release/.index.md +28 -30
  435. package/src/components/shared/product-release/.product-release-card-skeleton.md +28 -28
  436. package/src/components/shared/product-release/.product-release-card.md +45 -27
  437. package/src/components/shared/product-release/.release-detail-page.md +23 -24
  438. package/src/components/shared/roadmap/.index.md +37 -0
  439. package/src/components/shared/roadmap/.roadmap-grid-skeleton.md +39 -0
  440. package/src/components/shared/roadmap/.roadmap-grid.md +66 -0
  441. package/src/components/shared/roadmap/.use-roadmap-voting.md +68 -0
  442. package/src/components/tickets/.help-center-card.md +51 -0
  443. package/src/components/tickets/.help-center-create-form.md +38 -0
  444. package/src/components/tickets/.help-center-list.md +40 -0
  445. package/src/components/tickets/.index.md +65 -0
  446. package/src/components/tickets/.ticket-center.md +51 -0
  447. package/src/components/tickets/.ticket-detail-drawer.md +48 -0
  448. package/src/components/tickets/.ticket-linked-delivery-card.md +36 -0
  449. package/src/components/tickets/.ticket-open-form.md +50 -0
  450. package/src/components/tickets/.ticket-row.md +30 -0
  451. package/src/components/tickets/.types.md +57 -0
  452. package/src/components/tickets/hooks/.use-ticket-actions.md +77 -0
  453. package/src/components/tickets/hooks/.use-ticket-engagements.md +42 -0
  454. package/src/components/tickets/hooks/.use-tickets-list.md +54 -0
  455. package/src/components/ui/.actions-menu.md +66 -41
  456. package/src/components/ui/.alert-dialog.md +29 -26
  457. package/src/components/ui/.allowed-domains-input.md +29 -21
  458. package/src/components/ui/.assignee-dropdown.md +45 -0
  459. package/src/components/ui/.autocomplete.md +47 -41
  460. package/src/components/ui/.benefit-card.md +51 -36
  461. package/src/components/ui/.brand-association-card.md +30 -27
  462. package/src/components/ui/.breadcrumb.md +17 -15
  463. package/src/components/ui/.checkbox-block.md +39 -35
  464. package/src/components/ui/.checkbox-with-description.md +23 -16
  465. package/src/components/ui/.checkbox.md +31 -23
  466. package/src/components/ui/.circular-progress.md +49 -19
  467. package/src/components/ui/.content-loader.md +32 -20
  468. package/src/components/ui/.cursor-pagination.md +41 -52
  469. package/src/components/ui/.dashboard-info-card.md +33 -26
  470. package/src/components/ui/.date-picker.md +27 -25
  471. package/src/components/ui/.device-card-compact.md +28 -29
  472. package/src/components/ui/.device-card.md +27 -27
  473. package/src/components/ui/.dialog.md +25 -16
  474. package/src/components/ui/.drawer.md +86 -0
  475. package/src/components/ui/.dropdown-button.md +45 -0
  476. package/src/components/ui/.entity-image.md +46 -0
  477. package/src/components/ui/.error-state.md +41 -28
  478. package/src/components/ui/.feature-card.md +35 -31
  479. package/src/components/ui/.feature-list.md +48 -0
  480. package/src/components/ui/.field-wrapper.md +47 -0
  481. package/src/components/ui/.file-upload.md +42 -0
  482. package/src/components/ui/.filter-checkbox-item.md +43 -0
  483. package/src/components/ui/.filter-list.md +57 -0
  484. package/src/components/ui/.filter-modal.md +59 -0
  485. package/src/components/ui/.floating-tooltip.md +43 -26
  486. package/src/components/ui/.hidden-tags-popup.md +49 -0
  487. package/src/components/ui/.hover-dropdown.md +54 -0
  488. package/src/components/ui/.image-gallery-modal.md +41 -34
  489. package/src/components/ui/.image-uploader.md +53 -0
  490. package/src/components/ui/.index.md +40 -34
  491. package/src/components/ui/.info-card.md +31 -31
  492. package/src/components/ui/.info-row.md +31 -27
  493. package/src/components/ui/.input-trigger.md +44 -0
  494. package/src/components/ui/.input.md +37 -31
  495. package/src/components/ui/.markdown-editor.md +57 -0
  496. package/src/components/ui/.modal-v2.md +51 -0
  497. package/src/components/ui/.modal.md +32 -31
  498. package/src/components/ui/.more-actions-menu.md +45 -38
  499. package/src/components/ui/.organization-card.md +31 -37
  500. package/src/components/ui/.page-actions.md +44 -54
  501. package/src/components/ui/.phone-input.md +54 -0
  502. package/src/components/ui/.progress-bar.md +35 -27
  503. package/src/components/ui/.radio-group.md +39 -27
  504. package/src/components/ui/.release-changelog-section.md +34 -34
  505. package/src/components/ui/.search-input.md +48 -0
  506. package/src/components/ui/.select.md +54 -34
  507. package/src/components/ui/.service-card.md +42 -40
  508. package/src/components/ui/.sheet.md +27 -18
  509. package/src/components/ui/.simple-markdown-renderer.md +29 -31
  510. package/src/components/ui/.sort-column-item.md +42 -0
  511. package/src/components/ui/.square-avatar.md +34 -24
  512. package/src/components/ui/.status-badge.md +26 -38
  513. package/src/components/ui/.switch.md +22 -35
  514. package/src/components/ui/.tab-navigation.md +56 -53
  515. package/src/components/ui/.tab-selector.md +40 -0
  516. package/src/components/ui/.tag-key-value-filter.md +56 -0
  517. package/src/components/ui/.tag-search-input.md +53 -0
  518. package/src/components/ui/.tag.md +49 -31
  519. package/src/components/ui/.tags-manager.md +60 -0
  520. package/src/components/ui/.textarea.md +44 -34
  521. package/src/components/ui/.ticket-attachments-list.md +45 -0
  522. package/src/components/ui/.ticket-detail-section.md +29 -0
  523. package/src/components/ui/.ticket-info-section.md +56 -0
  524. package/src/components/ui/.ticket-note-card.md +53 -0
  525. package/src/components/ui/.ticket-notes-section.md +54 -0
  526. package/src/components/ui/.ticket-status-tag.md +49 -0
  527. package/src/components/ui/.title-content-block.md +25 -26
  528. package/src/components/ui/.toaster.md +40 -28
  529. package/src/components/ui/.tooltip.md +22 -11
  530. package/src/components/ui/.truncate-text.md +39 -0
  531. package/src/components/ui/button/.button-styles.md +35 -0
  532. package/src/components/ui/button/.button.md +53 -0
  533. package/src/components/ui/button/.split-button.md +48 -0
  534. package/src/components/ui/data-table/.data-table-body.md +48 -0
  535. package/src/components/ui/data-table/.data-table-column-filter.md +45 -0
  536. package/src/components/ui/data-table/.data-table-cursor-footer.md +45 -0
  537. package/src/components/ui/data-table/.data-table-empty.md +43 -0
  538. package/src/components/ui/data-table/.data-table-header.md +55 -0
  539. package/src/components/ui/data-table/.data-table-infinite-footer.md +44 -0
  540. package/src/components/ui/data-table/.data-table-row-count.md +43 -0
  541. package/src/components/ui/data-table/.data-table-row.md +47 -0
  542. package/src/components/ui/data-table/.data-table-skeleton.md +42 -0
  543. package/src/components/ui/data-table/.data-table.md +47 -0
  544. package/src/components/ui/data-table/.index.md +55 -0
  545. package/src/components/ui/data-table/.types.md +54 -0
  546. package/src/components/ui/data-table/.use-data-table.md +45 -0
  547. package/src/components/ui/data-table/.utils.md +38 -0
  548. package/src/components/ui/file-manager/.file-manager-action-bar.md +39 -30
  549. package/src/components/ui/file-manager/.file-manager-breadcrumb.md +29 -27
  550. package/src/components/ui/file-manager/.file-manager-context-menu.md +38 -42
  551. package/src/components/ui/file-manager/.file-manager-empty.md +26 -39
  552. package/src/components/ui/file-manager/.file-manager-table-row.md +33 -41
  553. package/src/components/ui/file-manager/.file-manager.md +35 -31
  554. package/src/components/ui/query-report-table/.index.md +43 -0
  555. package/src/components/ui/query-report-table/.query-report-table-header.md +36 -0
  556. package/src/components/ui/query-report-table/.query-report-table-row.md +40 -0
  557. package/src/components/ui/query-report-table/.query-report-table-skeleton.md +44 -0
  558. package/src/components/ui/query-report-table/.query-report-table.md +47 -0
  559. package/src/components/ui/query-report-table/.types.md +41 -0
  560. package/src/components/ui/query-report-table/.utils.md +35 -0
  561. package/src/components/ui/table/.index.md +27 -48
  562. package/src/components/ui/table/.table-cell.md +18 -27
  563. package/src/components/ui/table/.table-column-filter-dropdown.md +40 -0
  564. package/src/components/ui/table/.table-description-cell.md +24 -14
  565. package/src/components/ui/table/.table-empty-state.md +21 -22
  566. package/src/components/ui/table/.table-header.md +25 -40
  567. package/src/components/ui/table/.table-row.md +22 -40
  568. package/src/components/ui/table/.table-skeleton.md +33 -26
  569. package/src/components/ui/table/.table-timestamp-cell.md +26 -16
  570. package/src/components/ui/table/.table.md +39 -59
  571. package/src/components/ui/table/.types.md +44 -36
  572. package/src/components/ui/table/.utils.md +18 -20
  573. package/src/contexts/.chat-runtime-context.md +54 -0
  574. package/src/contexts/.endpoints-runtime-context.md +58 -0
  575. package/src/contexts/.index.md +53 -0
  576. package/src/contexts/.use-outer-or-default.md +36 -0
  577. package/src/embed-shims/.index.md +45 -0
  578. package/src/embed-shims/.next-dynamic.md +43 -0
  579. package/src/embed-shims/.next-image.md +45 -0
  580. package/src/embed-shims/.next-link.md +59 -0
  581. package/src/embed-shims/.next-navigation.md +59 -0
  582. package/src/hooks/.index.md +34 -29
  583. package/src/hooks/.use-access-code-integration.md +49 -0
  584. package/src/hooks/.use-contact-submission.md +37 -26
  585. package/src/hooks/.use-copy-to-clipboard.md +42 -0
  586. package/src/hooks/.use-near-viewport.md +44 -0
  587. package/src/hooks/.use-og-placeholder.md +51 -0
  588. package/src/hooks/.use-toast.md +36 -35
  589. package/src/hooks/state/.use-api-params.md +29 -46
  590. package/src/hooks/state/.use-query-params.md +37 -33
  591. package/src/hooks/ui/.index.md +33 -32
  592. package/src/hooks/ui/.use-auto-limit-tags.md +54 -0
  593. package/src/hooks/ui/.use-horizontal-scrollbar.md +74 -0
  594. package/src/hooks/ui/.use-image-edge-color.md +42 -0
  595. package/src/hooks/ui/.use-media-query.md +33 -25
  596. package/src/hooks/ui/.use-search.md +51 -0
  597. package/src/nats/.nats.md +49 -28
  598. package/src/schemas/.contact-schema.md +45 -0
  599. package/src/stories/.AnnouncementBar.stories.md +45 -0
  600. package/src/stories/.AppLayout.stories.md +20 -21
  601. package/src/stories/.Autocomplete.stories.md +48 -34
  602. package/src/stories/.Board.stories.md +35 -0
  603. package/src/stories/.Button.stories.md +36 -33
  604. package/src/stories/.ChatTicketList.stories.md +33 -0
  605. package/src/stories/.CheckboxBlock.stories.md +40 -28
  606. package/src/stories/.ContentLoader.stories.md +47 -0
  607. package/src/stories/.DashboardInfoCard.stories.md +57 -0
  608. package/src/stories/.DataTable.stories.md +41 -0
  609. package/src/stories/.DatePicker.stories.md +66 -52
  610. package/src/stories/.DeviceCard.stories.md +41 -40
  611. package/src/stories/.DeviceCardCompact.stories.md +41 -0
  612. package/src/stories/.DotsLoaderIcon.stories.md +36 -0
  613. package/src/stories/.Drawer.stories.md +58 -0
  614. package/src/stories/.EmbeddableChat.stories.md +41 -0
  615. package/src/stories/.FileManager.stories.md +41 -0
  616. package/src/stories/.FileManagerActionBar.stories.md +38 -0
  617. package/src/stories/.FileUpload.stories.md +53 -0
  618. package/src/stories/.FilterList.stories.md +54 -0
  619. package/src/stories/.FilterModal.stories.md +72 -0
  620. package/src/stories/.FiltersDropdown.stories.md +57 -0
  621. package/src/stories/.Header.stories.md +48 -0
  622. package/src/stories/.ImageUploader.stories.md +49 -0
  623. package/src/stories/.InfoCard.stories.md +54 -0
  624. package/src/stories/.Input.stories.md +48 -30
  625. package/src/stories/.ListPageLayout.stories.md +56 -43
  626. package/src/stories/.MingoOnboardingCard.stories.md +42 -0
  627. package/src/stories/.MingoOnboardingCardSkeleton.stories.md +35 -0
  628. package/src/stories/.Modal.stories.md +40 -31
  629. package/src/stories/.NotificationDrawer.stories.md +55 -0
  630. package/src/stories/.OnboardingStepCard.stories.md +41 -0
  631. package/src/stories/.OrganizationCard.stories.md +61 -0
  632. package/src/stories/.PageActions.stories.md +52 -49
  633. package/src/stories/.PageContainer.stories.md +41 -35
  634. package/src/stories/.PageLayout.stories.md +60 -0
  635. package/src/stories/.ParallaxImageShowcase.stories.md +49 -0
  636. package/src/stories/.PhoneInput.stories.md +53 -0
  637. package/src/stories/.QueryReportTable.stories.md +44 -0
  638. package/src/stories/.RadioGroup.stories.md +46 -0
  639. package/src/stories/.RadioGroupBlock.stories.md +45 -0
  640. package/src/stories/.Select.stories.md +29 -15
  641. package/src/stories/.SlashCommandSuggestions.stories.md +41 -0
  642. package/src/stories/.SplitButton.stories.md +62 -0
  643. package/src/stories/.TabNavigation.stories.md +47 -38
  644. package/src/stories/.TabSelector.stories.md +65 -0
  645. package/src/stories/.Table.stories.md +38 -46
  646. package/src/stories/.TableColumnFilterDropdown.stories.md +46 -0
  647. package/src/stories/.Tag.stories.md +43 -32
  648. package/src/stories/.TagKeyValueFilter.stories.md +44 -0
  649. package/src/stories/.TagSearchInput.stories.md +61 -0
  650. package/src/stories/.Textarea.stories.md +49 -26
  651. package/src/stories/.Theme.stories.md +41 -0
  652. package/src/stories/.TicketAttachmentsList.stories.md +39 -0
  653. package/src/stories/.TicketDescriptionViewer.stories.md +39 -0
  654. package/src/stories/.TicketInfoSection.stories.md +40 -0
  655. package/src/stories/.TicketKnowledgeBaseList.stories.md +36 -0
  656. package/src/stories/.TicketNotesSection.stories.md +50 -0
  657. package/src/stories/.Toaster.stories.md +40 -0
  658. package/src/stories/.ToolExecutionDisplay.stories.md +41 -0
  659. package/src/stories/.Tooltip.stories.md +41 -0
  660. package/src/stories/.UserSummary.stories.md +41 -0
  661. package/src/stories/.WaitlistForm.stories.md +42 -0
  662. package/src/stories/BlogCard.stories.tsx +61 -0
  663. package/src/stories/CampaignCardAdmin.stories.tsx +52 -0
  664. package/src/stories/CaseStudyCard.stories.tsx +42 -0
  665. package/src/stories/ChatContainer.stories.tsx +186 -0
  666. package/src/stories/ChatInlineVideoPill.stories.tsx +63 -0
  667. package/src/stories/CustomerInterviewCard.stories.tsx +42 -0
  668. package/src/stories/DataRoomDocCard.stories.tsx +52 -0
  669. package/src/stories/GenericEntityCard.stories.tsx +66 -0
  670. package/src/stories/GitHubActivityCard.stories.tsx +61 -0
  671. package/src/stories/HubspotTicketCard.stories.tsx +98 -0
  672. package/src/stories/InvestorUpdateCard.stories.tsx +42 -0
  673. package/src/stories/OnboardingGuideCard.stories.tsx +52 -0
  674. package/src/stories/ProductReleaseCard.stories.tsx +61 -0
  675. package/src/stories/ProgramCard.stories.tsx +79 -0
  676. package/src/stories/RoadmapCard.stories.tsx +75 -0
  677. package/src/stories/SlackMessageCard.stories.tsx +41 -0
  678. package/src/stories/__fixtures__/chat-cards.ts +604 -0
  679. package/src/types/.blog.md +53 -29
  680. package/src/types/.case-study.md +44 -27
  681. package/src/types/.customer-interview.md +66 -44
  682. package/src/types/.delivery.md +40 -0
  683. package/src/types/.employee.md +24 -30
  684. package/src/types/.index.md +33 -47
  685. package/src/types/.marketing.md +49 -44
  686. package/src/types/.navigation.md +33 -25
  687. package/src/types/.os.types.md +32 -27
  688. package/src/types/.platform.md +31 -28
  689. package/src/types/.product-release.md +65 -38
  690. package/src/types/.supabase.md +37 -29
  691. package/src/types/.team.md +41 -33
  692. package/src/types/.video-processing.md +54 -0
  693. package/src/types/.waitlist.md +40 -36
  694. package/src/utils/.access-code-client.md +37 -36
  695. package/src/utils/.cn.md +31 -23
  696. package/src/utils/.color-analysis.md +35 -0
  697. package/src/utils/.country-phone-utils.md +39 -0
  698. package/src/utils/.date-formatters.md +19 -18
  699. package/src/utils/.embed-authed-fetch.md +39 -0
  700. package/src/utils/.embed-proxy-auth-storage.md +38 -0
  701. package/src/utils/.fetch-priority.md +41 -0
  702. package/src/utils/.format.md +74 -25
  703. package/src/utils/.generic-domain-utils.md +42 -0
  704. package/src/utils/.image-proxy.md +59 -23
  705. package/src/utils/.index.md +42 -49
  706. package/src/utils/.local-storage-adapter.md +50 -0
  707. package/src/utils/.ods-color-utils.md +55 -38
  708. package/src/utils/.platform-config.md +45 -25
  709. package/src/utils/.scroll-into-view.md +40 -0
  710. package/src/utils/.source-icons.md +53 -0
  711. package/src/utils/.sse-decision-frame.md +46 -0
  712. package/src/utils/dev-sections/.index.md +34 -0
  713. package/src/utils/dev-sections/.openframe-dev-sections.md +49 -0
  714. package/dist/chunk-ZDF6F7ED.cjs.map +0 -1
  715. package/dist/chunk-ZTJVRSN5.js.map +0 -1
  716. package/src/components/.card.md +0 -42
  717. package/src/components/.contact-button.md +0 -30
  718. package/src/components/.drawer.md +0 -46
  719. package/src/components/.fixed-layout-container.md +0 -47
  720. package/src/components/.footer-waitlist-card.md +0 -29
  721. package/src/components/.join-waitlist-cta.md +0 -29
  722. package/src/components/.sheet.md +0 -47
  723. package/src/components/.sliding-panel.md +0 -48
  724. package/src/components/.tooltip.md +0 -48
  725. package/src/components/.use-mobile.md +0 -42
  726. package/src/components/.vendor-compact-card.md +0 -66
  727. package/src/components/.x-button.md +0 -42
  728. package/src/components/features/.github-repo-button.md +0 -40
  729. package/src/components/features/.organization-icon.md +0 -47
  730. package/src/components/features/.organization-selector.md +0 -45
  731. package/src/components/icons/.fleet-icon.md +0 -39
  732. package/src/components/icons/.meshcentral-icon.md +0 -35
  733. package/src/components/icons/.refresh-icon.md +0 -34
  734. package/src/components/icons/.tactical-icon.md +0 -35
  735. package/src/components/ui/.button.md +0 -69
  736. package/src/components/ui/.log-table-row.md +0 -47
  737. package/src/components/ui/.selectable-device-card.md +0 -46
  738. package/src/hooks/.api-hooks-stub.md +0 -45
  739. package/src/hooks/api/.use-product-releases.md +0 -53
  740. package/src/stories/.OrganizationSelector.stories.md +0 -42
  741. package/src/stories/.SelectableDeviceCard.stories.md +0 -30
  742. package/src/utils/.lite-youtube-embed-stub.md +0 -37
  743. package/src/utils/.lite-youtube-embed.md +0 -33
  744. /package/dist/{chunk-3JWIJJ44.js.map → chunk-5OWDOFKK.js.map} +0 -0
  745. /package/dist/{chunk-IK2X5YJU.js.map → chunk-HWY35EAK.js.map} +0 -0
@@ -1,53 +1,53 @@
1
- <!-- source-hash: 4a3128feff9dea66bb7c1e8038ce07e8 -->
2
- A configurable React footer component that provides flexible layout options and platform-specific customization through a comprehensive configuration interface. This component supports responsive design with customizable sections, social links, and content positioning.
1
+ <!-- source-hash: 71df967a1bb27327de1d15d5c696e36b -->
2
+ A configurable, platform-aware footer component for Next.js (client-side) that renders navigation sections, social icons, branding, and custom content slots based on a `FooterConfig` object.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **Footer** - Main platform-aware component that accepts configuration
7
- - **UniversalFooter** - Internal component that renders the actual footer layout
8
- - **FooterConfig** - TypeScript interface defining configuration options
9
- - **FooterLink/FooterSection** - Type definitions for navigation structure
10
- - **NavLinkSkeleton** - Loading skeleton for navigation links
6
+ **`Footer`** Public entry point. Validates config presence and delegates to `UniversalFooter`. Returns `null` with a console warning if no config is provided.
11
7
 
12
- ## Configuration Options
8
+ **`UniversalFooter`** Core rendering logic. Builds a responsive 4-column grid layout with:
9
+ - **Column 1:** Logo, platform name, description, social icons (`SocialIconRow`)
10
+ - **Dynamic sections:** Rendered from `config.sections[]`
11
+ - **Custom component slot:** `config.customComponent`
12
+ - **Right column slot:** `config.rightColumnContent` or relocated description via `config.moveDescriptionToRight`
13
13
 
14
- The `FooterConfig` interface provides extensive customization:
14
+ **`FooterConfig`** Interface driving all layout behavior. Key flags:
15
15
 
16
- - **Content**: `name`, `legalName`, `description`, `logo`, `nameElement`
17
- - **Navigation**: `sections` array with links organized by category
18
- - **Layout**: `customComponent`, `rightColumnContent`, `moveDescriptionToRight`
19
- - **Social**: `social` object with platform URLs (GitHub, Twitter, LinkedIn, etc.)
20
- - **Styling**: `backgroundColor` with ODS design system classes
21
- - **Behavior**: `hideSocialRow`, `keepBelowDescriptionLeft`
16
+ | Flag | Effect |
17
+ |------|--------|
18
+ | `moveDescriptionToRight` | Moves description to the right column |
19
+ | `keepBelowDescriptionLeft` | Keeps `belowDescriptionContent` in column 1 when description is moved |
20
+ | `hideSocialRow` | Suppresses the `SocialIconRow` |
21
+ | `backgroundColor` | ODS utility class override (default: `bg-ods-bg-card`) |
22
+
23
+ **`renderLink`** — Optional prop to override the default anchor renderer per link.
22
24
 
23
25
  ## Usage Example
24
26
 
25
27
  ```typescript
26
- import { Footer } from './footer'
28
+ import { Footer } from "@/components/footer"
27
29
 
28
- const footerConfig = {
29
- name: "OpenFrame",
30
+ const config: FooterConfig = {
31
+ name: "Flamingo",
30
32
  legalName: "Flamingo Technologies Inc.",
31
- description: "AI-powered MSP platform replacing expensive proprietary software.",
32
- backgroundColor: "bg-ods-bg-card",
33
+ description: "AI-powered MSP platform.",
33
34
  sections: [
34
35
  {
35
36
  title: "Product",
36
37
  links: [
37
- { href: "/features", label: "Features" },
38
- { href: "/pricing", label: "Pricing" }
39
- ]
40
- }
38
+ { href: "/openframe", label: "OpenFrame" },
39
+ { href: "/pricing", label: "Pricing" },
40
+ ],
41
+ },
41
42
  ],
42
43
  social: {
43
- github: "https://github.com/flamingo-run",
44
- twitter: "https://twitter.com/flamingorun"
45
- }
44
+ github: "https://github.com/flamingo",
45
+ twitter: "https://twitter.com/flamingo",
46
+ },
47
+ backgroundColor: "bg-ods-system-greys-black",
46
48
  }
47
49
 
48
- export function AppFooter() {
49
- return <Footer config={footerConfig} />
50
+ export default function Layout() {
51
+ return <Footer config={config} />
50
52
  }
51
- ```
52
-
53
- The component automatically handles responsive breakpoints, Suspense loading states, and integrates with the ODS design system for consistent theming across the platform.
53
+ ```
@@ -1,32 +1,42 @@
1
- <!-- source-hash: a61eab21a69ef6c9de591ad1e2b96e8b -->
2
- A responsive client-side component that displays a grid of icons with dynamic column sizing based on viewport width and smart adjacent icon filtering to prevent visual clustering.
1
+ <!-- source-hash: 0fcf2c17c123f63f9ecc989146d3d3d7 -->
2
+ Renders a responsive 2-row decorative icon grid that fills the viewport width, randomly distributing icons while avoiding adjacent duplicates. Used as a visual background/separator element.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **ResponsiveIconsBlock**: Main component that renders a responsive 2-row grid of icons
7
- - **availableIcons**: Static array containing custom icons from stub file and Lucide React icons
8
- - **IconsBlockProps**: Interface defining optional `loading` prop for placeholder state control
9
- - **Dynamic grid generation**: Algorithm that prevents adjacent duplicate icons using position-based filtering
6
+ - **`ResponsiveIconsBlock`** Main exported component that calculates column count from viewport width and renders a grid of icons
7
+ - **`IconsBlockProps`** Interface with optional `loading` boolean to force the placeholder skeleton state
8
+ - **`availableIcons`** Static array of 12 icon components (custom SVGs + Lucide icons) defined outside the component to prevent re-instantiation
9
+ - **Seeded pseudo-random layout** Uses `Date.now()` as a stable seed per mount to deterministically assign icons without adjacent repeats
10
10
 
11
11
  ## Usage Example
12
12
 
13
13
  ```typescript
14
14
  import { ResponsiveIconsBlock } from './icons-block';
15
15
 
16
- function MyComponent() {
16
+ // Standard decorative separator
17
+ export default function PageHeader() {
17
18
  return (
18
- <div>
19
- {/* Default behavior - shows placeholder until grid loads */}
19
+ <>
20
+ <HeroSection />
20
21
  <ResponsiveIconsBlock />
21
-
22
- {/* Force loading state */}
23
- <ResponsiveIconsBlock loading={true} />
24
-
25
- {/* Responsive grid that adapts to screen width */}
26
- <ResponsiveIconsBlock loading={false} />
27
- </div>
22
+ </>
28
23
  );
29
24
  }
25
+
26
+ // Force loading skeleton (e.g. while parent data fetches)
27
+ export function LoadingLayout() {
28
+ return <ResponsiveIconsBlock loading={true} />;
29
+ }
30
30
  ```
31
31
 
32
- The component automatically calculates columns based on viewport width (56px per column + 4 buffer), uses deterministic pseudo-random placement to ensure consistent layouts across renders, and includes responsive sizing with Tailwind classes. Icons are displayed with grayscale styling and proper grid borders for a cohesive visual presentation.
32
+ ## Behavior Notes
33
+
34
+ | State | Renders |
35
+ |---|---|
36
+ | `loading={true}` | Pulsing `#2A2A2A` placeholder bar |
37
+ | Grid not yet computed | Same placeholder bar |
38
+ | Grid ready | Full icon grid |
39
+
40
+ - Column count recalculates on `window.resize` (`Math.ceil(width / 56) + 4`)
41
+ - All icons are forced to a muted gray (`grayscale + brightness` CSS filter) via an injected `<style>` block scoped to `.icons-block`
42
+ - Marked `aria-hidden="true"` throughout — purely decorative, no accessibility semantics
@@ -1,46 +1,55 @@
1
- <!-- source-hash: 42b352936943a6bb7818e0cd50fb78b7 -->
2
- A reusable React component that provides interactive image cropping functionality with drag/resize controls, rotation, zoom, and optional circular crop overlay for avatar creation.
1
+ <!-- source-hash: 31fb4dc0d85de6bd77dd4c3210fe1592 -->
2
+ Reusable React component for interactive image cropping, supporting drag/resize, zoom, rotation, circular crop mode, and PNG export via canvas.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **ImageCropper**: Main component providing full cropping interface
7
- - **ImageCropperResult**: Interface for exported crop data (dataUrl + blob)
8
- - **ImageCropperProps**: Configuration interface supporting aspect ratios, circular mode, and size limits
9
- - **loadImage**: Helper function for loading images with CORS support
10
- - **exportCrop**: Internal method that handles canvas-based image export with automatic scaling
6
+ ### `ImageCropperResult`
7
+ Return type from a confirmed crop operation.
8
+
9
+ | Field | Type | Description |
10
+ |-------|------|-------------|
11
+ | `dataUrl` | `string` | Cropped PNG as a data URI |
12
+ | `blob` | `Blob` | Corresponding PNG Blob |
13
+
14
+ ### `ImageCropperProps`
15
+
16
+ | Prop | Type | Default | Description |
17
+ |------|------|---------|-------------|
18
+ | `src` | `string` | — | Source image URL or data URI |
19
+ | `onComplete` | `(result) => void` | — | Fired when user confirms crop |
20
+ | `onCancel` | `() => void` | — | Fired when user cancels |
21
+ | `aspectRatio` | `number` | free-form | Width/height ratio |
22
+ | `circular` | `boolean` | `false` | Circular overlay for avatars |
23
+ | `maxSizePx` | `number` | `512` | Max exported image dimension |
24
+ | `className` | `string` | — | Wrapper class override |
25
+
26
+ ### `ImageCropper`
27
+ Main component. Internally manages crop position, zoom (1–3×), and rotation (0–360°). On confirm, renders the crop to an off-screen `<canvas>`, scales it to `maxSizePx`, optionally clips to a circle, then resolves a PNG `Blob` + data URL.
28
+
29
+ **Keyboard shortcuts:** `Enter` confirms, `Escape` cancels.
11
30
 
12
31
  ## Usage Example
13
32
 
14
33
  ```typescript
15
- import { ImageCropper, ImageCropperResult } from './components/image-cropper'
16
-
17
- function AvatarUpload() {
18
- const [imageSrc, setImageSrc] = useState<string>('')
19
- const [showCropper, setShowCropper] = useState(false)
34
+ import { ImageCropper, ImageCropperResult } from "@/components/image-cropper"
20
35
 
36
+ function AvatarEditor({ imageUrl }: { imageUrl: string }) {
21
37
  const handleCropComplete = (result: ImageCropperResult) => {
22
- // Use the cropped image
23
- console.log('Cropped image:', result.dataUrl)
24
- // Upload the blob: result.blob
25
- setShowCropper(false)
38
+ // Upload the blob or set preview via dataUrl
39
+ console.log("PNG data URL:", result.dataUrl)
40
+ uploadAvatar(result.blob)
26
41
  }
27
42
 
28
43
  return (
29
- <>
30
- {showCropper && (
31
- <ImageCropper
32
- src={imageSrc}
33
- onComplete={handleCropComplete}
34
- onCancel={() => setShowCropper(false)}
35
- aspectRatio={1} // Square crop
36
- circular={true} // Avatar mode
37
- maxSizePx={256} // Limit output size
38
- className="max-w-md mx-auto"
39
- />
40
- )}
41
- </>
44
+ <ImageCropper
45
+ src={imageUrl}
46
+ aspectRatio={1}
47
+ circular
48
+ maxSizePx={256}
49
+ onComplete={handleCropComplete}
50
+ onCancel={() => console.log("Cancelled")}
51
+ className="max-w-lg"
52
+ />
42
53
  )
43
54
  }
44
- ```
45
-
46
- The component uses react-easy-crop for the cropping interface, shadcn/ui components for controls, and includes keyboard accessibility (Enter to apply, Esc to cancel). It automatically scales exported images to prevent oversized outputs while maintaining quality.
55
+ ```
@@ -1,48 +1,42 @@
1
- <!-- source-hash: 99cf8e9f151ea0bbc01cf6e6113ebfc4 -->
2
- Central export hub for the Flamingo UI component library, providing a unified entry point for all components across chat, navigation, platform features, and utility components.
1
+ <!-- source-hash: 6641c546041f6054d9c547ffd4f0f173 -->
2
+ Central barrel export file for the Flamingo/OpenFrame shared UI component library. Re-exports all components, hooks, and utilities from the component subdirectories and individual component modules, enabling single-import access across the platform.
3
3
 
4
4
  ## Key Components
5
5
 
6
- **Component Categories:**
7
- - `chat` - Chat interface components and functionality
8
- - `features` - Platform-specific feature components
9
- - `icons` - Icon system and components
10
- - `navigation` - Navigation and routing components
11
- - `platform` - Core platform UI elements
12
- - `ui` - Base UI component library
13
-
14
- **Individual Components:**
15
- - **Layout:** `fixed-layout-container`, `sliding-panel`, `footer`
16
- - **Data Display:** `vendor-display-button`, `pricing-display`, `metric-value`, `results-count`
17
- - **Media:** `media-carousel`, `image-cropper`, `hero-image-uploader`
18
- - **Interactive:** `filter-chip`, `pagination`, `contact-button`, `join-waitlist-cta`
19
- - **Loading States:** `dynamic-skeleton`, `content-loading-container`, `vendor-page-skeleton`
20
- - **Specialized:** `auth-stub`, `date-time-picker`, `onboarding`, `product-release`
6
+ The file organizes exports into logical groups:
7
+
8
+ | Group | Source |
9
+ |---|---|
10
+ | **Component Directories** | `chat`, `features`, `icons`, `navigation`, `platform`, `ui` |
11
+ | **Individual Components** | `announcement-bar`, `media-carousel`, `pricing-display`, `vendor-display-button`, etc. |
12
+ | **Shared Modules** | `onboarding`, `product-release`, `dev-section`, `roadmap`, `delivery`, `legal-document` |
13
+ | **Utilities** | `unified-filter-logic`, `unified-pagination`, `persistent-filter-controls` |
14
+ | **Auth & Loading** | `auth-stub`, `loading` |
15
+ | **Date/Time** | `date-time-picker` |
16
+
17
+ Notable named export: `DetailPageSkeleton` and its `DetailPageSkeletonProps` type are explicitly re-exported from `./shared/detail-page-skeleton`.
21
18
 
22
19
  ## Usage Example
23
20
 
24
21
  ```typescript
25
- // Import specific components
26
- import {
27
- VendorDisplayButton,
28
- MediaCarousel,
29
- FilterChip,
30
- PricingDisplay
31
- } from '@/components'
32
-
33
- // Or import component categories
34
- import { Button, Card } from '@/components' // from ui
35
- import { ChatInterface } from '@/components' // from chat
36
-
37
- function ProductPage() {
38
- return (
39
- <div>
40
- <MediaCarousel images={productImages} />
41
- <PricingDisplay price={pricing} />
42
- <VendorDisplayButton vendor={vendor} />
43
- </div>
44
- )
45
- }
22
+ // Instead of deep imports across many paths:
23
+ import { VendorIcon } from '@flamingo/components/vendor-icon'
24
+ import { Pagination } from '@flamingo/components/pagination'
25
+
26
+ // Import everything from the single barrel:
27
+ import {
28
+ VendorIcon,
29
+ Pagination,
30
+ DetailPageSkeleton,
31
+ type DetailPageSkeletonProps,
32
+ MspDisplay,
33
+ MediaCarousel,
34
+ UnifiedFilterLogic,
35
+ } from '@flamingo/components'
46
36
  ```
47
37
 
48
- The index file uses client-side directive and maintains organized exports to prevent circular dependencies while providing clean import paths for consuming applications.
38
+ ## Notes
39
+
40
+ - Marked `"use client"` — all exported components are React Client Components (Next.js App Router compatible).
41
+ - `PageContainer` is intentionally not re-exported here; it is already available via `./ui/page-container`.
42
+ - Duplicate `chat` export exists in the file; only one is resolved at runtime.
@@ -1,44 +1,40 @@
1
- <!-- source-hash: 2373499921af8da961467280b796e6bc -->
2
- A reusable input component with dark theme styling, error states, and responsive typography that matches the admin interface design system.
1
+ <!-- source-hash: 5d248f58ad416e0486c3eb74baeb29fc -->
2
+ A styled, accessible HTML input component built with `React.forwardRef`, supporting error states and full HTML input attribute passthrough.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **Input**: Forwardable React input component with custom styling
7
- - **InputProps**: Interface extending HTML input attributes with an `invalid` prop for error states
6
+ - **`Input`** Forwarded-ref input component with ODS (OpenFrame Design System) theming, focus/disabled states, hover animations, and optional error styling
7
+ - **`InputProps`** Extended interface adding an `invalid` boolean prop on top of standard `React.InputHTMLAttributes<HTMLInputElement>`
8
8
 
9
9
  ## Usage Example
10
10
 
11
11
  ```typescript
12
- import { Input } from './components/input'
13
-
14
- function LoginForm() {
15
- const [email, setEmail] = React.useState('')
16
- const [hasError, setHasError] = React.useState(false)
17
-
18
- return (
19
- <div className="space-y-4">
20
- <Input
21
- type="email"
22
- placeholder="Enter your email"
23
- value={email}
24
- onChange={(e) => setEmail(e.target.value)}
25
- />
26
-
27
- <Input
28
- type="password"
29
- placeholder="Enter password"
30
- invalid={hasError}
31
- className="mb-2"
32
- />
33
-
34
- <Input
35
- type="file"
36
- accept="image/*"
37
- className="file:mr-4 file:py-2 file:px-4"
38
- />
39
- </div>
40
- )
41
- }
12
+ import { Input } from "./input"
13
+
14
+ // Basic usage
15
+ <Input placeholder="Enter your email" type="email" />
16
+
17
+ // With error state
18
+ <Input
19
+ type="text"
20
+ invalid={true}
21
+ placeholder="Invalid field"
22
+ />
23
+
24
+ // With ref forwarding
25
+ const ref = React.useRef<HTMLInputElement>(null)
26
+ <Input ref={ref} type="text" />
27
+
28
+ // Disabled state
29
+ <Input disabled placeholder="Not editable" />
42
30
  ```
43
31
 
44
- The component features a dark theme (`#161616` background), yellow accent colors (`#FFC008`), responsive text sizing (14px mobile, 18px desktop), and smooth transitions. The `invalid` prop adds red error styling, while the component maintains accessibility with proper focus states and touch optimization.
32
+ ## Styling Highlights
33
+
34
+ | State | Applied Classes |
35
+ |-------|----------------|
36
+ | Default | `bg-ods-card border-ods-border text-ods-text-primary` |
37
+ | Hover | `hover:border-ods-accent/30` |
38
+ | Focus | `focus:border-ods-accent focus-visible:ring-ods-accent/20` |
39
+ | Disabled | `disabled:cursor-not-allowed disabled:bg-ods-bg` |
40
+ | Invalid | `border-red-500 focus-visible:ring-red-500` |
@@ -1,45 +1,56 @@
1
- <!-- source-hash: 7bc5ad978cbbb05e80afab56428fada8 -->
2
- A React component that renders a scrollable list of log entries with severity indicators, timestamps, and optional connecting lines between entries.
1
+ <!-- source-hash: a6c222ce8e1ab58308ac9ed1a6a4776e -->
2
+ A scrollable log viewer component that renders a list of `LogEntry` items with severity indicators, timestamps, and optional tool icons, connected by visual timeline connectors.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`LogsList`** - Main component that renders a scrollable container of log entries with customizable height and styling
7
- - **`LogCard`** - Individual log entry component displaying severity dot, title, timestamp, and optional tool icon
8
- - **`formatTimestamp`** - Utility function that formats Date objects or ISO strings into "YYYY/MM/DD,HH:MM" format
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `LogsList` | `React.ForwardRefExoticComponent` | Main container that renders a scrollable, bordered list of log entries |
9
+ | `LogCard` | `React.FC` (internal) | Individual log row with severity dot, title, formatted timestamp, and optional tool icon |
10
+ | `formatTimestamp` | `function` (internal) | Formats a `string \| Date` into `YYYY/MM/DD,HH:mm` display format |
11
+
12
+ ### `LogsList` Props (`LogsListProps`)
13
+
14
+ | Prop | Default | Description |
15
+ |------|---------|-------------|
16
+ | `logs` | — | Array of `LogEntry` items to display |
17
+ | `maxHeight` | `'400px'` | Container max height; use `'100%'` for full-height flex layout |
18
+ | `showConnector` | `true` | Renders vertical timeline connector lines between entries |
19
+ | `onLogClick` | — | Callback fired with the clicked `LogEntry` |
20
+ | `loading` | `false` | Shows a loading state placeholder |
21
+ | `emptyMessage` | `'No logs to display'` | Message shown when `logs` is empty |
22
+ | `className` | — | Additional Tailwind classes for the container |
9
23
 
10
24
  ## Usage Example
11
25
 
12
26
  ```typescript
13
- import { LogsList } from './logs-list'
14
- import { LogEntry } from '../types/logs.types'
27
+ import { LogsList } from './components/logs-list'
28
+ import { LogEntry } from './types/logs.types'
15
29
 
16
30
  const logs: LogEntry[] = [
17
31
  {
18
32
  id: '1',
19
- title: 'Application started successfully',
33
+ title: 'Agent task completed successfully',
20
34
  severity: 'info',
21
35
  timestamp: new Date(),
22
- toolType: 'nodejs'
36
+ toolType: 'bash',
23
37
  },
24
38
  {
25
- id: '2',
26
- title: 'Database connection failed',
27
- severity: 'error',
28
- timestamp: '2024-01-15T10:30:00Z'
29
- }
39
+ id: '2',
40
+ title: 'Connection timeout detected',
41
+ severity: 'warning',
42
+ timestamp: '2024-01-15T10:30:00Z',
43
+ },
30
44
  ]
31
45
 
32
- function LogsViewer() {
46
+ export default function LogsPanel() {
33
47
  return (
34
48
  <LogsList
35
49
  logs={logs}
36
50
  maxHeight="500px"
37
51
  showConnector={true}
38
- onLogClick={(log) => console.log('Clicked:', log.title)}
39
- emptyMessage="No logs available"
52
+ onLogClick={(log) => console.log('Selected:', log.id)}
40
53
  />
41
54
  )
42
55
  }
43
- ```
44
-
45
- The component supports loading states, empty states, keyboard navigation, and visual connectors between log entries for a timeline-like appearance.
56
+ ```
@@ -1,49 +1,48 @@
1
- <!-- source-hash: ff9ab9dccc65286acc64c16442ec5b60 -->
2
- A React carousel component that displays media items (images, videos, YouTube embeds) with navigation controls, touch/swipe support, and thumbnail preview.
1
+ <!-- source-hash: 3e808df6d9836b82a787de725d9821af -->
2
+ A responsive, accessible media carousel component supporting images, videos (MP4/HLS via MuxPlayer), and YouTube embeds with thumbnail navigation, swipe gestures, and keyboard controls.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **MediaCarousel**: Main carousel component with navigation and media display
7
- - **CarouselYouTubeEmbed**: Specialized YouTube embed with click-to-play functionality
8
- - **Navigation Icons**: SVG components for carousel controls (ChevronLeft, ChevronRight, Play)
9
- - **Media Renderers**: Separate functions for rendering images, videos, and YouTube embeds
10
- - **Touch/Swipe Handler**: Gesture-based navigation for mobile devices
6
+ ### `MediaCarousel` (default export)
7
+ A memoized React component with the following props:
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `media` | `MediaItem[]` | — | Array of media items to display |
12
+ | `className` | `string` | — | Additional CSS classes |
13
+ | `aspectRatio` | `'16/9' \| '4/3' \| '3/2' \| '1/1'` | `'16/9'` | Container aspect ratio |
14
+ | `showThumbnails` | `boolean` | `true` | Toggle thumbnail strip |
15
+ | `autoPlay` | `boolean` | `false` | Auto-advance slides |
16
+ | `objectFit` | `'contain' \| 'cover'` | `'contain'` | Image fit behavior |
17
+
18
+ ### Internal Renderers
19
+ - `renderImage` — renders images with lazy loading and error fallback
20
+ - `renderVideo` — delegates to `<Video>` (MuxPlayer facade) for MP4/HLS
21
+ - `renderYouTubeEmbed` — delegates to `<Video>` with `kind="youtube"` for lite-youtube embed
22
+ - `renderThumbnail` — clickable thumbnail with active indicator and video play overlay
11
23
 
12
24
  ## Usage Example
13
25
 
14
26
  ```typescript
15
27
  import { MediaCarousel } from './media-carousel';
28
+ import { MediaItem } from '../utils/media-carousel-utils-stub';
16
29
 
17
- const mediaItems = [
18
- {
19
- type: 'image' as const,
20
- src: '/images/photo1.jpg',
21
- alt: 'Sample image'
22
- },
23
- {
24
- type: 'video' as const,
25
- src: '/videos/demo.mp4',
26
- poster: '/images/video-thumb.jpg',
27
- alt: 'Demo video'
28
- },
29
- {
30
- type: 'youtube' as const,
31
- src: 'https://youtube.com/watch?v=dQw4w9WgXcQ',
32
- alt: 'YouTube video'
33
- }
30
+ const items: MediaItem[] = [
31
+ { type: 'image', src: 'https://example.com/photo.jpg', alt: 'Photo' },
32
+ { type: 'youtube', src: 'https://youtube.com/watch?v=dQw4w9WgXcQ', alt: 'Demo' },
33
+ { type: 'video', src: 'https://example.com/clip.mp4', poster: 'https://example.com/thumb.jpg' },
34
34
  ];
35
35
 
36
- function App() {
37
- return (
38
- <MediaCarousel
39
- media={mediaItems}
40
- aspectRatio="16/9"
41
- showThumbnails={true}
42
- objectFit="contain"
43
- className="max-w-4xl mx-auto"
44
- />
45
- );
46
- }
36
+ <MediaCarousel
37
+ media={items}
38
+ aspectRatio="16/9"
39
+ showThumbnails={true}
40
+ objectFit="contain"
41
+ />
47
42
  ```
48
43
 
49
- The component automatically handles different media types, provides keyboard navigation (arrow keys), supports touch gestures for mobile, and includes error handling for failed media loads. YouTube videos use a click-to-activate pattern for better performance.
44
+ ## Interaction Support
45
+ - **Keyboard**: `←` / `→` arrow keys when carousel is focused
46
+ - **Touch/Swipe**: 50px minimum swipe distance triggers slide change
47
+ - **Hover**: Navigation arrows reveal on hover; hidden for single-item carousels
48
+ - **Accessibility**: `role="region"` and `aria-label` applied when multiple items exist
@@ -1,31 +1,48 @@
1
- <!-- source-hash: ec539582b686670df288033e71575765 -->
2
- A React component that showcases OpenFrame's open-source philosophy through a grid of feature cards with icons and descriptions, emphasizing transparency and community-driven development.
1
+ <!-- source-hash: 86b90e3350490d5e683b6b4b06497f43 -->
2
+ A Next.js client component that renders a responsive marketing section showcasing OpenFrame's open-source value propositions as a 4-column feature card grid.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`FeatureCard`** - Individual card component displaying an icon, title, and description with hover effects
7
- - **`OpenSourceFeatures`** - Main section component rendering a bold headline and 4-column grid of features
8
- - **`FeatureCardProps`** - TypeScript interface defining the structure for feature card properties
6
+ - **`FeatureCard`** Reusable card component accepting an icon, title, and description; renders with hover transition styling using ODS design tokens
7
+ - **`OpenSourceFeatures`** Main section component that composes the feature grid with a headline and four predefined feature entries
8
+ - **`features` array** Static data defining the four pillars: *Built on FOSS*, *Own Your Stack*, *Modular by Design*, and *Community-Powered*
9
+
10
+ ## Props
11
+
12
+ ### `FeatureCardProps`
13
+
14
+ | Prop | Type | Description |
15
+ |------|------|-------------|
16
+ | `icon` | `React.ReactNode` | Lucide icon element rendered in the card header |
17
+ | `title` | `string` | Feature headline text |
18
+ | `description` | `string` | Supporting body copy |
9
19
 
10
20
  ## Usage Example
11
21
 
12
22
  ```typescript
13
- import OpenSourceFeatures from './components/open-source-features';
23
+ import OpenSourceFeatures from '@/components/open-source-features';
14
24
 
15
- // Use in a landing page or marketing section
16
- function HomePage() {
25
+ // Drop into any page layout no props required
26
+ export default function LandingPage() {
17
27
  return (
18
- <div>
28
+ <main>
19
29
  <OpenSourceFeatures />
20
- </div>
30
+ </main>
21
31
  );
22
32
  }
23
33
  ```
24
34
 
25
- The component features a responsive grid layout (1 column on mobile, 2 on tablet, 4 on desktop) with cards highlighting:
26
- - **Built on FOSS** - Transparency and community-driven development
27
- - **Own Your Stack** - Control over tools and customization
28
- - **Modular by Design** - Flexible architecture
29
- - **Community-Powered** - User participation in roadmap
35
+ To add a custom feature card standalone:
36
+
37
+ ```typescript
38
+ import { FeatureCard } from '@/components/open-source-features';
39
+ import { Shield } from 'lucide-react';
40
+
41
+ <FeatureCard
42
+ icon={<Shield className="w-6 h-6" />}
43
+ title="Secure by Default"
44
+ description="Auditable code with no vendor lock-in."
45
+ />
46
+ ```
30
47
 
31
- Each card includes hover animations and uses Lucide React icons (Terminal, DollarSign, Network, Users) with consistent ODS (OpenFrame Design System) styling and typography.
48
+ > **Note:** `FeatureCard` is not a named export by default export it explicitly if reuse outside this component is needed. The section uses ODS design tokens (`ods-card`, `ods-border`, `ods-accent`) from the OpenFrame design system.