@flamingo-stack/openframe-frontend-core 0.0.212 → 0.0.213-snapshot.20260528174436

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 (806) hide show
  1. package/dist/{chunk-QKFBZLIR.js → chunk-5OWDOFKK.js} +2 -2
  2. package/dist/chunk-CZR7ARBA.js +698 -0
  3. package/dist/chunk-CZR7ARBA.js.map +1 -0
  4. package/dist/{chunk-UYQOPC57.js → chunk-HICZPTRR.js} +4 -351
  5. package/dist/chunk-HICZPTRR.js.map +1 -0
  6. package/dist/{chunk-5BNWGK6D.js → chunk-HWY35EAK.js} +3 -3
  7. package/dist/{chunk-VTUIMMHO.cjs → chunk-IZL2KEH6.cjs} +26 -26
  8. package/dist/{chunk-VTUIMMHO.cjs.map → chunk-IZL2KEH6.cjs.map} +1 -1
  9. package/dist/{chunk-ZFBLC5GV.cjs → chunk-KDNGUYZM.cjs} +17 -17
  10. package/dist/{chunk-ZFBLC5GV.cjs.map → chunk-KDNGUYZM.cjs.map} +1 -1
  11. package/dist/chunk-OZ3GH6OQ.cjs +698 -0
  12. package/dist/chunk-OZ3GH6OQ.cjs.map +1 -0
  13. package/dist/{chunk-3E5ANY55.js → chunk-UKND27XC.js} +410 -544
  14. package/dist/chunk-UKND27XC.js.map +1 -0
  15. package/dist/{chunk-EH3RWVF3.cjs → chunk-WT5JV2GS.cjs} +8 -355
  16. package/dist/chunk-WT5JV2GS.cjs.map +1 -0
  17. package/dist/{chunk-WI76ZUBE.cjs → chunk-YZUUFTIK.cjs} +545 -679
  18. package/dist/chunk-YZUUFTIK.cjs.map +1 -0
  19. package/dist/components/chat/hooks/use-jetstream-dialog-subscription.d.ts.map +1 -1
  20. package/dist/components/chat/hooks/use-nats-dialog-subscription.d.ts +0 -9
  21. package/dist/components/chat/hooks/use-nats-dialog-subscription.d.ts.map +1 -1
  22. package/dist/components/chat/index.cjs +5 -4
  23. package/dist/components/chat/index.cjs.map +1 -1
  24. package/dist/components/chat/index.js +4 -3
  25. package/dist/components/contact/index.cjs +6 -5
  26. package/dist/components/contact/index.cjs.map +1 -1
  27. package/dist/components/contact/index.js +5 -4
  28. package/dist/components/features/index.cjs +5 -4
  29. package/dist/components/features/index.cjs.map +1 -1
  30. package/dist/components/features/index.js +4 -3
  31. package/dist/components/features/notifications/index.d.ts +2 -2
  32. package/dist/components/features/notifications/index.d.ts.map +1 -1
  33. package/dist/components/features/notifications/notifications-context.d.ts +16 -1
  34. package/dist/components/features/notifications/notifications-context.d.ts.map +1 -1
  35. package/dist/components/features/notifications/types.d.ts +4 -0
  36. package/dist/components/features/notifications/types.d.ts.map +1 -1
  37. package/dist/components/index.cjs +55 -54
  38. package/dist/components/index.cjs.map +1 -1
  39. package/dist/components/index.js +7 -6
  40. package/dist/components/index.js.map +1 -1
  41. package/dist/components/navigation/app-header.d.ts.map +1 -1
  42. package/dist/components/navigation/index.cjs +5 -4
  43. package/dist/components/navigation/index.cjs.map +1 -1
  44. package/dist/components/navigation/index.js +4 -3
  45. package/dist/components/tickets/index.cjs +66 -65
  46. package/dist/components/tickets/index.cjs.map +1 -1
  47. package/dist/components/tickets/index.js +6 -5
  48. package/dist/components/tickets/index.js.map +1 -1
  49. package/dist/components/ui/index.cjs +5 -4
  50. package/dist/components/ui/index.cjs.map +1 -1
  51. package/dist/components/ui/index.js +4 -3
  52. package/dist/embed-shims/index.cjs +3 -3
  53. package/dist/embed-shims/index.cjs.map +1 -1
  54. package/dist/embed-shims/index.js +4 -4
  55. package/dist/hooks/index.cjs +3 -2
  56. package/dist/hooks/index.cjs.map +1 -1
  57. package/dist/hooks/index.js +2 -1
  58. package/dist/index.cjs +5 -4
  59. package/dist/index.cjs.map +1 -1
  60. package/dist/index.js +4 -3
  61. package/dist/nats/index.cjs +28 -346
  62. package/dist/nats/index.cjs.map +1 -1
  63. package/dist/nats/index.d.ts +3 -0
  64. package/dist/nats/index.d.ts.map +1 -1
  65. package/dist/nats/index.js +30 -346
  66. package/dist/nats/index.js.map +1 -1
  67. package/dist/nats/nats-provider.d.ts +28 -0
  68. package/dist/nats/nats-provider.d.ts.map +1 -0
  69. package/dist/nats/nats.d.ts +1 -0
  70. package/dist/nats/nats.d.ts.map +1 -1
  71. package/dist/nats/shared-connection.d.ts +73 -0
  72. package/dist/nats/shared-connection.d.ts.map +1 -0
  73. package/dist/nats/use-nats-subscription.d.ts +18 -0
  74. package/dist/nats/use-nats-subscription.d.ts.map +1 -0
  75. package/package.json +1 -1
  76. package/src/.index.md +36 -34
  77. package/src/components/.alert-dialog.md +27 -23
  78. package/src/components/.announcement-bar.md +26 -21
  79. package/src/components/.breadcrumb.md +19 -15
  80. package/src/components/.calendar.md +24 -19
  81. package/src/components/.categories-cart.md +29 -24
  82. package/src/components/.checkbox.md +23 -25
  83. package/src/components/.chevron-button.md +37 -32
  84. package/src/components/.comment-card.md +32 -62
  85. package/src/components/.dialog.md +26 -26
  86. package/src/components/.dynamic-skeleton.md +54 -57
  87. package/src/components/.empty-state.md +42 -51
  88. package/src/components/.faq-accordion.md +27 -21
  89. package/src/components/.filter-chip.md +41 -24
  90. package/src/components/.flamingo-logo.md +20 -23
  91. package/src/components/.footer-waitlist-button.md +29 -22
  92. package/src/components/.footer.md +32 -32
  93. package/src/components/.icons-block.md +27 -17
  94. package/src/components/.image-cropper.md +41 -32
  95. package/src/components/.index.md +33 -39
  96. package/src/components/.input.md +31 -35
  97. package/src/components/.logs-list.md +31 -20
  98. package/src/components/.media-carousel.md +35 -36
  99. package/src/components/.open-source-features.md +33 -16
  100. package/src/components/.pagination.md +52 -51
  101. package/src/components/.provider-button.md +21 -23
  102. package/src/components/.select.md +31 -20
  103. package/src/components/.sidebar.md +34 -24
  104. package/src/components/.smooth-accordion.md +29 -24
  105. package/src/components/.social-icon-row.md +36 -32
  106. package/src/components/.textarea.md +25 -31
  107. package/src/components/.tool-icon.md +24 -26
  108. package/src/components/.unified-filter-logic.md +37 -30
  109. package/src/components/.unified-pagination.md +23 -22
  110. package/src/components/.user-summary-stub.md +38 -22
  111. package/src/components/.vendor-display-button.md +25 -25
  112. package/src/components/.vendor-icon.md +33 -25
  113. package/src/components/.why-it-matters.md +28 -25
  114. package/src/components/chat/.approval-batch-message.md +51 -0
  115. package/src/components/chat/.approval-request-message.md +35 -34
  116. package/src/components/chat/.chat-attachment-bar.md +64 -0
  117. package/src/components/chat/.chat-container.md +36 -18
  118. package/src/components/chat/.chat-input.md +37 -20
  119. package/src/components/chat/.chat-message-enhanced.md +30 -49
  120. package/src/components/chat/.chat-message-list.md +45 -32
  121. package/src/components/chat/.chat-message-skeleton.md +26 -22
  122. package/src/components/chat/.chat-panel-context.md +52 -0
  123. package/src/components/chat/.chat-ref.types.md +42 -0
  124. package/src/components/chat/.chat-sidebar-skeleton.md +34 -25
  125. package/src/components/chat/.chat-sidebar.md +31 -26
  126. package/src/components/chat/.chat-ticket-list.md +39 -0
  127. package/src/components/chat/.context-compaction-display.md +36 -0
  128. package/src/components/chat/.cycling-phrase.md +52 -0
  129. package/src/components/chat/.embeddable-chat.md +48 -0
  130. package/src/components/chat/.expand-chevron.md +24 -0
  131. package/src/components/chat/.index.md +31 -35
  132. package/src/components/chat/.mingo-onboarding-card-skeleton.md +44 -0
  133. package/src/components/chat/.mingo-onboarding-card.md +62 -0
  134. package/src/components/chat/.model-display.md +32 -30
  135. package/src/components/chat/.nav-link-anchor-via-runtime.md +40 -0
  136. package/src/components/chat/.remark-card-links.md +38 -0
  137. package/src/components/chat/.slash-command-suggestions.md +47 -0
  138. package/src/components/chat/.source-action-button.md +48 -0
  139. package/src/components/chat/.thinking-display.md +42 -0
  140. package/src/components/chat/.tool-call-blocks.md +45 -0
  141. package/src/components/chat/.tool-execution-display.md +44 -36
  142. package/src/components/chat/chat-container.tsx +1 -1
  143. package/src/components/chat/entity-cards/.admin-content-card.md +43 -0
  144. package/src/components/chat/entity-cards/.block-card.md +47 -0
  145. package/src/components/chat/entity-cards/.blog-card.md +52 -0
  146. package/src/components/chat/entity-cards/.blog-image-placeholder.md +39 -0
  147. package/src/components/chat/entity-cards/.campaign-card-admin.md +47 -0
  148. package/src/components/chat/entity-cards/.case-study-card.md +58 -0
  149. package/src/components/chat/entity-cards/.chat-ticket-item.md +40 -0
  150. package/src/components/chat/entity-cards/.chat-video-entity-card.md +43 -0
  151. package/src/components/chat/entity-cards/.customer-interview-card.md +53 -0
  152. package/src/components/chat/entity-cards/.data-room-doc-card.md +47 -0
  153. package/src/components/chat/entity-cards/.dispatch.md +39 -0
  154. package/src/components/chat/entity-cards/.entity-author-card.md +51 -0
  155. package/src/components/chat/entity-cards/.generic-entity-card.md +62 -0
  156. package/src/components/chat/entity-cards/.github-activity-card.md +61 -0
  157. package/src/components/chat/entity-cards/.hubspot-ticket-card.md +53 -0
  158. package/src/components/chat/entity-cards/.index.md +66 -0
  159. package/src/components/chat/entity-cards/.investor-update-card.md +47 -0
  160. package/src/components/chat/entity-cards/.onboarding-guide-card.md +58 -0
  161. package/src/components/chat/entity-cards/.product-release-card-defaults.md +31 -0
  162. package/src/components/chat/entity-cards/.product-release-card.md +29 -0
  163. package/src/components/chat/entity-cards/.program-card-defaults.md +41 -0
  164. package/src/components/chat/entity-cards/.program-card.md +59 -0
  165. package/src/components/chat/entity-cards/.roadmap-card.md +46 -0
  166. package/src/components/chat/entity-cards/.roadmap-vote-button.md +52 -0
  167. package/src/components/chat/entity-cards/.slack-message-card.md +48 -0
  168. package/src/components/chat/entity-cards/.task-type-icon.md +47 -0
  169. package/src/components/chat/hooks/.index.md +36 -21
  170. package/src/components/chat/hooks/.use-chat-attachment-image-gallery.md +51 -0
  171. package/src/components/chat/hooks/.use-chat-attachments.md +48 -0
  172. package/src/components/chat/hooks/.use-chat-card-item.md +39 -0
  173. package/src/components/chat/hooks/.use-chat-identity.md +45 -0
  174. package/src/components/chat/hooks/.use-chat.md +58 -0
  175. package/src/components/chat/hooks/.use-chunk-catchup.md +46 -48
  176. package/src/components/chat/hooks/.use-close-on-navigation.md +44 -0
  177. package/src/components/chat/hooks/.use-collapsible.md +48 -0
  178. package/src/components/chat/hooks/.use-embedded-chat.md +32 -0
  179. package/src/components/chat/hooks/.use-jetstream-dialog-subscription.md +40 -0
  180. package/src/components/chat/hooks/.use-nats-chat-adapter.md +52 -0
  181. package/src/components/chat/hooks/.use-nats-dialog-subscription.md +49 -30
  182. package/src/components/chat/hooks/.use-proxied-image-url.md +40 -0
  183. package/src/components/chat/hooks/.use-realtime-chunk-processor.md +43 -40
  184. package/src/components/chat/hooks/.use-slash-commands.md +46 -0
  185. package/src/components/chat/hooks/.use-sse-chat-adapter.md +34 -0
  186. package/src/components/chat/hooks/.use-sse.md +60 -0
  187. package/src/components/chat/hooks/.use-unified-chat.md +57 -0
  188. package/src/components/chat/hooks/use-jetstream-dialog-subscription.ts +60 -207
  189. package/src/components/chat/hooks/use-nats-dialog-subscription.ts +71 -214
  190. package/src/components/chat/types/.api.types.md +52 -38
  191. package/src/components/chat/types/.chat.types.md +43 -34
  192. package/src/components/chat/types/.component.types.md +47 -48
  193. package/src/components/chat/types/.index.md +20 -27
  194. package/src/components/chat/types/.message.types.md +58 -48
  195. package/src/components/chat/types/.network.types.md +57 -31
  196. package/src/components/chat/types/.processing.types.md +49 -31
  197. package/src/components/chat/types/.unified-chat-state.types.md +41 -0
  198. package/src/components/chat/types/entities/.blog.md +43 -0
  199. package/src/components/chat/types/entities/.case-study.md +26 -0
  200. package/src/components/chat/types/entities/.content-ref.md +41 -0
  201. package/src/components/chat/types/entities/.customer-interview.md +28 -0
  202. package/src/components/chat/types/entities/.data-room-doc.md +36 -0
  203. package/src/components/chat/types/entities/.github-activity.md +43 -0
  204. package/src/components/chat/types/entities/.hubspot-ticket.md +53 -0
  205. package/src/components/chat/types/entities/.index.md +42 -0
  206. package/src/components/chat/types/entities/.investor-update.md +45 -0
  207. package/src/components/chat/types/entities/.onboarding-guide.md +50 -0
  208. package/src/components/chat/types/entities/.program-types.md +57 -0
  209. package/src/components/chat/types/entities/.roadmap-item.md +58 -0
  210. package/src/components/chat/types/entities/.slack-message.md +35 -0
  211. package/src/components/chat/utils/.agent-status-message.md +45 -0
  212. package/src/components/chat/utils/.auto-continuation-directive.md +58 -0
  213. package/src/components/chat/utils/.chat-attachment-markdown.md +54 -0
  214. package/src/components/chat/utils/.chat-authed-fetch.md +25 -0
  215. package/src/components/chat/utils/.chat-nav-resolution.md +46 -0
  216. package/src/components/chat/utils/.chat-proxy-auth-storage.md +38 -0
  217. package/src/components/chat/utils/.chip-action-class.md +34 -0
  218. package/src/components/chat/utils/.chip-styles.md +46 -0
  219. package/src/components/chat/utils/.chunk-parser.md +38 -28
  220. package/src/components/chat/utils/.clickup-task-type-utils.md +48 -0
  221. package/src/components/chat/utils/.compact-card-classes.md +62 -0
  222. package/src/components/chat/utils/.decide-new-tab.md +51 -0
  223. package/src/components/chat/utils/.external-app-urls.md +29 -0
  224. package/src/components/chat/utils/.extract-incomplete-message-state.md +25 -29
  225. package/src/components/chat/utils/.flatten-assistant-content.md +34 -0
  226. package/src/components/chat/utils/.icon-registry.md +46 -0
  227. package/src/components/chat/utils/.index.md +37 -32
  228. package/src/components/chat/utils/.is-cross-origin-url.md +35 -0
  229. package/src/components/chat/utils/.message-segment-accumulator.md +25 -34
  230. package/src/components/chat/utils/.nav-anchor-props.md +44 -0
  231. package/src/components/chat/utils/.nav-click-handler.md +47 -0
  232. package/src/components/chat/utils/.onboarding-icons.md +28 -0
  233. package/src/components/chat/utils/.process-historical-messages.md +46 -35
  234. package/src/components/chat/utils/.scroll-anchor.md +40 -0
  235. package/src/components/chat/utils/.slash-dispatch-utils.md +44 -0
  236. package/src/components/chat/utils/.source-icons.md +35 -0
  237. package/src/components/chat/utils/.source-row-cta.md +54 -0
  238. package/src/components/chat/utils/.tool-call-helpers.md +42 -0
  239. package/src/components/contact/.contact-form.md +43 -0
  240. package/src/components/contact/.index.md +27 -0
  241. package/src/components/features/.array-entry-manager.md +36 -45
  242. package/src/components/features/.changelog-manager.md +47 -21
  243. package/src/components/features/.changelog-sections-manager.md +21 -26
  244. package/src/components/features/.command-box.md +31 -28
  245. package/src/components/features/.entity-summary-editor.md +46 -0
  246. package/src/components/features/.entity-video-section.md +51 -0
  247. package/src/components/features/.figma-prototype-viewer.md +48 -29
  248. package/src/components/features/.filters-dropdown.md +33 -46
  249. package/src/components/features/.highlight-config-section.md +42 -0
  250. package/src/components/features/.highlight-generation-section.md +46 -0
  251. package/src/components/features/.highlight-video-combined-section.md +47 -0
  252. package/src/components/features/.highlight-video-preview.md +44 -0
  253. package/src/components/features/.highlight-video-section.md +47 -0
  254. package/src/components/features/.index.md +40 -66
  255. package/src/components/features/.media-gallery-manager.md +48 -38
  256. package/src/components/features/.more-about-button.md +22 -19
  257. package/src/components/features/.og-editor-preview.md +40 -36
  258. package/src/components/features/.parallax-image-showcase.md +33 -26
  259. package/src/components/features/.paths-display.md +42 -43
  260. package/src/components/features/.platform-badge.md +37 -36
  261. package/src/components/features/.platform-filter.md +23 -16
  262. package/src/components/features/.policy-configuration-panel.md +48 -56
  263. package/src/components/features/.provider-button.md +33 -36
  264. package/src/components/features/.push-button-selector.md +40 -29
  265. package/src/components/features/.release-media-manager.md +46 -31
  266. package/src/components/features/.section-selector.md +26 -31
  267. package/src/components/features/.select-button.md +35 -25
  268. package/src/components/features/.seo-editor-preview.md +41 -44
  269. package/src/components/features/.social-links-manager.md +25 -19
  270. package/src/components/features/.start-with-openframe-button.md +37 -29
  271. package/src/components/features/.status-filter-component.md +36 -20
  272. package/src/components/features/.tags-selector.md +40 -24
  273. package/src/components/features/.transcribe-and-summarize-combined-section.md +45 -0
  274. package/src/components/features/.transcribe-summarize-section.md +48 -0
  275. package/src/components/features/.transcript-summary-editor.md +53 -0
  276. package/src/components/features/.video-bites-display.md +46 -0
  277. package/src/components/features/.video-clips-section.md +41 -0
  278. package/src/components/features/.video-ratio-tabs.md +56 -0
  279. package/src/components/features/.video-source-selector.md +60 -0
  280. package/src/components/features/.video.md +44 -0
  281. package/src/components/features/.waitlist-form.md +60 -0
  282. package/src/components/features/ai-enrich/.AIEnrichButton.md +30 -27
  283. package/src/components/features/ai-enrich/.AIEnrichSection.md +46 -42
  284. package/src/components/features/board/.board-column-header.md +38 -0
  285. package/src/components/features/board/.board-column.md +43 -0
  286. package/src/components/features/board/.board.md +51 -0
  287. package/src/components/features/board/.color-utils.md +26 -0
  288. package/src/components/features/board/.index.md +56 -0
  289. package/src/components/features/board/.ticket-card-skeleton.md +38 -0
  290. package/src/components/features/board/.ticket-card.md +47 -0
  291. package/src/components/features/board/.types.md +45 -0
  292. package/src/components/features/board/.use-board-collapse.md +34 -0
  293. package/src/components/features/notifications/.index.md +57 -0
  294. package/src/components/features/notifications/.notification-drawer.md +34 -0
  295. package/src/components/features/notifications/.notification-tile.md +39 -0
  296. package/src/components/features/notifications/.notifications-context.md +73 -0
  297. package/src/components/features/notifications/.types.md +45 -0
  298. package/src/components/features/notifications/index.ts +2 -1
  299. package/src/components/features/notifications/notifications-context.tsx +104 -6
  300. package/src/components/features/notifications/types.ts +5 -0
  301. package/src/components/icons/.about-icon.md +20 -28
  302. package/src/components/icons/.ai-robot-icon.md +15 -17
  303. package/src/components/icons/.bash-icon.md +16 -23
  304. package/src/components/icons/.buildings-icon.md +10 -24
  305. package/src/components/icons/.capterra-icon.md +30 -26
  306. package/src/components/icons/.carta-icon.md +29 -0
  307. package/src/components/icons/.clickup-icon.md +26 -0
  308. package/src/components/icons/.cmd-icon.md +15 -22
  309. package/src/components/icons/.coins-icon.md +17 -25
  310. package/src/components/icons/.community-hub-icon.md +19 -25
  311. package/src/components/icons/.community-icon.md +24 -21
  312. package/src/components/icons/.compare-icon.md +32 -19
  313. package/src/components/icons/.copy-icon.md +29 -15
  314. package/src/components/icons/.custom-external-link-icon.md +19 -17
  315. package/src/components/icons/.custom-fork-icon.md +32 -21
  316. package/src/components/icons/.custom-license-icon.md +29 -25
  317. package/src/components/icons/.custom-star-icon.md +20 -28
  318. package/src/components/icons/.custom-time-icon.md +21 -22
  319. package/src/components/icons/.cut-vendor-costs-icon.md +6 -19
  320. package/src/components/icons/.dashboard-icon.md +13 -18
  321. package/src/components/icons/.deno-icon.md +16 -23
  322. package/src/components/icons/.donut-icon.md +12 -23
  323. package/src/components/icons/.double-chevron-icon.md +28 -36
  324. package/src/components/icons/.elestio-logo.md +13 -23
  325. package/src/components/icons/.empty-vendor-icon.md +16 -18
  326. package/src/components/icons/.explore-categories-icon.md +18 -29
  327. package/src/components/icons/.eye-icon.md +16 -26
  328. package/src/components/icons/.facebook-icon.md +9 -20
  329. package/src/components/icons/.figma-icon.md +8 -17
  330. package/src/components/icons/.filter-icon.md +15 -17
  331. package/src/components/icons/.flamingo-logo.md +28 -27
  332. package/src/components/icons/.folder-shield-icon.md +28 -19
  333. package/src/components/icons/.g2-icon.md +22 -21
  334. package/src/components/icons/.getapp-icon.md +25 -21
  335. package/src/components/icons/.github-icon.md +13 -25
  336. package/src/components/icons/.globe-icon.md +14 -19
  337. package/src/components/icons/.google-gemini-icon.md +16 -19
  338. package/src/components/icons/.google-logo.md +15 -21
  339. package/src/components/icons/.grid-view-icon.md +30 -19
  340. package/src/components/icons/.hamburger-icon.md +22 -20
  341. package/src/components/icons/.hand-dollar-icon.md +24 -34
  342. package/src/components/icons/.hotel-icon.md +27 -21
  343. package/src/components/icons/.icon-utils.md +28 -29
  344. package/src/components/icons/.image-icon.md +15 -22
  345. package/src/components/icons/.index.md +25 -28
  346. package/src/components/icons/.info-circle-icon.md +29 -30
  347. package/src/components/icons/.instagram-icon.md +10 -24
  348. package/src/components/icons/.jump-in-icon.md +18 -18
  349. package/src/components/icons/.linux-icon.md +18 -18
  350. package/src/components/icons/.log-out-icon.md +15 -23
  351. package/src/components/icons/.logs-icon.md +14 -23
  352. package/src/components/icons/.margin-crisis-icon.md +21 -20
  353. package/src/components/icons/.menu-icon.md +18 -19
  354. package/src/components/icons/.miami-cyber-gang-logo-face-only.md +18 -21
  355. package/src/components/icons/.miami-cyber-gang-logo.md +22 -14
  356. package/src/components/icons/.mlg-logo.md +18 -16
  357. package/src/components/icons/.moon-icon.md +32 -22
  358. package/src/components/icons/.ms-icon.md +30 -19
  359. package/src/components/icons/.nushell-icon.md +7 -21
  360. package/src/components/icons/.open-source-icon.md +19 -23
  361. package/src/components/icons/.openai-icon.md +9 -24
  362. package/src/components/icons/.openframe-ai-icons.md +25 -26
  363. package/src/components/icons/.openframe-logo.md +28 -22
  364. package/src/components/icons/.openframe-text.md +24 -27
  365. package/src/components/icons/.openmsp-logo.md +26 -23
  366. package/src/components/icons/.pilot-icon.md +23 -0
  367. package/src/components/icons/.powershell-icon.md +17 -22
  368. package/src/components/icons/.python-icon.md +16 -23
  369. package/src/components/icons/.queries-icon.md +13 -21
  370. package/src/components/icons/.reddit-icon.md +28 -24
  371. package/src/components/icons/.remote-control-icon.md +13 -17
  372. package/src/components/icons/.script-icon.md +27 -19
  373. package/src/components/icons/.search-icon.md +21 -21
  374. package/src/components/icons/.send-icon.md +14 -16
  375. package/src/components/icons/.settings-icon.md +30 -19
  376. package/src/components/icons/.shape-circle-dash-icon.md +16 -21
  377. package/src/components/icons/.shell-icon.md +15 -19
  378. package/src/components/icons/.shield-check-icon.md +18 -31
  379. package/src/components/icons/.shield-key-icon.md +25 -25
  380. package/src/components/icons/.shield-lock-icon.md +8 -18
  381. package/src/components/icons/.slack-icon.md +28 -32
  382. package/src/components/icons/.sparkles-icon.md +18 -23
  383. package/src/components/icons/.sso-configuration-icon.md +29 -16
  384. package/src/components/icons/.sun-icon.md +20 -18
  385. package/src/components/icons/.table-view-icon.md +17 -19
  386. package/src/components/icons/.telegram-icon.md +8 -22
  387. package/src/components/icons/.thumbs-down-icon.md +10 -19
  388. package/src/components/icons/.thumbs-up-icon.md +8 -17
  389. package/src/components/icons/.tool-directory-icons.md +24 -28
  390. package/src/components/icons/.trustpilot-icon.md +25 -22
  391. package/src/components/icons/.user-icon.md +26 -28
  392. package/src/components/icons/.users-group-icon.md +28 -24
  393. package/src/components/icons/.vendor-showcase-icons.md +21 -29
  394. package/src/components/icons/.vendors-icon.md +18 -22
  395. package/src/components/icons/.whatsapp-icon.md +30 -14
  396. package/src/components/icons/.x-icon.md +18 -23
  397. package/src/components/icons/.x-logo.md +13 -38
  398. package/src/components/icons/.youtube-icon.md +8 -19
  399. package/src/components/icons/device-type-icons/.get-device-type-icon.md +26 -34
  400. package/src/components/icons-v2-generated/.index.md +52 -0
  401. package/src/components/icons-v2-generated/alphabet/.index.md +33 -0
  402. package/src/components/icons-v2-generated/arrows/.index.md +39 -0
  403. package/src/components/icons-v2-generated/audio-and-visual/.index.md +40 -0
  404. package/src/components/icons-v2-generated/brand-logos/.elestio-logo-icon.md +40 -0
  405. package/src/components/icons-v2-generated/brand-logos/.gemini-logo-icon.md +37 -0
  406. package/src/components/icons-v2-generated/brand-logos/.google-gemini-logo-icon.md +33 -0
  407. package/src/components/icons-v2-generated/brand-logos/.index.md +38 -0
  408. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-grey-icon.md +35 -0
  409. package/src/components/icons-v2-generated/brand-logos/.meshcentral-logo-icon.md +36 -0
  410. package/src/components/icons-v2-generated/buildings/.index.md +48 -0
  411. package/src/components/icons-v2-generated/charts/.index.md +40 -0
  412. package/src/components/icons-v2-generated/clothes/.index.md +48 -0
  413. package/src/components/icons-v2-generated/coding/.index.md +42 -0
  414. package/src/components/icons-v2-generated/communication/.index.md +39 -0
  415. package/src/components/icons-v2-generated/date-and-time/.index.md +29 -0
  416. package/src/components/icons-v2-generated/design/.index.md +39 -0
  417. package/src/components/icons-v2-generated/devices/.index.md +38 -0
  418. package/src/components/icons-v2-generated/documents/.index.md +38 -0
  419. package/src/components/icons-v2-generated/finance/.index.md +34 -0
  420. package/src/components/icons-v2-generated/food-and-drinks/.index.md +34 -0
  421. package/src/components/icons-v2-generated/food-and-drinks/.leafy-green-icon.md +36 -0
  422. package/src/components/icons-v2-generated/food-and-drinks/.strawberry-icon.md +39 -0
  423. package/src/components/icons-v2-generated/health/.index.md +40 -0
  424. package/src/components/icons-v2-generated/household/.index.md +45 -0
  425. package/src/components/icons-v2-generated/interface/.index.md +36 -0
  426. package/src/components/icons-v2-generated/map-and-travel/.index.md +41 -0
  427. package/src/components/icons-v2-generated/media-playback/.index.md +51 -0
  428. package/src/components/icons-v2-generated/number/.index.md +41 -0
  429. package/src/components/icons-v2-generated/school/.index.md +37 -0
  430. package/src/components/icons-v2-generated/security/.fingerprint-icon.md +38 -0
  431. package/src/components/icons-v2-generated/security/.index.md +39 -0
  432. package/src/components/icons-v2-generated/shopping/.index.md +42 -0
  433. package/src/components/icons-v2-generated/signs-and-symbols/.index.md +32 -0
  434. package/src/components/icons-v2-generated/sort-and-filter/.index.md +35 -0
  435. package/src/components/icons-v2-generated/sport/.index.md +41 -0
  436. package/src/components/icons-v2-generated/text-editor/.index.md +44 -0
  437. package/src/components/icons-v2-generated/users/.index.md +45 -0
  438. package/src/components/icons-v2-generated/vehicles-and-delivery/.index.md +36 -0
  439. package/src/components/icons-v2-generated/weather-and-nature/.flower-sakura-icon.md +36 -0
  440. package/src/components/icons-v2-generated/weather-and-nature/.index.md +34 -0
  441. package/src/components/layout/.article-detail-layout.md +43 -0
  442. package/src/components/layout/.back-button.md +40 -0
  443. package/src/components/layout/.list-page-layout.md +35 -26
  444. package/src/components/layout/.page-container.md +27 -38
  445. package/src/components/layout/.page-layout.md +50 -0
  446. package/src/components/layout/.title-block.md +42 -0
  447. package/src/components/loading/.card-skeleton.md +38 -29
  448. package/src/components/loading/.device-card-skeleton.md +29 -25
  449. package/src/components/loading/.index.md +39 -46
  450. package/src/components/loading/.margin-report-skeleton.md +45 -34
  451. package/src/components/loading/.organization-card-skeleton.md +39 -44
  452. package/src/components/loading/.page-layout-skeleton.md +34 -45
  453. package/src/components/loading/.unified-skeleton.md +62 -36
  454. package/src/components/navigation/.app-header.md +40 -29
  455. package/src/components/navigation/.app-layout.md +25 -26
  456. package/src/components/navigation/.header-global-search.md +34 -37
  457. package/src/components/navigation/.header-organization-filter.md +23 -22
  458. package/src/components/navigation/.header.md +31 -35
  459. package/src/components/navigation/.mobile-burger-menu.md +39 -47
  460. package/src/components/navigation/.mobile-nav-panel.md +51 -32
  461. package/src/components/navigation/.navigation-sidebar-header.md +36 -0
  462. package/src/components/navigation/.navigation-sidebar-item.md +45 -0
  463. package/src/components/navigation/.navigation-sidebar-toggle.md +38 -0
  464. package/src/components/navigation/.navigation-sidebar.md +33 -34
  465. package/src/components/navigation/.sliding-sidebar.md +52 -41
  466. package/src/components/navigation/.sticky-section-nav.md +56 -48
  467. package/src/components/navigation/app-header.tsx +7 -9
  468. package/src/components/platform/.ScriptArguments.md +39 -25
  469. package/src/components/platform/.ScriptInfoSection.md +30 -26
  470. package/src/components/platform/.ShellTypeBadge.md +18 -13
  471. package/src/components/platform/.SoftwareInfo.md +23 -27
  472. package/src/components/platform/.SoftwareSourceBadge.md +28 -19
  473. package/src/components/platform/.ToolBadge.md +25 -26
  474. package/src/components/providers/.theme-provider.md +52 -0
  475. package/src/components/shared/delivery/.delivery-lists.md +39 -0
  476. package/src/components/shared/delivery/.delivery-row.md +41 -0
  477. package/src/components/shared/delivery/.delivery-table.md +41 -0
  478. package/src/components/shared/delivery/.index.md +38 -0
  479. package/src/components/shared/dev-section/.dev-card-row.md +60 -0
  480. package/src/components/shared/dev-section/.dev-section-page.md +48 -0
  481. package/src/components/shared/dev-section/.dev-section-view.md +43 -0
  482. package/src/components/shared/dev-section/.index.md +38 -0
  483. package/src/components/shared/legal-document/.index.md +40 -0
  484. package/src/components/shared/legal-document/.legal-document-page.md +50 -0
  485. package/src/components/shared/legal-document/.use-legal-docs.md +42 -0
  486. package/src/components/shared/onboarding/.onboarding-step-card.md +32 -31
  487. package/src/components/shared/onboarding/.onboarding-walkthrough.md +39 -43
  488. package/src/components/shared/product-release/.index.md +28 -30
  489. package/src/components/shared/product-release/.product-release-card-skeleton.md +28 -28
  490. package/src/components/shared/product-release/.product-release-card.md +45 -27
  491. package/src/components/shared/product-release/.release-detail-page.md +23 -24
  492. package/src/components/shared/roadmap/.index.md +37 -0
  493. package/src/components/shared/roadmap/.roadmap-grid-skeleton.md +39 -0
  494. package/src/components/shared/roadmap/.roadmap-grid.md +66 -0
  495. package/src/components/shared/roadmap/.use-roadmap-voting.md +68 -0
  496. package/src/components/tickets/.help-center-card.md +51 -0
  497. package/src/components/tickets/.help-center-create-form.md +38 -0
  498. package/src/components/tickets/.help-center-list.md +40 -0
  499. package/src/components/tickets/.index.md +65 -0
  500. package/src/components/tickets/.ticket-center.md +51 -0
  501. package/src/components/tickets/.ticket-detail-drawer.md +48 -0
  502. package/src/components/tickets/.ticket-linked-delivery-card.md +36 -0
  503. package/src/components/tickets/.ticket-open-form.md +50 -0
  504. package/src/components/tickets/.ticket-row.md +30 -0
  505. package/src/components/tickets/.types.md +57 -0
  506. package/src/components/tickets/hooks/.use-ticket-actions.md +77 -0
  507. package/src/components/tickets/hooks/.use-ticket-engagements.md +42 -0
  508. package/src/components/tickets/hooks/.use-tickets-list.md +54 -0
  509. package/src/components/ui/.actions-menu.md +66 -41
  510. package/src/components/ui/.alert-dialog.md +29 -26
  511. package/src/components/ui/.allowed-domains-input.md +29 -21
  512. package/src/components/ui/.assignee-dropdown.md +45 -0
  513. package/src/components/ui/.autocomplete.md +47 -41
  514. package/src/components/ui/.benefit-card.md +51 -36
  515. package/src/components/ui/.brand-association-card.md +30 -27
  516. package/src/components/ui/.breadcrumb.md +17 -15
  517. package/src/components/ui/.checkbox-block.md +39 -35
  518. package/src/components/ui/.checkbox-with-description.md +23 -16
  519. package/src/components/ui/.checkbox.md +31 -23
  520. package/src/components/ui/.circular-progress.md +49 -19
  521. package/src/components/ui/.content-loader.md +32 -20
  522. package/src/components/ui/.cursor-pagination.md +41 -52
  523. package/src/components/ui/.dashboard-info-card.md +33 -26
  524. package/src/components/ui/.date-picker.md +27 -25
  525. package/src/components/ui/.device-card-compact.md +28 -29
  526. package/src/components/ui/.device-card.md +27 -27
  527. package/src/components/ui/.dialog.md +25 -16
  528. package/src/components/ui/.drawer.md +86 -0
  529. package/src/components/ui/.dropdown-button.md +45 -0
  530. package/src/components/ui/.entity-image.md +46 -0
  531. package/src/components/ui/.error-state.md +41 -28
  532. package/src/components/ui/.feature-card.md +35 -31
  533. package/src/components/ui/.feature-list.md +48 -0
  534. package/src/components/ui/.field-wrapper.md +47 -0
  535. package/src/components/ui/.file-upload.md +42 -0
  536. package/src/components/ui/.filter-checkbox-item.md +43 -0
  537. package/src/components/ui/.filter-list.md +57 -0
  538. package/src/components/ui/.filter-modal.md +59 -0
  539. package/src/components/ui/.floating-tooltip.md +43 -26
  540. package/src/components/ui/.hidden-tags-popup.md +49 -0
  541. package/src/components/ui/.hover-dropdown.md +54 -0
  542. package/src/components/ui/.image-gallery-modal.md +41 -34
  543. package/src/components/ui/.image-uploader.md +53 -0
  544. package/src/components/ui/.index.md +40 -34
  545. package/src/components/ui/.info-card.md +31 -31
  546. package/src/components/ui/.info-row.md +31 -27
  547. package/src/components/ui/.input-trigger.md +44 -0
  548. package/src/components/ui/.input.md +37 -31
  549. package/src/components/ui/.markdown-editor.md +57 -0
  550. package/src/components/ui/.modal-v2.md +51 -0
  551. package/src/components/ui/.modal.md +32 -31
  552. package/src/components/ui/.more-actions-menu.md +45 -38
  553. package/src/components/ui/.organization-card.md +31 -37
  554. package/src/components/ui/.page-actions.md +44 -54
  555. package/src/components/ui/.phone-input.md +54 -0
  556. package/src/components/ui/.progress-bar.md +35 -27
  557. package/src/components/ui/.radio-group.md +39 -27
  558. package/src/components/ui/.release-changelog-section.md +34 -34
  559. package/src/components/ui/.search-input.md +48 -0
  560. package/src/components/ui/.select.md +54 -34
  561. package/src/components/ui/.service-card.md +42 -40
  562. package/src/components/ui/.sheet.md +27 -18
  563. package/src/components/ui/.simple-markdown-renderer.md +29 -31
  564. package/src/components/ui/.sort-column-item.md +42 -0
  565. package/src/components/ui/.square-avatar.md +34 -24
  566. package/src/components/ui/.status-badge.md +26 -38
  567. package/src/components/ui/.switch.md +22 -35
  568. package/src/components/ui/.tab-navigation.md +56 -53
  569. package/src/components/ui/.tab-selector.md +40 -0
  570. package/src/components/ui/.tag-key-value-filter.md +56 -0
  571. package/src/components/ui/.tag-search-input.md +53 -0
  572. package/src/components/ui/.tag.md +49 -31
  573. package/src/components/ui/.tags-manager.md +60 -0
  574. package/src/components/ui/.textarea.md +44 -34
  575. package/src/components/ui/.ticket-attachments-list.md +45 -0
  576. package/src/components/ui/.ticket-detail-section.md +29 -0
  577. package/src/components/ui/.ticket-info-section.md +56 -0
  578. package/src/components/ui/.ticket-note-card.md +53 -0
  579. package/src/components/ui/.ticket-notes-section.md +54 -0
  580. package/src/components/ui/.ticket-status-tag.md +49 -0
  581. package/src/components/ui/.title-content-block.md +25 -26
  582. package/src/components/ui/.toaster.md +40 -28
  583. package/src/components/ui/.tooltip.md +22 -11
  584. package/src/components/ui/.truncate-text.md +39 -0
  585. package/src/components/ui/button/.button-styles.md +35 -0
  586. package/src/components/ui/button/.button.md +53 -0
  587. package/src/components/ui/button/.split-button.md +48 -0
  588. package/src/components/ui/data-table/.data-table-body.md +48 -0
  589. package/src/components/ui/data-table/.data-table-column-filter.md +45 -0
  590. package/src/components/ui/data-table/.data-table-cursor-footer.md +45 -0
  591. package/src/components/ui/data-table/.data-table-empty.md +43 -0
  592. package/src/components/ui/data-table/.data-table-header.md +55 -0
  593. package/src/components/ui/data-table/.data-table-infinite-footer.md +44 -0
  594. package/src/components/ui/data-table/.data-table-row-count.md +43 -0
  595. package/src/components/ui/data-table/.data-table-row.md +47 -0
  596. package/src/components/ui/data-table/.data-table-skeleton.md +42 -0
  597. package/src/components/ui/data-table/.data-table.md +47 -0
  598. package/src/components/ui/data-table/.index.md +55 -0
  599. package/src/components/ui/data-table/.types.md +54 -0
  600. package/src/components/ui/data-table/.use-data-table.md +45 -0
  601. package/src/components/ui/data-table/.utils.md +38 -0
  602. package/src/components/ui/file-manager/.file-manager-action-bar.md +39 -30
  603. package/src/components/ui/file-manager/.file-manager-breadcrumb.md +29 -27
  604. package/src/components/ui/file-manager/.file-manager-context-menu.md +38 -42
  605. package/src/components/ui/file-manager/.file-manager-empty.md +26 -39
  606. package/src/components/ui/file-manager/.file-manager-table-row.md +33 -41
  607. package/src/components/ui/file-manager/.file-manager.md +35 -31
  608. package/src/components/ui/query-report-table/.index.md +43 -0
  609. package/src/components/ui/query-report-table/.query-report-table-header.md +36 -0
  610. package/src/components/ui/query-report-table/.query-report-table-row.md +40 -0
  611. package/src/components/ui/query-report-table/.query-report-table-skeleton.md +44 -0
  612. package/src/components/ui/query-report-table/.query-report-table.md +47 -0
  613. package/src/components/ui/query-report-table/.types.md +41 -0
  614. package/src/components/ui/query-report-table/.utils.md +35 -0
  615. package/src/components/ui/table/.index.md +27 -48
  616. package/src/components/ui/table/.table-cell.md +18 -27
  617. package/src/components/ui/table/.table-column-filter-dropdown.md +40 -0
  618. package/src/components/ui/table/.table-description-cell.md +24 -14
  619. package/src/components/ui/table/.table-empty-state.md +21 -22
  620. package/src/components/ui/table/.table-header.md +25 -40
  621. package/src/components/ui/table/.table-row.md +22 -40
  622. package/src/components/ui/table/.table-skeleton.md +33 -26
  623. package/src/components/ui/table/.table-timestamp-cell.md +26 -16
  624. package/src/components/ui/table/.table.md +39 -59
  625. package/src/components/ui/table/.types.md +44 -36
  626. package/src/components/ui/table/.utils.md +18 -20
  627. package/src/contexts/.chat-runtime-context.md +54 -0
  628. package/src/contexts/.endpoints-runtime-context.md +58 -0
  629. package/src/contexts/.index.md +53 -0
  630. package/src/contexts/.use-outer-or-default.md +36 -0
  631. package/src/embed-shims/.index.md +45 -0
  632. package/src/embed-shims/.next-dynamic.md +43 -0
  633. package/src/embed-shims/.next-image.md +45 -0
  634. package/src/embed-shims/.next-link.md +59 -0
  635. package/src/embed-shims/.next-navigation.md +59 -0
  636. package/src/hooks/.index.md +34 -29
  637. package/src/hooks/.use-access-code-integration.md +49 -0
  638. package/src/hooks/.use-contact-submission.md +37 -26
  639. package/src/hooks/.use-copy-to-clipboard.md +42 -0
  640. package/src/hooks/.use-near-viewport.md +44 -0
  641. package/src/hooks/.use-og-placeholder.md +51 -0
  642. package/src/hooks/.use-toast.md +36 -35
  643. package/src/hooks/state/.use-api-params.md +29 -46
  644. package/src/hooks/state/.use-query-params.md +37 -33
  645. package/src/hooks/ui/.index.md +33 -32
  646. package/src/hooks/ui/.use-auto-limit-tags.md +54 -0
  647. package/src/hooks/ui/.use-horizontal-scrollbar.md +74 -0
  648. package/src/hooks/ui/.use-image-edge-color.md +42 -0
  649. package/src/hooks/ui/.use-media-query.md +33 -25
  650. package/src/hooks/ui/.use-search.md +51 -0
  651. package/src/nats/.nats.md +49 -28
  652. package/src/nats/index.ts +3 -0
  653. package/src/nats/nats-provider.tsx +146 -0
  654. package/src/nats/nats.ts +2 -0
  655. package/src/nats/shared-connection.ts +285 -0
  656. package/src/nats/use-nats-subscription.ts +99 -0
  657. package/src/schemas/.contact-schema.md +45 -0
  658. package/src/stories/.AnnouncementBar.stories.md +45 -0
  659. package/src/stories/.AppLayout.stories.md +20 -21
  660. package/src/stories/.Autocomplete.stories.md +48 -34
  661. package/src/stories/.Board.stories.md +35 -0
  662. package/src/stories/.Button.stories.md +36 -33
  663. package/src/stories/.ChatTicketList.stories.md +33 -0
  664. package/src/stories/.CheckboxBlock.stories.md +40 -28
  665. package/src/stories/.ContentLoader.stories.md +47 -0
  666. package/src/stories/.DashboardInfoCard.stories.md +57 -0
  667. package/src/stories/.DataTable.stories.md +41 -0
  668. package/src/stories/.DatePicker.stories.md +66 -52
  669. package/src/stories/.DeviceCard.stories.md +41 -40
  670. package/src/stories/.DeviceCardCompact.stories.md +41 -0
  671. package/src/stories/.DotsLoaderIcon.stories.md +36 -0
  672. package/src/stories/.Drawer.stories.md +58 -0
  673. package/src/stories/.EmbeddableChat.stories.md +41 -0
  674. package/src/stories/.FileManager.stories.md +41 -0
  675. package/src/stories/.FileManagerActionBar.stories.md +38 -0
  676. package/src/stories/.FileUpload.stories.md +53 -0
  677. package/src/stories/.FilterList.stories.md +54 -0
  678. package/src/stories/.FilterModal.stories.md +72 -0
  679. package/src/stories/.FiltersDropdown.stories.md +57 -0
  680. package/src/stories/.Header.stories.md +48 -0
  681. package/src/stories/.ImageUploader.stories.md +49 -0
  682. package/src/stories/.InfoCard.stories.md +54 -0
  683. package/src/stories/.Input.stories.md +48 -30
  684. package/src/stories/.ListPageLayout.stories.md +56 -43
  685. package/src/stories/.MingoOnboardingCard.stories.md +42 -0
  686. package/src/stories/.MingoOnboardingCardSkeleton.stories.md +35 -0
  687. package/src/stories/.Modal.stories.md +40 -31
  688. package/src/stories/.NotificationDrawer.stories.md +55 -0
  689. package/src/stories/.OnboardingStepCard.stories.md +41 -0
  690. package/src/stories/.OrganizationCard.stories.md +61 -0
  691. package/src/stories/.PageActions.stories.md +52 -49
  692. package/src/stories/.PageContainer.stories.md +41 -35
  693. package/src/stories/.PageLayout.stories.md +60 -0
  694. package/src/stories/.ParallaxImageShowcase.stories.md +49 -0
  695. package/src/stories/.PhoneInput.stories.md +53 -0
  696. package/src/stories/.QueryReportTable.stories.md +44 -0
  697. package/src/stories/.RadioGroup.stories.md +46 -0
  698. package/src/stories/.RadioGroupBlock.stories.md +45 -0
  699. package/src/stories/.Select.stories.md +29 -15
  700. package/src/stories/.SlashCommandSuggestions.stories.md +41 -0
  701. package/src/stories/.SplitButton.stories.md +62 -0
  702. package/src/stories/.TabNavigation.stories.md +47 -38
  703. package/src/stories/.TabSelector.stories.md +65 -0
  704. package/src/stories/.Table.stories.md +38 -46
  705. package/src/stories/.TableColumnFilterDropdown.stories.md +46 -0
  706. package/src/stories/.Tag.stories.md +43 -32
  707. package/src/stories/.TagKeyValueFilter.stories.md +44 -0
  708. package/src/stories/.TagSearchInput.stories.md +61 -0
  709. package/src/stories/.Textarea.stories.md +49 -26
  710. package/src/stories/.Theme.stories.md +41 -0
  711. package/src/stories/.TicketAttachmentsList.stories.md +39 -0
  712. package/src/stories/.TicketDescriptionViewer.stories.md +39 -0
  713. package/src/stories/.TicketInfoSection.stories.md +40 -0
  714. package/src/stories/.TicketKnowledgeBaseList.stories.md +36 -0
  715. package/src/stories/.TicketNotesSection.stories.md +50 -0
  716. package/src/stories/.Toaster.stories.md +40 -0
  717. package/src/stories/.ToolExecutionDisplay.stories.md +41 -0
  718. package/src/stories/.Tooltip.stories.md +41 -0
  719. package/src/stories/.UserSummary.stories.md +41 -0
  720. package/src/stories/.WaitlistForm.stories.md +42 -0
  721. package/src/stories/BlogCard.stories.tsx +61 -0
  722. package/src/stories/CampaignCardAdmin.stories.tsx +52 -0
  723. package/src/stories/CaseStudyCard.stories.tsx +42 -0
  724. package/src/stories/ChatContainer.stories.tsx +186 -0
  725. package/src/stories/ChatInlineVideoPill.stories.tsx +63 -0
  726. package/src/stories/CustomerInterviewCard.stories.tsx +42 -0
  727. package/src/stories/DataRoomDocCard.stories.tsx +52 -0
  728. package/src/stories/GenericEntityCard.stories.tsx +66 -0
  729. package/src/stories/GitHubActivityCard.stories.tsx +61 -0
  730. package/src/stories/HubspotTicketCard.stories.tsx +98 -0
  731. package/src/stories/InvestorUpdateCard.stories.tsx +42 -0
  732. package/src/stories/OnboardingGuideCard.stories.tsx +52 -0
  733. package/src/stories/ProductReleaseCard.stories.tsx +61 -0
  734. package/src/stories/ProgramCard.stories.tsx +79 -0
  735. package/src/stories/RoadmapCard.stories.tsx +75 -0
  736. package/src/stories/SlackMessageCard.stories.tsx +41 -0
  737. package/src/stories/__fixtures__/chat-cards.ts +604 -0
  738. package/src/types/.blog.md +53 -29
  739. package/src/types/.case-study.md +44 -27
  740. package/src/types/.customer-interview.md +66 -44
  741. package/src/types/.delivery.md +40 -0
  742. package/src/types/.employee.md +24 -30
  743. package/src/types/.index.md +33 -47
  744. package/src/types/.marketing.md +49 -44
  745. package/src/types/.navigation.md +33 -25
  746. package/src/types/.os.types.md +32 -27
  747. package/src/types/.platform.md +31 -28
  748. package/src/types/.product-release.md +65 -38
  749. package/src/types/.supabase.md +37 -29
  750. package/src/types/.team.md +41 -33
  751. package/src/types/.video-processing.md +54 -0
  752. package/src/types/.waitlist.md +40 -36
  753. package/src/utils/.access-code-client.md +37 -36
  754. package/src/utils/.cn.md +31 -23
  755. package/src/utils/.color-analysis.md +35 -0
  756. package/src/utils/.country-phone-utils.md +39 -0
  757. package/src/utils/.date-formatters.md +19 -18
  758. package/src/utils/.embed-authed-fetch.md +39 -0
  759. package/src/utils/.embed-proxy-auth-storage.md +38 -0
  760. package/src/utils/.fetch-priority.md +41 -0
  761. package/src/utils/.format.md +74 -25
  762. package/src/utils/.generic-domain-utils.md +42 -0
  763. package/src/utils/.image-proxy.md +59 -23
  764. package/src/utils/.index.md +42 -49
  765. package/src/utils/.local-storage-adapter.md +50 -0
  766. package/src/utils/.ods-color-utils.md +55 -38
  767. package/src/utils/.platform-config.md +45 -25
  768. package/src/utils/.scroll-into-view.md +40 -0
  769. package/src/utils/.source-icons.md +53 -0
  770. package/src/utils/.sse-decision-frame.md +46 -0
  771. package/src/utils/dev-sections/.index.md +34 -0
  772. package/src/utils/dev-sections/.openframe-dev-sections.md +49 -0
  773. package/dist/chunk-3E5ANY55.js.map +0 -1
  774. package/dist/chunk-EH3RWVF3.cjs.map +0 -1
  775. package/dist/chunk-UYQOPC57.js.map +0 -1
  776. package/dist/chunk-WI76ZUBE.cjs.map +0 -1
  777. package/src/components/.card.md +0 -42
  778. package/src/components/.contact-button.md +0 -30
  779. package/src/components/.drawer.md +0 -46
  780. package/src/components/.fixed-layout-container.md +0 -47
  781. package/src/components/.footer-waitlist-card.md +0 -29
  782. package/src/components/.join-waitlist-cta.md +0 -29
  783. package/src/components/.sheet.md +0 -47
  784. package/src/components/.sliding-panel.md +0 -48
  785. package/src/components/.tooltip.md +0 -48
  786. package/src/components/.use-mobile.md +0 -42
  787. package/src/components/.vendor-compact-card.md +0 -66
  788. package/src/components/.x-button.md +0 -42
  789. package/src/components/features/.github-repo-button.md +0 -40
  790. package/src/components/features/.organization-icon.md +0 -47
  791. package/src/components/features/.organization-selector.md +0 -45
  792. package/src/components/icons/.fleet-icon.md +0 -39
  793. package/src/components/icons/.meshcentral-icon.md +0 -35
  794. package/src/components/icons/.refresh-icon.md +0 -34
  795. package/src/components/icons/.tactical-icon.md +0 -35
  796. package/src/components/ui/.button.md +0 -69
  797. package/src/components/ui/.log-table-row.md +0 -47
  798. package/src/components/ui/.selectable-device-card.md +0 -46
  799. package/src/hooks/.api-hooks-stub.md +0 -45
  800. package/src/hooks/api/.use-product-releases.md +0 -53
  801. package/src/stories/.OrganizationSelector.stories.md +0 -42
  802. package/src/stories/.SelectableDeviceCard.stories.md +0 -30
  803. package/src/utils/.lite-youtube-embed-stub.md +0 -37
  804. package/src/utils/.lite-youtube-embed.md +0 -33
  805. /package/dist/{chunk-QKFBZLIR.js.map → chunk-5OWDOFKK.js.map} +0 -0
  806. /package/dist/{chunk-5BNWGK6D.js.map → chunk-HWY35EAK.js.map} +0 -0
@@ -1,43 +1,54 @@
1
- <!-- source-hash: ef376aa2ee23a24d8bff5b1fb35578a0 -->
2
- A React component that renders a skeleton loading state for a margin report page, mimicking the layout structure while data loads or when displaying placeholder content with optional overlay functionality.
1
+ <!-- source-hash: a465f87f85ec79ae37576015929fe094 -->
2
+ A full-page loading skeleton for the Margin Report view, rendering animated placeholder blocks that mirror the report's layout sections while optionally displaying an overlay with a CTA or status message.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **MarginReportSkeleton** - Main component that renders the complete skeleton UI
7
- - **MarginReportSkeletonProps** - Interface defining component configuration options
8
- - `animate` - Controls pulse animation (default: true)
9
- - `description` - Optional explanatory text above overlay
10
- - `overlayContent` - Optional React node displayed over skeleton
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `MarginReportSkeleton` | `React.FC` | Main skeleton component with pulse animation and optional overlay |
9
+ | `MarginReportSkeletonProps` | `interface` | Props contract for the skeleton component |
10
+
11
+ ### Props
12
+
13
+ | Prop | Type | Default | Description |
14
+ |------|------|---------|-------------|
15
+ | `animate` | `boolean` | `true` | Toggles CSS `animate-pulse` on the root element |
16
+ | `description` | `React.ReactNode` | — | Explanatory text rendered above the overlay content |
17
+ | `overlayContent` | `React.ReactNode` | — | Node rendered in a centered fixed overlay (e.g. button, spinner) |
18
+
19
+ ### Skeleton Sections Rendered
20
+
21
+ ```text
22
+ ├── Header (title + subtitle bars)
23
+ ├── Summary cards (3-column grid)
24
+ ├── MSP Profile + Report Info (2-column grid)
25
+ ├── Vendor lists — Commercial & Open-Source stacks (2-column, 5 rows each)
26
+ ├── Strategic Recommendations header + cards (3-column grid)
27
+ └── OpenFrame value section (header + 3 value cards)
28
+ ```
11
29
 
12
30
  ## Usage Example
13
31
 
14
32
  ```typescript
15
- import { MarginReportSkeleton } from './margin-report-skeleton';
16
-
17
- // Basic loading skeleton
18
- function LoadingReport() {
19
- return <MarginReportSkeleton />;
20
- }
21
-
22
- // With overlay content
23
- function ReportWithCTA() {
24
- return (
25
- <MarginReportSkeleton
26
- animate={true}
27
- description="Generate your custom margin report"
28
- overlayContent={
29
- <button className="btn-primary">
30
- Start Analysis
31
- </button>
32
- }
33
- />
34
- );
35
- }
36
-
37
- // Static skeleton without animation
38
- function StaticPlaceholder() {
39
- return <MarginReportSkeleton animate={false} />;
40
- }
33
+ // Basic animated skeleton while data loads
34
+ <MarginReportSkeleton />
35
+
36
+ // Static skeleton with a gated CTA overlay
37
+ <MarginReportSkeleton
38
+ animate={false}
39
+ description="Generate your free Margin Report to unlock insights."
40
+ overlayContent={
41
+ <Button onClick={handleGenerate}>
42
+ Generate Report
43
+ </Button>
44
+ }
45
+ />
46
+
47
+ // Skeleton with a loading spinner overlay
48
+ <MarginReportSkeleton
49
+ description="Calculating your margins…"
50
+ overlayContent={<Spinner size="lg" />}
51
+ />
41
52
  ```
42
53
 
43
- The component creates a comprehensive skeleton layout including header sections, summary cards, MSP profile cards, vendor solution lists (commercial and open-source), strategic recommendations grid, and an OpenFrame value section. The optional overlay feature allows displaying CTAs or loading indicators centered over the skeleton content.
54
+ > **Note:** When `overlayContent` is provided, a semi-transparent overlay (`bg-ods-card/80`) covers the entire skeleton. The overlay content is viewport-centered via `fixed` positioning with pointer-events re-enabled only on the CTA container.
@@ -1,51 +1,46 @@
1
- <!-- source-hash: 336012723d59d92058cb1b5e5d7f331f -->
2
- A React component that provides loading skeleton placeholders for organization cards, designed to match the exact layout and dimensions of actual organization cards to prevent layout shifts during data loading.
1
+ <!-- source-hash: 254d5d86afe2187734cde56c533fc995 -->
2
+ Loading skeleton component that renders a placeholder matching the exact layout and dimensions of an `OrganizationCard`, preventing layout shifts during data fetching.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **OrganizationCardSkeleton** - Main skeleton component with configurable sections (header, description, footer)
7
- - **OrganizationCardSkeletonGrid** - Grid wrapper for displaying multiple skeleton cards with responsive layout
8
- - **OrganizationCardSkeletonProps** - TypeScript interface defining customization options
6
+ ### `OrganizationCardSkeleton`
7
+ Single card skeleton with three configurable sections:
8
+ - **Header** — 60×60px org logo placeholder + title/subtitle text skeletons
9
+ - **Description** — Fixed 48px height with two-line body text skeletons (toggled via `showDescription`)
10
+ - **Footer** — Two stat items (icon + caption) and a tag/badge placeholder (toggled via `showFooter`)
11
+
12
+ ### `OrganizationCardSkeletonGrid`
13
+ Renders a responsive grid of `OrganizationCardSkeleton` instances:
14
+ - Mobile: 1 column | Tablet (`md`): 2 columns | Desktop (`lg`): 3 columns
15
+
16
+ ### `OrganizationCardSkeletonProps`
17
+ | Prop | Type | Default | Description |
18
+ |------|------|---------|-------------|
19
+ | `className` | `string` | — | Additional CSS classes |
20
+ | `containerClassName` | `string` | — | Overrides card background & border |
21
+ | `showFooter` | `boolean` | `true` | Renders footer stats area |
22
+ | `showDescription` | `boolean` | `true` | Renders description area |
9
23
 
10
24
  ## Usage Example
11
25
 
12
26
  ```typescript
13
- import { OrganizationCardSkeleton, OrganizationCardSkeletonGrid } from "./organization-card-skeleton"
14
-
15
- // Single skeleton card
16
- function LoadingCard() {
17
- return (
18
- <OrganizationCardSkeleton
19
- showDescription={true}
20
- showFooter={true}
21
- className="max-w-sm"
22
- />
23
- )
24
- }
25
-
26
- // Grid of skeleton cards
27
- function LoadingGrid() {
28
- return (
29
- <OrganizationCardSkeletonGrid
30
- count={9}
31
- showDescription={false}
32
- containerClassName="bg-gray-100"
33
- />
34
- )
35
- }
36
-
37
- // Conditional loading state
38
- function OrganizationList({ isLoading, organizations }) {
39
- if (isLoading) {
40
- return <OrganizationCardSkeletonGrid count={12} />
41
- }
42
-
43
- return (
44
- <div className="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4">
45
- {organizations.map(org => <OrganizationCard key={org.id} {...org} />)}
46
- </div>
47
- )
48
- }
49
- ```
50
-
51
- The skeleton maintains visual parity with the actual OrganizationCard component, including a 60x60px logo area, text placeholders for title/subtitle, optional description section, and footer with stats and badges.
27
+ // Single card skeleton
28
+ <OrganizationCardSkeleton
29
+ showDescription={true}
30
+ showFooter={true}
31
+ />
32
+
33
+ // Full grid skeleton during data load
34
+ <OrganizationCardSkeletonGrid
35
+ count={9}
36
+ showFooter={true}
37
+ showDescription={false}
38
+ className="my-4"
39
+ />
40
+
41
+ // Custom container styling
42
+ <OrganizationCardSkeleton
43
+ containerClassName="bg-gray-900 border border-gray-700"
44
+ showFooter={false}
45
+ />
46
+ ```
@@ -1,57 +1,46 @@
1
- <!-- source-hash: 404cf3b17445eee0f8d6345f40405c01 -->
2
- A React component that provides skeleton loading states for various page layout sections, designed to match the actual UI components during loading.
1
+ <!-- source-hash: d81e064ec80f99a3beddcfc15467f602 -->
2
+ Skeleton loading components for the page layout, providing animated placeholders that match the structure of major UI sections including headers, heroes, sidebars, articles, and vendor detail pages.
3
3
 
4
4
  ## Key Components
5
5
 
6
- **Main Layout Skeletons:**
7
- - `PageLayoutSkeletonProps` - Base interface for skeleton components
8
- - `AnnouncementBarSkeleton` - Skeleton for announcement bar with logo, text, and close button
9
- - `HeaderSkeleton` - Navigation header skeleton with logo, nav items, and action buttons
10
- - `HeroSkeleton` - Hero section skeleton with title, subtitle, and CTA button
11
- - `TwoColumnLayoutSkeleton` - Flexible two-column layout with configurable sidebar position
12
- - `ArticleLayoutSkeleton` - Full article/blog post layout with header, metadata, and content
13
- - `VendorDetailLayoutSkeleton` - Detailed vendor page layout (truncated in example)
14
-
15
- **Search & Navigation Skeletons:**
16
- - `SearchContainerSkeleton` - Search input with optional filter chips
17
- - `CategorySidebarSkeleton` - Sidebar with categories and filter sections
18
- - `BreadcrumbSkeleton` - Breadcrumb navigation trail
19
- - `ResultsHeaderSkeleton` - Results count and sorting controls
6
+ | Export | Description |
7
+ |--------|-------------|
8
+ | `AnnouncementBarSkeleton` | Matches `AnnouncementBar` with logo, text lines, and close button placeholders |
9
+ | `HeaderSkeleton` | Sticky header with logo, nav links, and action button skeletons |
10
+ | `HeroSkeleton` | Full-width hero section with title, subtitle, and CTA placeholders |
11
+ | `SearchContainerSkeleton` | Search input with optional filter chip row |
12
+ | `CategorySidebarSkeleton` | Sidebar mimicking `MultiLevelNavigation` with folder/file icons and README badges |
13
+ | `BreadcrumbSkeleton` | Horizontal breadcrumb trail with separator dots |
14
+ | `ResultsHeaderSkeleton` | Results count and sort controls placeholder |
15
+ | `TwoColumnLayoutSkeleton` | Responsive grid wrapper accepting custom sidebar/main content with configurable `sidebarPosition` |
16
+ | `ArticleLayoutSkeleton` | Full article page skeleton with header, featured image, and paragraph blocks |
17
+ | `VendorDetailLayoutSkeleton` | Vendor detail page with breadcrumb, hero logo/title area, and responsive layout |
20
18
 
21
19
  ## Usage Example
22
20
 
23
21
  ```typescript
24
- import {
25
- HeaderSkeleton,
26
- HeroSkeleton,
22
+ import {
23
+ HeaderSkeleton,
27
24
  TwoColumnLayoutSkeleton,
28
- SearchContainerSkeleton
29
- } from './page-layout-skeleton'
30
-
31
- // Loading state for a search page
32
- function SearchPageSkeleton() {
33
- return (
34
- <>
35
- <HeaderSkeleton />
36
- <div className="container mx-auto p-6">
37
- <SearchContainerSkeleton showFilters={true} />
38
- <TwoColumnLayoutSkeleton
25
+ CategorySidebarSkeleton,
26
+ } from "./page-layout-skeleton"
27
+
28
+ // Drop-in loading state for a browse page
29
+ function BrowsePage() {
30
+ if (isLoading) {
31
+ return (
32
+ <>
33
+ <HeaderSkeleton />
34
+ <TwoColumnLayoutSkeleton
35
+ sidebarContent={<CategorySidebarSkeleton />}
39
36
  sidebarPosition="left"
40
- className="mt-8"
41
37
  />
42
- </div>
43
- </>
44
- )
45
- }
46
-
47
- // Loading state for article page
48
- function ArticlePageSkeleton() {
49
- return (
50
- <div className="container mx-auto px-4">
51
- <ArticleLayoutSkeleton />
52
- </div>
53
- )
38
+ </>
39
+ )
40
+ }
41
+ return <ActualContent />
54
42
  }
55
- ```
56
43
 
57
- The skeletons use the unified skeleton components and maintain responsive design patterns with proper animations and semantic structure.
44
+ // Inline search skeleton with filters hidden
45
+ <SearchContainerSkeleton showFilters={false} className="my-4" />
46
+ ```
@@ -1,43 +1,69 @@
1
- <!-- source-hash: f42b8a7e1d3731949a7e184cfd3799e1 -->
2
- A comprehensive React skeleton loading component system with consistent styling and accessibility features for displaying loading states across the application.
1
+ <!-- source-hash: 8c0e5c74de8bbbd5020de8b54978e503 -->
2
+ Accessible loading placeholder component providing a base `UnifiedSkeleton` with specialized sub-components for consistent skeleton UI across the application.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **UnifiedSkeleton** - Base skeleton component with customizable variants (default, text, circular, rectangular)
7
- - **TextSkeleton** - Pre-configured text skeleton variants for headings, body text, and captions
8
- - **InteractiveSkeleton** - Skeleton components for interactive elements like buttons, inputs, and chips
9
- - **MediaSkeleton** - Specialized skeletons for images, avatars, and icons with proper aspect ratios
6
+ ### `UnifiedSkeleton` (base component)
7
+ Core skeleton element with dark theme styling (`#2A2A2A` base), pulse animation, and full accessibility support.
8
+
9
+ | Prop | Type | Default | Description |
10
+ |------|------|---------|-------------|
11
+ | `variant` | `'default' \| 'text' \| 'circular' \| 'rectangular'` | `'default'` | Shape/border-radius style |
12
+ | `width` | `string \| number` | — | Custom width override |
13
+ | `height` | `string \| number` | — | Custom height override |
14
+ | `animate` | `boolean` | `true` | Toggle pulse animation (respects `prefers-reduced-motion`) |
15
+ | `aria-label` | `string` | `"Loading content"` | Screen reader label |
16
+
17
+ ### `TextSkeleton` namespace
18
+ | Export | Use Case |
19
+ |--------|----------|
20
+ | `TextSkeleton.Heading` | H1/H2 placeholders (`h-8` → `h-12`) |
21
+ | `TextSkeleton.Subheading` | H3/H4 placeholders (`h-6` → `h-8`) |
22
+ | `TextSkeleton.Body` | Paragraph text (`h-4` → `h-5`) |
23
+ | `TextSkeleton.Caption` | Metadata/captions (`h-3` → `h-4`) |
24
+
25
+ ### `InteractiveSkeleton` namespace
26
+ | Export | Use Case |
27
+ |--------|----------|
28
+ | `InteractiveSkeleton.Button` | Fixed-width button placeholder |
29
+ | `InteractiveSkeleton.Input` | Full-width input field placeholder |
30
+ | `InteractiveSkeleton.Chip` | Pill-shaped filter chip placeholder |
31
+
32
+ ### `MediaSkeleton` namespace
33
+ | Export | Use Case |
34
+ |--------|----------|
35
+ | `MediaSkeleton.Avatar` | Circular avatar (`sm/md/lg`) |
36
+ | `MediaSkeleton.CardImage` | `1200×630` aspect-ratio image (matches OG card, prevents layout shift) |
37
+ | `MediaSkeleton.Icon` | Square icon placeholder (`sm/md/lg`) |
10
38
 
11
39
  ## Usage Example
12
40
 
13
41
  ```typescript
14
- import { UnifiedSkeleton, TextSkeleton, MediaSkeleton } from './unified-skeleton'
15
-
16
- // Basic skeleton with custom dimensions
17
- <UnifiedSkeleton width={200} height={100} variant="rectangular" />
18
-
19
- // Text loading states
20
- <TextSkeleton.Heading className="mb-4" />
21
- <TextSkeleton.Body className="mb-2" />
22
- <TextSkeleton.Caption />
23
-
24
- // Media elements
25
- <MediaSkeleton.Avatar size="lg" />
26
- <MediaSkeleton.CardImage className="mb-4" />
27
-
28
- // Interactive elements
29
- <InteractiveSkeleton.Button />
30
- <InteractiveSkeleton.Input className="mb-3" />
31
-
32
- // Custom styling and accessibility
33
- <UnifiedSkeleton
34
- variant="circular"
35
- width={60}
36
- height={60}
37
- animate={false}
38
- aria-label="Loading user profile"
39
- className="mx-auto"
40
- />
41
- ```
42
-
43
- The component system includes mobile-responsive sizing, respects user motion preferences, and provides proper ARIA labels for screen reader accessibility.
42
+ import {
43
+ UnifiedSkeleton,
44
+ TextSkeleton,
45
+ InteractiveSkeleton,
46
+ MediaSkeleton,
47
+ } from "./unified-skeleton"
48
+
49
+ // Basic usage
50
+ <UnifiedSkeleton variant="rectangular" height={200} />
51
+
52
+ // Composing a card loading state
53
+ function TicketCardSkeleton() {
54
+ return (
55
+ <div className="flex gap-3 p-4">
56
+ <MediaSkeleton.Avatar size="md" />
57
+ <div className="flex-1 space-y-2">
58
+ <TextSkeleton.Heading className="w-3/4" />
59
+ <TextSkeleton.Body />
60
+ <TextSkeleton.Caption className="w-1/2" />
61
+ </div>
62
+ <InteractiveSkeleton.Button />
63
+ </div>
64
+ )
65
+ }
66
+
67
+ // Disable animation (e.g. for snapshot tests)
68
+ <UnifiedSkeleton animate={false} aria-label="Loading ticket list" />
69
+ ```
@@ -1,47 +1,58 @@
1
- <!-- source-hash: a1b3156cdf394cc3dd5a1c35f3e88dd9 -->
2
- A responsive application header component that provides navigation, search, notifications, and user management functionality with mobile-first design and conditional feature rendering.
1
+ <!-- source-hash: 898258d76810df35b3a9175ed9b09824 -->
2
+ Responsive application header component for the OpenFrame platform, providing navigation controls, search, organization filtering, notifications, and user account management across mobile and desktop breakpoints.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **AppHeader**: Main header component with responsive layout switching between mobile and desktop views
7
- - **AppHeaderProps**: TypeScript interface defining all configurable props including search, organizations, notifications, and user settings
8
- - **Mobile Menu Integration**: Hamburger menu toggle with open/close state management
9
- - **Conditional Rendering**: Feature flags for search, organizations, notifications, and user sections
10
- - **User Dropdown**: Desktop-only dropdown menu with profile and logout actions
11
- - **Responsive Icons**: Different icon sizes and layouts for mobile vs desktop breakpoints
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `AppHeader` | `React.memo` component | Main header component with full prop-driven configuration |
9
+ | `AppHeaderProps` | Interface | Full prop contract for the header |
10
+ | `NotificationsHeaderButton` | Internal component | Bell icon button with unread badge, integrates with `NotificationsContext` |
11
+
12
+ ## Props Overview
13
+
14
+ | Prop | Type | Description |
15
+ |------|------|-------------|
16
+ | `isMobileMenuOpen` | `boolean` | Required; controls burger menu icon state |
17
+ | `onToggleMobileMenu` | `() => void` | Callback to toggle the mobile sidebar |
18
+ | `disabled` | `boolean` | Dims all controls except the mobile burger toggle |
19
+ | `showSearch` | `boolean` | Renders global search (desktop) or search button (mobile) |
20
+ | `showOrganizations` | `boolean` | Renders org filter dropdown (large screens only) |
21
+ | `showNotifications` | `boolean` | Renders notification bell with unread badge |
22
+ | `showUser` | `boolean` | Renders user avatar + dropdown (desktop only) |
12
23
 
13
24
  ## Usage Example
14
25
 
15
26
  ```typescript
16
27
  import { AppHeader } from './app-header'
17
28
 
18
- function Layout() {
19
- const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false)
20
-
29
+ export function Shell() {
30
+ const [mobileOpen, setMobileOpen] = React.useState(false)
31
+
21
32
  return (
22
33
  <AppHeader
23
- showSearch={true}
24
- onSearch={(query) => console.log('Search:', query)}
25
- showOrganizations={true}
26
- organizations={[
27
- { id: '1', name: 'Acme Corp' },
28
- { id: '2', name: 'Tech Solutions' }
29
- ]}
30
- selectedOrgId="1"
31
- onOrgChange={(id) => console.log('Org changed:', id)}
32
- showNotifications={true}
34
+ isMobileMenuOpen={mobileOpen}
35
+ onToggleMobileMenu={() => setMobileOpen(prev => !prev)}
36
+ showSearch
37
+ onSearch={(query) => console.log(query)}
38
+ showOrganizations
39
+ organizations={[{ id: 'org-1', name: 'Acme Corp' }]}
40
+ selectedOrgId="org-1"
41
+ onOrgChange={(id) => console.log(id)}
42
+ showNotifications
33
43
  unreadCount={3}
34
- showUser={true}
35
- userName="John Doe"
36
- userEmail="john@example.com"
37
- userAvatarUrl="/avatar.jpg"
38
- onProfile={() => navigate('/profile')}
44
+ showUser
45
+ userName="Jane Doe"
46
+ userEmail="jane@acme.com"
47
+ onProfile={() => router.push('/profile')}
39
48
  onLogout={() => signOut()}
40
- isMobileMenuOpen={isMobileMenuOpen}
41
- onToggleMobileMenu={() => setIsMobileMenuOpen(!isMobileMenuOpen)}
42
49
  />
43
50
  )
44
51
  }
45
52
  ```
46
53
 
47
- The header automatically adapts its layout based on screen size using the `useMdUp` hook, showing a compact mobile version with essential actions and an expanded desktop version with full feature visibility.
54
+ ## Behavior Notes
55
+
56
+ - **Responsive layout:** Mobile renders a burger icon + logo; desktop shows the full search bar and org filter
57
+ - **Disabled state:** Setting `disabled={true}` applies `pointer-events-none opacity-50` to all controls except the mobile menu toggle
58
+ - **Notifications:** Prefers live unread count from `NotificationsContext` when available, falls back to the `unreadCount` prop; switches between `BellIcon` and `BellRingingIcon` based on count
@@ -1,44 +1,39 @@
1
- <!-- source-hash: 044075e8eda2a0ce2427ef7e529ff9f3 -->
2
- A responsive application layout component that provides a structured shell with navigation sidebar, header, and mobile menu functionality for Flamingo Stack applications.
1
+ <!-- source-hash: 4a7aa4db8bec1fcce07d28f27fea4092 -->
2
+ Orchestrates the top-level application shell, combining the sidebar, header, mobile menu, and notification drawer into a single full-screen layout with managed mobile menu state.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **`AppLayout`** - Main layout component that orchestrates the entire application shell
7
- - **`AppLayoutProps`** - TypeScript interface defining all layout configuration options
8
- - **Mobile menu state management** - Handles toggle and close functionality for mobile navigation
9
- - **Responsive design** - Combines desktop sidebar with mobile burger menu
10
- - **Suspense integration** - Built-in loading state handling for async content
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `AppLayout` | Component | Root layout wrapper rendering all chrome elements and the main content area |
9
+ | `AppLayoutProps` | Interface | Configuration interface for the layout component |
10
+
11
+ **Key props:**
12
+ - `sidebarConfig` — Navigation structure passed to both `NavigationSidebar` and `MobileBurgerMenu`
13
+ - `headerProps` — Forwarded to `AppHeader` (mobile menu state/toggle are managed internally)
14
+ - `mobileBurgerMenuProps` — Forwarded to `MobileBurgerMenu` (open/close/config are managed internally)
15
+ - `disabled` — Freezes header and sidebar interactions without affecting `children`
16
+ - `loadingFallback` — Custom `Suspense` fallback for the main content area
11
17
 
12
18
  ## Usage Example
13
19
 
14
20
  ```typescript
15
21
  import { AppLayout } from './app-layout'
16
- import { NavigationSidebarConfig } from '../../types/navigation'
17
-
18
- const sidebarConfig: NavigationSidebarConfig = {
19
- sections: [
20
- {
21
- title: 'Dashboard',
22
- items: [
23
- { label: 'Overview', href: '/dashboard', icon: 'dashboard' }
24
- ]
25
- }
26
- ]
27
- }
22
+ import { sidebarConfig } from '../config/navigation'
28
23
 
29
- function MyApp({ children }: { children: React.ReactNode }) {
24
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
30
25
  return (
31
26
  <AppLayout
32
27
  sidebarConfig={sidebarConfig}
33
28
  headerProps={{
34
- title: 'Flamingo MSP',
35
- user: { name: 'John Doe', avatar: '/avatar.jpg' }
29
+ logo: <Logo />,
30
+ actions: <UserMenu />,
36
31
  }}
37
32
  mobileBurgerMenuProps={{
38
- className: 'custom-mobile-menu'
33
+ footerContent: <SupportLink />,
39
34
  }}
40
- loadingFallback={<div>Loading...</div>}
41
- mainClassName="custom-main-styles"
35
+ loadingFallback={<PageSkeleton />}
36
+ mainClassName="p-6"
42
37
  >
43
38
  {children}
44
39
  </AppLayout>
@@ -46,4 +41,8 @@ function MyApp({ children }: { children: React.ReactNode }) {
46
41
  }
47
42
  ```
48
43
 
49
- The component uses Tailwind CSS classes for styling and implements a flex-based layout with overflow handling for proper scrolling behavior on both desktop and mobile devices.
44
+ ## Notes
45
+
46
+ - Mobile menu open/close state is fully self-contained — consumers only provide content-level props via `mobileBurgerMenuProps`
47
+ - `children` are wrapped in `Suspense`, enabling async page transitions out of the box
48
+ - `disabled` is intended for loading or onboarding states where navigation should be temporarily locked
@@ -1,46 +1,43 @@
1
- <!-- source-hash: 87e72e6e65d4632e153a3f9d171549d4 -->
2
- A React component that provides a global search input field with a search icon, designed for header navigation areas in the OpenFrame platform.
1
+ <!-- source-hash: d02572a5b408584db5dc8403984b5d76 -->
2
+ A controlled/uncontrolled global search input component for the OpenFrame header, supporting both controlled (via `onChange`) and uncontrolled usage patterns.
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **HeaderGlobalSearch**: Main functional component that renders a search form with an input field and search icon
7
- - **HeaderGlobalSearchProps**: TypeScript interface defining component props including value, onChange, onSubmit callbacks, and styling options
8
- - **Internal state management**: Handles both controlled and uncontrolled input modes depending on whether onChange prop is provided
6
+ ### `HeaderGlobalSearch`
7
+ A form-based search input that renders a search icon alongside a text field. Automatically toggles between controlled and uncontrolled modes based on whether `onChange` is provided.
8
+
9
+ ### `HeaderGlobalSearchProps`
10
+ | Prop | Type | Default | Description |
11
+ |------|------|---------|-------------|
12
+ | `value` | `string` | `''` | Current search value |
13
+ | `onChange` | `(value: string) => void` | — | Enables controlled mode |
14
+ | `onSubmit` | `(value: string) => void` | — | Fires on form submit or Enter key |
15
+ | `placeholder` | `string` | `'Global Search'` | Input placeholder text |
16
+ | `className` | `string` | — | Additional CSS classes |
9
17
 
10
18
  ## Usage Example
11
19
 
20
+ **Controlled:**
12
21
  ```typescript
13
- import { HeaderGlobalSearch } from './header-global-search'
14
-
15
- // Controlled mode with external state
16
- function App() {
17
- const [searchQuery, setSearchQuery] = useState('')
18
-
19
- const handleSearch = (query: string) => {
20
- console.log('Searching for:', query)
21
- // Perform search logic
22
- }
23
-
24
- return (
25
- <HeaderGlobalSearch
26
- value={searchQuery}
27
- onChange={setSearchQuery}
28
- onSubmit={handleSearch}
29
- placeholder="Search across all modules..."
30
- className="max-w-md"
31
- />
32
- )
33
- }
34
-
35
- // Uncontrolled mode with internal state
36
- function SimpleSearch() {
37
- return (
38
- <HeaderGlobalSearch
39
- onSubmit={(query) => performSearch(query)}
40
- placeholder="Quick search..."
41
- />
42
- )
43
- }
22
+ const [query, setQuery] = React.useState('')
23
+
24
+ <HeaderGlobalSearch
25
+ value={query}
26
+ onChange={setQuery}
27
+ onSubmit={(val) => console.log('Search:', val)}
28
+ placeholder="Search tickets, clients..."
29
+ />
44
30
  ```
45
31
 
46
- The component supports both Enter key and form submission for triggering searches, uses OpenFrame design system classes (ods-*), and automatically manages focus states and responsive styling.
32
+ **Uncontrolled:**
33
+ ```typescript
34
+ <HeaderGlobalSearch
35
+ onSubmit={(val) => console.log('Search:', val)}
36
+ />
37
+ ```
38
+
39
+ ## Notes
40
+
41
+ - Submission triggers on both **form submit** and **Enter keydown**
42
+ - Without `onChange`, component manages its own internal state
43
+ - Styled with ODS design tokens (`ods-card`, `ods-text-primary`, `ods-text-secondary`) for consistent theming across OpenFrame