@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
@@ -11,6 +11,7 @@
11
11
  import { Calendar } from 'lucide-react';
12
12
  import Image from '../../../embed-shims/next-image';
13
13
  import Link from '../../../embed-shims/next-link';
14
+ import { UnifiedSkeleton } from '../../loading/unified-skeleton';
14
15
  import { formatInvestorUpdatePeriod, type InvestorUpdate } from '../types/entities/investor-update';
15
16
  import {
16
17
  COMPACT_CARD_IMAGE_SLOT,
@@ -52,30 +53,30 @@ export function InvestorUpdateCardSkeleton({ size = 'default' }: { size?: 'defau
52
53
  if (size === 'sm') {
53
54
  return (
54
55
  <span className={COMPACT_CARD_SKELETON_OUTER}>
55
- <span className={COMPACT_CARD_SKELETON_IMAGE_SLOT} />
56
+ <UnifiedSkeleton as="span" className={COMPACT_CARD_SKELETON_IMAGE_SLOT} />
56
57
  <span className={COMPACT_CARD_TEXT_COL}>
57
58
  <span className={`${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-2`}>
58
- <span className="h-3.5 w-1/2 rounded bg-ods-bg" />
59
- <span className="h-4 w-8 shrink-0 rounded bg-ods-bg/70" />
59
+ <UnifiedSkeleton as="span" className="h-3.5 w-1/2 rounded" />
60
+ <UnifiedSkeleton as="span" className="h-4 w-8 shrink-0 rounded" />
60
61
  </span>
61
62
  <span className={COMPACT_CARD_META_ROW_BOX}>
62
- <span className="h-3 w-1/3 rounded bg-ods-bg/70" />
63
+ <UnifiedSkeleton as="span" className="h-3 w-1/3 rounded" />
63
64
  </span>
64
65
  <span className={COMPACT_CARD_META_ROW_BOX}>
65
- <span className="h-3 w-11/12 rounded bg-ods-bg/40" />
66
+ <UnifiedSkeleton as="span" className="h-3 w-11/12 rounded" />
66
67
  </span>
67
68
  </span>
68
69
  </span>
69
70
  );
70
71
  }
71
72
  return (
72
- <div className={`h-full animate-pulse ${CONTENT_CARD_SKELETON_FRAME_CLASS}`}>
73
- <div className="aspect-[1200/630] bg-ods-border" />
73
+ <div className={`h-full ${CONTENT_CARD_SKELETON_FRAME_CLASS}`}>
74
+ <UnifiedSkeleton className="aspect-[1200/630]" />
74
75
  <div className="space-y-3 p-4">
75
- <div className="h-5 w-3/4 rounded bg-ods-border" />
76
- <div className="h-3 w-full rounded bg-ods-border" />
77
- <div className="h-3 w-4/5 rounded bg-ods-border" />
78
- <div className="h-4 w-1/3 rounded bg-ods-border" />
76
+ <UnifiedSkeleton className="h-5 w-3/4 rounded" />
77
+ <UnifiedSkeleton className="h-3 w-full rounded" />
78
+ <UnifiedSkeleton className="h-3 w-4/5 rounded" />
79
+ <UnifiedSkeleton className="h-4 w-1/3 rounded" />
79
80
  </div>
80
81
  </div>
81
82
  );
@@ -23,6 +23,7 @@ import Link from '../../../embed-shims/next-link';
23
23
  import { cn } from '../../../utils/cn';
24
24
  import { formatDurationMMSS } from '../../../utils/format';
25
25
  import { CardHoverPlay } from '../../features/video-center-badge';
26
+ import { UnifiedSkeleton } from '../../loading/unified-skeleton';
26
27
  import type { OnboardingGuide } from '../types/entities/onboarding-guide';
27
28
  import {
28
29
  COMPACT_CARD_OUTER,
@@ -94,17 +95,17 @@ const HORIZONTAL_SIZE_TOKENS = {
94
95
  export function OnboardingGuideCardSkeleton({ size = 'default' }: { size?: 'catalog' | 'default' | 'sm' }) {
95
96
  if (size === 'catalog') {
96
97
  return (
97
- <div className={cn(CONTENT_CARD_SKELETON_FRAME_CLASS, 'flex animate-pulse flex-col gap-4 p-6')}>
98
+ <div className={cn(CONTENT_CARD_SKELETON_FRAME_CLASS, 'flex flex-col gap-4 p-6')}>
98
99
  <div className="flex flex-col gap-4 md:flex-row md:gap-6">
99
- <div className="aspect-[1200/630] w-full flex-shrink-0 rounded-lg bg-ods-border md:w-[256px]" />
100
+ <UnifiedSkeleton className="aspect-[1200/630] w-full flex-shrink-0 rounded-lg md:w-[256px]" />
100
101
  <div className="flex min-w-0 flex-1 flex-col">
101
102
  <div className="mb-3 flex min-h-[60px] flex-col justify-start gap-1.5 md:min-h-[72px]">
102
- <div className="h-[25px] w-3/4 rounded bg-ods-border md:h-[30px]" />
103
- <div className="h-[25px] w-1/2 rounded bg-ods-border md:h-[30px]" />
103
+ <UnifiedSkeleton className="h-[25px] w-3/4 rounded md:h-[30px]" />
104
+ <UnifiedSkeleton className="h-[25px] w-1/2 rounded md:h-[30px]" />
104
105
  </div>
105
106
  <div className="flex min-h-[46px] flex-col justify-start gap-2 md:min-h-[52px]">
106
- <div className="h-3 w-full rounded bg-ods-border/70" />
107
- <div className="h-3 w-5/6 rounded bg-ods-border/70" />
107
+ <UnifiedSkeleton className="h-3 w-full rounded" />
108
+ <UnifiedSkeleton className="h-3 w-5/6 rounded" />
108
109
  </div>
109
110
  </div>
110
111
  </div>
@@ -115,16 +116,16 @@ export function OnboardingGuideCardSkeleton({ size = 'default' }: { size?: 'cata
115
116
  className="flex flex-col gap-3 border-b border-ods-border p-4 md:border-b-0 md:border-r"
116
117
  >
117
118
  <div className="flex flex-col gap-2">
118
- <div className="h-6 w-32 rounded bg-ods-border" />
119
- <div className="h-3 w-20 rounded bg-ods-border" />
119
+ <UnifiedSkeleton className="h-6 w-32 rounded" />
120
+ <UnifiedSkeleton className="h-3 w-20 rounded" />
120
121
  </div>
121
122
  </div>
122
123
  ))}
123
124
  <div className="flex items-center gap-3 p-4">
124
- <div className="h-10 w-10 shrink-0 rounded-full bg-ods-border" />
125
+ <UnifiedSkeleton className="h-10 w-10 shrink-0 rounded-full" />
125
126
  <div className="flex min-w-0 flex-1 flex-col gap-2">
126
- <div className="h-4 w-3/4 rounded bg-ods-border" />
127
- <div className="h-3 w-1/2 rounded bg-ods-border" />
127
+ <UnifiedSkeleton className="h-4 w-3/4 rounded" />
128
+ <UnifiedSkeleton className="h-3 w-1/2 rounded" />
128
129
  </div>
129
130
  </div>
130
131
  </div>
@@ -134,34 +135,32 @@ export function OnboardingGuideCardSkeleton({ size = 'default' }: { size?: 'cata
134
135
  if (size === 'sm') {
135
136
  return (
136
137
  <span className={COMPACT_CARD_SKELETON_OUTER}>
137
- <span className={COMPACT_CARD_SKELETON_IMAGE_SLOT} />
138
+ <UnifiedSkeleton as="span" className={COMPACT_CARD_SKELETON_IMAGE_SLOT} />
138
139
  <span className={COMPACT_CARD_TEXT_COL}>
139
140
  <span className={COMPACT_CARD_TITLE_ROW}>
140
- <span className="h-3.5 w-3/5 rounded bg-ods-bg" />
141
+ <UnifiedSkeleton as="span" className="h-3.5 w-3/5 rounded" />
141
142
  </span>
142
143
  <span className={COMPACT_CARD_META_ROW_BOX}>
143
- <span className="h-3 w-2/5 rounded bg-ods-bg/70" />
144
+ <UnifiedSkeleton as="span" className="h-3 w-2/5 rounded" />
144
145
  </span>
145
146
  <span className={COMPACT_CARD_META_ROW_BOX}>
146
- <span className="h-3 w-11/12 rounded bg-ods-bg/40" />
147
+ <UnifiedSkeleton as="span" className="h-3 w-11/12 rounded" />
147
148
  </span>
148
149
  </span>
149
150
  <span className="flex h-5 shrink-0 items-center self-start">
150
- <span className="h-3.5 w-3.5 rounded bg-ods-bg" />
151
+ <UnifiedSkeleton as="span" className="h-3.5 w-3.5 rounded" />
151
152
  </span>
152
153
  </span>
153
154
  );
154
155
  }
155
156
  const t = HORIZONTAL_SIZE_TOKENS.default;
156
157
  return (
157
- <span
158
- className={`flex items-start gap-3 rounded-md border border-ods-border bg-ods-card ${t.padding} animate-pulse`}
159
- >
158
+ <span className={`flex items-start gap-3 rounded-md border border-ods-border bg-ods-card ${t.padding}`}>
160
159
  <span className={`inline-flex shrink-0 items-center justify-center rounded-full bg-ods-bg ${t.step}`} />
161
160
  <span className="flex min-w-0 flex-1 flex-col gap-2">
162
- <span className="block h-4 w-2/3 rounded bg-ods-bg" />
163
- <span className="block h-3 w-1/3 rounded bg-ods-bg/70" />
164
- <span className="block h-3 w-full rounded bg-ods-bg/40" />
161
+ <UnifiedSkeleton as="span" className="block h-4 w-2/3 rounded" />
162
+ <UnifiedSkeleton as="span" className="block h-3 w-1/3 rounded" />
163
+ <UnifiedSkeleton as="span" className="block h-3 w-full rounded" />
165
164
  </span>
166
165
  </span>
167
166
  );
@@ -38,6 +38,7 @@ import { isImageMedia } from '../../../utils/media-type';
38
38
  import { programMetaFormatters, programMetaLine } from '../../../utils/program-instant';
39
39
  import { PROGRAM_META_RENDERERS } from '../../../utils/program-meta-renderers';
40
40
  import { CardHoverPlay } from '../../features/video-center-badge';
41
+ import { UnifiedSkeleton } from '../../loading/unified-skeleton';
41
42
  import { Button } from '../../ui/button/button';
42
43
  import { ImageGalleryModal } from '../../ui/image-gallery-modal';
43
44
  import { SquareAvatar } from '../../ui/square-avatar';
@@ -119,32 +120,32 @@ export function ProgramCardSkeleton({
119
120
  // that row's line height.
120
121
  if (size === 'row') {
121
122
  return (
122
- <span className={cn(EDITORIAL_FRAME, EDITORIAL_ROW_GRID, 'animate-pulse')}>
123
- <span className={cn(EDITORIAL_ROW_THUMB, 'bg-ods-border/20')} />
123
+ <span className={cn(EDITORIAL_FRAME, EDITORIAL_ROW_GRID)}>
124
+ <UnifiedSkeleton as="span" className={EDITORIAL_ROW_THUMB} />
124
125
  <span className={EDITORIAL_ROW_TEXT}>
125
- <span className="block h-[2lh] w-full rounded bg-ods-border text-h3" />
126
+ <UnifiedSkeleton as="span" className="block h-[2lh] w-full rounded text-h3" />
126
127
  <span className={EDITORIAL_META_ROW}>
127
- <span className="block h-[1lh] w-40 rounded bg-ods-border" />
128
+ <UnifiedSkeleton as="span" className="block h-[1lh] w-40 rounded" />
128
129
  </span>
129
- <span className="block h-[2lh] w-full rounded bg-ods-border text-h6" />
130
+ <UnifiedSkeleton as="span" className="block h-[2lh] w-full rounded text-h6" />
130
131
  </span>
131
132
  </span>
132
133
  );
133
134
  }
134
135
  if (size === 'feature') {
135
136
  return (
136
- <span className={cn(EDITORIAL_FRAME, 'flex animate-pulse flex-col')}>
137
- <span className={cn(EDITORIAL_FEATURE_COVER, 'bg-ods-border/20')} />
137
+ <span className={cn(EDITORIAL_FRAME, 'flex flex-col')}>
138
+ <UnifiedSkeleton as="span" className={cn(EDITORIAL_FEATURE_COVER, 'rounded-none')} />
138
139
  <span className={EDITORIAL_FEATURE_BODY}>
139
- {eyebrow && <span className="block h-[1lh] w-28 rounded bg-ods-border text-h5" />}
140
- <span className="block h-[2lh] w-full rounded bg-ods-border text-h3" />
140
+ {eyebrow && <UnifiedSkeleton as="span" className="block h-[1lh] w-28 rounded text-h5" />}
141
+ <UnifiedSkeleton as="span" className="block h-[2lh] w-full rounded text-h3" />
141
142
  <span className={EDITORIAL_META_ROW}>
142
- <span className="block h-[1lh] w-40 rounded bg-ods-border" />
143
+ <UnifiedSkeleton as="span" className="block h-[1lh] w-40 rounded" />
143
144
  </span>
144
- <span className="block h-[3lh] w-full rounded bg-ods-border text-h4" />
145
+ <UnifiedSkeleton as="span" className="block h-[3lh] w-full rounded text-h4" />
145
146
  <span className={EDITORIAL_PERSON_ROW}>
146
- <span className="block h-8 w-8 shrink-0 rounded-full bg-ods-border" />
147
- <span className="block h-[1lh] w-40 rounded bg-ods-border text-h6" />
147
+ <UnifiedSkeleton as="span" className="block h-8 w-8 shrink-0 rounded-full" />
148
+ <UnifiedSkeleton as="span" className="block h-[1lh] w-40 rounded text-h6" />
148
149
  </span>
149
150
  </span>
150
151
  </span>
@@ -153,43 +154,43 @@ export function ProgramCardSkeleton({
153
154
  if (size === 'sm') {
154
155
  return (
155
156
  <span className={COMPACT_CARD_SKELETON_OUTER}>
156
- <span className={COMPACT_CARD_SKELETON_IMAGE_SLOT} />
157
+ <UnifiedSkeleton as="span" className={COMPACT_CARD_SKELETON_IMAGE_SLOT} />
157
158
  <span className={COMPACT_CARD_TEXT_COL}>
158
159
  <span className={COMPACT_CARD_TITLE_ROW}>
159
- <span className="h-3.5 w-3/5 rounded bg-ods-bg" />
160
+ <UnifiedSkeleton as="span" className="h-3.5 w-3/5 rounded" />
160
161
  </span>
161
162
  <span className={COMPACT_CARD_META_ROW_BOX}>
162
- <span className="h-3 w-2/5 rounded bg-ods-bg/70" />
163
+ <UnifiedSkeleton as="span" className="h-3 w-2/5 rounded" />
163
164
  </span>
164
165
  <span className={COMPACT_CARD_META_ROW_BOX}>
165
- <span className="h-3 w-11/12 rounded bg-ods-bg/40" />
166
+ <UnifiedSkeleton as="span" className="h-3 w-11/12 rounded" />
166
167
  </span>
167
168
  </span>
168
169
  <span className="flex h-5 shrink-0 items-center self-start">
169
- <span className="h-3.5 w-3.5 rounded bg-ods-bg" />
170
+ <UnifiedSkeleton as="span" className="h-3.5 w-3.5 rounded" />
170
171
  </span>
171
172
  </span>
172
173
  );
173
174
  }
174
175
  return (
175
- <div className={cn(CONTENT_CARD_SKELETON_FRAME_CLASS, DEFAULT_BODY, 'animate-pulse')}>
176
+ <div className={cn(CONTENT_CARD_SKELETON_FRAME_CLASS, DEFAULT_BODY)}>
176
177
  <div className={DEFAULT_HEADER}>
177
- <div className={`${DEFAULT_COVER_FRAME} bg-ods-border`} />
178
+ <UnifiedSkeleton className={DEFAULT_COVER_FRAME} />
178
179
  <div className={DEFAULT_TEXT}>
179
180
  <div className={DEFAULT_TITLE}>
180
- <span className="block h-[2lh] w-3/4 rounded bg-ods-border" />
181
+ <UnifiedSkeleton as="span" className="block h-[2lh] w-3/4 rounded" />
181
182
  </div>
182
183
  <div className={DEFAULT_META_ROW}>
183
- <span className="block h-[1lh] w-32 rounded bg-ods-border" />
184
- <span className="block h-[1lh] w-40 rounded bg-ods-border" />
184
+ <UnifiedSkeleton as="span" className="block h-[1lh] w-32 rounded" />
185
+ <UnifiedSkeleton as="span" className="block h-[1lh] w-40 rounded" />
185
186
  </div>
186
187
  <div className={DEFAULT_DESCRIPTION}>
187
- <span className="block h-[3lh] w-full rounded bg-ods-border" />
188
+ <UnifiedSkeleton as="span" className="block h-[3lh] w-full rounded" />
188
189
  </div>
189
190
  {tags && (
190
191
  <div className={DEFAULT_TAG_ROW}>
191
- <span className="block h-8 w-24 rounded bg-ods-border" />
192
- <span className="block h-8 w-24 rounded bg-ods-border" />
192
+ <UnifiedSkeleton as="span" className="block h-8 w-24 rounded" />
193
+ <UnifiedSkeleton as="span" className="block h-8 w-24 rounded" />
193
194
  </div>
194
195
  )}
195
196
  </div>
@@ -197,13 +198,13 @@ export function ProgramCardSkeleton({
197
198
  {media > 0 && (
198
199
  <div className={DEFAULT_GALLERY_ROW}>
199
200
  {Array.from({ length: media }, (_, i) => (
200
- <div key={i} className={`${DEFAULT_GALLERY_THUMB} bg-ods-border`} />
201
+ <UnifiedSkeleton key={i} className={DEFAULT_GALLERY_THUMB} />
201
202
  ))}
202
203
  </div>
203
204
  )}
204
205
  <div className={DEFAULT_FOOTER}>
205
206
  {/* The action button's own height (44px, 48px from md). */}
206
- <div className="h-11 w-40 rounded bg-ods-border md:h-12" />
207
+ <UnifiedSkeleton className="h-11 w-40 rounded md:h-12" />
207
208
  </div>
208
209
  </div>
209
210
  );
@@ -18,6 +18,7 @@ import { cn } from '../../../utils/cn';
18
18
  import { getProxiedImageUrl } from '../../../utils/image-proxy';
19
19
  import { ImageClassicIcon } from '../../icons-v2-generated/audio-and-visual/image-classic-icon';
20
20
  import { FigmaClassicIcon } from '../../icons-v2-generated/brand-logos/figma-classic-icon';
21
+ import { UnifiedSkeleton } from '../../loading/unified-skeleton';
21
22
  import { AvatarStack, type AvatarStackPerson } from '../../ui/avatar-stack';
22
23
  import { Button } from '../../ui/button/button';
23
24
  import { ImageGalleryModal } from '../../ui/image-gallery-modal';
@@ -48,54 +49,52 @@ export function RoadmapCardSkeleton({ size = 'default' }: { size?: CardSize }) {
48
49
  if (size === 'sm') {
49
50
  return (
50
51
  <span className={COMPACT_CARD_SKELETON_OUTER}>
51
- <span className="block aspect-square h-12 w-12 shrink-0 self-start rounded-md border border-ods-border bg-ods-bg p-1.5" />
52
+ <UnifiedSkeleton
53
+ as="span"
54
+ className="block aspect-square h-12 w-12 shrink-0 self-start rounded-md border border-ods-border p-1.5"
55
+ />
52
56
  <span className={COMPACT_CARD_TEXT_COL}>
53
57
  <span className={`${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-2`}>
54
- <span className="h-3.5 w-1/2 rounded bg-ods-bg" />
55
- <span className="h-4 w-12 shrink-0 rounded bg-ods-bg/70" />
58
+ <UnifiedSkeleton as="span" className="h-3.5 w-1/2 rounded" />
59
+ <UnifiedSkeleton as="span" className="h-4 w-12 shrink-0 rounded" />
56
60
  </span>
57
61
  <span className={`${COMPACT_CARD_META_ROW_BOX} flex-nowrap gap-2`}>
58
- <span className="h-3 w-2/5 flex-1 rounded bg-ods-bg/60" />
59
- <span className="h-3 w-10 shrink-0 rounded bg-ods-bg/40" />
62
+ <UnifiedSkeleton as="span" className="h-3 w-2/5 flex-1 rounded" />
63
+ <UnifiedSkeleton as="span" className="h-3 w-10 shrink-0 rounded" />
60
64
  {/* assignee-stack placeholder — mirrors the xs AvatarStack
61
65
  slot so row width doesn't shift when assignees load */}
62
- <span className="h-6 w-14 shrink-0 rounded-full bg-ods-bg/40" />
66
+ <UnifiedSkeleton as="span" className="h-6 w-14 shrink-0 rounded-full" />
63
67
  </span>
64
68
  <span className={COMPACT_CARD_META_ROW_BOX}>
65
- <span className="h-3 w-5/6 rounded bg-ods-bg/40" />
69
+ <UnifiedSkeleton as="span" className="h-3 w-5/6 rounded" />
66
70
  </span>
67
71
  </span>
68
72
  </span>
69
73
  );
70
74
  }
71
75
  return (
72
- <div
73
- className={cn(
74
- CONTENT_CARD_SKELETON_FRAME_CLASS,
75
- 'flex h-full animate-pulse flex-col gap-4 p-[var(--spacing-system-lf)]',
76
- )}
77
- >
76
+ <div className={cn(CONTENT_CARD_SKELETON_FRAME_CLASS, 'flex h-full flex-col gap-4 p-[var(--spacing-system-lf)]')}>
78
77
  <div className="flex items-center gap-4">
79
- <div className="h-16 w-16 flex-shrink-0 rounded-lg bg-ods-border" />
78
+ <UnifiedSkeleton className="h-16 w-16 flex-shrink-0 rounded-lg" />
80
79
  <div className="flex-1 space-y-2">
81
- <div className="h-5 w-3/4 rounded bg-ods-border" />
82
- <div className="h-3 w-1/2 rounded bg-ods-border" />
80
+ <UnifiedSkeleton className="h-5 w-3/4 rounded" />
81
+ <UnifiedSkeleton className="h-3 w-1/2 rounded" />
83
82
  </div>
84
- <div className="h-6 w-16 rounded bg-ods-border" />
83
+ <UnifiedSkeleton className="h-6 w-16 rounded" />
85
84
  </div>
86
85
  <div className="space-y-2">
87
- <div className="h-3 w-full rounded bg-ods-border" />
88
- <div className="h-3 w-5/6 rounded bg-ods-border" />
89
- <div className="h-3 w-4/5 rounded bg-ods-border" />
86
+ <UnifiedSkeleton className="h-3 w-full rounded" />
87
+ <UnifiedSkeleton className="h-3 w-5/6 rounded" />
88
+ <UnifiedSkeleton className="h-3 w-4/5 rounded" />
90
89
  </div>
91
90
  <div className="flex-1" />
92
91
  <div className="flex items-center justify-between">
93
- <div className="h-12 w-32 rounded bg-ods-border" />
92
+ <UnifiedSkeleton className="h-12 w-32 rounded" />
94
93
  <div className="flex items-center gap-2">
95
94
  {/* assignee-stack placeholder — matches the xs AvatarStack in
96
95
  the loaded card's action row */}
97
- <div className="h-6 w-14 rounded-full bg-ods-border" />
98
- <div className="h-8 w-20 rounded bg-ods-border" />
96
+ <UnifiedSkeleton className="h-6 w-14 rounded-full" />
97
+ <UnifiedSkeleton className="h-8 w-20 rounded" />
99
98
  </div>
100
99
  </div>
101
100
  </div>
@@ -14,6 +14,7 @@ import React from 'react';
14
14
  import Link from '../../../embed-shims/next-link';
15
15
  import { formatDateUTC as formatDate } from '../../../utils/format';
16
16
  import { SlackIcon } from '../../icons-v2-generated/brand-logos/slack-icon';
17
+ import { UnifiedSkeleton } from '../../loading/unified-skeleton';
17
18
  import type { SlackMessageItem } from '../types/entities/slack-message';
18
19
  import {
19
20
  COMPACT_CARD_ICON_SLOT,
@@ -160,31 +161,31 @@ export function SlackMessageCardSkeleton({
160
161
  }) {
161
162
  if (variant === 'row') {
162
163
  return (
163
- <div className={`flex min-w-0 animate-pulse items-center gap-3 ${className ?? ''}`}>
164
- <div className="h-3.5 w-3.5 shrink-0 rounded bg-ods-bg" />
165
- <div className="h-3 w-32 shrink-0 rounded bg-ods-bg" />
166
- <div className="h-3 w-2/3 flex-1 rounded bg-ods-bg/60" />
167
- <div className="h-3 w-24 shrink-0 rounded bg-ods-bg/60" />
168
- <div className="h-3 w-20 shrink-0 rounded bg-ods-bg/60" />
164
+ <div className={`flex min-w-0 items-center gap-3 ${className ?? ''}`}>
165
+ <UnifiedSkeleton className="h-3.5 w-3.5 shrink-0 rounded" />
166
+ <UnifiedSkeleton className="h-3 w-32 shrink-0 rounded" />
167
+ <UnifiedSkeleton className="h-3 w-2/3 flex-1 rounded" />
168
+ <UnifiedSkeleton className="h-3 w-24 shrink-0 rounded" />
169
+ <UnifiedSkeleton className="h-3 w-20 shrink-0 rounded" />
169
170
  </div>
170
171
  );
171
172
  }
172
173
  return (
173
174
  <span className={`${COMPACT_CARD_SKELETON_OUTER} ${className ?? ''}`}>
174
- <span className={COMPACT_CARD_SKELETON_IMAGE_SLOT} />
175
+ <UnifiedSkeleton as="span" className={COMPACT_CARD_SKELETON_IMAGE_SLOT} />
175
176
  <span className={COMPACT_CARD_TEXT_COL}>
176
177
  <span className={COMPACT_CARD_TITLE_ROW}>
177
- <span className="h-3.5 w-2/3 rounded bg-ods-bg" />
178
+ <UnifiedSkeleton as="span" className="h-3.5 w-2/3 rounded" />
178
179
  </span>
179
180
  <span className={COMPACT_CARD_META_ROW_BOX}>
180
- <span className="h-3 w-5/6 rounded bg-ods-bg/60" />
181
+ <UnifiedSkeleton as="span" className="h-3 w-5/6 rounded" />
181
182
  </span>
182
183
  <span className={COMPACT_CARD_META_ROW_BOX}>
183
- <span className="h-3 w-1/3 rounded bg-ods-bg/70" />
184
+ <UnifiedSkeleton as="span" className="h-3 w-1/3 rounded" />
184
185
  </span>
185
186
  </span>
186
187
  <span className="flex h-5 shrink-0 items-center self-start">
187
- <span className="h-3.5 w-3.5 rounded bg-ods-bg" />
188
+ <UnifiedSkeleton as="span" className="h-3.5 w-3.5 rounded" />
188
189
  </span>
189
190
  </span>
190
191
  );
@@ -4,8 +4,8 @@ import { type ReactNode, useMemo } from 'react';
4
4
  import { cn } from '../../utils/cn';
5
5
  import { AgentMark } from '../agent-mark';
6
6
  import { EntityIcon } from '../icon-display';
7
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
7
8
  import { ScrollFadeOverlay, useScrollFade } from '../ui/scroll-fade';
8
- import { Skeleton } from '../ui/skeleton';
9
9
  import { accentFromIdentityIcon, type QuickActionAccent } from './quick-action-chip';
10
10
  import { QuickActionWall } from './quick-action-wall';
11
11
 
@@ -175,7 +175,7 @@ export function GuideWelcome({
175
175
  <p className="text-ods-text-secondary text-h4">{subtitle}</p>
176
176
  ) : subtitleLoading ? (
177
177
  <div className="flex w-full justify-center">
178
- <Skeleton className="h-5 w-3/4 max-w-80 rounded-sm" />
178
+ <UnifiedSkeleton className="h-5 w-3/4 max-w-80 rounded-sm" />
179
179
  </div>
180
180
  ) : null}
181
181
  </div>
@@ -3,6 +3,7 @@
3
3
  import { useEffect, useRef } from 'react';
4
4
  import { formatRelativeTime } from '../../utils/date-utils';
5
5
  import { BoxArchiveIcon } from '../icons-v2-generated';
6
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
6
7
  import { SquareAvatar } from '../ui/square-avatar';
7
8
  import { ChatListEmptyState } from './chat-list-empty-state';
8
9
  import { ChatListItem } from './chat-nav-sidebar';
@@ -93,7 +94,7 @@ export function MingoArchiveList({
93
94
  </>
94
95
  ) : isLoading ? (
95
96
  Array.from({ length: 6 }, (_, i) => (
96
- <div key={i} className="h-10 shrink-0 animate-pulse rounded-md bg-ods-skeleton" aria-hidden />
97
+ <UnifiedSkeleton key={i} aria-hidden className="h-10 shrink-0 rounded-md" />
97
98
  ))
98
99
  ) : (
99
100
  <ChatListEmptyState
@@ -3,6 +3,8 @@
3
3
  import { useState, useMemo, useRef, useEffect } from 'react';
4
4
  import { cn } from '../../utils/cn';
5
5
  import { Ellipsis01Icon, SearchXmarkIcon } from '../icons-v2-generated';
6
+ import { LoadingRegion } from '../loading/loading-region';
7
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
6
8
  import { ActionsMenuDropdown } from '../ui/actions-menu';
7
9
  import { Button } from '../ui/button';
8
10
  import { ScrollFadeOverlay, useScrollFade } from '../ui/scroll-fade';
@@ -250,22 +252,29 @@ function MingoChatHistoryRow({
250
252
  * above. Shown while the FIRST page of dialogs is in flight so the Mingo empty
251
253
  * state doesn't flash the new-user greeting+grid before the list arrives (the
252
254
  * two layouts are mutually exclusive — swapping between them mid-load reads as
253
- * a flicker). Pure ODS tokens, `animate-pulse`.
255
+ * a flicker). Built from `UnifiedSkeleton`.
254
256
  */
255
- export function MingoChatHistorySkeleton({ className }: { className?: string }) {
257
+ export function MingoChatHistorySkeleton({
258
+ region = true,
259
+ className,
260
+ }: {
261
+ /** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
262
+ region?: boolean;
263
+ className?: string;
264
+ }) {
256
265
  // Mirror the real grouped list exactly: a small group label, then a bordered
257
266
  // rounded container of `h-12` rows, each with a single title bar of varying
258
267
  // width (no unread-badge squares — the real rows currently never show one, so
259
- // a badge placeholder would mis-promise the layout). `bg-ods-border` matches
260
- // the kit's canonical `Skeleton` placeholder colour; `bg-ods-bg` rows read a
268
+ // a badge placeholder would mis-promise the layout). `bg-ods-bg` rows read a
261
269
  // touch darker than the `bg-ods-card` panel so the bars stay legible.
262
270
  const groups: ReadonlyArray<ReadonlyArray<string>> = [
263
271
  ['w-3/5', 'w-4/5', 'w-2/5', 'w-3/4'],
264
272
  ['w-1/2', 'w-2/3'],
265
273
  ];
266
274
  return (
267
- <div
268
- aria-hidden
275
+ <LoadingRegion
276
+ label="Loading conversations"
277
+ announce={region}
269
278
  // `overflow-hidden` clips the placeholder rows to the flex-1 box (the real
270
279
  // list scrolls; the skeleton just needs to stay within bounds).
271
280
  className={cn('flex min-h-0 flex-1 flex-col gap-[var(--spacing-system-m)] overflow-hidden', className)}
@@ -273,20 +282,20 @@ export function MingoChatHistorySkeleton({ className }: { className?: string })
273
282
  {groups.map((widths, g) => (
274
283
  <div key={g} className="flex shrink-0 flex-col gap-[var(--spacing-system-xxs)]">
275
284
  {/* Group label (Today / Older). */}
276
- <div className="h-3 w-16 animate-pulse rounded bg-ods-border" />
285
+ <UnifiedSkeleton className="h-3 w-16 rounded" />
277
286
  <div className="overflow-hidden rounded-md border border-ods-border">
278
287
  {widths.map((w, i) => (
279
288
  <div
280
289
  key={i}
281
290
  className="flex h-12 items-center border-b border-ods-border bg-ods-bg px-[var(--spacing-system-s)] last:border-b-0"
282
291
  >
283
- <div className={cn('h-4 animate-pulse rounded bg-ods-border', w)} />
292
+ <UnifiedSkeleton className={cn('h-4 rounded', w)} />
284
293
  </div>
285
294
  ))}
286
295
  </div>
287
296
  </div>
288
297
  ))}
289
- </div>
298
+ </LoadingRegion>
290
299
  );
291
300
  }
292
301
 
@@ -19,6 +19,7 @@ import {
19
19
  UserIcon,
20
20
  UsersIcon,
21
21
  } from '../icons-v2-generated';
22
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
22
23
  import { ActionsMenuDropdown, type ActionsMenuItem } from '../ui/actions-menu';
23
24
  import { Button } from '../ui/button';
24
25
  import { chatDialogMenuItems } from './chat-dialog-menu-items';
@@ -209,7 +210,7 @@ export function MingoChatRail({
209
210
  );
210
211
  } else if (isLoadingHistory) {
211
212
  list = Array.from({ length: 6 }, (_, i) => (
212
- <div key={i} className="h-10 shrink-0 animate-pulse rounded-md bg-ods-skeleton" aria-hidden />
213
+ <UnifiedSkeleton key={i} aria-hidden className="h-10 shrink-0 rounded-md" />
213
214
  ));
214
215
  } else if (dialogs.length === 0 && !draftTitle) {
215
216
  list = hasSearch ? (
@@ -6,6 +6,7 @@ import Link from '../../embed-shims/next-link';
6
6
  import { cn } from '../../utils/cn';
7
7
  import { personInitials } from '../../utils/format';
8
8
  import { Ellipsis01Icon } from '../icons-v2-generated';
9
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
9
10
  import { ActionsMenuDropdown, type ActionsMenuGroup } from '../ui/actions-menu';
10
11
  import { tagVariants, type TagProps } from '../ui/tag';
11
12
 
@@ -158,16 +159,16 @@ export function MingoInfoCardSkeleton({ className }: { className?: string }) {
158
159
  return (
159
160
  <span
160
161
  className={cn(
161
- 'flex w-full animate-pulse items-center gap-[var(--spacing-system-s)] overflow-hidden rounded-md border border-ods-border bg-ods-card p-[var(--spacing-system-s)]',
162
+ 'flex w-full items-center gap-[var(--spacing-system-s)] overflow-hidden rounded-md border border-ods-border bg-ods-card p-[var(--spacing-system-s)]',
162
163
  className,
163
164
  )}
164
165
  >
165
- <span className="block size-10 shrink-0 rounded-md border border-ods-border bg-ods-bg" />
166
+ <UnifiedSkeleton as="span" className="block size-10 shrink-0 rounded-md border border-ods-border" />
166
167
  <span className="flex min-w-0 flex-1 flex-col justify-center gap-1.5">
167
- <span className="block h-4 w-1/2 rounded bg-ods-bg" />
168
- <span className="block h-3 w-3/4 rounded bg-ods-bg/60" />
168
+ <UnifiedSkeleton as="span" className="block h-4 w-1/2 rounded" />
169
+ <UnifiedSkeleton as="span" className="block h-3 w-3/4 rounded" />
169
170
  </span>
170
- <span className="block h-5 w-16 shrink-0 rounded bg-ods-bg/60" />
171
+ <UnifiedSkeleton as="span" className="block h-5 w-16 shrink-0 rounded" />
171
172
  </span>
172
173
  );
173
174
  }