@flamingo-stack/openframe-frontend-core 0.0.747 → 0.0.749

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 (550) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-4DT5YXTM.cjs → chunk-2J2OBP4N.cjs} +26 -18
  3. package/dist/chunk-2YXOD2KL.cjs +137 -0
  4. package/dist/{chunk-BEC43GHL.cjs → chunk-34TWK3JE.cjs} +3 -3
  5. package/dist/{chunk-BBM2ICOY.cjs → chunk-3TELPOVH.cjs} +2 -2
  6. package/dist/{chunk-O6QQ44I3.cjs → chunk-45YRDD7W.cjs} +22 -19
  7. package/dist/{chunk-U6XWGK53.cjs → chunk-ALPRQ3ZX.cjs} +56 -46
  8. package/dist/{chunk-4AWI6CCU.cjs → chunk-BN6NA5RM.cjs} +56 -53
  9. package/dist/{chunk-HNLI4OU5.cjs → chunk-C6LPOYDM.cjs} +24 -24
  10. package/dist/{chunk-4MGZYY6U.cjs → chunk-CLAJIQ7E.cjs} +26 -18
  11. package/dist/{chunk-WY4FKKCV.cjs → chunk-CXV7VBSI.cjs} +104 -118
  12. package/dist/{chunk-QPSQ5WLG.cjs → chunk-DGEB5GUZ.cjs} +2 -2
  13. package/dist/{chunk-6RTHHU3S.cjs → chunk-E3KFEOFA.cjs} +9 -6
  14. package/dist/{chunk-PSSGIZXZ.cjs → chunk-FHT7SMA7.cjs} +49 -46
  15. package/dist/{chunk-TYW7NBP7.cjs → chunk-GOFEOCQN.cjs} +44 -27
  16. package/dist/{chunk-HTMHDEIV.cjs → chunk-HOEVD6EN.cjs} +4 -4
  17. package/dist/{chunk-2CEQGGRN.cjs → chunk-KRAQEZPB.cjs} +48 -40
  18. package/dist/{chunk-AKTPO2DN.cjs → chunk-L4UI63K6.cjs} +2 -2
  19. package/dist/{chunk-FCQCEQBY.cjs → chunk-LQT2ITMG.cjs} +6 -6
  20. package/dist/{chunk-PSIKUDUV.cjs → chunk-LVO7FALW.cjs} +5 -5
  21. package/dist/{chunk-L2RMTGOK.cjs → chunk-MGF3FUKD.cjs} +7 -7
  22. package/dist/{chunk-P7KTAXXE.cjs → chunk-OFO75R2O.cjs} +169 -175
  23. package/dist/{chunk-IJA3OZWF.cjs → chunk-OZLIKBKC.cjs} +24 -24
  24. package/dist/{chunk-B27QEHYR.cjs → chunk-P6F6PHVK.cjs} +9 -9
  25. package/dist/chunk-RB6BSE3O.cjs +21 -0
  26. package/dist/{chunk-R3FXJXSQ.cjs → chunk-SECT4H34.cjs} +1780 -2076
  27. package/dist/{chunk-LLAKQT3B.cjs → chunk-SGL47BS2.cjs} +12 -12
  28. package/dist/{chunk-PIQRV4EQ.cjs → chunk-SOPVUD2Y.cjs} +3 -3
  29. package/dist/chunk-UGCRLRCT.cjs +25 -0
  30. package/dist/{chunk-7Y5U3Y4S.cjs → chunk-V3UJ6NDR.cjs} +281 -462
  31. package/dist/{chunk-JPSMPXCH.cjs → chunk-VEVIMDNK.cjs} +137 -122
  32. package/dist/{chunk-C7NTL2GV.cjs → chunk-WZX26ODJ.cjs} +121 -121
  33. package/dist/{chunk-YIRX6C7V.cjs → chunk-XJ3J4UIS.cjs} +57 -22
  34. package/dist/{chunk-MA7T36JY.cjs → chunk-ZLF55RDR.cjs} +103 -98
  35. package/dist/{cloud-tenants-QJZIF2JS.cjs → cloud-tenants-2MYFHEYY.cjs} +16 -14
  36. package/dist/components/case-studies/index.cjs +29 -27
  37. package/dist/components/categories-cart.d.ts.map +1 -1
  38. package/dist/components/categories-cart.js +2 -7
  39. package/dist/components/chat/chat-container.js +4 -4
  40. package/dist/components/chat/chat-context-picker.d.ts.map +1 -1
  41. package/dist/components/chat/chat-context-picker.js +2 -1
  42. package/dist/components/chat/chat-message-row.d.ts.map +1 -1
  43. package/dist/components/chat/chat-message-row.js +6 -5
  44. package/dist/components/chat/chat-message-skeleton.d.ts +3 -1
  45. package/dist/components/chat/chat-message-skeleton.d.ts.map +1 -1
  46. package/dist/components/chat/chat-message-skeleton.js +8 -5
  47. package/dist/components/chat/chat-sidebar-skeleton.d.ts.map +1 -1
  48. package/dist/components/chat/chat-sidebar-skeleton.js +4 -3
  49. package/dist/components/chat/chat-top-navigation.js +4 -4
  50. package/dist/components/chat/context-items-list.d.ts.map +1 -1
  51. package/dist/components/chat/context-items-list.js +5 -3
  52. package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts +24 -1
  53. package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts.map +1 -1
  54. package/dist/components/chat/entity-cards/admin-content-card-grid.js +46 -15
  55. package/dist/components/chat/entity-cards/admin-content-card.d.ts.map +1 -1
  56. package/dist/components/chat/entity-cards/admin-content-card.js +2 -1
  57. package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -1
  58. package/dist/components/chat/entity-cards/blog-card.js +13 -12
  59. package/dist/components/chat/entity-cards/campaign-card-admin.d.ts.map +1 -1
  60. package/dist/components/chat/entity-cards/campaign-card-admin.js +5 -4
  61. package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
  62. package/dist/components/chat/entity-cards/case-study-card.js +19 -18
  63. package/dist/components/chat/entity-cards/chat-ticket-item.js +5 -5
  64. package/dist/components/chat/entity-cards/customer-interview-card.d.ts.map +1 -1
  65. package/dist/components/chat/entity-cards/customer-interview-card.js +15 -14
  66. package/dist/components/chat/entity-cards/data-room-doc-card.d.ts.map +1 -1
  67. package/dist/components/chat/entity-cards/data-room-doc-card.js +7 -6
  68. package/dist/components/chat/entity-cards/design-doc-card.d.ts.map +1 -1
  69. package/dist/components/chat/entity-cards/design-doc-card.js +0 -2
  70. package/dist/components/chat/entity-cards/generic-entity-card.d.ts.map +1 -1
  71. package/dist/components/chat/entity-cards/generic-entity-card.js +8 -7
  72. package/dist/components/chat/entity-cards/github-activity-card.d.ts.map +1 -1
  73. package/dist/components/chat/entity-cards/github-activity-card.js +11 -10
  74. package/dist/components/chat/entity-cards/hubspot-ticket-card.d.ts.map +1 -1
  75. package/dist/components/chat/entity-cards/hubspot-ticket-card.js +16 -15
  76. package/dist/components/chat/entity-cards/index.d.ts +1 -1
  77. package/dist/components/chat/entity-cards/index.d.ts.map +1 -1
  78. package/dist/components/chat/entity-cards/index.js +2 -0
  79. package/dist/components/chat/entity-cards/investor-update-card.d.ts.map +1 -1
  80. package/dist/components/chat/entity-cards/investor-update-card.js +12 -11
  81. package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts.map +1 -1
  82. package/dist/components/chat/entity-cards/onboarding-guide-card.js +25 -30
  83. package/dist/components/chat/entity-cards/program-card.d.ts.map +1 -1
  84. package/dist/components/chat/entity-cards/program-card.js +29 -28
  85. package/dist/components/chat/entity-cards/roadmap-card.d.ts.map +1 -1
  86. package/dist/components/chat/entity-cards/roadmap-card.js +37 -39
  87. package/dist/components/chat/entity-cards/slack-message-card.d.ts.map +1 -1
  88. package/dist/components/chat/entity-cards/slack-message-card.js +12 -11
  89. package/dist/components/chat/guide-welcome.js +2 -2
  90. package/dist/components/chat/index.cjs +13 -9
  91. package/dist/components/chat/mingo-archive-list.d.ts.map +1 -1
  92. package/dist/components/chat/mingo-archive-list.js +2 -1
  93. package/dist/components/chat/mingo-chat-history.d.ts +4 -2
  94. package/dist/components/chat/mingo-chat-history.d.ts.map +1 -1
  95. package/dist/components/chat/mingo-chat-history.js +11 -5
  96. package/dist/components/chat/mingo-chat-rail.d.ts.map +1 -1
  97. package/dist/components/chat/mingo-chat-rail.js +2 -1
  98. package/dist/components/chat/mingo-info-card.d.ts.map +1 -1
  99. package/dist/components/chat/mingo-info-card.js +6 -5
  100. package/dist/components/chat/mingo-onboarding-card-skeleton.d.ts +3 -1
  101. package/dist/components/chat/mingo-onboarding-card-skeleton.d.ts.map +1 -1
  102. package/dist/components/chat/mingo-onboarding-card-skeleton.js +12 -12
  103. package/dist/components/chat/model-display.js +4 -4
  104. package/dist/components/chat/msp-organization-card-skeleton.js +5 -5
  105. package/dist/components/chat/quick-action-chip.d.ts +3 -3
  106. package/dist/components/chat/quick-action-chip.d.ts.map +1 -1
  107. package/dist/components/chat/quick-action-chip.js +12 -6
  108. package/dist/components/chat/utils/compact-card-classes.d.ts +4 -4
  109. package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -1
  110. package/dist/components/chat/utils/compact-card-classes.js +2 -2
  111. package/dist/components/contact/index.cjs +17 -15
  112. package/dist/components/content-loading-container.d.ts +1 -1
  113. package/dist/components/content-loading-container.d.ts.map +1 -1
  114. package/dist/components/content-loading-container.js +6 -7
  115. package/dist/components/docs/doc-viewer.d.ts.map +1 -1
  116. package/dist/components/docs/doc-viewer.js +3 -2
  117. package/dist/components/docs/index.cjs +20 -18
  118. package/dist/components/docs/skeletons.d.ts +7 -8
  119. package/dist/components/docs/skeletons.d.ts.map +1 -1
  120. package/dist/components/docs/skeletons.js +62 -61
  121. package/dist/components/embeds/embed-iframe.d.ts +6 -6
  122. package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
  123. package/dist/components/embeds/embed-iframe.js +9 -4
  124. package/dist/components/embeds/index.cjs +19 -15
  125. package/dist/components/embeds/index.d.ts +2 -2
  126. package/dist/components/embeds/index.d.ts.map +1 -1
  127. package/dist/components/embeds/index.js +2 -1
  128. package/dist/components/embeds/linkedin-embed-client.d.ts.map +1 -1
  129. package/dist/components/embeds/linkedin-embed-client.js +7 -6
  130. package/dist/components/embeds/markdown-image.d.ts.map +1 -1
  131. package/dist/components/embeds/markdown-image.js +5 -3
  132. package/dist/components/embeds/og-link-preview.d.ts +19 -18
  133. package/dist/components/embeds/og-link-preview.d.ts.map +1 -1
  134. package/dist/components/embeds/og-link-preview.js +143 -88
  135. package/dist/components/embeds/reddit-embed-client.d.ts.map +1 -1
  136. package/dist/components/embeds/reddit-embed-client.js +10 -9
  137. package/dist/components/embeds/twitter-embed-client.d.ts.map +1 -1
  138. package/dist/components/embeds/twitter-embed-client.js +10 -9
  139. package/dist/components/faq/faq-section.d.ts.map +1 -1
  140. package/dist/components/faq/faq-section.js +9 -5
  141. package/dist/components/faq/index.cjs +18 -16
  142. package/dist/components/features/board/ticket-card-skeleton.js +8 -8
  143. package/dist/components/features/capability-explorer.d.ts +3 -1
  144. package/dist/components/features/capability-explorer.d.ts.map +1 -1
  145. package/dist/components/features/capability-explorer.js +27 -24
  146. package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts +5 -2
  147. package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts.map +1 -1
  148. package/dist/components/features/devices/device-selector/device-selector-skeleton.js +2 -2
  149. package/dist/components/features/devices/device-selector/device-selector.d.ts +1 -1
  150. package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -1
  151. package/dist/components/features/devices/device-selector/device-selector.js +2 -0
  152. package/dist/components/features/devices/device-selector/device-selector.types.d.ts +2 -0
  153. package/dist/components/features/devices/device-selector/device-selector.types.d.ts.map +1 -1
  154. package/dist/components/features/devices/devices-grid.d.ts +3 -1
  155. package/dist/components/features/devices/devices-grid.d.ts.map +1 -1
  156. package/dist/components/features/devices/devices-grid.js +3 -2
  157. package/dist/components/features/devices/devices-panel-view.d.ts +6 -1
  158. package/dist/components/features/devices/devices-panel-view.d.ts.map +1 -1
  159. package/dist/components/features/devices/devices-panel-view.js +4 -1
  160. package/dist/components/features/devices/devices-table-columns.d.ts +3 -1
  161. package/dist/components/features/devices/devices-table-columns.d.ts.map +1 -1
  162. package/dist/components/features/devices/devices-table-columns.js +2 -0
  163. package/dist/components/features/index.cjs +18 -14
  164. package/dist/components/features/logs/logs-table-view.d.ts +3 -1
  165. package/dist/components/features/logs/logs-table-view.d.ts.map +1 -1
  166. package/dist/components/features/logs/logs-table-view.js +2 -2
  167. package/dist/components/features/model-token-rates.d.ts +4 -1
  168. package/dist/components/features/model-token-rates.d.ts.map +1 -1
  169. package/dist/components/features/model-token-rates.js +18 -23
  170. package/dist/components/features/notifications/index.d.ts +2 -2
  171. package/dist/components/features/notifications/index.d.ts.map +1 -1
  172. package/dist/components/features/notifications/index.js +2 -1
  173. package/dist/components/features/notifications/notification-drawer.d.ts.map +1 -1
  174. package/dist/components/features/notifications/notification-drawer.js +9 -16
  175. package/dist/components/features/notifications/notification-tile.d.ts +14 -0
  176. package/dist/components/features/notifications/notification-tile.d.ts.map +1 -1
  177. package/dist/components/features/notifications/notification-tile.js +36 -1
  178. package/dist/components/features/policies/policy-summary-cards.js +2 -2
  179. package/dist/components/features/push-button-selector.d.ts.map +1 -1
  180. package/dist/components/features/push-button-selector.js +12 -7
  181. package/dist/components/features/remote-session/remote-desktop-view.d.ts +4 -1
  182. package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -1
  183. package/dist/components/features/remote-session/remote-desktop-view.js +14 -10
  184. package/dist/components/features/waitlist-form.d.ts.map +1 -1
  185. package/dist/components/features/waitlist-form.js +6 -5
  186. package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -1
  187. package/dist/components/help-center-pages/download-apps-page.js +2 -1
  188. package/dist/components/help-center-pages/index.cjs +127 -119
  189. package/dist/components/help-center-pages/trust-center-page.d.ts +4 -1
  190. package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
  191. package/dist/components/help-center-pages/trust-center-page.js +3 -2
  192. package/dist/components/help-center-pages/trust-center-sections.d.ts +4 -1
  193. package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
  194. package/dist/components/help-center-pages/trust-center-sections.js +5 -2
  195. package/dist/components/index.cjs +70 -112
  196. package/dist/components/index.d.ts +0 -2
  197. package/dist/components/index.d.ts.map +1 -1
  198. package/dist/components/index.js +0 -2
  199. package/dist/components/layout/title-block.d.ts.map +1 -1
  200. package/dist/components/layout/title-block.js +18 -11
  201. package/dist/components/loading/card-skeleton.d.ts +6 -3
  202. package/dist/components/loading/card-skeleton.d.ts.map +1 -1
  203. package/dist/components/loading/card-skeleton.js +7 -27
  204. package/dist/components/loading/category-card-skeleton.d.ts.map +1 -1
  205. package/dist/components/loading/category-card-skeleton.js +2 -4
  206. package/dist/components/loading/category-vendor-selector-skeleton.d.ts +3 -1
  207. package/dist/components/loading/category-vendor-selector-skeleton.d.ts.map +1 -1
  208. package/dist/components/loading/category-vendor-selector-skeleton.js +9 -4
  209. package/dist/components/loading/device-card-skeleton.d.ts +18 -9
  210. package/dist/components/loading/device-card-skeleton.d.ts.map +1 -1
  211. package/dist/components/loading/device-card-skeleton.js +30 -21
  212. package/dist/components/loading/index.d.ts +3 -4
  213. package/dist/components/loading/index.d.ts.map +1 -1
  214. package/dist/components/loading/index.js +6 -29
  215. package/dist/components/loading/loading-region.d.ts +33 -0
  216. package/dist/components/loading/loading-region.d.ts.map +1 -0
  217. package/dist/components/loading/loading-region.js +22 -0
  218. package/dist/components/loading/margin-report-skeleton.d.ts +3 -1
  219. package/dist/components/loading/margin-report-skeleton.d.ts.map +1 -1
  220. package/dist/components/loading/margin-report-skeleton.js +70 -61
  221. package/dist/components/loading/msp-profile-form-skeleton.d.ts +3 -1
  222. package/dist/components/loading/msp-profile-form-skeleton.d.ts.map +1 -1
  223. package/dist/components/loading/msp-profile-form-skeleton.js +6 -5
  224. package/dist/components/loading/organization-card-skeleton.d.ts +3 -1
  225. package/dist/components/loading/organization-card-skeleton.d.ts.map +1 -1
  226. package/dist/components/loading/organization-card-skeleton.js +5 -5
  227. package/dist/components/loading/organization-icon-skeleton.d.ts.map +1 -1
  228. package/dist/components/loading/organization-icon-skeleton.js +2 -1
  229. package/dist/components/loading/page-layout-skeleton.d.ts +21 -6
  230. package/dist/components/loading/page-layout-skeleton.d.ts.map +1 -1
  231. package/dist/components/loading/page-layout-skeleton.js +283 -266
  232. package/dist/components/loading/settings-form-skeleton.d.ts +17 -0
  233. package/dist/components/loading/settings-form-skeleton.d.ts.map +1 -0
  234. package/dist/components/loading/settings-form-skeleton.js +42 -0
  235. package/dist/components/loading/unified-skeleton.d.ts +11 -4
  236. package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
  237. package/dist/components/loading/unified-skeleton.js +14 -89
  238. package/dist/components/loading/wizard-layout-skeleton.d.ts +3 -1
  239. package/dist/components/loading/wizard-layout-skeleton.d.ts.map +1 -1
  240. package/dist/components/loading/wizard-layout-skeleton.js +3 -2
  241. package/dist/components/media-carousel.d.ts.map +1 -1
  242. package/dist/components/media-carousel.js +2 -1
  243. package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
  244. package/dist/components/meeting-scheduler/booking-form.js +14 -8
  245. package/dist/components/meeting-scheduler/context-panel.d.ts.map +1 -1
  246. package/dist/components/meeting-scheduler/context-panel.js +8 -7
  247. package/dist/components/meeting-scheduler/directory.d.ts.map +1 -1
  248. package/dist/components/meeting-scheduler/directory.js +10 -9
  249. package/dist/components/meeting-scheduler/index.cjs +85 -75
  250. package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
  251. package/dist/components/meeting-scheduler/index.js +3 -2
  252. package/dist/components/meeting-scheduler/modal-header.d.ts.map +1 -1
  253. package/dist/components/meeting-scheduler/modal-header.js +8 -7
  254. package/dist/components/meeting-scheduler/slot-picker.d.ts.map +1 -1
  255. package/dist/components/meeting-scheduler/slot-picker.js +4 -3
  256. package/dist/components/navigation/app-header.d.ts.map +1 -1
  257. package/dist/components/navigation/app-header.js +8 -7
  258. package/dist/components/navigation/index.cjs +19 -17
  259. package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -1
  260. package/dist/components/navigation/multi-level-navigation.js +3 -2
  261. package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
  262. package/dist/components/navigation/navigation-sidebar-item.js +3 -2
  263. package/dist/components/onboarding-guides/index.cjs +19 -17
  264. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts +4 -1
  265. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts.map +1 -1
  266. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.js +12 -8
  267. package/dist/components/product-demo/index.cjs +16 -15
  268. package/dist/components/product-demo/product-screen.d.ts.map +1 -1
  269. package/dist/components/product-demo/product-screen.js +4 -4
  270. package/dist/components/profile/ProfileLoadingSkeleton.d.ts +3 -1
  271. package/dist/components/profile/ProfileLoadingSkeleton.d.ts.map +1 -1
  272. package/dist/components/profile/ProfileLoadingSkeleton.js +10 -8
  273. package/dist/components/related-content/index.cjs +7 -5
  274. package/dist/components/related-content/related-content-section.d.ts.map +1 -1
  275. package/dist/components/related-content/related-content-section.js +3 -2
  276. package/dist/components/shared/delivery/delivery-table.d.ts.map +1 -1
  277. package/dist/components/shared/delivery/delivery-table.js +8 -7
  278. package/dist/components/shared/detail-page-skeleton.d.ts +5 -1
  279. package/dist/components/shared/detail-page-skeleton.d.ts.map +1 -1
  280. package/dist/components/shared/detail-page-skeleton.js +18 -14
  281. package/dist/components/shared/dev-section/dev-card-row.d.ts +3 -1
  282. package/dist/components/shared/dev-section/dev-card-row.d.ts.map +1 -1
  283. package/dist/components/shared/dev-section/dev-card-row.js +22 -9
  284. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
  285. package/dist/components/shared/legal-document/legal-document-page.js +8 -7
  286. package/dist/components/shared/onboarding/onboarding-step-card.d.ts.map +1 -1
  287. package/dist/components/shared/onboarding/onboarding-step-card.js +3 -2
  288. package/dist/components/shared/onboarding/onboarding-walkthrough.d.ts.map +1 -1
  289. package/dist/components/shared/onboarding/onboarding-walkthrough.js +2 -1
  290. package/dist/components/shared/product-release/index.d.ts +0 -1
  291. package/dist/components/shared/product-release/index.d.ts.map +1 -1
  292. package/dist/components/shared/product-release/index.js +1 -3
  293. package/dist/components/shared/product-release/product-release-card-skeleton.d.ts.map +1 -1
  294. package/dist/components/shared/product-release/product-release-card-skeleton.js +21 -20
  295. package/dist/components/shared/product-release/product-releases-view.d.ts.map +1 -1
  296. package/dist/components/shared/product-release/product-releases-view.js +2 -1
  297. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts +6 -13
  298. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts.map +1 -1
  299. package/dist/components/shared/roadmap/roadmap-grid-skeleton.js +13 -25
  300. package/dist/components/tickets/help-center-create-form.d.ts +4 -1
  301. package/dist/components/tickets/help-center-create-form.d.ts.map +1 -1
  302. package/dist/components/tickets/help-center-create-form.js +38 -26
  303. package/dist/components/tickets/index.cjs +22 -20
  304. package/dist/components/tickets/ticket-center.d.ts.map +1 -1
  305. package/dist/components/tickets/ticket-center.js +13 -10
  306. package/dist/components/tickets/ticket-detail-drawer.d.ts.map +1 -1
  307. package/dist/components/tickets/ticket-detail-drawer.js +2 -1
  308. package/dist/components/ui/admin-form-drawer.d.ts.map +1 -1
  309. package/dist/components/ui/admin-form-drawer.js +6 -8
  310. package/dist/components/ui/admin-form-modal.d.ts.map +1 -1
  311. package/dist/components/ui/admin-form-modal.js +12 -11
  312. package/dist/components/ui/analyzing-state.d.ts +1 -1
  313. package/dist/components/ui/analyzing-state.d.ts.map +1 -1
  314. package/dist/components/ui/analyzing-state.js +4 -10
  315. package/dist/components/ui/content-loader.d.ts +5 -1
  316. package/dist/components/ui/content-loader.d.ts.map +1 -1
  317. package/dist/components/ui/content-loader.js +27 -23
  318. package/dist/components/ui/dashboard-info-card.d.ts +17 -3
  319. package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
  320. package/dist/components/ui/dashboard-info-card.js +30 -10
  321. package/dist/components/ui/data-attribution.d.ts +6 -0
  322. package/dist/components/ui/data-attribution.d.ts.map +1 -1
  323. package/dist/components/ui/data-attribution.js +12 -1
  324. package/dist/components/ui/data-table/data-table-body.d.ts +6 -1
  325. package/dist/components/ui/data-table/data-table-body.d.ts.map +1 -1
  326. package/dist/components/ui/data-table/data-table-body.js +3 -1
  327. package/dist/components/ui/data-table/data-table-infinite-footer.d.ts.map +1 -1
  328. package/dist/components/ui/data-table/data-table-infinite-footer.js +3 -1
  329. package/dist/components/ui/data-table/data-table-skeleton.d.ts.map +1 -1
  330. package/dist/components/ui/data-table/data-table-skeleton.js +7 -5
  331. package/dist/components/ui/feature-card.d.ts.map +1 -1
  332. package/dist/components/ui/feature-card.js +7 -9
  333. package/dist/components/ui/file-manager/file-manager-skeleton.d.ts +3 -1
  334. package/dist/components/ui/file-manager/file-manager-skeleton.d.ts.map +1 -1
  335. package/dist/components/ui/file-manager/file-manager-skeleton.js +27 -21
  336. package/dist/components/ui/file-manager/file-manager-table.js +10 -10
  337. package/dist/components/ui/file-manager/index.cjs +45 -36
  338. package/dist/components/ui/filter-modal.d.ts.map +1 -1
  339. package/dist/components/ui/filter-modal.js +5 -5
  340. package/dist/components/ui/filter-pill-row.d.ts +10 -0
  341. package/dist/components/ui/filter-pill-row.d.ts.map +1 -1
  342. package/dist/components/ui/filter-pill-row.js +8 -1
  343. package/dist/components/ui/index.cjs +19 -28
  344. package/dist/components/ui/index.d.ts +0 -1
  345. package/dist/components/ui/index.d.ts.map +1 -1
  346. package/dist/components/ui/index.js +0 -1
  347. package/dist/components/ui/layout-hold.d.ts +5 -4
  348. package/dist/components/ui/layout-hold.d.ts.map +1 -1
  349. package/dist/components/ui/layout-hold.js +20 -29
  350. package/dist/components/ui/markdown/base-components.js +1 -1
  351. package/dist/components/ui/page-actions.d.ts.map +1 -1
  352. package/dist/components/ui/page-actions.js +6 -8
  353. package/dist/components/ui/photo-wall.d.ts.map +1 -1
  354. package/dist/components/ui/photo-wall.js +11 -18
  355. package/dist/components/ui/query-report-table/query-report-table-skeleton.d.ts +1 -1
  356. package/dist/components/ui/query-report-table/query-report-table-skeleton.d.ts.map +1 -1
  357. package/dist/components/ui/query-report-table/query-report-table-skeleton.js +28 -18
  358. package/dist/components/ui/query-report-table/query-report-table.d.ts +1 -1
  359. package/dist/components/ui/query-report-table/query-report-table.d.ts.map +1 -1
  360. package/dist/components/ui/query-report-table/query-report-table.js +3 -1
  361. package/dist/components/ui/query-report-table/types.d.ts +4 -0
  362. package/dist/components/ui/query-report-table/types.d.ts.map +1 -1
  363. package/dist/components/ui/skeleton-surface.d.ts +7 -0
  364. package/dist/components/ui/skeleton-surface.d.ts.map +1 -0
  365. package/dist/components/ui/skeleton-surface.js +5 -0
  366. package/dist/components/ui/table/table-skeleton.d.ts.map +1 -1
  367. package/dist/components/ui/table/table-skeleton.js +11 -13
  368. package/dist/components/ui/test-run.d.ts +6 -4
  369. package/dist/components/ui/test-run.d.ts.map +1 -1
  370. package/dist/components/ui/test-run.js +9 -5
  371. package/dist/{devices-V55KQCAL.cjs → devices-FVXAGKVX.cjs} +17 -15
  372. package/dist/{embeddable-chat-5CDR4I6E.cjs → embeddable-chat-SNYQSMS7.cjs} +79 -77
  373. package/dist/index.cjs +24 -31
  374. package/dist/{knowledge-S3VGDRKR.cjs → knowledge-ZL3ZHBSL.cjs} +17 -15
  375. package/dist/{logs-K5E2BGZE.cjs → logs-KQCWDIOB.cjs} +24 -22
  376. package/dist/{policies-BWU4FRFE.cjs → policies-ARDCZ3CT.cjs} +20 -18
  377. package/dist/{remote-session-IYT4LWJC.cjs → remote-session-ZKP2W3IS.cjs} +9 -7
  378. package/dist/{scripts-25UPGXZU.cjs → scripts-ZAMVWCY4.cjs} +23 -21
  379. package/dist/{software-update-F6UC7ULZ.cjs → software-update-6F7BIYS3.cjs} +20 -18
  380. package/dist/{tickets-board-4MT6ZB4F.cjs → tickets-board-BNW4AYFL.cjs} +11 -10
  381. package/dist/utils/index.cjs +49 -48
  382. package/dist/utils/markdown-to-plain.d.ts.map +1 -1
  383. package/dist/utils/markdown-to-plain.js +12 -7
  384. package/package.json +7 -2
  385. package/src/components/categories-cart.tsx +2 -4
  386. package/src/components/chat/chat-container.tsx +4 -4
  387. package/src/components/chat/chat-context-picker.tsx +3 -2
  388. package/src/components/chat/chat-message-row.tsx +6 -7
  389. package/src/components/chat/chat-message-skeleton.tsx +11 -6
  390. package/src/components/chat/chat-sidebar-skeleton.tsx +4 -3
  391. package/src/components/chat/chat-top-navigation.tsx +4 -4
  392. package/src/components/chat/context-items-list.tsx +9 -3
  393. package/src/components/chat/entity-cards/admin-content-card-grid.tsx +65 -18
  394. package/src/components/chat/entity-cards/admin-content-card.tsx +2 -1
  395. package/src/components/chat/entity-cards/blog-card.tsx +13 -12
  396. package/src/components/chat/entity-cards/campaign-card-admin.tsx +5 -4
  397. package/src/components/chat/entity-cards/case-study-card.tsx +19 -18
  398. package/src/components/chat/entity-cards/chat-ticket-item.tsx +5 -5
  399. package/src/components/chat/entity-cards/customer-interview-card.tsx +15 -14
  400. package/src/components/chat/entity-cards/data-room-doc-card.tsx +7 -6
  401. package/src/components/chat/entity-cards/design-doc-card.tsx +0 -2
  402. package/src/components/chat/entity-cards/generic-entity-card.tsx +8 -7
  403. package/src/components/chat/entity-cards/github-activity-card.tsx +11 -10
  404. package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +16 -15
  405. package/src/components/chat/entity-cards/index.ts +2 -0
  406. package/src/components/chat/entity-cards/investor-update-card.tsx +12 -11
  407. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +21 -22
  408. package/src/components/chat/entity-cards/program-card.tsx +29 -28
  409. package/src/components/chat/entity-cards/roadmap-card.tsx +22 -23
  410. package/src/components/chat/entity-cards/slack-message-card.tsx +12 -11
  411. package/src/components/chat/guide-welcome.tsx +2 -2
  412. package/src/components/chat/mingo-archive-list.tsx +2 -1
  413. package/src/components/chat/mingo-chat-history.tsx +18 -9
  414. package/src/components/chat/mingo-chat-rail.tsx +2 -1
  415. package/src/components/chat/mingo-info-card.tsx +6 -5
  416. package/src/components/chat/mingo-onboarding-card-skeleton.tsx +15 -13
  417. package/src/components/chat/model-display.tsx +4 -4
  418. package/src/components/chat/msp-organization-card-skeleton.tsx +5 -5
  419. package/src/components/chat/quick-action-chip.tsx +17 -14
  420. package/src/components/chat/utils/compact-card-classes.ts +4 -5
  421. package/src/components/content-loading-container.tsx +7 -8
  422. package/src/components/docs/doc-viewer.tsx +3 -2
  423. package/src/components/docs/skeletons.tsx +64 -63
  424. package/src/components/embeds/embed-iframe.tsx +16 -9
  425. package/src/components/embeds/index.ts +2 -2
  426. package/src/components/embeds/linkedin-embed-client.tsx +7 -6
  427. package/src/components/embeds/markdown-image.tsx +5 -3
  428. package/src/components/embeds/og-link-preview.tsx +162 -79
  429. package/src/components/embeds/reddit-embed-client.tsx +10 -9
  430. package/src/components/embeds/twitter-embed-client.tsx +10 -9
  431. package/src/components/faq/faq-section.tsx +13 -6
  432. package/src/components/features/board/ticket-card-skeleton.tsx +8 -8
  433. package/src/components/features/capability-explorer.tsx +61 -30
  434. package/src/components/features/devices/device-selector/device-selector-skeleton.tsx +9 -3
  435. package/src/components/features/devices/device-selector/device-selector.tsx +2 -0
  436. package/src/components/features/devices/device-selector/device-selector.types.ts +2 -0
  437. package/src/components/features/devices/devices-grid.tsx +4 -1
  438. package/src/components/features/devices/devices-panel-view.tsx +9 -1
  439. package/src/components/features/devices/devices-table-columns.tsx +4 -0
  440. package/src/components/features/logs/logs-table-view.tsx +4 -2
  441. package/src/components/features/model-token-rates.tsx +27 -24
  442. package/src/components/features/notifications/index.ts +2 -2
  443. package/src/components/features/notifications/notification-drawer.tsx +7 -10
  444. package/src/components/features/notifications/notification-tile.tsx +57 -0
  445. package/src/components/features/policies/policy-summary-cards.tsx +2 -2
  446. package/src/components/features/push-button-selector.tsx +20 -11
  447. package/src/components/features/remote-session/remote-desktop-view.tsx +26 -16
  448. package/src/components/features/waitlist-form.tsx +6 -5
  449. package/src/components/help-center-pages/download-apps-page.tsx +3 -2
  450. package/src/components/help-center-pages/trust-center-page.tsx +6 -2
  451. package/src/components/help-center-pages/trust-center-sections.tsx +9 -3
  452. package/src/components/index.ts +0 -2
  453. package/src/components/layout/title-block.tsx +17 -15
  454. package/src/components/loading/card-skeleton.tsx +14 -46
  455. package/src/components/loading/category-card-skeleton.tsx +2 -4
  456. package/src/components/loading/category-vendor-selector-skeleton.tsx +12 -5
  457. package/src/components/loading/device-card-skeleton.tsx +58 -51
  458. package/src/components/loading/index.ts +5 -19
  459. package/src/components/loading/loading-region.tsx +60 -0
  460. package/src/components/loading/margin-report-skeleton.tsx +45 -34
  461. package/src/components/loading/msp-profile-form-skeleton.tsx +9 -6
  462. package/src/components/loading/organization-card-skeleton.tsx +8 -6
  463. package/src/components/loading/organization-icon-skeleton.tsx +3 -2
  464. package/src/components/loading/page-layout-skeleton.tsx +162 -133
  465. package/src/components/loading/settings-form-skeleton.tsx +52 -0
  466. package/src/components/loading/unified-skeleton.tsx +26 -71
  467. package/src/components/loading/wizard-layout-skeleton.tsx +6 -3
  468. package/src/components/media-carousel.tsx +2 -1
  469. package/src/components/meeting-scheduler/booking-form.tsx +10 -7
  470. package/src/components/meeting-scheduler/context-panel.tsx +8 -7
  471. package/src/components/meeting-scheduler/directory.tsx +10 -9
  472. package/src/components/meeting-scheduler/index.tsx +5 -4
  473. package/src/components/meeting-scheduler/modal-header.tsx +8 -7
  474. package/src/components/meeting-scheduler/slot-picker.tsx +4 -3
  475. package/src/components/navigation/app-header.tsx +8 -7
  476. package/src/components/navigation/multi-level-navigation.tsx +3 -2
  477. package/src/components/navigation/navigation-sidebar-item.tsx +3 -2
  478. package/src/components/onboarding-guides/onboarding-guides-catalog-skeleton.tsx +17 -10
  479. package/src/components/product-demo/product-screen.tsx +4 -4
  480. package/src/components/profile/ProfileLoadingSkeleton.tsx +13 -9
  481. package/src/components/related-content/related-content-section.tsx +5 -4
  482. package/src/components/shared/delivery/delivery-table.tsx +8 -7
  483. package/src/components/shared/detail-page-skeleton.tsx +22 -14
  484. package/src/components/shared/dev-section/dev-card-row.tsx +23 -10
  485. package/src/components/shared/legal-document/legal-document-page.tsx +8 -7
  486. package/src/components/shared/onboarding/onboarding-step-card.tsx +3 -2
  487. package/src/components/shared/onboarding/onboarding-walkthrough.tsx +2 -1
  488. package/src/components/shared/product-release/index.ts +0 -1
  489. package/src/components/shared/product-release/product-release-card-skeleton.tsx +23 -25
  490. package/src/components/shared/product-release/product-releases-view.tsx +3 -2
  491. package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +14 -56
  492. package/src/components/tickets/help-center-create-form.tsx +23 -12
  493. package/src/components/tickets/ticket-center.tsx +17 -11
  494. package/src/components/tickets/ticket-detail-drawer.tsx +3 -2
  495. package/src/components/ui/admin-form-drawer.tsx +7 -7
  496. package/src/components/ui/admin-form-modal.tsx +9 -8
  497. package/src/components/ui/analyzing-state.tsx +5 -8
  498. package/src/components/ui/content-loader.tsx +31 -23
  499. package/src/components/ui/dashboard-info-card.tsx +81 -20
  500. package/src/components/ui/data-attribution.tsx +18 -0
  501. package/src/components/ui/data-table/data-table-body.tsx +9 -2
  502. package/src/components/ui/data-table/data-table-infinite-footer.tsx +4 -2
  503. package/src/components/ui/data-table/data-table-skeleton.tsx +8 -5
  504. package/src/components/ui/feature-card.tsx +27 -11
  505. package/src/components/ui/file-manager/file-manager-skeleton.tsx +30 -22
  506. package/src/components/ui/file-manager/file-manager-table.tsx +10 -10
  507. package/src/components/ui/filter-modal.tsx +5 -5
  508. package/src/components/ui/filter-pill-row.tsx +19 -0
  509. package/src/components/ui/index.ts +0 -1
  510. package/src/components/ui/layout-hold.tsx +30 -38
  511. package/src/components/ui/markdown/base-components.tsx +1 -1
  512. package/src/components/ui/page-actions.tsx +10 -8
  513. package/src/components/ui/photo-wall.tsx +4 -7
  514. package/src/components/ui/query-report-table/query-report-table-skeleton.tsx +13 -7
  515. package/src/components/ui/query-report-table/query-report-table.tsx +2 -0
  516. package/src/components/ui/query-report-table/types.ts +4 -0
  517. package/src/components/ui/skeleton-surface.ts +6 -0
  518. package/src/components/ui/table/table-skeleton.tsx +11 -13
  519. package/src/components/ui/test-run.tsx +30 -22
  520. package/src/styles/ods-colors.css +2 -2
  521. package/src/utils/markdown-to-plain.ts +25 -16
  522. package/dist/chunk-5M5C6UV4.cjs +0 -125
  523. package/dist/components/dynamic-skeleton.d.ts +0 -108
  524. package/dist/components/dynamic-skeleton.d.ts.map +0 -1
  525. package/dist/components/dynamic-skeleton.js +0 -221
  526. package/dist/components/loading/content-skeleton.d.ts +0 -73
  527. package/dist/components/loading/content-skeleton.d.ts.map +0 -1
  528. package/dist/components/loading/content-skeleton.js +0 -217
  529. package/dist/components/loading/users-grid-skeleton.d.ts +0 -7
  530. package/dist/components/loading/users-grid-skeleton.d.ts.map +0 -1
  531. package/dist/components/loading/users-grid-skeleton.js +0 -13
  532. package/dist/components/shared/product-release/release-detail-skeleton.d.ts +0 -2
  533. package/dist/components/shared/product-release/release-detail-skeleton.d.ts.map +0 -1
  534. package/dist/components/shared/product-release/release-detail-skeleton.js +0 -9
  535. package/dist/components/skeleton.d.ts +0 -4
  536. package/dist/components/skeleton.d.ts.map +0 -1
  537. package/dist/components/skeleton.js +0 -9
  538. package/dist/components/ui/skeleton.d.ts +0 -44
  539. package/dist/components/ui/skeleton.d.ts.map +0 -1
  540. package/dist/components/ui/skeleton.js +0 -103
  541. package/dist/components/vendor-page-skeleton.d.ts +0 -2
  542. package/dist/components/vendor-page-skeleton.d.ts.map +0 -1
  543. package/dist/components/vendor-page-skeleton.js +0 -9
  544. package/src/components/dynamic-skeleton.tsx +0 -365
  545. package/src/components/loading/content-skeleton.tsx +0 -374
  546. package/src/components/loading/users-grid-skeleton.tsx +0 -36
  547. package/src/components/shared/product-release/release-detail-skeleton.tsx +0 -7
  548. package/src/components/skeleton.tsx +0 -8
  549. package/src/components/ui/skeleton.tsx +0 -173
  550. package/src/components/vendor-page-skeleton.tsx +0 -7
@@ -10,10 +10,10 @@ var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
10
10
 
11
11
 
12
12
 
13
- var _chunkHNLI4OU5cjs = require('./chunk-HNLI4OU5.cjs');
13
+ var _chunkC6LPOYDMcjs = require('./chunk-C6LPOYDM.cjs');
14
14
  require('./chunk-LU7TD6QS.cjs');
15
- require('./chunk-PSIKUDUV.cjs');
16
- require('./chunk-B27QEHYR.cjs');
15
+ require('./chunk-LVO7FALW.cjs');
16
+ require('./chunk-P6F6PHVK.cjs');
17
17
  require('./chunk-ZOZR3QI2.cjs');
18
18
  require('./chunk-OMV5S5PI.cjs');
19
19
  require('./chunk-KHPX3KU4.cjs');
@@ -1818,13 +1818,14 @@ require('./chunk-ASMNNSUQ.cjs');
1818
1818
  require('./chunk-KTPR66EE.cjs');
1819
1819
  require('./chunk-DGFDBPO7.cjs');
1820
1820
  require('./chunk-HOTM4UM6.cjs');
1821
- require('./chunk-L2RMTGOK.cjs');
1821
+ require('./chunk-MGF3FUKD.cjs');
1822
1822
  require('./chunk-Z74QE57T.cjs');
1823
1823
  require('./chunk-XZJCBIYR.cjs');
1824
1824
  require('./chunk-2QMBXGMQ.cjs');
1825
1825
  require('./chunk-V45KLJQP.cjs');
1826
1826
  require('./chunk-3LU4UFPS.cjs');
1827
- require('./chunk-5M5C6UV4.cjs');
1827
+ require('./chunk-RB6BSE3O.cjs');
1828
+ require('./chunk-2YXOD2KL.cjs');
1828
1829
  require('./chunk-3ATAYP36.cjs');
1829
1830
 
1830
1831
  // src/components/product-demo/screens/tickets-board.tsx
@@ -1839,7 +1840,7 @@ function buildTicketsBoardFixture(cast) {
1839
1840
  const dana = assignee(cast.person("dana"));
1840
1841
  const alex = assignee(cast.person("alex"));
1841
1842
  return [
1842
- _chunkHNLI4OU5cjs.columnFromTicketStatus.call(void 0, "ACTIVE", [
1843
+ _chunkC6LPOYDMcjs.columnFromTicketStatus.call(void 0, "ACTIVE", [
1843
1844
  ticket("tk-1051", "Printer offline at the front desk", "ACTIVE", {
1844
1845
  ticketNumber: "1051",
1845
1846
  agent: "fae",
@@ -1857,7 +1858,7 @@ function buildTicketsBoardFixture(cast) {
1857
1858
  tags: ["onboarding"]
1858
1859
  })
1859
1860
  ]),
1860
- _chunkHNLI4OU5cjs.columnFromTicketStatus.call(void 0, "TECH_REQUIRED", [
1861
+ _chunkC6LPOYDMcjs.columnFromTicketStatus.call(void 0, "TECH_REQUIRED", [
1861
1862
  ticket("tk-1049", "Acrobat Pro for Maya", "TECH_REQUIRED", {
1862
1863
  ticketNumber: "1049",
1863
1864
  agent: "fae",
@@ -1881,7 +1882,7 @@ function buildTicketsBoardFixture(cast) {
1881
1882
  escalatedByUser: true
1882
1883
  })
1883
1884
  ]),
1884
- _chunkHNLI4OU5cjs.columnFromTicketStatus.call(void 0, "ON_HOLD", [
1885
+ _chunkC6LPOYDMcjs.columnFromTicketStatus.call(void 0, "ON_HOLD", [
1885
1886
  ticket("tk-1046", "Replace the conference room display", "ON_HOLD", {
1886
1887
  ticketNumber: "1046",
1887
1888
  organizationName: _chunkDKOLQPE7cjs.DEMO_ORGANIZATIONS.acme.name,
@@ -1890,7 +1891,7 @@ function buildTicketsBoardFixture(cast) {
1890
1891
  activity: { kind: "waiting-external" }
1891
1892
  })
1892
1893
  ]),
1893
- _chunkHNLI4OU5cjs.columnFromTicketStatus.call(void 0,
1894
+ _chunkC6LPOYDMcjs.columnFromTicketStatus.call(void 0,
1894
1895
  "RESOLVED",
1895
1896
  [
1896
1897
  ticket("tk-1048", "Slow laptop", "RESOLVED", {
@@ -1926,7 +1927,7 @@ function TicketsBoardScreen({ compact = false }) {
1926
1927
  const cast = _chunkSTEJZPIOcjs.useProductDemoCast.call(void 0, );
1927
1928
  const board = _react.useMemo.call(void 0, () => buildTicketsBoardFixture(cast), [cast]);
1928
1929
  const columns = compact ? board.filter((column) => column.id !== "ON_HOLD") : board;
1929
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg p-[var(--spacing-system-m)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHNLI4OU5cjs.Board, { columns, onChange: noop, initialCollapsed: compact ? void 0 : FOLDED }) });
1930
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg p-[var(--spacing-system-m)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkC6LPOYDMcjs.Board, { columns, onChange: noop, initialCollapsed: compact ? void 0 : FOLDED }) });
1930
1931
  }
1931
1932
 
1932
1933
 
@@ -6,21 +6,18 @@ var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var libphonenumberJs = require('libphonenumber-js');
8
8
  var lucideReact = require('lucide-react');
9
+ var hastUtilRaw = require('hast-util-raw');
9
10
  var hastUtilToText = require('hast-util-to-text');
10
- var rehypeRaw = require('rehype-raw');
11
- var remark = require('remark');
12
- var remarkBreaks = require('remark-breaks');
13
- var remarkGfm = require('remark-gfm');
14
- var remarkRehype = require('remark-rehype');
11
+ var mdastUtilFromMarkdown = require('mdast-util-from-markdown');
12
+ var mdastUtilGfm = require('mdast-util-gfm');
13
+ var mdastUtilNewlineToBreak = require('mdast-util-newline-to-break');
14
+ var mdastUtilToHast = require('mdast-util-to-hast');
15
+ var micromarkExtensionGfm = require('micromark-extension-gfm');
15
16
  var unistUtilVisit = require('unist-util-visit');
16
17
 
17
18
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
18
19
 
19
20
  var React__default = /*#__PURE__*/_interopDefault(React);
20
- var rehypeRaw__default = /*#__PURE__*/_interopDefault(rehypeRaw);
21
- var remarkBreaks__default = /*#__PURE__*/_interopDefault(remarkBreaks);
22
- var remarkGfm__default = /*#__PURE__*/_interopDefault(remarkGfm);
23
- var remarkRehype__default = /*#__PURE__*/_interopDefault(remarkRehype);
24
21
 
25
22
  var __defProp = Object.defineProperty;
26
23
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -82622,9 +82619,9 @@ function createLocalStorageAdapter(options) {
82622
82619
  const storage = getStorage(backend);
82623
82620
  if (!storage) return null;
82624
82621
  try {
82625
- const raw = storage.getItem(resolveKey());
82626
- if (!raw) return null;
82627
- const parsed = JSON.parse(raw);
82622
+ const raw2 = storage.getItem(resolveKey());
82623
+ if (!raw2) return null;
82624
+ const parsed = JSON.parse(raw2);
82628
82625
  if (options.validate && !options.validate(parsed)) return null;
82629
82626
  return parsed;
82630
82627
  } catch (err) {
@@ -83809,10 +83806,10 @@ async function readLeadingDecisionFrame(response) {
83809
83806
  throw new Error("readLeadingDecisionFrame: text-body sentinel arrived before leading frame");
83810
83807
  }
83811
83808
  if (nullIdx !== -1) {
83812
- const raw = buffer.slice(0, nullIdx);
83809
+ const raw2 = buffer.slice(0, nullIdx);
83813
83810
  let parsed;
83814
83811
  try {
83815
- parsed = JSON.parse(raw);
83812
+ parsed = JSON.parse(raw2);
83816
83813
  } catch (err) {
83817
83814
  throw new Error(`readLeadingDecisionFrame: leading JSON parse failed: ${err.message}`);
83818
83815
  }
@@ -83915,11 +83912,11 @@ function buildAutoContinuationDirective(toolName, opts = {}) {
83915
83912
  }
83916
83913
 
83917
83914
  // src/components/chat/utils/flatten-assistant-content.ts
83918
- function flattenAssistantContent(raw) {
83919
- if (typeof raw === "string") return raw;
83920
- if (!Array.isArray(raw)) return "";
83915
+ function flattenAssistantContent(raw2) {
83916
+ if (typeof raw2 === "string") return raw2;
83917
+ if (!Array.isArray(raw2)) return "";
83921
83918
  const parts = [];
83922
- for (const seg of raw) {
83919
+ for (const seg of raw2) {
83923
83920
  if (seg && typeof seg === "object" && seg.type === "text") {
83924
83921
  const t = seg.text;
83925
83922
  if (typeof t === "string" && t.length > 0) parts.push(t);
@@ -83933,8 +83930,8 @@ var SCROLL_ANCHOR = { TOP: "top", BOTTOM: "bottom" };
83933
83930
 
83934
83931
  // src/components/chat/utils/scroll-anchor.ts
83935
83932
  var SCROLL_ANCHOR_WIRE_KEY = "scrollAnchor";
83936
- function parseScrollAnchor(raw) {
83937
- return raw === SCROLL_ANCHOR.TOP || raw === SCROLL_ANCHOR.BOTTOM ? raw : null;
83933
+ function parseScrollAnchor(raw2) {
83934
+ return raw2 === SCROLL_ANCHOR.TOP || raw2 === SCROLL_ANCHOR.BOTTOM ? raw2 : null;
83938
83935
  }
83939
83936
 
83940
83937
  // src/components/chat/utils/slash-dispatch-utils.ts
@@ -83943,10 +83940,10 @@ var WIRE_ID_REGEX = /^[A-Za-z0-9._:/-]+$/;
83943
83940
  var WIRE_TABLE_ID_MAX = 60;
83944
83941
  var WIRE_ID_MAX = 200;
83945
83942
  var WIRE_QUERY_MAX = 2e3;
83946
- function parseWireCommandOverride(raw) {
83947
- if (!raw || typeof raw !== "object") return null;
83943
+ function parseWireCommandOverride(raw2) {
83944
+ if (!raw2 || typeof raw2 !== "object") return null;
83948
83945
  const out = {};
83949
- const r = raw;
83946
+ const r = raw2;
83950
83947
  if (r.entityIdFilter && typeof r.entityIdFilter === "object") {
83951
83948
  const f = r.entityIdFilter;
83952
83949
  if (typeof f.tableId === "string" && f.tableId.length > 0 && f.tableId.length <= WIRE_TABLE_ID_MAX && WIRE_TABLE_ID_REGEX.test(f.tableId) && typeof f.id === "string" && f.id.length > 0 && f.id.length <= WIRE_ID_MAX && WIRE_ID_REGEX.test(f.id)) {
@@ -84277,8 +84274,8 @@ function scrollElementIntoView(target, options = {}) {
84277
84274
  };
84278
84275
  const computeTarget = () => {
84279
84276
  const offset = Math.max(headerOffset, declaredScrollMarginTop(target));
84280
- const raw = container ? container.scrollTop + (target.getBoundingClientRect().top - container.getBoundingClientRect().top) - offset : target.getBoundingClientRect().top + window.scrollY - offset;
84281
- const adjusted = adjustTargetY ? adjustTargetY(raw) : raw;
84277
+ const raw2 = container ? container.scrollTop + (target.getBoundingClientRect().top - container.getBoundingClientRect().top) - offset : target.getBoundingClientRect().top + window.scrollY - offset;
84278
+ const adjusted = adjustTargetY ? adjustTargetY(raw2) : raw2;
84282
84279
  const maxScroll = container ? Math.max(0, container.scrollHeight - container.clientHeight) : Math.max(0, document.documentElement.scrollHeight - window.innerHeight);
84283
84280
  return Math.min(Math.max(0, adjusted), maxScroll);
84284
84281
  };
@@ -84421,14 +84418,14 @@ function scanHeadings(content, options = {}) {
84421
84418
  }
84422
84419
  if (includeRawHtml && line.indexOf("<") !== -1) {
84423
84420
  RAW_HEADING_RE.lastIndex = 0;
84424
- let raw;
84421
+ let raw2;
84425
84422
  let matched = false;
84426
- while ((raw = RAW_HEADING_RE.exec(line)) !== null) {
84423
+ while ((raw2 = RAW_HEADING_RE.exec(line)) !== null) {
84427
84424
  matched = true;
84428
84425
  out.push({
84429
84426
  line: i + 1,
84430
- level: Number(raw[1]),
84431
- text: raw[2].replace(/<[^>]*>/g, "").trim()
84427
+ level: Number(raw2[1]),
84428
+ text: raw2[2].replace(/<[^>]*>/g, "").trim()
84432
84429
  });
84433
84430
  }
84434
84431
  if (matched) {
@@ -84466,8 +84463,8 @@ function createHeadingIdDeduper() {
84466
84463
  }
84467
84464
 
84468
84465
  // src/utils/anchor-id.ts
84469
- function normalizeAnchorId(raw) {
84470
- return slugifyHeadingText(raw).replace(/-+/g, "-").replace(/^-+|-+$/g, "");
84466
+ function normalizeAnchorId(raw2) {
84467
+ return slugifyHeadingText(raw2).replace(/-+/g, "-").replace(/^-+|-+$/g, "");
84471
84468
  }
84472
84469
  var HEADING_SELECTOR = "h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]";
84473
84470
  var DUPLICATE_SUFFIX_RE = /^(.+)-(\d+)$/;
@@ -85077,9 +85074,9 @@ function sanitizeRescueValues(values) {
85077
85074
  if (!values || typeof values !== "object") return out;
85078
85075
  for (const key of FORM_RESCUE_VALUE_FIELDS) {
85079
85076
  if (isExcludedRescueField(key)) continue;
85080
- const raw = values[key];
85081
- if (typeof raw !== "string") continue;
85082
- const trimmed = raw.trim().slice(0, FORM_RESCUE_MAX_VALUE_CHARS);
85077
+ const raw2 = values[key];
85078
+ if (typeof raw2 !== "string") continue;
85079
+ const trimmed = raw2.trim().slice(0, FORM_RESCUE_MAX_VALUE_CHARS);
85083
85080
  if (trimmed) out[key] = trimmed;
85084
85081
  }
85085
85082
  return out;
@@ -85367,11 +85364,15 @@ function formatMarkdownLink({ text, url, rel }) {
85367
85364
  function stripInlineMarkdown(s) {
85368
85365
  return s.replace(/\[([^\]]+)\]\([^)]+\)/g, "$1").replace(/\*\*([^*]+)\*\*/g, "$1").replace(/\*([^*]+)\*/g, "$1").replace(/`([^`]+)`/g, "$1");
85369
85366
  }
85370
- var toHtmlTree = remark.remark().use(remarkGfm__default.default).use(remarkBreaks__default.default).use(remarkRehype__default.default, { allowDangerousHtml: true }).use(rehypeRaw__default.default);
85371
85367
  var NOT_PROSE = /* @__PURE__ */ new Set(["pre", "img"]);
85372
85368
  var TABLE_SECTIONS = /* @__PURE__ */ new Set(["thead", "tbody", "tfoot"]);
85369
+ function htmlTree(markdown) {
85370
+ const mdast = mdastUtilFromMarkdown.fromMarkdown(markdown, { extensions: [micromarkExtensionGfm.gfm()], mdastExtensions: [mdastUtilGfm.gfmFromMarkdown()] });
85371
+ mdastUtilNewlineToBreak.newlineToBreak(mdast);
85372
+ return hastUtilRaw.raw(mdastUtilToHast.toHast(mdast, { allowDangerousHtml: true }));
85373
+ }
85373
85374
  function proseTree(markdown) {
85374
- const tree = toHtmlTree.runSync(toHtmlTree.parse(markdown));
85375
+ const tree = htmlTree(markdown);
85375
85376
  unistUtilVisit.visit(tree, "element", (node, index, parent) => {
85376
85377
  if (NOT_PROSE.has(node.tagName) && parent && index !== void 0) {
85377
85378
  parent.children.splice(index, 1);
@@ -85676,12 +85677,12 @@ async function fileContentKey(file) {
85676
85677
  }
85677
85678
 
85678
85679
  // src/utils/search-params.ts
85679
- function positiveInt(raw, fallback, { min = 1, max } = {}) {
85680
+ function positiveInt(raw2, fallback, { min = 1, max } = {}) {
85680
85681
  const capped = (v) => max == null ? v : Math.min(v, max);
85681
- if (raw === null || raw === void 0 || raw === "") {
85682
+ if (raw2 === null || raw2 === void 0 || raw2 === "") {
85682
85683
  return typeof fallback === "number" ? capped(fallback) : fallback;
85683
85684
  }
85684
- const n = Math.trunc(Number(raw));
85685
+ const n = Math.trunc(Number(raw2));
85685
85686
  if (!Number.isFinite(n) || n < min) {
85686
85687
  return typeof fallback === "number" ? capped(fallback) : fallback;
85687
85688
  }
@@ -85709,32 +85710,32 @@ function firstParamValue(input, key) {
85709
85710
  }
85710
85711
  function allParamValues(input, key) {
85711
85712
  if (!input) return [];
85712
- const raw = input instanceof URLSearchParams ? input.getAll(key) : input[key];
85713
- const list = Array.isArray(raw) ? raw : raw === void 0 ? [] : [raw];
85713
+ const raw2 = input instanceof URLSearchParams ? input.getAll(key) : input[key];
85714
+ const list = Array.isArray(raw2) ? raw2 : raw2 === void 0 ? [] : [raw2];
85714
85715
  if (list.length === 1 && list[0]?.includes(",")) return list[0].split(",").filter(Boolean);
85715
85716
  return list.filter((v) => v !== void 0 && v !== "");
85716
85717
  }
85717
- function coerceScalar(raw, config) {
85718
- if (raw === void 0 || raw === "") return void 0;
85718
+ function coerceScalar(raw2, config) {
85719
+ if (raw2 === void 0 || raw2 === "") return void 0;
85719
85720
  switch (config.type) {
85720
85721
  case "int": {
85721
85722
  const int = config;
85722
- return positiveInt(raw, int.default, { min: int.min, max: int.max });
85723
+ return positiveInt(raw2, int.default, { min: int.min, max: int.max });
85723
85724
  }
85724
85725
  case "number": {
85725
- const n = Number(raw);
85726
+ const n = Number(raw2);
85726
85727
  return Number.isFinite(n) ? n : void 0;
85727
85728
  }
85728
85729
  case "boolean":
85729
- return raw === "true" || raw === "1";
85730
+ return raw2 === "true" || raw2 === "1";
85730
85731
  case "object":
85731
85732
  try {
85732
- return JSON.parse(raw);
85733
+ return JSON.parse(raw2);
85733
85734
  } catch {
85734
85735
  return void 0;
85735
85736
  }
85736
85737
  default:
85737
- return raw;
85738
+ return raw2;
85738
85739
  }
85739
85740
  }
85740
85741
  function parseSchemaParams(schema, input, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-to-plain.d.ts","sourceRoot":"","sources":["../../src/utils/markdown-to-plain.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,sBAAsB;IACrC;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;gFAEgF;AAChF,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAMrD;AAyCD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B,GAAG,MAAM,CAmBlG"}
1
+ {"version":3,"file":"markdown-to-plain.d.ts","sourceRoot":"","sources":["../../src/utils/markdown-to-plain.ts"],"names":[],"mappings":"AAiCA,MAAM,WAAW,sBAAsB;IACrC;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;gFAEgF;AAChF,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAMrD;AAyCD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B,GAAG,MAAM,CAmBlG"}
@@ -1,18 +1,23 @@
1
+ import { raw } from "hast-util-raw";
1
2
  import { toText } from "hast-util-to-text";
2
- import rehypeRaw from "rehype-raw";
3
- import { remark } from "remark";
4
- import remarkBreaks from "remark-breaks";
5
- import remarkGfm from "remark-gfm";
6
- import remarkRehype from "remark-rehype";
3
+ import { fromMarkdown } from "mdast-util-from-markdown";
4
+ import { gfmFromMarkdown } from "mdast-util-gfm";
5
+ import { newlineToBreak } from "mdast-util-newline-to-break";
6
+ import { toHast } from "mdast-util-to-hast";
7
+ import { gfm } from "micromark-extension-gfm";
7
8
  import { SKIP, visit } from "unist-util-visit";
8
9
  function stripInlineMarkdown(s) {
9
10
  return s.replace(/\[([^\]]+)\]\([^)]+\)/g, "$1").replace(/\*\*([^*]+)\*\*/g, "$1").replace(/\*([^*]+)\*/g, "$1").replace(/`([^`]+)`/g, "$1");
10
11
  }
11
- const toHtmlTree = remark().use(remarkGfm).use(remarkBreaks).use(remarkRehype, { allowDangerousHtml: true }).use(rehypeRaw);
12
12
  const NOT_PROSE = /* @__PURE__ */ new Set(["pre", "img"]);
13
13
  const TABLE_SECTIONS = /* @__PURE__ */ new Set(["thead", "tbody", "tfoot"]);
14
+ function htmlTree(markdown) {
15
+ const mdast = fromMarkdown(markdown, { extensions: [gfm()], mdastExtensions: [gfmFromMarkdown()] });
16
+ newlineToBreak(mdast);
17
+ return raw(toHast(mdast, { allowDangerousHtml: true }));
18
+ }
14
19
  function proseTree(markdown) {
15
- const tree = toHtmlTree.runSync(toHtmlTree.parse(markdown));
20
+ const tree = htmlTree(markdown);
16
21
  visit(tree, "element", (node, index, parent) => {
17
22
  if (NOT_PROSE.has(node.tagName) && parent && index !== void 0) {
18
23
  parent.children.splice(index, 1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flamingo-stack/openframe-frontend-core",
3
- "version": "0.0.747",
3
+ "version": "0.0.749",
4
4
  "description": "Shared design system and components for all Flamingo platforms",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -480,10 +480,16 @@
480
480
  "framer-motion": "^12.23.12",
481
481
  "globals": "^16.4.0",
482
482
  "graphql": "^16.12.0",
483
+ "hast-util-raw": "^9.1.0",
483
484
  "hast-util-to-text": "^4.0.2",
484
485
  "libphonenumber-js": "^1.12.40",
485
486
  "lucide-react": "^0.454.0",
487
+ "mdast-util-from-markdown": "^2.0.2",
488
+ "mdast-util-gfm": "^3.1.0",
489
+ "mdast-util-newline-to-break": "^2.0.0",
490
+ "mdast-util-to-hast": "^13.2.1",
486
491
  "mermaid": "^11.14.0",
492
+ "micromark-extension-gfm": "^3.0.0",
487
493
  "nats.ws": "^1.30.3",
488
494
  "next-themes": "^0.2.1",
489
495
  "prettier-plugin-tailwindcss": "^0.8.1",
@@ -505,7 +511,6 @@
505
511
  "remark": "^15.0.1",
506
512
  "remark-breaks": "^4.0.0",
507
513
  "remark-gfm": "^4.0.1",
508
- "remark-rehype": "^11.1.2",
509
514
  "sonner": "^1.2.4",
510
515
  "tailwind-merge": "^3.4.0",
511
516
  "tailwindcss-animate": "^1.0.7",
@@ -3,6 +3,7 @@
3
3
  import { ChevronRight } from 'lucide-react';
4
4
  import Link from '../embed-shims/next-link';
5
5
  import type { RealCategoryCardProps } from '../types/category';
6
+ import { UnifiedSkeleton } from './loading/unified-skeleton';
6
7
  import { VendorIcon } from './vendor-icon';
7
8
 
8
9
  // Component that receives vendor and subcategory data as props
@@ -26,10 +27,7 @@ export function CategoriesCart({
26
27
  {isLoading
27
28
  ? // Skeleton loading for vendor icons
28
29
  Array.from({ length: 20 }).map((_, index) => (
29
- <div
30
- key={index}
31
- className="h-8 w-8 flex-shrink-0 animate-pulse rounded bg-ods-border md:h-10 md:w-10"
32
- />
30
+ <UnifiedSkeleton key={index} className="h-8 w-8 flex-shrink-0 rounded md:h-10 md:w-10" />
33
31
  ))
34
32
  : vendors && vendors.length > 0
35
33
  ? vendors.map(vendor => (
@@ -3,8 +3,8 @@ import { cn } from '../../utils/cn';
3
3
  import { Chevron02LeftIcon } from '../icons-v2-generated';
4
4
  import { PlusCircleIcon } from '../icons-v2-generated/signs-and-symbols/plus-circle-icon';
5
5
  import { XmarkIcon } from '../icons-v2-generated/signs-and-symbols/xmark-icon';
6
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
6
7
  import { Button } from '../ui/button';
7
- import { Skeleton } from '../ui/skeleton';
8
8
  import { SquareAvatar as Avatar } from '../ui/square-avatar';
9
9
  import { TicketStatusTag, resolveStatusTagProps } from '../ui/ticket-status-tag';
10
10
  import { MspOrganizationCard } from './msp-organization-card';
@@ -111,12 +111,12 @@ const ChatHeader = forwardRef<HTMLDivElement, ChatHeaderProps>(
111
111
  <div className="flex items-center gap-3">
112
112
  {/* 64px round avatar placeholder — matches the `w-16 h-16`
113
113
  rounded-full avatar / userIcon block below. */}
114
- <Skeleton className="h-16 w-16 shrink-0 rounded-full" />
114
+ <UnifiedSkeleton className="h-16 w-16 shrink-0 rounded-full" />
115
115
  <div className="flex flex-col gap-1">
116
116
  {/* Name line — sized to the `text-h3` name. */}
117
- <Skeleton className="h-6 w-40" />
117
+ <UnifiedSkeleton className="h-6 w-40" />
118
118
  {/* Server line — sized to the `text-h4` secondary row. */}
119
- <Skeleton className="h-4 w-28" />
119
+ <UnifiedSkeleton className="h-4 w-28" />
120
120
  </div>
121
121
  </div>
122
122
  ) : (
@@ -29,6 +29,7 @@ import { SearchIcon } from '../icons-v2-generated/interface/search-icon';
29
29
  import { Upload02Icon } from '../icons-v2-generated/interface/upload-02-icon';
30
30
  import { PlusIcon } from '../icons-v2-generated/signs-and-symbols/plus-icon';
31
31
  import { XmarkCircleIcon } from '../icons-v2-generated/signs-and-symbols/xmark-circle-icon';
32
+ import { LoadingRegion } from '../loading/loading-region';
32
33
  import {
33
34
  CONTEXT_BACK_CLASS,
34
35
  CONTEXT_STATE_CLASS,
@@ -384,9 +385,9 @@ export function ChatContextPicker({
384
385
  >
385
386
  <Suspense
386
387
  fallback={
387
- <div className="max-h-[340px] overflow-hidden">
388
+ <LoadingRegion label="Loading items" className="max-h-[340px] overflow-hidden">
388
389
  <ContextItemsSkeleton count={ITEMS_SKELETON_ROWS} />
389
- </div>
390
+ </LoadingRegion>
390
391
  }
391
392
  >
392
393
  {config.renderItems({
@@ -22,6 +22,7 @@
22
22
  import { useState, type ReactNode } from 'react';
23
23
  import Image from '../../embed-shims/next-image';
24
24
  import { personInitials } from '../../utils/format';
25
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
25
26
  import { useProxiedImageUrl } from './hooks/use-proxied-image-url';
26
27
 
27
28
  export interface ChatMessageRowProps {
@@ -104,20 +105,18 @@ export function ChatMessageRow({ displayName, avatarUrl, timeLabel, body, footer
104
105
  * name/time/body line-heights so the loading→loaded swap does not reflow.
105
106
  */
106
107
  export function ChatMessageRowSkeleton() {
107
- // Bars use `bg-ods-border` (NOT `bg-ods-skeleton` — that token resolves to
108
- // transparent in this build, leaving the box visually empty).
109
108
  return (
110
109
  <div className="flex w-full min-w-0 gap-2 md:gap-3">
111
- <div className="h-8 w-8 flex-shrink-0 animate-pulse rounded-lg bg-ods-border md:h-10 md:w-10" />
110
+ <UnifiedSkeleton className="h-8 w-8 flex-shrink-0 rounded-lg md:h-10 md:w-10" />
112
111
  <div className="min-w-0 flex-1">
113
112
  {/* Header row — name + time bars, same mb-1 + gap-2 as the real header. */}
114
113
  <div className="mb-1 flex items-center gap-2">
115
- <div className="h-[15px] w-24 animate-pulse rounded bg-ods-border md:h-[20px] md:w-32" />
116
- <div className="h-[12px] w-12 animate-pulse rounded bg-ods-border md:h-[16px] md:w-16" />
114
+ <UnifiedSkeleton className="h-[15px] w-24 rounded md:h-[20px] md:w-32" />
115
+ <UnifiedSkeleton className="h-[12px] w-12 rounded md:h-[16px] md:w-16" />
117
116
  </div>
118
117
  {/* Two body lines — match the 12/14px body line-height. */}
119
- <div className="h-[14px] w-full animate-pulse rounded bg-ods-border md:h-[18px]" />
120
- <div className="mt-1 h-[14px] w-3/4 animate-pulse rounded bg-ods-border md:h-[18px]" />
118
+ <UnifiedSkeleton className="h-[14px] w-full rounded md:h-[18px]" />
119
+ <UnifiedSkeleton className="mt-1 h-[14px] w-3/4 rounded md:h-[18px]" />
121
120
  </div>
122
121
  </div>
123
122
  );
@@ -1,6 +1,8 @@
1
1
  'use client';
2
2
 
3
3
  import { cn } from '../../utils/cn';
4
+ import { LoadingRegion } from '../loading/loading-region';
5
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
4
6
 
5
7
  interface ChatMessageSkeletonProps {
6
8
  className?: string;
@@ -40,15 +42,15 @@ export function ChatMessageSkeleton({
40
42
  `bg-ods-border` so the placeholders are actually visible (a tinted
41
43
  low-alpha fill reads as blank on the dark surface). */}
42
44
  <div className="flex items-center gap-[var(--spacing-system-xs)]">
43
- {showAvatar && !isUser && <div className="h-8 w-8 flex-shrink-0 animate-pulse rounded-full bg-ods-border" />}
44
- <div className="h-5 w-32 animate-pulse rounded bg-ods-border" />
45
- <div className="ml-auto h-4 w-14 animate-pulse rounded bg-ods-border" />
45
+ {showAvatar && !isUser && <UnifiedSkeleton className="h-8 w-8 flex-shrink-0 rounded-full" />}
46
+ <UnifiedSkeleton className="h-5 w-32 rounded" />
47
+ <UnifiedSkeleton className="ml-auto h-4 w-14 rounded" />
46
48
  </div>
47
49
 
48
50
  {/* Body lines — percentage widths so they reflow on panel resize. */}
49
51
  <div className="flex flex-col gap-2 pt-[var(--spacing-system-xxs)]">
50
52
  {Array.from({ length: lines }, (_, i) => (
51
- <div key={i} className={cn('h-4 animate-pulse rounded bg-ods-border', bodyLineWidth(i, lines))} />
53
+ <UnifiedSkeleton key={i} className={cn('h-4 rounded', bodyLineWidth(i, lines))} />
52
54
  ))}
53
55
  </div>
54
56
  </div>
@@ -57,6 +59,8 @@ export function ChatMessageSkeleton({
57
59
  }
58
60
 
59
61
  interface ChatMessageListSkeletonProps {
62
+ /** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
63
+ region?: boolean;
60
64
  className?: string;
61
65
  messageCount?: number;
62
66
  showAvatars?: boolean;
@@ -85,6 +89,7 @@ interface ChatMessageListSkeletonProps {
85
89
  }
86
90
 
87
91
  export function ChatMessageListSkeleton({
92
+ region = true,
88
93
  className,
89
94
  messageCount = 6,
90
95
  showAvatars = true,
@@ -99,7 +104,7 @@ export function ChatMessageListSkeleton({
99
104
  }));
100
105
 
101
106
  return (
102
- <div className="relative flex min-h-0 flex-1 flex-col">
107
+ <LoadingRegion label="Loading messages" announce={region} className="relative flex min-h-0 flex-1 flex-col">
103
108
  <div
104
109
  className={cn(
105
110
  'flex h-full w-full flex-1 flex-col',
@@ -131,6 +136,6 @@ export function ChatMessageListSkeleton({
131
136
  ))}
132
137
  </div>
133
138
  </div>
134
- </div>
139
+ </LoadingRegion>
135
140
  );
136
141
  }
@@ -1,6 +1,7 @@
1
1
  import { forwardRef } from 'react';
2
2
  import { cn } from '../../utils/cn';
3
3
  import { ChatPlusIcon } from '../icons-v2-generated';
4
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
4
5
  import { Button } from '../ui/button';
5
6
 
6
7
  interface DialogListItemSkeletonProps {
@@ -25,14 +26,14 @@ const DialogListItemSkeleton = forwardRef<HTMLDivElement, DialogListItemSkeleton
25
26
  <div className="flex flex-1 flex-col items-start justify-center gap-1">
26
27
  <div className="flex w-full items-center">
27
28
  {/* Title skeleton */}
28
- <div className="h-6 w-full max-w-[200px] animate-pulse rounded bg-ods-border" />
29
+ <UnifiedSkeleton className="h-6 w-full max-w-[200px] rounded" />
29
30
  </div>
30
31
  {/* Timestamp skeleton */}
31
- <div className="h-4 w-32 animate-pulse rounded bg-ods-border" />
32
+ <UnifiedSkeleton className="h-4 w-32 rounded" />
32
33
  </div>
33
34
 
34
35
  {/* Right side chevron skeleton */}
35
- <div className="size-6 shrink-0 animate-pulse rounded bg-ods-border" />
36
+ <UnifiedSkeleton className="size-6 shrink-0 rounded" />
36
37
  </div>
37
38
  );
38
39
  },
@@ -3,7 +3,7 @@
3
3
  import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';
4
4
  import { cn } from '../../utils/cn';
5
5
  import { Settings01Icon, SidebarIcon } from '../icons-v2-generated';
6
- import { Skeleton } from '../ui/skeleton';
6
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
7
7
  import { SquareAvatar } from '../ui/square-avatar';
8
8
 
9
9
  export interface ChatTopNavigationProps extends HTMLAttributes<HTMLElement> {
@@ -72,10 +72,10 @@ const ChatTopNavigation = forwardRef<HTMLElement, ChatTopNavigationProps>(
72
72
  <div className="flex min-w-0 flex-1 items-center gap-[var(--spacing-system-m)] px-[var(--spacing-system-m)]">
73
73
  {isLoading ? (
74
74
  <>
75
- <Skeleton className="size-10 shrink-0 rounded-full" />
75
+ <UnifiedSkeleton className="size-10 shrink-0 rounded-full" />
76
76
  <div className="flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-xxs)]">
77
- <Skeleton className="h-5 w-24" />
78
- <Skeleton className="h-4 w-32" />
77
+ <UnifiedSkeleton className="h-5 w-24" />
78
+ <UnifiedSkeleton className="h-4 w-32" />
79
79
  </div>
80
80
  </>
81
81
  ) : (
@@ -14,7 +14,8 @@
14
14
  import { Component, type ReactNode, type UIEvent, useCallback } from 'react';
15
15
  import { cn } from '../../utils/cn';
16
16
  import { CheckFillIcon } from '../icons-v2-generated/signs-and-symbols/check-fill-icon';
17
- import { Skeleton } from '../ui/skeleton';
17
+ import { LoadingRegion } from '../loading/loading-region';
18
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
18
19
  import type { ChatContextItem } from './types/context-item.types';
19
20
 
20
21
  const itemKey = (i: { type: string; id: string }) => `${i.type}:${i.id}`;
@@ -86,7 +87,7 @@ export function ContextItemsSkeleton({ count }: { count: number }) {
86
87
  key={`ctx-skeleton-${i}`}
87
88
  className="flex items-center border-b border-ods-border bg-ods-bg py-3 pl-4 pr-2 last:border-b-0"
88
89
  >
89
- <Skeleton className="h-5 w-1/2" />
90
+ <UnifiedSkeleton className="h-5 w-1/2" />
90
91
  </div>
91
92
  ))}
92
93
  </>
@@ -164,7 +165,12 @@ export function ContextItemsList({
164
165
  />
165
166
  );
166
167
  })}
167
- {loadingMore && <ContextItemsSkeleton count={3} />}
168
+ {loadingMore && (
169
+ // `contents`: the rows stay the list's own rows; the region only adds the one announcement.
170
+ <LoadingRegion label="Loading more items" className="contents">
171
+ <ContextItemsSkeleton count={3} />
172
+ </LoadingRegion>
173
+ )}
168
174
  </div>
169
175
  );
170
176
  }