@flamingo-stack/openframe-frontend-core 0.0.748 → 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 (546) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-7Y3VMMJB.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-G2ELX3DG.cjs → chunk-45YRDD7W.cjs} +22 -19
  7. package/dist/{chunk-U6XWGK53.cjs → chunk-ALPRQ3ZX.cjs} +56 -46
  8. package/dist/{chunk-YKJQM2O6.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-H34A2765.cjs → chunk-CXV7VBSI.cjs} +104 -118
  12. package/dist/{chunk-QPSQ5WLG.cjs → chunk-DGEB5GUZ.cjs} +2 -2
  13. package/dist/{chunk-OZUJYBQ2.cjs → chunk-E3KFEOFA.cjs} +9 -6
  14. package/dist/{chunk-PSSGIZXZ.cjs → chunk-FHT7SMA7.cjs} +49 -46
  15. package/dist/{chunk-46EIXJFC.cjs → chunk-GOFEOCQN.cjs} +44 -27
  16. package/dist/{chunk-UNR74CAC.cjs → chunk-HOEVD6EN.cjs} +4 -4
  17. package/dist/{chunk-EH3LOWGY.cjs → chunk-KRAQEZPB.cjs} +48 -40
  18. package/dist/{chunk-AKTPO2DN.cjs → chunk-L4UI63K6.cjs} +2 -2
  19. package/dist/{chunk-D4XZL27V.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-JNBOQ7F2.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-6XP6RNFD.cjs → chunk-SECT4H34.cjs} +1780 -2076
  27. package/dist/{chunk-GE4PCDNZ.cjs → chunk-SGL47BS2.cjs} +12 -12
  28. package/dist/{chunk-4AZHFLOM.cjs → chunk-SOPVUD2Y.cjs} +3 -3
  29. package/dist/chunk-UGCRLRCT.cjs +25 -0
  30. package/dist/{chunk-BBTSJYTR.cjs → chunk-V3UJ6NDR.cjs} +243 -429
  31. package/dist/{chunk-JOPFX3PJ.cjs → chunk-VEVIMDNK.cjs} +137 -122
  32. package/dist/{chunk-ZNUSYMH7.cjs → chunk-WZX26ODJ.cjs} +121 -121
  33. package/dist/{chunk-YIRX6C7V.cjs → chunk-XJ3J4UIS.cjs} +57 -22
  34. package/dist/{chunk-TRXCQADV.cjs → chunk-ZLF55RDR.cjs} +103 -98
  35. package/dist/{cloud-tenants-V5727B7F.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-WWMXIIHI.cjs → devices-FVXAGKVX.cjs} +17 -15
  372. package/dist/{embeddable-chat-IJHCGQ24.cjs → embeddable-chat-SNYQSMS7.cjs} +79 -77
  373. package/dist/index.cjs +24 -31
  374. package/dist/{knowledge-JZP4RIXB.cjs → knowledge-ZL3ZHBSL.cjs} +17 -15
  375. package/dist/{logs-WIRYFNUC.cjs → logs-KQCWDIOB.cjs} +24 -22
  376. package/dist/{policies-X7OJYA7G.cjs → policies-ARDCZ3CT.cjs} +20 -18
  377. package/dist/{remote-session-IYT4LWJC.cjs → remote-session-ZKP2W3IS.cjs} +9 -7
  378. package/dist/{scripts-GRMT2NGW.cjs → scripts-ZAMVWCY4.cjs} +23 -21
  379. package/dist/{software-update-G3QOB7RT.cjs → software-update-6F7BIYS3.cjs} +20 -18
  380. package/dist/{tickets-board-4MT6ZB4F.cjs → tickets-board-BNW4AYFL.cjs} +11 -10
  381. package/package.json +1 -1
  382. package/src/components/categories-cart.tsx +2 -4
  383. package/src/components/chat/chat-container.tsx +4 -4
  384. package/src/components/chat/chat-context-picker.tsx +3 -2
  385. package/src/components/chat/chat-message-row.tsx +6 -7
  386. package/src/components/chat/chat-message-skeleton.tsx +11 -6
  387. package/src/components/chat/chat-sidebar-skeleton.tsx +4 -3
  388. package/src/components/chat/chat-top-navigation.tsx +4 -4
  389. package/src/components/chat/context-items-list.tsx +9 -3
  390. package/src/components/chat/entity-cards/admin-content-card-grid.tsx +65 -18
  391. package/src/components/chat/entity-cards/admin-content-card.tsx +2 -1
  392. package/src/components/chat/entity-cards/blog-card.tsx +13 -12
  393. package/src/components/chat/entity-cards/campaign-card-admin.tsx +5 -4
  394. package/src/components/chat/entity-cards/case-study-card.tsx +19 -18
  395. package/src/components/chat/entity-cards/chat-ticket-item.tsx +5 -5
  396. package/src/components/chat/entity-cards/customer-interview-card.tsx +15 -14
  397. package/src/components/chat/entity-cards/data-room-doc-card.tsx +7 -6
  398. package/src/components/chat/entity-cards/design-doc-card.tsx +0 -2
  399. package/src/components/chat/entity-cards/generic-entity-card.tsx +8 -7
  400. package/src/components/chat/entity-cards/github-activity-card.tsx +11 -10
  401. package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +16 -15
  402. package/src/components/chat/entity-cards/index.ts +2 -0
  403. package/src/components/chat/entity-cards/investor-update-card.tsx +12 -11
  404. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +21 -22
  405. package/src/components/chat/entity-cards/program-card.tsx +29 -28
  406. package/src/components/chat/entity-cards/roadmap-card.tsx +22 -23
  407. package/src/components/chat/entity-cards/slack-message-card.tsx +12 -11
  408. package/src/components/chat/guide-welcome.tsx +2 -2
  409. package/src/components/chat/mingo-archive-list.tsx +2 -1
  410. package/src/components/chat/mingo-chat-history.tsx +18 -9
  411. package/src/components/chat/mingo-chat-rail.tsx +2 -1
  412. package/src/components/chat/mingo-info-card.tsx +6 -5
  413. package/src/components/chat/mingo-onboarding-card-skeleton.tsx +15 -13
  414. package/src/components/chat/model-display.tsx +4 -4
  415. package/src/components/chat/msp-organization-card-skeleton.tsx +5 -5
  416. package/src/components/chat/quick-action-chip.tsx +17 -14
  417. package/src/components/chat/utils/compact-card-classes.ts +4 -5
  418. package/src/components/content-loading-container.tsx +7 -8
  419. package/src/components/docs/doc-viewer.tsx +3 -2
  420. package/src/components/docs/skeletons.tsx +64 -63
  421. package/src/components/embeds/embed-iframe.tsx +16 -9
  422. package/src/components/embeds/index.ts +2 -2
  423. package/src/components/embeds/linkedin-embed-client.tsx +7 -6
  424. package/src/components/embeds/markdown-image.tsx +5 -3
  425. package/src/components/embeds/og-link-preview.tsx +162 -79
  426. package/src/components/embeds/reddit-embed-client.tsx +10 -9
  427. package/src/components/embeds/twitter-embed-client.tsx +10 -9
  428. package/src/components/faq/faq-section.tsx +13 -6
  429. package/src/components/features/board/ticket-card-skeleton.tsx +8 -8
  430. package/src/components/features/capability-explorer.tsx +61 -30
  431. package/src/components/features/devices/device-selector/device-selector-skeleton.tsx +9 -3
  432. package/src/components/features/devices/device-selector/device-selector.tsx +2 -0
  433. package/src/components/features/devices/device-selector/device-selector.types.ts +2 -0
  434. package/src/components/features/devices/devices-grid.tsx +4 -1
  435. package/src/components/features/devices/devices-panel-view.tsx +9 -1
  436. package/src/components/features/devices/devices-table-columns.tsx +4 -0
  437. package/src/components/features/logs/logs-table-view.tsx +4 -2
  438. package/src/components/features/model-token-rates.tsx +27 -24
  439. package/src/components/features/notifications/index.ts +2 -2
  440. package/src/components/features/notifications/notification-drawer.tsx +7 -10
  441. package/src/components/features/notifications/notification-tile.tsx +57 -0
  442. package/src/components/features/policies/policy-summary-cards.tsx +2 -2
  443. package/src/components/features/push-button-selector.tsx +20 -11
  444. package/src/components/features/remote-session/remote-desktop-view.tsx +26 -16
  445. package/src/components/features/waitlist-form.tsx +6 -5
  446. package/src/components/help-center-pages/download-apps-page.tsx +3 -2
  447. package/src/components/help-center-pages/trust-center-page.tsx +6 -2
  448. package/src/components/help-center-pages/trust-center-sections.tsx +9 -3
  449. package/src/components/index.ts +0 -2
  450. package/src/components/layout/title-block.tsx +17 -15
  451. package/src/components/loading/card-skeleton.tsx +14 -46
  452. package/src/components/loading/category-card-skeleton.tsx +2 -4
  453. package/src/components/loading/category-vendor-selector-skeleton.tsx +12 -5
  454. package/src/components/loading/device-card-skeleton.tsx +58 -51
  455. package/src/components/loading/index.ts +5 -19
  456. package/src/components/loading/loading-region.tsx +60 -0
  457. package/src/components/loading/margin-report-skeleton.tsx +45 -34
  458. package/src/components/loading/msp-profile-form-skeleton.tsx +9 -6
  459. package/src/components/loading/organization-card-skeleton.tsx +8 -6
  460. package/src/components/loading/organization-icon-skeleton.tsx +3 -2
  461. package/src/components/loading/page-layout-skeleton.tsx +162 -133
  462. package/src/components/loading/settings-form-skeleton.tsx +52 -0
  463. package/src/components/loading/unified-skeleton.tsx +26 -71
  464. package/src/components/loading/wizard-layout-skeleton.tsx +6 -3
  465. package/src/components/media-carousel.tsx +2 -1
  466. package/src/components/meeting-scheduler/booking-form.tsx +10 -7
  467. package/src/components/meeting-scheduler/context-panel.tsx +8 -7
  468. package/src/components/meeting-scheduler/directory.tsx +10 -9
  469. package/src/components/meeting-scheduler/index.tsx +5 -4
  470. package/src/components/meeting-scheduler/modal-header.tsx +8 -7
  471. package/src/components/meeting-scheduler/slot-picker.tsx +4 -3
  472. package/src/components/navigation/app-header.tsx +8 -7
  473. package/src/components/navigation/multi-level-navigation.tsx +3 -2
  474. package/src/components/navigation/navigation-sidebar-item.tsx +3 -2
  475. package/src/components/onboarding-guides/onboarding-guides-catalog-skeleton.tsx +17 -10
  476. package/src/components/product-demo/product-screen.tsx +4 -4
  477. package/src/components/profile/ProfileLoadingSkeleton.tsx +13 -9
  478. package/src/components/related-content/related-content-section.tsx +5 -4
  479. package/src/components/shared/delivery/delivery-table.tsx +8 -7
  480. package/src/components/shared/detail-page-skeleton.tsx +22 -14
  481. package/src/components/shared/dev-section/dev-card-row.tsx +23 -10
  482. package/src/components/shared/legal-document/legal-document-page.tsx +8 -7
  483. package/src/components/shared/onboarding/onboarding-step-card.tsx +3 -2
  484. package/src/components/shared/onboarding/onboarding-walkthrough.tsx +2 -1
  485. package/src/components/shared/product-release/index.ts +0 -1
  486. package/src/components/shared/product-release/product-release-card-skeleton.tsx +23 -25
  487. package/src/components/shared/product-release/product-releases-view.tsx +3 -2
  488. package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +14 -56
  489. package/src/components/tickets/help-center-create-form.tsx +23 -12
  490. package/src/components/tickets/ticket-center.tsx +17 -11
  491. package/src/components/tickets/ticket-detail-drawer.tsx +3 -2
  492. package/src/components/ui/admin-form-drawer.tsx +7 -7
  493. package/src/components/ui/admin-form-modal.tsx +9 -8
  494. package/src/components/ui/analyzing-state.tsx +5 -8
  495. package/src/components/ui/content-loader.tsx +31 -23
  496. package/src/components/ui/dashboard-info-card.tsx +81 -20
  497. package/src/components/ui/data-attribution.tsx +18 -0
  498. package/src/components/ui/data-table/data-table-body.tsx +9 -2
  499. package/src/components/ui/data-table/data-table-infinite-footer.tsx +4 -2
  500. package/src/components/ui/data-table/data-table-skeleton.tsx +8 -5
  501. package/src/components/ui/feature-card.tsx +27 -11
  502. package/src/components/ui/file-manager/file-manager-skeleton.tsx +30 -22
  503. package/src/components/ui/file-manager/file-manager-table.tsx +10 -10
  504. package/src/components/ui/filter-modal.tsx +5 -5
  505. package/src/components/ui/filter-pill-row.tsx +19 -0
  506. package/src/components/ui/index.ts +0 -1
  507. package/src/components/ui/layout-hold.tsx +30 -38
  508. package/src/components/ui/markdown/base-components.tsx +1 -1
  509. package/src/components/ui/page-actions.tsx +10 -8
  510. package/src/components/ui/photo-wall.tsx +4 -7
  511. package/src/components/ui/query-report-table/query-report-table-skeleton.tsx +13 -7
  512. package/src/components/ui/query-report-table/query-report-table.tsx +2 -0
  513. package/src/components/ui/query-report-table/types.ts +4 -0
  514. package/src/components/ui/skeleton-surface.ts +6 -0
  515. package/src/components/ui/table/table-skeleton.tsx +11 -13
  516. package/src/components/ui/test-run.tsx +30 -22
  517. package/src/styles/ods-colors.css +2 -2
  518. package/dist/chunk-5M5C6UV4.cjs +0 -125
  519. package/dist/components/dynamic-skeleton.d.ts +0 -108
  520. package/dist/components/dynamic-skeleton.d.ts.map +0 -1
  521. package/dist/components/dynamic-skeleton.js +0 -221
  522. package/dist/components/loading/content-skeleton.d.ts +0 -73
  523. package/dist/components/loading/content-skeleton.d.ts.map +0 -1
  524. package/dist/components/loading/content-skeleton.js +0 -217
  525. package/dist/components/loading/users-grid-skeleton.d.ts +0 -7
  526. package/dist/components/loading/users-grid-skeleton.d.ts.map +0 -1
  527. package/dist/components/loading/users-grid-skeleton.js +0 -13
  528. package/dist/components/shared/product-release/release-detail-skeleton.d.ts +0 -2
  529. package/dist/components/shared/product-release/release-detail-skeleton.d.ts.map +0 -1
  530. package/dist/components/shared/product-release/release-detail-skeleton.js +0 -9
  531. package/dist/components/skeleton.d.ts +0 -4
  532. package/dist/components/skeleton.d.ts.map +0 -1
  533. package/dist/components/skeleton.js +0 -9
  534. package/dist/components/ui/skeleton.d.ts +0 -44
  535. package/dist/components/ui/skeleton.d.ts.map +0 -1
  536. package/dist/components/ui/skeleton.js +0 -103
  537. package/dist/components/vendor-page-skeleton.d.ts +0 -2
  538. package/dist/components/vendor-page-skeleton.d.ts.map +0 -1
  539. package/dist/components/vendor-page-skeleton.js +0 -9
  540. package/src/components/dynamic-skeleton.tsx +0 -365
  541. package/src/components/loading/content-skeleton.tsx +0 -374
  542. package/src/components/loading/users-grid-skeleton.tsx +0 -36
  543. package/src/components/shared/product-release/release-detail-skeleton.tsx +0 -7
  544. package/src/components/skeleton.tsx +0 -8
  545. package/src/components/ui/skeleton.tsx +0 -173
  546. package/src/components/vendor-page-skeleton.tsx +0 -7
@@ -2,6 +2,7 @@
2
2
 
3
3
  import type { ReactNode } from 'react';
4
4
  import { cn } from '../utils/cn';
5
+ import { LoadingRegion } from './loading/loading-region';
5
6
 
6
7
  interface ContentLoadingContainerProps {
7
8
  /**
@@ -50,7 +51,7 @@ interface ContentLoadingContainerProps {
50
51
  * ```tsx
51
52
  * <ContentLoadingContainer
52
53
  * isLoading={isLoadingVendors}
53
- * skeletonComponent={<CardSkeletonGrid variant="vendor" count={12} />}
54
+ * skeletonComponent={<CardSkeletonGrid variant="vendor" count={12} region={false} />}
54
55
  * minHeight="min-h-[800px]"
55
56
  * >
56
57
  * <VendorGrid vendors={vendors} />
@@ -72,23 +73,21 @@ export function ContentLoadingContainer({
72
73
  style={{
73
74
  transitionDuration: `${transitionDuration}ms`,
74
75
  }}
75
- role="region"
76
- aria-label={isLoading ? 'Loading content' : 'Content loaded'}
77
- aria-live="polite"
78
76
  >
79
77
  {/* Loading Skeleton Overlay */}
80
78
  {isLoading && (
81
- <div
79
+ // The one announcement for this content: a `skeletonComponent` that has a region of its own
80
+ // takes `region={false}`.
81
+ <LoadingRegion
82
+ label="Loading content"
82
83
  className="absolute inset-0 z-10 bg-ods-bg"
83
84
  style={{
84
85
  opacity: loadingOpacity,
85
86
  transition: `opacity ${transitionDuration}ms ease-in-out`,
86
87
  }}
87
- role="status"
88
- aria-label="Loading content"
89
88
  >
90
89
  {skeletonComponent}
91
- </div>
90
+ </LoadingRegion>
92
91
  )}
93
92
 
94
93
  {/* Actual Content */}
@@ -8,6 +8,7 @@ import { findDocNodeByPath } from '../../utils/doc-tree-nav';
8
8
  import { PageShell } from '../layout/article-detail-layout';
9
9
  import { PageLayout } from '../layout/page-layout';
10
10
  import { CategorySidebarSkeleton } from '../loading/page-layout-skeleton';
11
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
11
12
  import { MultiLevelNavigation, MobileNavigationDropdown } from '../navigation/multi-level-navigation';
12
13
  import { StickySectionNav } from '../navigation/sticky-section-nav';
13
14
  import { PersistentSidebar, PersistentMobileDropdown } from '../persistent-filter-controls';
@@ -368,7 +369,7 @@ function DocViewerContent({
368
369
  {isMarkdownContent && (isLoadingContent || isLoadingStructure) && (
369
370
  <div className="hidden content-lg:block">
370
371
  <div className="sticky top-24">
371
- <div className="mb-5 h-[14px] w-28 animate-pulse rounded bg-ods-border" />
372
+ <UnifiedSkeleton className="mb-5 h-[14px] w-28 rounded" />
372
373
  <div className="space-y-0">
373
374
  {[130, 170, 190, 220, 110, 200, 80, 100, 120, 140, 90].map((w, i) => (
374
375
  <div
@@ -377,7 +378,7 @@ function DocViewerContent({
377
378
  i === 0 ? 'border-ods-accent' : 'border-transparent'
378
379
  }`}
379
380
  >
380
- <div className="h-[13px] animate-pulse rounded bg-ods-border" style={{ width: w }} />
381
+ <UnifiedSkeleton className="h-[13px] rounded" width={w} />
381
382
  </div>
382
383
  ))}
383
384
  </div>
@@ -1,59 +1,67 @@
1
+ import { EmbedLoadingSkeleton } from '../embeds/embed-iframe';
2
+ import { LoadingRegion } from '../loading/loading-region';
3
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
1
4
  /**
2
5
  * Text-style skeleton — matches a rendered markdown article layout.
3
6
  * Used by `<DocsHubPage>` as the default for `markdown` (and unknown
4
7
  * document types). Embedders can override via `renderSkeleton`.
5
8
  */
6
- export function MarkdownSkeleton() {
9
+ export function MarkdownSkeleton({
10
+ region = true,
11
+ }: {
12
+ /** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
13
+ region?: boolean;
14
+ } = {}) {
7
15
  return (
8
- <div className="mt-6 space-y-7">
16
+ <LoadingRegion label="Loading the document" announce={region} className="mt-6 space-y-7">
9
17
  <div className="space-y-[14px]">
10
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
11
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
12
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
13
- <div className="h-[16px] w-3/4 animate-pulse rounded bg-ods-border" />
18
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
19
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
20
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
21
+ <UnifiedSkeleton className="h-[16px] w-3/4 rounded" />
14
22
  </div>
15
23
  <div className="space-y-[14px]">
16
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
17
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
18
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
19
- <div className="h-[16px] w-5/6 animate-pulse rounded bg-ods-border" />
24
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
25
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
26
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
27
+ <UnifiedSkeleton className="h-[16px] w-5/6 rounded" />
20
28
  </div>
21
29
  <div className="space-y-[14px]">
22
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
23
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
24
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
25
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
26
- <div className="h-[16px] w-2/3 animate-pulse rounded bg-ods-border" />
30
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
31
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
32
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
33
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
34
+ <UnifiedSkeleton className="h-[16px] w-2/3 rounded" />
27
35
  </div>
28
- <div className="h-[88px] animate-pulse rounded-lg border border-ods-border bg-ods-card" />
29
- <div className="h-7 w-1/3 animate-pulse rounded bg-ods-border" />
36
+ <UnifiedSkeleton className="h-[88px] rounded-lg border border-ods-border" />
37
+ <UnifiedSkeleton className="h-7 w-1/3 rounded" />
30
38
  <div className="space-y-[14px]">
31
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
32
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
33
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
34
- <div className="h-[16px] w-[72%] animate-pulse rounded bg-ods-border" />
39
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
40
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
41
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
42
+ <UnifiedSkeleton className="h-[16px] w-[72%] rounded" />
35
43
  </div>
36
44
  <div className="space-y-[14px]">
37
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
38
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
39
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
40
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
41
- <div className="h-[16px] w-[58%] animate-pulse rounded bg-ods-border" />
45
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
46
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
47
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
48
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
49
+ <UnifiedSkeleton className="h-[16px] w-[58%] rounded" />
42
50
  </div>
43
- <div className="h-7 w-2/5 animate-pulse rounded bg-ods-border" />
51
+ <UnifiedSkeleton className="h-7 w-2/5 rounded" />
44
52
  <div className="space-y-[14px]">
45
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
46
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
47
- <div className="h-[16px] w-[90%] animate-pulse rounded bg-ods-border" />
53
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
54
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
55
+ <UnifiedSkeleton className="h-[16px] w-[90%] rounded" />
48
56
  </div>
49
57
  <div className="space-y-[14px]">
50
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
51
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
52
- <div className="h-[16px] w-full animate-pulse rounded bg-ods-border" />
53
- <div className="h-[16px] w-[70%] animate-pulse rounded bg-ods-border" />
58
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
59
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
60
+ <UnifiedSkeleton className="h-[16px] w-full rounded" />
61
+ <UnifiedSkeleton className="h-[16px] w-[70%] rounded" />
54
62
  </div>
55
- <div className="h-[88px] animate-pulse rounded-lg border border-ods-border bg-ods-card" />
56
- </div>
63
+ <UnifiedSkeleton className="h-[88px] rounded-lg border border-ods-border" />
64
+ </LoadingRegion>
57
65
  );
58
66
  }
59
67
 
@@ -68,35 +76,35 @@ export function MarkdownSkeleton() {
68
76
  * - `google_sheet`/`figma` → header with title + ONE button/toggle
69
77
  * - `file` → centered FileDownloadCard-style box
70
78
  * - undefined / others → generic (1-button header)
71
- *
72
- * IMPORTANT: bars use `bg-ods-border` (NOT `bg-ods-skeleton`). The
73
- * `--ods-skeleton` token resolves to TRANSPARENT in this build, leaving
74
- * the skeleton box visually empty — the embed skeleton was the loudest
75
- * surface affected (a full-height iframe area showing nothing). Same fix
76
- * the chat-message-row skeleton already documents in its inline comment.
77
79
  */
78
80
  export interface EmbedSkeletonProps {
79
81
  /** When provided, the header layout matches the eventual viewer's
80
82
  * button count + arrangement, so the layout doesn't shift on load. */
81
83
  documentType?: 'pdf' | 'google_sheet' | 'figma' | 'file' | string;
84
+ /** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
85
+ region?: boolean;
82
86
  }
83
87
 
84
- export function EmbedSkeleton({ documentType }: EmbedSkeletonProps = {}) {
88
+ export function EmbedSkeleton({ documentType, region = true }: EmbedSkeletonProps = {}) {
85
89
  // Centered card shape for the `file` documentType — matches
86
90
  // `<FileDownloadCard>`'s `flex flex-col items-center justify-center py-16`
87
91
  // + bordered card with icon, name, type/size row, Download button.
88
92
  if (documentType === 'file') {
89
93
  return (
90
- <div className="flex flex-col items-center justify-center py-16">
94
+ <LoadingRegion
95
+ label="Loading the document"
96
+ announce={region}
97
+ className="flex flex-col items-center justify-center py-16"
98
+ >
91
99
  <div className="w-full max-w-md space-y-4 rounded-xl border border-ods-border bg-ods-card p-8 text-center">
92
- <div className="mx-auto h-16 w-16 animate-pulse rounded bg-ods-border" />
100
+ <UnifiedSkeleton className="mx-auto h-16 w-16 rounded" />
93
101
  <div className="space-y-2">
94
- <div className="mx-auto h-5 w-2/3 animate-pulse rounded bg-ods-border" />
95
- <div className="mx-auto h-4 w-1/2 animate-pulse rounded bg-ods-border" />
102
+ <UnifiedSkeleton className="mx-auto h-5 w-2/3 rounded" />
103
+ <UnifiedSkeleton className="mx-auto h-4 w-1/2 rounded" />
96
104
  </div>
97
- <div className="h-10 w-full animate-pulse rounded bg-ods-border" />
105
+ <UnifiedSkeleton className="h-10 w-full rounded" />
98
106
  </div>
99
- </div>
107
+ </LoadingRegion>
100
108
  );
101
109
  }
102
110
 
@@ -105,32 +113,25 @@ export function EmbedSkeleton({ documentType }: EmbedSkeletonProps = {}) {
105
113
  const buttonCount = documentType === 'pdf' ? 2 : 1;
106
114
 
107
115
  return (
108
- <div className="space-y-4">
116
+ <LoadingRegion label="Loading the document" announce={region} className="space-y-4">
109
117
  {/* Header — matches the actual viewer's
110
118
  * `flex flex-col gap-3 content-sm:flex-row content-sm:items-center content-sm:justify-between`
111
119
  * (mobile-stacked, desktop-row). */}
112
120
  <div className="flex flex-col gap-3 content-sm:flex-row content-sm:items-center content-sm:justify-between">
113
121
  {/* Left: icon + title */}
114
122
  <div className="flex min-w-0 flex-1 items-center gap-2">
115
- <div className="h-5 w-5 shrink-0 animate-pulse rounded bg-ods-border" />
116
- <div className="h-6 w-2/3 animate-pulse rounded bg-ods-border" />
123
+ <UnifiedSkeleton className="h-5 w-5 shrink-0 rounded" />
124
+ <UnifiedSkeleton className="h-6 w-2/3 rounded" />
117
125
  </div>
118
126
  {/* Right: 1 or 2 buttons. Mobile = full-width; desktop = auto. */}
119
127
  <div className="flex w-full items-center gap-2 content-sm:w-auto">
120
128
  {Array.from({ length: buttonCount }).map((_, i) => (
121
- <div
122
- key={i}
123
- className="h-10 w-full flex-1 animate-pulse rounded bg-ods-border content-sm:w-32 content-sm:flex-initial"
124
- />
129
+ <UnifiedSkeleton key={i} className="h-10 w-full flex-1 rounded content-sm:w-32 content-sm:flex-initial" />
125
130
  ))}
126
131
  </div>
127
132
  </div>
128
- {/* Body — clean iframe-sized rectangle, no fake inner placeholder
129
- * cruft. Matches the viewer's default `calc(100vh - 250px)` height. */}
130
- <div
131
- className="w-full animate-pulse rounded-lg border border-ods-border bg-ods-card"
132
- style={{ height: 'calc(100vh - 250px)' }}
133
- />
134
- </div>
133
+ {/* Body: the iframe viewer's own loading box (its default `calc(100vh - 250px)` height). */}
134
+ <EmbedLoadingSkeleton region={false} />
135
+ </LoadingRegion>
135
136
  );
136
137
  }
@@ -2,22 +2,29 @@
2
2
 
3
3
  import type React from 'react';
4
4
  import { useState, useCallback, useRef, useEffect } from 'react';
5
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
5
6
 
6
- /** Loading skeleton for iframe embeds — clean iframe-sized rectangle.
7
- * Uses `bg-ods-card` (visible token) rather than `bg-ods-skeleton`
8
- * which resolves to transparent in this build (the same gotcha
9
- * documented in `chat-message-row.tsx`'s skeleton). No fake inner
10
- * placeholder cruft — a real loading iframe shows a blank rectangle.
7
+ /** Loading skeleton for iframe embeds: a clean iframe-sized `UnifiedSkeleton`
8
+ * rectangle. No fake inner placeholder cruft: a real loading iframe shows a
9
+ * blank rectangle.
11
10
  *
12
11
  * Exported so a viewer that is still RESOLVING where its frame points
13
12
  * (ClaudeEmbed probing for a self-hosted mirror, before it has a `src`)
14
13
  * can render the IDENTICAL skeleton through `EmbedViewerFrame`, keeping
15
14
  * every embed's loading state 1:1 with the Figma/Sheets/PDF viewers. */
16
- export function EmbedLoadingSkeleton({ height }: { height?: string }) {
15
+ export function EmbedLoadingSkeleton({
16
+ height,
17
+ region = true,
18
+ }: {
19
+ height?: string;
20
+ /** The box announces itself (one named status). `false` inside another loading region. Default `true`. */
21
+ region?: boolean;
22
+ }) {
17
23
  return (
18
- <div
19
- className="w-full animate-pulse overflow-hidden rounded-lg border border-ods-border bg-ods-card"
20
- style={{ height: height || 'calc(100vh - 250px)' }}
24
+ <UnifiedSkeleton
25
+ className="w-full overflow-hidden rounded-lg border border-ods-border"
26
+ height={height || 'calc(100vh - 250px)'}
27
+ aria-label={region ? 'Loading the embed' : undefined}
21
28
  />
22
29
  );
23
30
  }
@@ -14,8 +14,8 @@ export type { FigmaEmbedProps } from './figma-embed';
14
14
  export { ClaudeEmbed } from './claude-embed';
15
15
  export type { ClaudeEmbedProps, ClaudeEmbedKind } from './claude-embed';
16
16
 
17
- export { OGLinkPreview, OGLinkErrorBoundary } from './og-link-preview';
18
- export type { OGLinkPreviewProps, OGData, BuildPlaceholderUrl } from './og-link-preview';
17
+ export { OGLinkPreview, OGLinkErrorBoundary, OGLinkTileSkeleton } from './og-link-preview';
18
+ export type { OGLinkPreviewProps, OGData } from './og-link-preview';
19
19
 
20
20
  export { FileDownloadCard } from './file-download-card';
21
21
  export type { FileDownloadCardProps } from './file-download-card';
@@ -4,6 +4,7 @@ import { ExternalLink } from 'lucide-react';
4
4
  import { useMemo, useState } from 'react';
5
5
  import Link from '../../embed-shims/next-link';
6
6
  import { LinkedinIcon } from '../icons-v2-generated/brand-logos/linkedin-icon';
7
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
7
8
  import { LinkedInContainer } from './embed-container';
8
9
 
9
10
  /**
@@ -61,17 +62,17 @@ export function LinkedInEmbedClient({ url, height = 600 }: LinkedInEmbedProps) {
61
62
  <LinkedInContainer>
62
63
  <div className="relative w-full" style={{ height }}>
63
64
  {!loaded && (
64
- <div className="absolute inset-0 animate-pulse p-6">
65
+ <div className="absolute inset-0 p-6">
65
66
  <div className="mb-4 flex items-center space-x-3">
66
- <div className="h-12 w-12 rounded-full bg-ods-border" />
67
+ <UnifiedSkeleton className="h-12 w-12 rounded-full" />
67
68
  <div>
68
- <div className="mb-2 h-4 w-32 rounded bg-ods-border" />
69
- <div className="h-3 w-24 rounded bg-ods-border" />
69
+ <UnifiedSkeleton className="mb-2 h-4 w-32 rounded" />
70
+ <UnifiedSkeleton className="h-3 w-24 rounded" />
70
71
  </div>
71
72
  </div>
72
73
  <div className="space-y-2">
73
- <div className="h-4 w-full rounded bg-ods-border" />
74
- <div className="h-4 w-3/4 rounded bg-ods-border" />
74
+ <UnifiedSkeleton className="h-4 w-full rounded" />
75
+ <UnifiedSkeleton className="h-4 w-3/4 rounded" />
75
76
  </div>
76
77
  </div>
77
78
  )}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useEffect, useState } from 'react';
4
4
  import Image from '../../embed-shims/next-image';
5
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
5
6
  import { useRichMarkdownRuntime } from './rich-markdown-runtime';
6
7
 
7
8
  /**
@@ -63,9 +64,10 @@ export function MarkdownImage({ src, alt }: { src: string; alt?: string }) {
63
64
  // Reserve a neutral box while probing so the layout doesn't jump when the image appears.
64
65
  if (!ratio) {
65
66
  return (
66
- <span
67
- className="mx-auto my-2 block w-full max-w-full animate-pulse rounded-lg bg-ods-card"
68
- style={{ aspectRatio: '3 / 2', maxHeight: `${MAX_H_REM}rem` }}
67
+ <UnifiedSkeleton
68
+ as="span"
69
+ className="mx-auto my-2 block aspect-[3/2] w-full max-w-full rounded-lg"
70
+ style={{ maxHeight: `${MAX_H_REM}rem` }}
69
71
  aria-hidden
70
72
  />
71
73
  );