@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,37 +1,36 @@
1
- <!-- source-hash: 133223b3101160c40bc5218ad0ee941f -->
2
- A React component that displays a badge with icon and label for OpenFrame integrated tools, providing visual identification of tool sources in UI elements like tables and lists.
1
+ <!-- source-hash: 5668aa064d8c050beff751a96d6469be -->
2
+ A React component that renders a visual badge combining a tool icon and label for OpenFrame-integrated MSP tools (e.g., Tactical RMM, Fleet MDM, MeshCentral).
3
3
 
4
4
  ## Key Components
5
5
 
6
- - **ToolBadge**: Main component that renders a tool badge with icon and label
7
- - **ToolBadgeProps**: Interface defining the component props including tool type and optional styling
8
- - **ToolType**: Re-exported type from tool.types for tool identification
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `ToolBadge` | `React.FC<ToolBadgeProps>` | Main badge component |
9
+ | `ToolBadgeProps` | `interface` | Props: `toolType`, `className`, `iconClassName` |
10
+ | `ToolType` | `type` (re-export) | Enum/union of supported tool types |
9
11
 
10
12
  ## Usage Example
11
13
 
12
14
  ```typescript
13
15
  import { ToolBadge } from './components/ToolBadge'
14
16
 
15
- // Display different tool badges
16
- function ToolList() {
17
- return (
18
- <div className="space-y-2">
19
- <ToolBadge toolType="TACTICAL" />
20
- <ToolBadge toolType="FLEET" />
21
- <ToolBadge toolType="MESHCENTRAL" />
22
- <ToolBadge toolType="CUSTOM" className="opacity-75" />
23
- </div>
24
- )
25
- }
26
-
27
- // In a table cell
28
- function DeviceTable() {
29
- return (
30
- <td>
31
- <ToolBadge toolType="TACTICAL" />
32
- </td>
33
- )
34
- }
17
+ // Basic usage in a table cell
18
+ <ToolBadge toolType="TACTICAL" />
19
+
20
+ // With custom styling
21
+ <ToolBadge
22
+ toolType="FLEET"
23
+ className="my-2"
24
+ iconClassName="opacity-80"
25
+ />
26
+
27
+ // MeshCentral badge
28
+ <ToolBadge toolType="MESHCENTRAL" />
35
29
  ```
36
30
 
37
- The component automatically handles icon selection and label formatting through utility functions, with responsive text sizing and flexible styling through className props. It's commonly used to identify data sources across the OpenFrame platform.
31
+ ## Notes
32
+
33
+ - Resolves the human-readable label via `getToolLabel()` from `tool-utils`
34
+ - Renders a 16px `ToolIcon` alongside the label text
35
+ - Supports `className` for the wrapper `div` and `iconClassName` for the icon independently
36
+ - Uses `cn()` utility for conditional class merging (Tailwind-compatible)
@@ -0,0 +1,52 @@
1
+ <!-- source-hash: 5f19dc4d30a044a74524129e66197508 -->
2
+ Thin wrapper around `next-themes` that implements the ODS design system's light/dark theme model: manual toggle only, defaulting to dark, persisted to `localStorage`, applied via `data-theme` attribute on `<html>`.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `ThemeProvider` | Component | Pre-configured `next-themes` provider with ODS defaults; wrap the app root once |
9
+ | `useTheme` | Hook | Direct re-export of `next-themes` `useTheme`; returns full theme context |
10
+ | `useThemeToggle` | Hook | Headless convenience hook for building toggle UIs with hydration-safe mount gating |
11
+ | `THEME_STORAGE_KEY` | Constant | `"ods-theme"` — localStorage key |
12
+ | `THEME_ATTRIBUTE` | Constant | `"data-theme"` — HTML attribute toggled on `<html>` |
13
+ | `DEFAULT_THEME` | Constant | `"dark"` |
14
+
15
+ ## Usage Example
16
+
17
+ **Wrap your app root (Next.js App Router):**
18
+
19
+ ```typescript
20
+ // app/layout.tsx
21
+ import { ThemeProvider } from "@/components/theme-provider";
22
+
23
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
24
+ return (
25
+ <html suppressHydrationWarning>
26
+ <body>
27
+ <ThemeProvider>{children}</ThemeProvider>
28
+ </body>
29
+ </html>
30
+ );
31
+ }
32
+ ```
33
+
34
+ **Build a toggle button using `useThemeToggle`:**
35
+
36
+ ```typescript
37
+ import { useThemeToggle } from "@/components/theme-provider";
38
+ import { Button } from "@ods/ui";
39
+ import { Sun01Icon, MoonIcon } from "@ods/icons";
40
+
41
+ export function ThemeToggle() {
42
+ const { isDark, toggle, mounted } = useThemeToggle();
43
+
44
+ return (
45
+ <Button size="icon" variant="transparent" onClick={toggle} aria-label="Toggle theme">
46
+ {mounted && (isDark ? <Sun01Icon /> : <MoonIcon />)}
47
+ </Button>
48
+ );
49
+ }
50
+ ```
51
+
52
+ > **SSR note:** `mounted` is `false` during server render and flips to `true` after hydration. Gate any theme-dependent UI behind `mounted` to avoid hydration mismatches.
@@ -0,0 +1,39 @@
1
+ <!-- source-hash: a856dcd91dfe86722b63f8f7f40c9eea -->
2
+ Renders the delivery section body with two filterable data tables — "Recently Completed" and "Active Tasks" — fetched from configurable API endpoints and driven by URL search parameters.
3
+
4
+ ## Key Components
5
+
6
+ ### `DeliveryLists` (default export)
7
+ Main component that orchestrates dual parallel fetches and renders both `DeliveryTable` instances.
8
+
9
+ ### `DeliveryListsProps`
10
+ | Prop | Type | Default | Description |
11
+ |------|------|---------|-------------|
12
+ | `completedApiEndpoint` | `string` | `/api/delivery/completed` | GET endpoint for completed tasks |
13
+ | `inProgressApiEndpoint` | `string` | `/api/delivery/in-progress` | GET endpoint for active tasks |
14
+ | `searchParamKey` | `string` | `'search'` | URL + API query param key for search input |
15
+ | `taskTypeParamKey` | `string` | `'task_type'` | URL + API query param key for task-type filter |
16
+
17
+ > **Coupling constraint:** `searchParamKey` and `taskTypeParamKey` must match the consuming chrome's `section.search.paramKey` / `section.filter.paramKey`. These keys are used for both URL reads and outbound API query params — override both ends consistently.
18
+
19
+ ## Usage Example
20
+
21
+ ```typescript
22
+ // Zero-config (OpenFrame defaults)
23
+ <DeliveryLists />
24
+
25
+ // Custom endpoints with matching chrome param keys
26
+ <DeliveryLists
27
+ completedApiEndpoint="/api/v2/tasks/done"
28
+ inProgressApiEndpoint="/api/v2/tasks/active"
29
+ searchParamKey="q"
30
+ taskTypeParamKey="type"
31
+ />
32
+ ```
33
+
34
+ ## Behavior
35
+
36
+ - **Parallel fetches** via `Promise.all` on both endpoints, re-triggered when URL params or endpoint props change
37
+ - **Empty states**: shows a "Reset Filters" CTA when active filters return no results; shows a generic message when no tasks exist
38
+ - **Error state**: renders `<LoadError>` with a page-reload retry on fetch failure
39
+ - **Loading**: passes `isLoading` to each `<DeliveryTable>` for skeleton rendering
@@ -0,0 +1,41 @@
1
+ <!-- source-hash: 48827d34bfec0bd0e5c771a4967c8775 -->
2
+ Single-row presentational component for a ClickUp delivery item, serving as the shared rendering primitive for both the public delivery list table and the HubSpot ticket linked-delivery card.
3
+
4
+ ## Key Components
5
+
6
+ ### `DeliveryRow` (exported component)
7
+ Renders a responsive row layout with title, subtitle, description, and status/type badges. Conditionally wraps content in a navigable `<Link>` (via env-aware Next.js shim) or a plain `<div>` depending on whether `href` is provided.
8
+
9
+ ### `DeliveryRowProps` (exported interface)
10
+ | Prop | Type | Description |
11
+ |------|------|-------------|
12
+ | `item` | `DeliveryItem` | ClickUp task data (title, status, type, dates, etc.) |
13
+ | `href` | `string?` | When set, makes the entire row a clickable deep-link anchor |
14
+ | `caption` | `string?` | Small uppercase label above the title (e.g. `"LINKED DELIVERY"`) |
15
+ | `className` | `string?` | Additional Tailwind classes for the outer element |
16
+
17
+ ### `getRelativeTime` (internal helper)
18
+ Converts a Unix timestamp to human-readable relative time (`"yesterday"`, `"3 weeks ago"`, etc.). Inlined so the component owns its full rendering contract independently of `DeliveryTable`.
19
+
20
+ ## Usage Example
21
+
22
+ ```typescript
23
+ // Standard list row (no interactivity)
24
+ <DeliveryRow item={deliveryItem} />
25
+
26
+ // Clickable deep-link variant (ticket card surface)
27
+ <DeliveryRow
28
+ item={deliveryItem}
29
+ href={buildDevSectionUrl('delivery', deliveryItem.id)}
30
+ caption="LINKED DELIVERY"
31
+ />
32
+
33
+ // With focus highlight (after ?focus=<id> scroll)
34
+ <DeliveryRow
35
+ item={deliveryItem}
36
+ id={deliveryItem.id}
37
+ className="animate-flash-focus"
38
+ />
39
+ ```
40
+
41
+ The `href` prop uses the embed-aware `next/link` shim — preserving TanStack Query state on back-navigation in Next.js hosts while gracefully degrading to a plain `<a>` elsewhere.
@@ -0,0 +1,41 @@
1
+ <!-- source-hash: d5d3a5d0e430ad78e58c1dc249ed1e27 -->
2
+ A bordered card component that renders a list of `DeliveryItem` entries, one `DeliveryRow` per item, with loading skeleton and empty-state handling.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `DeliveryTable` | Named export | Main table container rendering delivery items |
9
+ | `SkeletonRow` | Internal | Animated placeholder row shown during loading |
10
+ | `DeliveryTableProps` | Interface | `items: DeliveryItem[]`, `isLoading?: boolean` |
11
+
12
+ ## Rendering States
13
+
14
+ | State | Trigger | Output |
15
+ |-------|---------|--------|
16
+ | Loading | `isLoading={true}` | 5 animated `SkeletonRow` placeholders |
17
+ | Empty | `items.length === 0` | "No tasks available" message |
18
+ | Default | Items present | One `<DeliveryRow>` per item, separated by borders |
19
+
20
+ ## Usage Example
21
+
22
+ ```typescript
23
+ import { DeliveryTable } from './delivery-table';
24
+ import type { DeliveryItem } from '../../../types/delivery';
25
+
26
+ // Normal render with data
27
+ <DeliveryTable items={deliveryItems} />
28
+
29
+ // Loading state (e.g. while fetching)
30
+ <DeliveryTable items={[]} isLoading={true} />
31
+
32
+ // Typically consumed by DeliveryLists — split into two tables:
33
+ <DeliveryTable items={completedItems} />
34
+ <DeliveryTable items={inProgressItems} />
35
+ ```
36
+
37
+ ## Notes
38
+
39
+ - Each item row is wrapped in a `div` with `border-b` and `last:border-b-0` to avoid a trailing border on the final row.
40
+ - `DeliveryRow` handles all visual logic per row — `DeliveryTable` is purely a layout/state shell.
41
+ - Designed to be instantiated twice by the parent `DeliveryLists` component: once for completed items and once for in-progress items.
@@ -0,0 +1,38 @@
1
+ <!-- source-hash: 14c7ec8068a157d0e8708c75e2af23b0 -->
2
+ Barrel export for the delivery UI component suite, exposing three composable components for displaying and listing delivery items.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `DeliveryLists` | Component | URL-filter-driven list view; use `ignoreUrlFilters` prop instead of building a standalone unfiltered variant |
9
+ | `DeliveryListsProps` | Type | Props interface for `DeliveryLists` |
10
+ | `DeliveryTable` | Component | Raw table renderer, used directly in release-detail views |
11
+ | `DeliveryRow` | Component | Individual row renderer for delivery entries |
12
+ | `DeliveryRowProps` | Type | Props interface for `DeliveryRow` |
13
+
14
+ ## Usage Example
15
+
16
+ ```typescript
17
+ import {
18
+ DeliveryLists,
19
+ DeliveryTable,
20
+ DeliveryRow,
21
+ type DeliveryListsProps,
22
+ type DeliveryRowProps,
23
+ } from './components/delivery';
24
+
25
+ // URL-filter-driven list (public bug-fixes-and-enhancements page)
26
+ <DeliveryLists />
27
+
28
+ // No-filter variant — use ignoreUrlFilters instead of a separate component
29
+ <DeliveryLists ignoreUrlFilters />
30
+
31
+ // Direct table embed (e.g. hub release-detail page)
32
+ <DeliveryTable />
33
+
34
+ // Manual row composition
35
+ <DeliveryRow />
36
+ ```
37
+
38
+ > **Note:** `DeliverySection` was intentionally removed — it had no consumers and duplicated the fetch/loading state machine. Do not revive it; use `<DeliveryLists ignoreUrlFilters />` for unfiltered use cases.
@@ -0,0 +1,60 @@
1
+ <!-- source-hash: 8d3da3a7c730a952779ad08cf7640368 -->
2
+ Shared row chrome components for `DevSectionPage` list surfaces (delivery, tickets, etc.), providing a consistent two-column layout with fixed min-height blocks for vertical alignment across grid rows, plus a thread-style conversation variant for ticket detail drawers.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `DevCardRowContent` | Component | Two-column card row: left (title/subtitle/description) + right (caller-supplied badges) |
9
+ | `DevCardRowSkeleton` | Component | Loading skeleton mirroring `DevCardRowContent` min-heights |
10
+ | `ConversationCardRow` | Component | Thread-style message row with avatar, author header, body, and attachments |
11
+ | `ConversationCardRowSkeleton` | Component | Loading skeleton for a single `ConversationCardRow` |
12
+ | `ConversationCardRowSkeletonList` | Component | Multi-row skeleton list (default: 2 rows) for conversation timeline loading state |
13
+ | `DevCardRowContentProps` | Interface | Props for `DevCardRowContent` |
14
+ | `ConversationCardRowProps` | Interface | Props for `ConversationCardRow` |
15
+
16
+ ## Usage Example
17
+
18
+ ```typescript
19
+ // Static delivery card row (wrapped in a div)
20
+ <div className="border-b border-ods-border p-[12px] md:p-[16px]">
21
+ <DevCardRowContent
22
+ title="Deploy v2.4.1 to production"
23
+ subtitle="UPDATED today, #4271, Code review"
24
+ description="Bumps the API gateway to support new webhook endpoints."
25
+ rightBadges={
26
+ <>
27
+ <StatusBadge status="in-progress" />
28
+ <PriorityBadge priority="high" />
29
+ </>
30
+ }
31
+ />
32
+ </div>
33
+
34
+ // Clickable ticket card row (wrapped in a button)
35
+ <button onClick={openTicket}>
36
+ <DevCardRowContent
37
+ title="Login page throws 502 on Safari"
38
+ subtitle="OPEN · #1042 · Bug"
39
+ description=""
40
+ emptyDescription="No description provided for this ticket."
41
+ rightBadges={<SeverityBadge level="critical" />}
42
+ />
43
+ </button>
44
+
45
+ // Conversation thread row
46
+ <ConversationCardRow
47
+ author="Jane Smith"
48
+ role="Resolution"
49
+ avatarSrc="https://cdn.example.com/avatars/jane.png"
50
+ timestamp="2026-01-15T14:32:00Z"
51
+ body="The issue has been resolved by restarting the gateway service."
52
+ attachments={[{ name: "fix-log.txt", url: "/files/fix-log.txt" }]}
53
+ variant="support"
54
+ />
55
+
56
+ // Loading state
57
+ <ConversationCardRowSkeletonList rows={3} />
58
+ ```
59
+
60
+ > **Design note:** `DevCardRowContent` is layout-only — no click behavior is baked in. Wrap in `<div>` for static rows or `<button>` for interactive ones. `rightBadges` accepts any `ReactNode`, keeping badge composition flexible per surface.
@@ -0,0 +1,48 @@
1
+ <!-- source-hash: 0de96ea9df1ea6a28df1ff674cfc5e14 -->
2
+ Full-page wrapper component for dev-center sections (`/roadmap`, `/bug-fixes-and-enhancements`, `/releases`) in the OpenFrame platform. It composes `PageShell → PageLayout → DevSectionView` to deliver a consistent hero icon, search, and filter pill layout across all dev sections.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `DevSectionPage` | Component | Main page wrapper factory for any `OpenframeDevSectionKey` section |
9
+ | `DevSectionPageProps` | Interface | Props contract for `sectionKey`, `children`, `preControls`, and `backButton` |
10
+ | `SECTION_HERO_ICON_CLASS` | Constant | Tailwind class applied uniformly to all section hero icons |
11
+
12
+ ### Props
13
+
14
+ | Prop | Type | Description |
15
+ |------|------|-------------|
16
+ | `sectionKey` | `OpenframeDevSectionKey` | Looks up section metadata from `OPENFRAME_DEV_SECTIONS` |
17
+ | `children` | `ReactNode` | Page-specific list body (e.g. `<RoadmapList />`) |
18
+ | `preControls` | `ReactNode` (optional) | Slot rendered between the hero and search/filter controls |
19
+ | `backButton` | `{ label?, href? } \| false` (optional) | Configures or hides the back button; defaults to `Back to home → /` |
20
+
21
+ ## Usage Example
22
+
23
+ ```typescript
24
+ // Adding a new section page is a single mount:
25
+ import { DevSectionPage } from '@/components/dev-center/dev-section-page';
26
+
27
+ export default function RoadmapPage() {
28
+ return (
29
+ <DevSectionPage
30
+ sectionKey="roadmap"
31
+ backButton={{ label: 'Back to home', href: '/' }}
32
+ >
33
+ <RoadmapList />
34
+ </DevSectionPage>
35
+ );
36
+ }
37
+
38
+ // With a preControls slot (e.g. Help Center ticket form above filters):
39
+ <DevSectionPage
40
+ sectionKey="help-center"
41
+ preControls={<OpenTicketForm />}
42
+ backButton={false} // hide back button
43
+ >
44
+ <TicketList />
45
+ </DevSectionPage>
46
+ ```
47
+
48
+ > **Extensibility:** Adding a new dev-center section requires only one entry in `OPENFRAME_DEV_SECTIONS` plus a single page file mounting `DevSectionPage` with the new key. Design system changes to `BackButton` or `TitleBlock` propagate automatically via the shared `PageLayout`.
@@ -0,0 +1,43 @@
1
+ <!-- source-hash: 508a1c69dd2d082f4bed6cb98c63998b -->
2
+ Canonical chrome wrapper for dev-center sections (Roadmap, Delivery, Releases), handling title rendering, inline search, filter pills, and URL-param wiring in both tabbed and full-page layout modes.
3
+
4
+ ## Key Components
5
+
6
+ ### `DevSectionView`
7
+ The single shared layout shell consumed by every dev-center section page. Supports two display modes:
8
+ - **Hero mode** — full-page layout with icon, `<h1>`, and description (pass `hero` prop)
9
+ - **Compact mode** — tab-context `<h2>` heading only (omit `hero`)
10
+
11
+ ### `DevSectionViewProps`
12
+ | Prop | Type | Description |
13
+ |------|------|-------------|
14
+ | `sectionKey` | `OpenframeDevSectionKey` | Registry key driving title, search, and filter config |
15
+ | `hero` | `{ icon: ReactNode, description: string }` | Enables full-page hero rendering |
16
+ | `preControls` | `ReactNode` | Optional slot between hero and search/filter controls |
17
+ | `children` | `ReactNode` | Section-specific list body; reads URL params set by this component |
18
+
19
+ ### URL Contract
20
+ - Search commits to `?<paramKey>=...` on **Enter only** (not every keystroke)
21
+ - Filter changes are applied immediately via `router.replace` with `scroll: false`
22
+ - Default filter values are omitted from the URL (cleaned via `params.delete`)
23
+ - `searchValue` is lazy-initialized from URL params to prevent stale flash on tab switch
24
+
25
+ ## Usage Example
26
+
27
+ ```typescript
28
+ // Hero (full-page) mode
29
+ <DevSectionView
30
+ sectionKey="roadmap"
31
+ hero={{ icon: <RoadmapIcon />, description: "Track upcoming features." }}
32
+ preControls={<NewTicketForm />}
33
+ >
34
+ <RoadmapList />
35
+ </DevSectionView>
36
+
37
+ // Compact (tabbed) mode
38
+ <DevSectionView sectionKey="releases">
39
+ <ReleasesList />
40
+ </DevSectionView>
41
+ ```
42
+
43
+ Children read filter/search state directly from URL params via `useSearchParams()` — no prop drilling required.
@@ -0,0 +1,38 @@
1
+ <!-- source-hash: cf867242675a788a6cd1107870be83de -->
2
+ Barrel export file for the developer section UI components, re-exporting views, pages, and card row components from their respective modules.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `DevSectionView` | Component | View component for displaying a developer section |
9
+ | `DevSectionViewProps` | Type | Props interface for `DevSectionView` |
10
+ | `DevSectionPage` | Component | Page-level component for the developer section |
11
+ | `DevSectionPageProps` | Type | Props interface for `DevSectionPage` |
12
+ | `DevCardRowContent` | Component | Renders content within a developer card row |
13
+ | `DevCardRowSkeleton` | Component | Skeleton loader for a single developer card row |
14
+ | `DevCardRowSkeletonList` | Component | Skeleton loader list for multiple developer card rows |
15
+ | `DevCardRowContentProps` | Type | Props interface for `DevCardRowContent` |
16
+
17
+ ## Usage Example
18
+
19
+ ```typescript
20
+ import {
21
+ DevSectionPage,
22
+ DevSectionView,
23
+ DevCardRowContent,
24
+ DevCardRowSkeleton,
25
+ DevCardRowSkeletonList,
26
+ } from './index';
27
+
28
+ // Render the full page
29
+ <DevSectionPage />
30
+
31
+ // Or use the view with card rows
32
+ <DevSectionView>
33
+ <DevCardRowContent {...props} />
34
+ </DevSectionView>
35
+
36
+ // Show skeleton while loading
37
+ <DevCardRowSkeletonList />
38
+ ```
@@ -0,0 +1,40 @@
1
+ <!-- source-hash: 30ce64f08f17859a1a4da9781ecb7e5e -->
2
+ Barrel export file for the shared legal-document UI surface, consolidating a reusable `<LegalDocumentPage>` component and its data-fetching hook into a single import point.
3
+
4
+ ## Key Components
5
+
6
+ | Export | Type | Description |
7
+ |--------|------|-------------|
8
+ | `LegalDocumentPage` | Component | Parameterized page component replacing duplicated `PrivacyPolicyPage` and `TermsOfServicePage` |
9
+ | `LegalDocumentPageProps` | Type | Props interface for `LegalDocumentPage` |
10
+ | `LegalDocumentMarkdownRendererProps` | Type | Props interface for the internal markdown renderer |
11
+ | `useLegalDocs` | Hook | Data-fetching hook for retrieving legal document content |
12
+ | `LegalDocument` | Type | Shape of a single legal document entity |
13
+ | `UseLegalDocsOptions` | Type | Configuration options for `useLegalDocs` |
14
+ | `UseLegalDocsReturn` | Type | Return value shape of `useLegalDocs` |
15
+
16
+ ## Usage Example
17
+
18
+ ```typescript
19
+ import {
20
+ LegalDocumentPage,
21
+ type LegalDocumentPageProps,
22
+ useLegalDocs,
23
+ type LegalDocument,
24
+ } from '@/features/legal';
25
+
26
+ // Render a Privacy Policy page
27
+ const privacyConfig: LegalDocumentPageProps = {
28
+ title: 'Privacy Policy',
29
+ slug: 'privacy-policy',
30
+ };
31
+
32
+ export const PrivacyPolicyPage = () => (
33
+ <LegalDocumentPage {...privacyConfig} />
34
+ );
35
+
36
+ // Or fetch the document data directly
37
+ const { document, isLoading } = useLegalDocs({ slug: 'terms-of-service' });
38
+ ```
39
+
40
+ > **Design note:** This barrel consolidates what were previously two ~95% identical page components into a single parameterized surface, reducing duplication while keeping import paths clean for consumers.
@@ -0,0 +1,50 @@
1
+ <!-- source-hash: 3706922a9df0493d5342fee857818e2a -->
2
+ Unified page component for rendering markdown-backed legal documents (privacy policy, terms of service, etc.), replacing duplicate per-document hub components with a single configurable abstraction.
3
+
4
+ ## Key Components
5
+
6
+ ### `LegalDocumentPage`
7
+ Main exported component that handles the full page lifecycle — loading skeleton, error state, empty state, and rendered markdown content — driven entirely by props.
8
+
9
+ ### `LegalDocumentPageProps`
10
+ Configuration interface covering:
11
+ - **`docType`** — drives the default `/api/legal/<docType>` endpoint and error-log prefix
12
+ - **`title` / `fallbackDescription`** — heading and subtitle text
13
+ - **`contactEmail` / `errorContactPrompt` / `errorTitle` / `emptyStateMessage`** — per-document copy strings
14
+ - **`initialData` / `initialLastUpdatedLabel`** — SSR hydration-safe pre-fetched data
15
+ - **`apiEndpoint`** — optional override for reverse-proxy or alternate API paths
16
+ - **`MarkdownRenderer`** — injectable renderer (defaults to `SimpleMarkdownRenderer`); pass a richer renderer for embeds/video/OG previews
17
+ - **`backButton`** — configurable back-nav; pass `false` to hide in embed mode
18
+
19
+ ### `LegalDocumentMarkdownRendererProps`
20
+ Renderer contract interface with `content`, `sectionIds`, and `demoteMarkdownH1ToH2`.
21
+
22
+ ## Usage Example
23
+
24
+ ```typescript
25
+ // Privacy Policy page
26
+ <LegalDocumentPage
27
+ docType="privacy"
28
+ title="Privacy Policy"
29
+ fallbackDescription="Our privacy policy and data protection practices."
30
+ contactEmail="privacy@openframe.io"
31
+ errorContactPrompt="For privacy-related questions, please contact:"
32
+ errorTitle="Unable to load privacy policy"
33
+ emptyStateMessage="Privacy policy content is not available at this time."
34
+ initialData={ssrDocument}
35
+ initialLastUpdatedLabel="January 15, 2025"
36
+ />
37
+
38
+ // Embed mode with custom renderer and no back button
39
+ <LegalDocumentPage
40
+ docType="terms"
41
+ title="Terms of Service"
42
+ fallbackDescription="Terms governing use of our platform."
43
+ contactEmail="legal@openframe.io"
44
+ errorContactPrompt="For legal questions, please contact:"
45
+ errorTitle="Unable to load terms of service"
46
+ emptyStateMessage="Terms of service content is not available at this time."
47
+ MarkdownRenderer={RichMarkdownRenderer}
48
+ backButton={false}
49
+ />
50
+ ```
@@ -0,0 +1,42 @@
1
+ <!-- source-hash: 8cc6f0cadfbca233ed799a57d6b4388c -->
2
+ A React hook that fetches markdown-backed legal documents (privacy policy, terms of service, etc.) from a hub API endpoint, with support for SSR/RSC pre-fetched data and manual refetching.
3
+
4
+ ## Key Components
5
+
6
+ ### Interfaces
7
+
8
+ | Interface | Description |
9
+ |-----------|-------------|
10
+ | `LegalDocument` | Shape of the fetched document — includes title, markdown content, GitHub sync metadata, and parsed section headings |
11
+ | `UseLegalDocsOptions` | Hook configuration — optional `initialData` for SSR hydration and `apiEndpoint` override for reverse-proxy embedders |
12
+ | `UseLegalDocsReturn` | Hook return value — `data`, `isLoading`, `error`, and `refetch` |
13
+
14
+ ### `useLegalDocs(docType, options?)`
15
+
16
+ Core hook that manages fetch lifecycle for a legal document. Key behaviors:
17
+
18
+ - **Default endpoint:** `/api/legal/<docType>` — overridable via `apiEndpoint`
19
+ - **SSR-safe:** When `initialData` is provided, the initial client fetch is skipped entirely
20
+ - **`docType` reset guard:** When `docType` changes, stale data is cleared immediately before the new fetch resolves — prevents flash of wrong content in embedders cycling through document types
21
+ - **Error handling:** Propagates HTTP errors and empty-content responses as human-readable strings via the `error` state
22
+
23
+ ## Usage Example
24
+
25
+ ```typescript
26
+ // Basic client-side fetch
27
+ const { data, isLoading, error, refetch } = useLegalDocs('privacy');
28
+
29
+ // SSR hydration — skip initial client fetch
30
+ const { data } = useLegalDocs('terms', {
31
+ initialData: serverFetchedDoc,
32
+ });
33
+
34
+ // Reverse-proxy embedder overriding the endpoint
35
+ const { data, isLoading } = useLegalDocs('privacy', {
36
+ apiEndpoint: '/proxy/legal/privacy',
37
+ });
38
+
39
+ if (isLoading) return <Spinner />;
40
+ if (error) return <ErrorBanner message={error} onRetry={refetch} />;
41
+ return <MarkdownRenderer content={data?.content} />;
42
+ ```