@flamingo-stack/openframe-frontend-core 0.0.748 → 0.0.750

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 (554) 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-4AZHFLOM.cjs → chunk-4O2KYY4K.cjs} +3 -3
  8. package/dist/{chunk-6XP6RNFD.cjs → chunk-6KEJQR6L.cjs} +1875 -2116
  9. package/dist/{chunk-JNBOQ7F2.cjs → chunk-7RCTOWBA.cjs} +24 -24
  10. package/dist/{chunk-U6XWGK53.cjs → chunk-ALPRQ3ZX.cjs} +56 -46
  11. package/dist/{chunk-TRXCQADV.cjs → chunk-AW6GP3JK.cjs} +103 -98
  12. package/dist/{chunk-GE4PCDNZ.cjs → chunk-BO6ZOAPB.cjs} +12 -12
  13. package/dist/{chunk-HNLI4OU5.cjs → chunk-C6LPOYDM.cjs} +24 -24
  14. package/dist/{chunk-4MGZYY6U.cjs → chunk-CLAJIQ7E.cjs} +26 -18
  15. package/dist/{chunk-EH3LOWGY.cjs → chunk-CNUZLOVA.cjs} +48 -40
  16. package/dist/{chunk-QPSQ5WLG.cjs → chunk-DGEB5GUZ.cjs} +2 -2
  17. package/dist/{chunk-OZUJYBQ2.cjs → chunk-E3KFEOFA.cjs} +9 -6
  18. package/dist/{chunk-PSSGIZXZ.cjs → chunk-FHT7SMA7.cjs} +49 -46
  19. package/dist/{chunk-JOPFX3PJ.cjs → chunk-FP6HAJQV.cjs} +137 -122
  20. package/dist/{chunk-YKJQM2O6.cjs → chunk-GVETSV7H.cjs} +56 -53
  21. package/dist/{chunk-UNR74CAC.cjs → chunk-HOEVD6EN.cjs} +4 -4
  22. package/dist/{chunk-H34A2765.cjs → chunk-JPUTILTV.cjs} +104 -118
  23. package/dist/{chunk-46EIXJFC.cjs → chunk-KVSEWACW.cjs} +44 -27
  24. package/dist/{chunk-AKTPO2DN.cjs → chunk-L4UI63K6.cjs} +2 -2
  25. package/dist/{chunk-PSIKUDUV.cjs → chunk-LVO7FALW.cjs} +5 -5
  26. package/dist/{chunk-L2RMTGOK.cjs → chunk-MGF3FUKD.cjs} +7 -7
  27. package/dist/{chunk-P7KTAXXE.cjs → chunk-OFO75R2O.cjs} +169 -175
  28. package/dist/{chunk-B27QEHYR.cjs → chunk-P6F6PHVK.cjs} +9 -9
  29. package/dist/chunk-RB6BSE3O.cjs +21 -0
  30. package/dist/chunk-UGCRLRCT.cjs +25 -0
  31. package/dist/{chunk-BBTSJYTR.cjs → chunk-V3UJ6NDR.cjs} +243 -429
  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-D4XZL27V.cjs → chunk-YL62VAHC.cjs} +6 -6
  35. package/dist/{cloud-tenants-V5727B7F.cjs → cloud-tenants-E4JSG3GH.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/auth/login-form.d.ts +34 -21
  143. package/dist/components/features/auth/login-form.d.ts.map +1 -1
  144. package/dist/components/features/auth/login-form.js +77 -39
  145. package/dist/components/features/auth/sso-providers.d.ts +7 -1
  146. package/dist/components/features/auth/sso-providers.d.ts.map +1 -1
  147. package/dist/components/features/auth/sso-providers.js +22 -4
  148. package/dist/components/features/board/ticket-card-skeleton.js +8 -8
  149. package/dist/components/features/capability-explorer.d.ts +3 -1
  150. package/dist/components/features/capability-explorer.d.ts.map +1 -1
  151. package/dist/components/features/capability-explorer.js +27 -24
  152. package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts +5 -2
  153. package/dist/components/features/devices/device-selector/device-selector-skeleton.d.ts.map +1 -1
  154. package/dist/components/features/devices/device-selector/device-selector-skeleton.js +2 -2
  155. package/dist/components/features/devices/device-selector/device-selector.d.ts +1 -1
  156. package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -1
  157. package/dist/components/features/devices/device-selector/device-selector.js +2 -0
  158. package/dist/components/features/devices/device-selector/device-selector.types.d.ts +2 -0
  159. package/dist/components/features/devices/device-selector/device-selector.types.d.ts.map +1 -1
  160. package/dist/components/features/devices/devices-grid.d.ts +3 -1
  161. package/dist/components/features/devices/devices-grid.d.ts.map +1 -1
  162. package/dist/components/features/devices/devices-grid.js +3 -2
  163. package/dist/components/features/devices/devices-panel-view.d.ts +6 -1
  164. package/dist/components/features/devices/devices-panel-view.d.ts.map +1 -1
  165. package/dist/components/features/devices/devices-panel-view.js +4 -1
  166. package/dist/components/features/devices/devices-table-columns.d.ts +3 -1
  167. package/dist/components/features/devices/devices-table-columns.d.ts.map +1 -1
  168. package/dist/components/features/devices/devices-table-columns.js +2 -0
  169. package/dist/components/features/index.cjs +18 -14
  170. package/dist/components/features/logs/logs-table-view.d.ts +3 -1
  171. package/dist/components/features/logs/logs-table-view.d.ts.map +1 -1
  172. package/dist/components/features/logs/logs-table-view.js +2 -2
  173. package/dist/components/features/model-token-rates.d.ts +4 -1
  174. package/dist/components/features/model-token-rates.d.ts.map +1 -1
  175. package/dist/components/features/model-token-rates.js +18 -23
  176. package/dist/components/features/notifications/index.d.ts +2 -2
  177. package/dist/components/features/notifications/index.d.ts.map +1 -1
  178. package/dist/components/features/notifications/index.js +2 -1
  179. package/dist/components/features/notifications/notification-drawer.d.ts.map +1 -1
  180. package/dist/components/features/notifications/notification-drawer.js +9 -16
  181. package/dist/components/features/notifications/notification-tile.d.ts +14 -0
  182. package/dist/components/features/notifications/notification-tile.d.ts.map +1 -1
  183. package/dist/components/features/notifications/notification-tile.js +36 -1
  184. package/dist/components/features/policies/policy-summary-cards.js +2 -2
  185. package/dist/components/features/push-button-selector.d.ts.map +1 -1
  186. package/dist/components/features/push-button-selector.js +12 -7
  187. package/dist/components/features/remote-session/remote-desktop-view.d.ts +4 -1
  188. package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -1
  189. package/dist/components/features/remote-session/remote-desktop-view.js +14 -10
  190. package/dist/components/features/waitlist-form.d.ts.map +1 -1
  191. package/dist/components/features/waitlist-form.js +6 -5
  192. package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -1
  193. package/dist/components/help-center-pages/download-apps-page.js +2 -1
  194. package/dist/components/help-center-pages/index.cjs +127 -119
  195. package/dist/components/help-center-pages/trust-center-page.d.ts +4 -1
  196. package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
  197. package/dist/components/help-center-pages/trust-center-page.js +3 -2
  198. package/dist/components/help-center-pages/trust-center-sections.d.ts +4 -1
  199. package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
  200. package/dist/components/help-center-pages/trust-center-sections.js +5 -2
  201. package/dist/components/index.cjs +70 -112
  202. package/dist/components/index.d.ts +0 -2
  203. package/dist/components/index.d.ts.map +1 -1
  204. package/dist/components/index.js +0 -2
  205. package/dist/components/layout/title-block.d.ts.map +1 -1
  206. package/dist/components/layout/title-block.js +18 -11
  207. package/dist/components/loading/card-skeleton.d.ts +6 -3
  208. package/dist/components/loading/card-skeleton.d.ts.map +1 -1
  209. package/dist/components/loading/card-skeleton.js +7 -27
  210. package/dist/components/loading/category-card-skeleton.d.ts.map +1 -1
  211. package/dist/components/loading/category-card-skeleton.js +2 -4
  212. package/dist/components/loading/category-vendor-selector-skeleton.d.ts +3 -1
  213. package/dist/components/loading/category-vendor-selector-skeleton.d.ts.map +1 -1
  214. package/dist/components/loading/category-vendor-selector-skeleton.js +9 -4
  215. package/dist/components/loading/device-card-skeleton.d.ts +18 -9
  216. package/dist/components/loading/device-card-skeleton.d.ts.map +1 -1
  217. package/dist/components/loading/device-card-skeleton.js +30 -21
  218. package/dist/components/loading/index.d.ts +3 -4
  219. package/dist/components/loading/index.d.ts.map +1 -1
  220. package/dist/components/loading/index.js +6 -29
  221. package/dist/components/loading/loading-region.d.ts +33 -0
  222. package/dist/components/loading/loading-region.d.ts.map +1 -0
  223. package/dist/components/loading/loading-region.js +22 -0
  224. package/dist/components/loading/margin-report-skeleton.d.ts +3 -1
  225. package/dist/components/loading/margin-report-skeleton.d.ts.map +1 -1
  226. package/dist/components/loading/margin-report-skeleton.js +70 -61
  227. package/dist/components/loading/msp-profile-form-skeleton.d.ts +3 -1
  228. package/dist/components/loading/msp-profile-form-skeleton.d.ts.map +1 -1
  229. package/dist/components/loading/msp-profile-form-skeleton.js +6 -5
  230. package/dist/components/loading/organization-card-skeleton.d.ts +3 -1
  231. package/dist/components/loading/organization-card-skeleton.d.ts.map +1 -1
  232. package/dist/components/loading/organization-card-skeleton.js +5 -5
  233. package/dist/components/loading/organization-icon-skeleton.d.ts.map +1 -1
  234. package/dist/components/loading/organization-icon-skeleton.js +2 -1
  235. package/dist/components/loading/page-layout-skeleton.d.ts +21 -6
  236. package/dist/components/loading/page-layout-skeleton.d.ts.map +1 -1
  237. package/dist/components/loading/page-layout-skeleton.js +283 -266
  238. package/dist/components/loading/settings-form-skeleton.d.ts +17 -0
  239. package/dist/components/loading/settings-form-skeleton.d.ts.map +1 -0
  240. package/dist/components/loading/settings-form-skeleton.js +42 -0
  241. package/dist/components/loading/unified-skeleton.d.ts +11 -4
  242. package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
  243. package/dist/components/loading/unified-skeleton.js +14 -89
  244. package/dist/components/loading/wizard-layout-skeleton.d.ts +3 -1
  245. package/dist/components/loading/wizard-layout-skeleton.d.ts.map +1 -1
  246. package/dist/components/loading/wizard-layout-skeleton.js +3 -2
  247. package/dist/components/media-carousel.d.ts.map +1 -1
  248. package/dist/components/media-carousel.js +2 -1
  249. package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
  250. package/dist/components/meeting-scheduler/booking-form.js +14 -8
  251. package/dist/components/meeting-scheduler/context-panel.d.ts.map +1 -1
  252. package/dist/components/meeting-scheduler/context-panel.js +8 -7
  253. package/dist/components/meeting-scheduler/directory.d.ts.map +1 -1
  254. package/dist/components/meeting-scheduler/directory.js +10 -9
  255. package/dist/components/meeting-scheduler/index.cjs +85 -75
  256. package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
  257. package/dist/components/meeting-scheduler/index.js +3 -2
  258. package/dist/components/meeting-scheduler/modal-header.d.ts.map +1 -1
  259. package/dist/components/meeting-scheduler/modal-header.js +8 -7
  260. package/dist/components/meeting-scheduler/slot-picker.d.ts.map +1 -1
  261. package/dist/components/meeting-scheduler/slot-picker.js +4 -3
  262. package/dist/components/navigation/app-header.d.ts.map +1 -1
  263. package/dist/components/navigation/app-header.js +8 -7
  264. package/dist/components/navigation/index.cjs +19 -17
  265. package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -1
  266. package/dist/components/navigation/multi-level-navigation.js +3 -2
  267. package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
  268. package/dist/components/navigation/navigation-sidebar-item.js +3 -2
  269. package/dist/components/onboarding-guides/index.cjs +19 -17
  270. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts +4 -1
  271. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts.map +1 -1
  272. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.js +12 -8
  273. package/dist/components/product-demo/index.cjs +16 -15
  274. package/dist/components/product-demo/product-screen.d.ts.map +1 -1
  275. package/dist/components/product-demo/product-screen.js +4 -4
  276. package/dist/components/profile/ProfileLoadingSkeleton.d.ts +3 -1
  277. package/dist/components/profile/ProfileLoadingSkeleton.d.ts.map +1 -1
  278. package/dist/components/profile/ProfileLoadingSkeleton.js +10 -8
  279. package/dist/components/related-content/index.cjs +7 -5
  280. package/dist/components/related-content/related-content-section.d.ts.map +1 -1
  281. package/dist/components/related-content/related-content-section.js +3 -2
  282. package/dist/components/shared/delivery/delivery-table.d.ts.map +1 -1
  283. package/dist/components/shared/delivery/delivery-table.js +8 -7
  284. package/dist/components/shared/detail-page-skeleton.d.ts +5 -1
  285. package/dist/components/shared/detail-page-skeleton.d.ts.map +1 -1
  286. package/dist/components/shared/detail-page-skeleton.js +18 -14
  287. package/dist/components/shared/dev-section/dev-card-row.d.ts +3 -1
  288. package/dist/components/shared/dev-section/dev-card-row.d.ts.map +1 -1
  289. package/dist/components/shared/dev-section/dev-card-row.js +22 -9
  290. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
  291. package/dist/components/shared/legal-document/legal-document-page.js +8 -7
  292. package/dist/components/shared/onboarding/onboarding-step-card.d.ts.map +1 -1
  293. package/dist/components/shared/onboarding/onboarding-step-card.js +3 -2
  294. package/dist/components/shared/onboarding/onboarding-walkthrough.d.ts.map +1 -1
  295. package/dist/components/shared/onboarding/onboarding-walkthrough.js +2 -1
  296. package/dist/components/shared/product-release/index.d.ts +0 -1
  297. package/dist/components/shared/product-release/index.d.ts.map +1 -1
  298. package/dist/components/shared/product-release/index.js +1 -3
  299. package/dist/components/shared/product-release/product-release-card-skeleton.d.ts.map +1 -1
  300. package/dist/components/shared/product-release/product-release-card-skeleton.js +21 -20
  301. package/dist/components/shared/product-release/product-releases-view.d.ts.map +1 -1
  302. package/dist/components/shared/product-release/product-releases-view.js +2 -1
  303. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts +6 -13
  304. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts.map +1 -1
  305. package/dist/components/shared/roadmap/roadmap-grid-skeleton.js +13 -25
  306. package/dist/components/tickets/help-center-create-form.d.ts +4 -1
  307. package/dist/components/tickets/help-center-create-form.d.ts.map +1 -1
  308. package/dist/components/tickets/help-center-create-form.js +38 -26
  309. package/dist/components/tickets/index.cjs +22 -20
  310. package/dist/components/tickets/ticket-center.d.ts.map +1 -1
  311. package/dist/components/tickets/ticket-center.js +13 -10
  312. package/dist/components/tickets/ticket-detail-drawer.d.ts.map +1 -1
  313. package/dist/components/tickets/ticket-detail-drawer.js +2 -1
  314. package/dist/components/ui/admin-form-drawer.d.ts.map +1 -1
  315. package/dist/components/ui/admin-form-drawer.js +6 -8
  316. package/dist/components/ui/admin-form-modal.d.ts.map +1 -1
  317. package/dist/components/ui/admin-form-modal.js +12 -11
  318. package/dist/components/ui/analyzing-state.d.ts +1 -1
  319. package/dist/components/ui/analyzing-state.d.ts.map +1 -1
  320. package/dist/components/ui/analyzing-state.js +4 -10
  321. package/dist/components/ui/content-loader.d.ts +5 -1
  322. package/dist/components/ui/content-loader.d.ts.map +1 -1
  323. package/dist/components/ui/content-loader.js +27 -23
  324. package/dist/components/ui/dashboard-info-card.d.ts +17 -3
  325. package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
  326. package/dist/components/ui/dashboard-info-card.js +30 -10
  327. package/dist/components/ui/data-attribution.d.ts +6 -0
  328. package/dist/components/ui/data-attribution.d.ts.map +1 -1
  329. package/dist/components/ui/data-attribution.js +12 -1
  330. package/dist/components/ui/data-table/data-table-body.d.ts +6 -1
  331. package/dist/components/ui/data-table/data-table-body.d.ts.map +1 -1
  332. package/dist/components/ui/data-table/data-table-body.js +3 -1
  333. package/dist/components/ui/data-table/data-table-infinite-footer.d.ts.map +1 -1
  334. package/dist/components/ui/data-table/data-table-infinite-footer.js +3 -1
  335. package/dist/components/ui/data-table/data-table-skeleton.d.ts.map +1 -1
  336. package/dist/components/ui/data-table/data-table-skeleton.js +7 -5
  337. package/dist/components/ui/feature-card.d.ts.map +1 -1
  338. package/dist/components/ui/feature-card.js +7 -9
  339. package/dist/components/ui/file-manager/file-manager-skeleton.d.ts +3 -1
  340. package/dist/components/ui/file-manager/file-manager-skeleton.d.ts.map +1 -1
  341. package/dist/components/ui/file-manager/file-manager-skeleton.js +27 -21
  342. package/dist/components/ui/file-manager/file-manager-table.js +10 -10
  343. package/dist/components/ui/file-manager/index.cjs +45 -36
  344. package/dist/components/ui/filter-modal.d.ts.map +1 -1
  345. package/dist/components/ui/filter-modal.js +5 -5
  346. package/dist/components/ui/filter-pill-row.d.ts +10 -0
  347. package/dist/components/ui/filter-pill-row.d.ts.map +1 -1
  348. package/dist/components/ui/filter-pill-row.js +8 -1
  349. package/dist/components/ui/index.cjs +19 -28
  350. package/dist/components/ui/index.d.ts +0 -1
  351. package/dist/components/ui/index.d.ts.map +1 -1
  352. package/dist/components/ui/index.js +0 -1
  353. package/dist/components/ui/layout-hold.d.ts +5 -4
  354. package/dist/components/ui/layout-hold.d.ts.map +1 -1
  355. package/dist/components/ui/layout-hold.js +20 -29
  356. package/dist/components/ui/markdown/base-components.js +1 -1
  357. package/dist/components/ui/page-actions.d.ts.map +1 -1
  358. package/dist/components/ui/page-actions.js +6 -8
  359. package/dist/components/ui/photo-wall.d.ts.map +1 -1
  360. package/dist/components/ui/photo-wall.js +11 -18
  361. package/dist/components/ui/query-report-table/query-report-table-skeleton.d.ts +1 -1
  362. package/dist/components/ui/query-report-table/query-report-table-skeleton.d.ts.map +1 -1
  363. package/dist/components/ui/query-report-table/query-report-table-skeleton.js +28 -18
  364. package/dist/components/ui/query-report-table/query-report-table.d.ts +1 -1
  365. package/dist/components/ui/query-report-table/query-report-table.d.ts.map +1 -1
  366. package/dist/components/ui/query-report-table/query-report-table.js +3 -1
  367. package/dist/components/ui/query-report-table/types.d.ts +4 -0
  368. package/dist/components/ui/query-report-table/types.d.ts.map +1 -1
  369. package/dist/components/ui/skeleton-surface.d.ts +7 -0
  370. package/dist/components/ui/skeleton-surface.d.ts.map +1 -0
  371. package/dist/components/ui/skeleton-surface.js +5 -0
  372. package/dist/components/ui/table/table-skeleton.d.ts.map +1 -1
  373. package/dist/components/ui/table/table-skeleton.js +11 -13
  374. package/dist/components/ui/test-run.d.ts +6 -4
  375. package/dist/components/ui/test-run.d.ts.map +1 -1
  376. package/dist/components/ui/test-run.js +9 -5
  377. package/dist/{devices-WWMXIIHI.cjs → devices-AVRQGB2N.cjs} +17 -15
  378. package/dist/{embeddable-chat-IJHCGQ24.cjs → embeddable-chat-SNYQSMS7.cjs} +79 -77
  379. package/dist/index.cjs +24 -31
  380. package/dist/{knowledge-JZP4RIXB.cjs → knowledge-S3CNISQH.cjs} +17 -15
  381. package/dist/{logs-WIRYFNUC.cjs → logs-WDLOKDXT.cjs} +24 -22
  382. package/dist/{policies-X7OJYA7G.cjs → policies-STML7NEZ.cjs} +20 -18
  383. package/dist/{remote-session-IYT4LWJC.cjs → remote-session-ZKP2W3IS.cjs} +9 -7
  384. package/dist/{scripts-GRMT2NGW.cjs → scripts-HO53VYGX.cjs} +23 -21
  385. package/dist/{software-update-G3QOB7RT.cjs → software-update-4VTK7LWQ.cjs} +20 -18
  386. package/dist/{tickets-board-4MT6ZB4F.cjs → tickets-board-BNW4AYFL.cjs} +11 -10
  387. package/package.json +1 -1
  388. package/src/components/categories-cart.tsx +2 -4
  389. package/src/components/chat/chat-container.tsx +4 -4
  390. package/src/components/chat/chat-context-picker.tsx +3 -2
  391. package/src/components/chat/chat-message-row.tsx +6 -7
  392. package/src/components/chat/chat-message-skeleton.tsx +11 -6
  393. package/src/components/chat/chat-sidebar-skeleton.tsx +4 -3
  394. package/src/components/chat/chat-top-navigation.tsx +4 -4
  395. package/src/components/chat/context-items-list.tsx +9 -3
  396. package/src/components/chat/entity-cards/admin-content-card-grid.tsx +65 -18
  397. package/src/components/chat/entity-cards/admin-content-card.tsx +2 -1
  398. package/src/components/chat/entity-cards/blog-card.tsx +13 -12
  399. package/src/components/chat/entity-cards/campaign-card-admin.tsx +5 -4
  400. package/src/components/chat/entity-cards/case-study-card.tsx +19 -18
  401. package/src/components/chat/entity-cards/chat-ticket-item.tsx +5 -5
  402. package/src/components/chat/entity-cards/customer-interview-card.tsx +15 -14
  403. package/src/components/chat/entity-cards/data-room-doc-card.tsx +7 -6
  404. package/src/components/chat/entity-cards/design-doc-card.tsx +0 -2
  405. package/src/components/chat/entity-cards/generic-entity-card.tsx +8 -7
  406. package/src/components/chat/entity-cards/github-activity-card.tsx +11 -10
  407. package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +16 -15
  408. package/src/components/chat/entity-cards/index.ts +2 -0
  409. package/src/components/chat/entity-cards/investor-update-card.tsx +12 -11
  410. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +21 -22
  411. package/src/components/chat/entity-cards/program-card.tsx +29 -28
  412. package/src/components/chat/entity-cards/roadmap-card.tsx +22 -23
  413. package/src/components/chat/entity-cards/slack-message-card.tsx +12 -11
  414. package/src/components/chat/guide-welcome.tsx +2 -2
  415. package/src/components/chat/mingo-archive-list.tsx +2 -1
  416. package/src/components/chat/mingo-chat-history.tsx +18 -9
  417. package/src/components/chat/mingo-chat-rail.tsx +2 -1
  418. package/src/components/chat/mingo-info-card.tsx +6 -5
  419. package/src/components/chat/mingo-onboarding-card-skeleton.tsx +15 -13
  420. package/src/components/chat/model-display.tsx +4 -4
  421. package/src/components/chat/msp-organization-card-skeleton.tsx +5 -5
  422. package/src/components/chat/quick-action-chip.tsx +17 -14
  423. package/src/components/chat/utils/compact-card-classes.ts +4 -5
  424. package/src/components/content-loading-container.tsx +7 -8
  425. package/src/components/docs/doc-viewer.tsx +3 -2
  426. package/src/components/docs/skeletons.tsx +64 -63
  427. package/src/components/embeds/embed-iframe.tsx +16 -9
  428. package/src/components/embeds/index.ts +2 -2
  429. package/src/components/embeds/linkedin-embed-client.tsx +7 -6
  430. package/src/components/embeds/markdown-image.tsx +5 -3
  431. package/src/components/embeds/og-link-preview.tsx +162 -79
  432. package/src/components/embeds/reddit-embed-client.tsx +10 -9
  433. package/src/components/embeds/twitter-embed-client.tsx +10 -9
  434. package/src/components/faq/faq-section.tsx +13 -6
  435. package/src/components/features/auth/login-form.tsx +121 -64
  436. package/src/components/features/auth/sso-providers.tsx +21 -0
  437. package/src/components/features/board/ticket-card-skeleton.tsx +8 -8
  438. package/src/components/features/capability-explorer.tsx +61 -30
  439. package/src/components/features/devices/device-selector/device-selector-skeleton.tsx +9 -3
  440. package/src/components/features/devices/device-selector/device-selector.tsx +2 -0
  441. package/src/components/features/devices/device-selector/device-selector.types.ts +2 -0
  442. package/src/components/features/devices/devices-grid.tsx +4 -1
  443. package/src/components/features/devices/devices-panel-view.tsx +9 -1
  444. package/src/components/features/devices/devices-table-columns.tsx +4 -0
  445. package/src/components/features/logs/logs-table-view.tsx +4 -2
  446. package/src/components/features/model-token-rates.tsx +27 -24
  447. package/src/components/features/notifications/index.ts +2 -2
  448. package/src/components/features/notifications/notification-drawer.tsx +7 -10
  449. package/src/components/features/notifications/notification-tile.tsx +57 -0
  450. package/src/components/features/policies/policy-summary-cards.tsx +2 -2
  451. package/src/components/features/push-button-selector.tsx +20 -11
  452. package/src/components/features/remote-session/remote-desktop-view.tsx +26 -16
  453. package/src/components/features/waitlist-form.tsx +6 -5
  454. package/src/components/help-center-pages/download-apps-page.tsx +3 -2
  455. package/src/components/help-center-pages/trust-center-page.tsx +6 -2
  456. package/src/components/help-center-pages/trust-center-sections.tsx +9 -3
  457. package/src/components/index.ts +0 -2
  458. package/src/components/layout/title-block.tsx +17 -15
  459. package/src/components/loading/card-skeleton.tsx +14 -46
  460. package/src/components/loading/category-card-skeleton.tsx +2 -4
  461. package/src/components/loading/category-vendor-selector-skeleton.tsx +12 -5
  462. package/src/components/loading/device-card-skeleton.tsx +58 -51
  463. package/src/components/loading/index.ts +5 -19
  464. package/src/components/loading/loading-region.tsx +60 -0
  465. package/src/components/loading/margin-report-skeleton.tsx +45 -34
  466. package/src/components/loading/msp-profile-form-skeleton.tsx +9 -6
  467. package/src/components/loading/organization-card-skeleton.tsx +8 -6
  468. package/src/components/loading/organization-icon-skeleton.tsx +3 -2
  469. package/src/components/loading/page-layout-skeleton.tsx +162 -133
  470. package/src/components/loading/settings-form-skeleton.tsx +52 -0
  471. package/src/components/loading/unified-skeleton.tsx +26 -71
  472. package/src/components/loading/wizard-layout-skeleton.tsx +6 -3
  473. package/src/components/media-carousel.tsx +2 -1
  474. package/src/components/meeting-scheduler/booking-form.tsx +10 -7
  475. package/src/components/meeting-scheduler/context-panel.tsx +8 -7
  476. package/src/components/meeting-scheduler/directory.tsx +10 -9
  477. package/src/components/meeting-scheduler/index.tsx +5 -4
  478. package/src/components/meeting-scheduler/modal-header.tsx +8 -7
  479. package/src/components/meeting-scheduler/slot-picker.tsx +4 -3
  480. package/src/components/navigation/app-header.tsx +8 -7
  481. package/src/components/navigation/multi-level-navigation.tsx +3 -2
  482. package/src/components/navigation/navigation-sidebar-item.tsx +3 -2
  483. package/src/components/onboarding-guides/onboarding-guides-catalog-skeleton.tsx +17 -10
  484. package/src/components/product-demo/product-screen.tsx +4 -4
  485. package/src/components/profile/ProfileLoadingSkeleton.tsx +13 -9
  486. package/src/components/related-content/related-content-section.tsx +5 -4
  487. package/src/components/shared/delivery/delivery-table.tsx +8 -7
  488. package/src/components/shared/detail-page-skeleton.tsx +22 -14
  489. package/src/components/shared/dev-section/dev-card-row.tsx +23 -10
  490. package/src/components/shared/legal-document/legal-document-page.tsx +8 -7
  491. package/src/components/shared/onboarding/onboarding-step-card.tsx +3 -2
  492. package/src/components/shared/onboarding/onboarding-walkthrough.tsx +2 -1
  493. package/src/components/shared/product-release/index.ts +0 -1
  494. package/src/components/shared/product-release/product-release-card-skeleton.tsx +23 -25
  495. package/src/components/shared/product-release/product-releases-view.tsx +3 -2
  496. package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +14 -56
  497. package/src/components/tickets/help-center-create-form.tsx +23 -12
  498. package/src/components/tickets/ticket-center.tsx +17 -11
  499. package/src/components/tickets/ticket-detail-drawer.tsx +3 -2
  500. package/src/components/ui/admin-form-drawer.tsx +7 -7
  501. package/src/components/ui/admin-form-modal.tsx +9 -8
  502. package/src/components/ui/analyzing-state.tsx +5 -8
  503. package/src/components/ui/content-loader.tsx +31 -23
  504. package/src/components/ui/dashboard-info-card.tsx +81 -20
  505. package/src/components/ui/data-attribution.tsx +18 -0
  506. package/src/components/ui/data-table/data-table-body.tsx +9 -2
  507. package/src/components/ui/data-table/data-table-infinite-footer.tsx +4 -2
  508. package/src/components/ui/data-table/data-table-skeleton.tsx +8 -5
  509. package/src/components/ui/feature-card.tsx +27 -11
  510. package/src/components/ui/file-manager/file-manager-skeleton.tsx +30 -22
  511. package/src/components/ui/file-manager/file-manager-table.tsx +10 -10
  512. package/src/components/ui/filter-modal.tsx +5 -5
  513. package/src/components/ui/filter-pill-row.tsx +19 -0
  514. package/src/components/ui/index.ts +0 -1
  515. package/src/components/ui/layout-hold.tsx +30 -38
  516. package/src/components/ui/markdown/base-components.tsx +1 -1
  517. package/src/components/ui/page-actions.tsx +10 -8
  518. package/src/components/ui/photo-wall.tsx +4 -7
  519. package/src/components/ui/query-report-table/query-report-table-skeleton.tsx +13 -7
  520. package/src/components/ui/query-report-table/query-report-table.tsx +2 -0
  521. package/src/components/ui/query-report-table/types.ts +4 -0
  522. package/src/components/ui/skeleton-surface.ts +6 -0
  523. package/src/components/ui/table/table-skeleton.tsx +11 -13
  524. package/src/components/ui/test-run.tsx +30 -22
  525. package/src/styles/ods-colors.css +2 -2
  526. package/dist/chunk-5M5C6UV4.cjs +0 -125
  527. package/dist/components/dynamic-skeleton.d.ts +0 -108
  528. package/dist/components/dynamic-skeleton.d.ts.map +0 -1
  529. package/dist/components/dynamic-skeleton.js +0 -221
  530. package/dist/components/loading/content-skeleton.d.ts +0 -73
  531. package/dist/components/loading/content-skeleton.d.ts.map +0 -1
  532. package/dist/components/loading/content-skeleton.js +0 -217
  533. package/dist/components/loading/users-grid-skeleton.d.ts +0 -7
  534. package/dist/components/loading/users-grid-skeleton.d.ts.map +0 -1
  535. package/dist/components/loading/users-grid-skeleton.js +0 -13
  536. package/dist/components/shared/product-release/release-detail-skeleton.d.ts +0 -2
  537. package/dist/components/shared/product-release/release-detail-skeleton.d.ts.map +0 -1
  538. package/dist/components/shared/product-release/release-detail-skeleton.js +0 -9
  539. package/dist/components/skeleton.d.ts +0 -4
  540. package/dist/components/skeleton.d.ts.map +0 -1
  541. package/dist/components/skeleton.js +0 -9
  542. package/dist/components/ui/skeleton.d.ts +0 -44
  543. package/dist/components/ui/skeleton.d.ts.map +0 -1
  544. package/dist/components/ui/skeleton.js +0 -103
  545. package/dist/components/vendor-page-skeleton.d.ts +0 -2
  546. package/dist/components/vendor-page-skeleton.d.ts.map +0 -1
  547. package/dist/components/vendor-page-skeleton.js +0 -9
  548. package/src/components/dynamic-skeleton.tsx +0 -365
  549. package/src/components/loading/content-skeleton.tsx +0 -374
  550. package/src/components/loading/users-grid-skeleton.tsx +0 -36
  551. package/src/components/shared/product-release/release-detail-skeleton.tsx +0 -7
  552. package/src/components/skeleton.tsx +0 -8
  553. package/src/components/ui/skeleton.tsx +0 -173
  554. package/src/components/vendor-page-skeleton.tsx +0 -7
@@ -1,60 +1,14 @@
1
+ import { RoadmapCardSkeleton } from '../../chat/entity-cards/roadmap-card';
2
+ import { LoadingRegion } from '../../loading/loading-region';
1
3
  /**
2
- * RoadmapGridSkeleton — loading state for the `/roadmap` grid view.
3
- *
4
- * Pure JSX (no hooks, no events) — `'use client'` not strictly required
5
- * here; tsup's client-entry banner injects it automatically when this
6
- * file is bundled into the client output. We match the playbook's
7
- * skeleton-file convention (no directive when no hooks).
8
- *
9
- * NOTE: lib's `chat/entity-cards/roadmap-card.tsx` also exports a
10
- * `RoadmapCardSkeleton` — that one is the COMPACT 56px chat-card
11
- * variant. This file's internal card-skeleton (340px grid card)
12
- * intentionally stays file-internal to avoid the naming collision;
13
- * only `RoadmapGridSkeleton` is exported.
4
+ * RoadmapGridSkeleton: loading state for the `/roadmap` grid view. The grid
5
+ * renders `RoadmapCard`, so each placeholder is that card's own loading box,
6
+ * `RoadmapCardSkeleton`.
14
7
  */
15
8
 
16
- function RoadmapCardSkeleton() {
17
- return (
18
- <div className="relative flex min-h-[340px] flex-col gap-[16px] rounded-[6px] border border-ods-border bg-ods-card p-[24px]">
19
- {/* Status Badge Skeleton - Top Right */}
20
- <div className="absolute right-[24px] top-[24px]">
21
- <div className="h-[20px] w-[80px] animate-pulse rounded bg-ods-border"></div>
22
- </div>
23
-
24
- {/* Icon and title skeleton */}
25
- <div className="flex items-center gap-[16px] pr-[120px]">
26
- <div className="h-[80px] w-[80px] flex-shrink-0 animate-pulse rounded-lg bg-ods-border"></div>
27
- <div className="flex min-w-0 flex-1 flex-col gap-1">
28
- <div className="flex min-h-[48px] items-center">
29
- <div className="h-[24px] w-full animate-pulse rounded bg-ods-border"></div>
30
- </div>
31
- <div className="flex min-h-[20px] items-center">
32
- <div className="h-[14px] w-1/2 animate-pulse rounded bg-ods-border"></div>
33
- </div>
34
- </div>
35
- </div>
36
-
37
- {/* Description skeleton - exactly 3 lines */}
38
- <div className="flex min-h-[72px] items-center">
39
- <div className="w-full space-y-2">
40
- <div className="h-[24px] animate-pulse rounded bg-ods-border"></div>
41
- <div className="h-[24px] animate-pulse rounded bg-ods-border"></div>
42
- <div className="h-[24px] w-4/5 animate-pulse rounded bg-ods-border"></div>
43
- </div>
44
- </div>
45
-
46
- <div className="flex-1"></div>
47
-
48
- {/* Bottom skeleton */}
49
- <div className="flex items-center justify-between">
50
- <div className="h-[48px] w-[120px] animate-pulse rounded bg-ods-border"></div>
51
- <div className="h-[32px] w-[100px] animate-pulse rounded bg-ods-border"></div>
52
- </div>
53
- </div>
54
- );
55
- }
56
-
57
9
  export interface RoadmapGridSkeletonProps {
10
+ /** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
11
+ region?: boolean;
58
12
  /** Number of skeleton cards to show. Default 4. */
59
13
  count?: number;
60
14
  /** Show the desktop left margin (~120px) that aligns the grid with
@@ -63,12 +17,16 @@ export interface RoadmapGridSkeletonProps {
63
17
  showLeftMargin?: boolean;
64
18
  }
65
19
 
66
- export function RoadmapGridSkeleton({ count = 4, showLeftMargin = true }: RoadmapGridSkeletonProps) {
20
+ export function RoadmapGridSkeleton({ region = true, count = 4, showLeftMargin = true }: RoadmapGridSkeletonProps) {
67
21
  return (
68
- <div className={`grid grid-cols-1 gap-6 content-md:grid-cols-2 ${showLeftMargin ? 'content-md:ml-[120px]' : ''}`}>
22
+ <LoadingRegion
23
+ label="Loading the roadmap"
24
+ announce={region}
25
+ className={`grid grid-cols-1 gap-6 content-md:grid-cols-2 ${showLeftMargin ? 'content-md:ml-[120px]' : ''}`}
26
+ >
69
27
  {Array.from({ length: count }).map((_, i) => (
70
28
  <RoadmapCardSkeleton key={i} />
71
29
  ))}
72
- </div>
30
+ </LoadingRegion>
73
31
  );
74
32
  }
@@ -27,6 +27,8 @@
27
27
 
28
28
  import { useState, type ChangeEvent } from 'react';
29
29
  import { ContactForm } from '../contact';
30
+ import { LoadingRegion } from '../loading/loading-region';
31
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
30
32
  import { Input, Label } from '../ui';
31
33
  import { RequiredMark } from '../ui/required-mark';
32
34
  import type { UseTicketActionsReturn } from './hooks/use-ticket-actions';
@@ -91,14 +93,23 @@ export interface HelpCenterCreateFormProps {
91
93
  * the spacing rule fires identically — without them the whole stack
92
94
  * shifts up 24px on every page load.
93
95
  */
94
- export function HelpCenterCreateFormSkeleton() {
96
+ export function HelpCenterCreateFormSkeleton({
97
+ region = true,
98
+ }: {
99
+ /** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
100
+ region?: boolean;
101
+ } = {}) {
95
102
  return (
96
- <div className="flex h-full flex-col rounded-2xl border border-ods-border p-6 content-md:rounded-3xl content-md:p-8 content-lg:p-10">
103
+ <LoadingRegion
104
+ label="Loading the form"
105
+ announce={region}
106
+ className="flex h-full flex-col rounded-2xl border border-ods-border p-6 content-md:rounded-3xl content-md:p-8 content-lg:p-10"
107
+ >
97
108
  {/* Heading container — mirrors `mb-6 content-md:mb-8` + h2 with its own
98
109
  `mb-3 content-md:mb-4` and `text-h2` height (32px font, line-height
99
110
  ~1.25 → 40px). h-10 bar matches the rendered h2 height. */}
100
111
  <div className="mb-6 content-md:mb-8">
101
- <div className="mb-3 h-10 w-72 animate-pulse rounded bg-ods-border content-md:mb-4" />
112
+ <UnifiedSkeleton className="mb-3 h-10 w-72 rounded content-md:mb-4" />
102
113
  </div>
103
114
 
104
115
  {/* Form body — same `space-y-4 content-md:space-y-6` gap stack.
@@ -124,8 +135,8 @@ export function HelpCenterCreateFormSkeleton() {
124
135
  height: 27 + 4 + 48 (h-12 input) = 79px, identical to
125
136
  real form. */}
126
137
  <div className="flex flex-col">
127
- <div className="mb-1 h-[27px] w-20 animate-pulse rounded bg-ods-border" />
128
- <div className="h-12 w-full animate-pulse rounded bg-ods-border" />
138
+ <UnifiedSkeleton className="mb-1 h-[27px] w-20 rounded" />
139
+ <UnifiedSkeleton className="h-12 w-full rounded" />
129
140
  </div>
130
141
 
131
142
  {/* Message section — `flex flex-col flex-grow` matches real
@@ -135,8 +146,8 @@ export function HelpCenterCreateFormSkeleton() {
135
146
  below it. Same `h-[27px]` + `mb-1` Label pattern as Subject:
136
147
  27 + 4 + 96 = 127px, identical to real form. */}
137
148
  <div className="flex flex-grow flex-col">
138
- <div className="mb-1 h-[27px] w-32 animate-pulse rounded bg-ods-border" />
139
- <div className="h-24 w-full flex-grow animate-pulse rounded bg-ods-border" />
149
+ <UnifiedSkeleton className="mb-1 h-[27px] w-32 rounded" />
150
+ <UnifiedSkeleton className="h-24 w-full flex-grow rounded" />
140
151
  </div>
141
152
 
142
153
  {/* Attachments row — mirrors the real `flex flex-col gap-2`
@@ -144,8 +155,8 @@ export function HelpCenterCreateFormSkeleton() {
144
155
  the h-7 add button + helper text. */}
145
156
  <div className="flex flex-col gap-2">
146
157
  <div className="flex items-center gap-2">
147
- <div className="h-7 w-7 shrink-0 animate-pulse rounded bg-ods-border" />
148
- <div className="h-4 w-40 animate-pulse rounded bg-ods-border" />
158
+ <UnifiedSkeleton className="h-7 w-7 shrink-0 rounded" />
159
+ <UnifiedSkeleton className="h-4 w-40 rounded" />
149
160
  </div>
150
161
  </div>
151
162
 
@@ -153,11 +164,11 @@ export function HelpCenterCreateFormSkeleton() {
153
164
  Button bar is h-12 to match the real `<Button>` height
154
165
  (48px). */}
155
166
  <div className="mt-auto flex w-full flex-col items-center justify-end gap-4 pt-2 content-md:flex-row content-md:gap-6">
156
- <div className="h-4 w-72 animate-pulse rounded bg-ods-border" />
157
- <div className="h-12 w-32 animate-pulse rounded bg-ods-border" />
167
+ <UnifiedSkeleton className="h-4 w-72 rounded" />
168
+ <UnifiedSkeleton className="h-12 w-32 rounded" />
158
169
  </div>
159
170
  </div>
160
- </div>
171
+ </LoadingRegion>
161
172
  );
162
173
  }
163
174
 
@@ -23,9 +23,10 @@ import { formatRelativeTime } from '../../utils/date-utils';
23
23
  import { devSectionAnchorId } from '../../utils/dev-sections/dev-section-param-keys';
24
24
  import { useChatIdentity } from '../chat/hooks/use-chat-identity';
25
25
  import { EmptyState } from '../empty-state';
26
+ import { LoadingRegion } from '../loading/loading-region';
27
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
26
28
  import { Button } from '../ui/button';
27
29
  import { Card } from '../ui/card';
28
- import { Skeleton } from '../ui/skeleton';
29
30
  import { useTicketActions } from './hooks/use-ticket-actions';
30
31
  import { useTicketsList } from './hooks/use-tickets-list';
31
32
  import { TicketOpenForm } from './ticket-open-form';
@@ -178,16 +179,21 @@ function TicketCenterAuthed({
178
179
  );
179
180
  }
180
181
 
181
- function TicketCenterSkeleton() {
182
+ function TicketCenterSkeleton({
183
+ region = true,
184
+ }: {
185
+ /** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
186
+ region?: boolean;
187
+ } = {}) {
182
188
  return (
183
- <div className="flex flex-col gap-6">
189
+ <LoadingRegion label="Loading tickets" announce={region} className="flex flex-col gap-6">
184
190
  <Card className="p-6">
185
- <Skeleton className="mb-4 h-7 w-48" />
186
- <Skeleton className="mb-3 h-10 w-full" />
187
- <Skeleton className="h-24 w-full" />
191
+ <UnifiedSkeleton className="mb-4 h-7 w-48" />
192
+ <UnifiedSkeleton className="mb-3 h-10 w-full" />
193
+ <UnifiedSkeleton className="h-24 w-full" />
188
194
  </Card>
189
195
  <TicketListSkeleton />
190
- </div>
196
+ </LoadingRegion>
191
197
  );
192
198
  }
193
199
 
@@ -197,11 +203,11 @@ function TicketListSkeleton() {
197
203
  {[0, 1, 2].map(i => (
198
204
  <div key={i} className="flex h-20 items-center gap-4 border-b border-ods-border px-4 last:border-b-0">
199
205
  <div className="flex flex-1 flex-col gap-2">
200
- <Skeleton className="h-4 w-2/3" />
201
- <Skeleton className="h-3 w-full" />
206
+ <UnifiedSkeleton className="h-4 w-2/3" />
207
+ <UnifiedSkeleton className="h-3 w-full" />
202
208
  </div>
203
- <Skeleton className="h-8 w-20" />
204
- <Skeleton className="h-8 w-16" />
209
+ <UnifiedSkeleton className="h-8 w-20" />
210
+ <UnifiedSkeleton className="h-8 w-16" />
205
211
  </div>
206
212
  ))}
207
213
  </Card>
@@ -23,6 +23,7 @@
23
23
 
24
24
  import { useEffect, useRef } from 'react';
25
25
  import { useStickToBottom } from 'use-stick-to-bottom';
26
+ import { LoadingRegion } from '../loading/loading-region';
26
27
  import { formatRelativeTime } from './../../utils/date-utils';
27
28
  import { ChatMessageRow, ChatMessageRowSkeleton } from './../chat/chat-message-row';
28
29
  import { useChatIdentity } from './../chat/hooks/use-chat-identity';
@@ -297,11 +298,11 @@ function TicketTimelinePanel({ ticket }: { ticket: AnyTicket }) {
297
298
  // the skeleton would snap-to-bottom on skeleton height, then again on content).
298
299
  return (
299
300
  <div className={`${TICKET_FEED_FRAME} ${TICKET_FEED_HEIGHT}`}>
300
- <div className={TICKET_FEED_INNER}>
301
+ <LoadingRegion label="Loading messages" className={TICKET_FEED_INNER}>
301
302
  {Array.from({ length: TICKET_FEED_SKELETON_ROWS }, (_, i) => (
302
303
  <ChatMessageRowSkeleton key={i} />
303
304
  ))}
304
- </div>
305
+ </LoadingRegion>
305
306
  </div>
306
307
  );
307
308
  }
@@ -2,10 +2,11 @@
2
2
 
3
3
  import { useId, useState, type ReactNode } from 'react';
4
4
  import { HUBSPOT_DO_NOT_COLLECT_FORM_PROPS } from '../../utils/hubspot-collected-forms';
5
+ import { LoadingRegion } from '../loading/loading-region';
6
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
5
7
  import { Button } from './button';
6
8
  import { Drawer, DrawerBody, DrawerContent, DrawerDescription, DrawerHeader, DrawerTitle } from './drawer';
7
9
  import { UnsavedChangesChip } from './modal-guarded-close';
8
- import { Skeleton } from './skeleton';
9
10
 
10
11
  const SKELETON_FIELD_WIDTHS = ['w-24', 'w-32', 'w-20', 'w-40', 'w-28', 'w-36'];
11
12
 
@@ -117,15 +118,14 @@ export function AdminFormDrawer({
117
118
  }}
118
119
  >
119
120
  {loading ? (
120
- <div aria-busy="true" className="flex flex-col gap-[var(--spacing-system-lf)]">
121
- <span className="sr-only">Loading</span>
121
+ <LoadingRegion label="Loading" className="flex flex-col gap-[var(--spacing-system-lf)]">
122
122
  {SKELETON_FIELD_WIDTHS.map((labelWidth, i) => (
123
- <div key={i} className="space-y-[var(--spacing-system-xsf)]" aria-hidden="true">
124
- <Skeleton className={`h-4 ${labelWidth}`} />
125
- <Skeleton className="h-10 w-full" />
123
+ <div key={i} className="space-y-[var(--spacing-system-xsf)]">
124
+ <UnifiedSkeleton className={`h-4 ${labelWidth}`} />
125
+ <UnifiedSkeleton className="h-10 w-full" />
126
126
  </div>
127
127
  ))}
128
- </div>
128
+ </LoadingRegion>
129
129
  ) : (
130
130
  children
131
131
  )}
@@ -2,6 +2,8 @@
2
2
 
3
3
  import { useId, type ReactNode } from 'react';
4
4
  import { HUBSPOT_DO_NOT_COLLECT_FORM_PROPS } from '../../utils/hubspot-collected-forms';
5
+ import { LoadingRegion } from '../loading/loading-region';
6
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
5
7
  import { Button } from './button';
6
8
  import { UnsavedChangesChip, useGuardedClose } from './modal-guarded-close';
7
9
  import {
@@ -13,7 +15,6 @@ import {
13
15
  ModalV2TwoColumn,
14
16
  type ModalV2Size,
15
17
  } from './modal-v2';
16
- import { Skeleton } from './skeleton';
17
18
 
18
19
  /**
19
20
  * Label widths for the loading placeholder. Uneven on purpose — a column of
@@ -174,10 +175,11 @@ export function AdminFormModal({
174
175
  // the modal doesn't visibly re-flow when the entity lands.
175
176
  <ModalV2Content>
176
177
  {loadingContent ? (
177
- <div aria-busy="true">{loadingContent}</div>
178
+ // The one announcement: a `loadingContent` with a region of its own takes `region={false}`.
179
+ <LoadingRegion label="Loading">{loadingContent}</LoadingRegion>
178
180
  ) : (
179
- <div
180
- aria-busy="true"
181
+ <LoadingRegion
182
+ label="Loading"
181
183
  className={
182
184
  // Mirrors the PANEL WIDTH, not the slot API. `wide` covers the
183
185
  // master-detail modals too (seo-redirect, managed-repo,
@@ -189,18 +191,17 @@ export function AdminFormModal({
189
191
  : 'grid grid-cols-1 gap-[var(--spacing-system-xl)]'
190
192
  }
191
193
  >
192
- <span className="sr-only">Loading…</span>
193
194
  {Array.from({ length: skeletonColumns }, (_, col) => (
194
195
  <div key={col} className="space-y-[var(--spacing-system-lf)]" aria-hidden="true">
195
196
  {SKELETON_FIELD_WIDTHS.map((labelWidth, i) => (
196
197
  <div key={i} className="space-y-[var(--spacing-system-xsf)]">
197
- <Skeleton className={`h-4 ${labelWidth}`} />
198
- <Skeleton className="h-10 w-full" />
198
+ <UnifiedSkeleton className={`h-4 ${labelWidth}`} />
199
+ <UnifiedSkeleton className="h-10 w-full" />
199
200
  </div>
200
201
  ))}
201
202
  </div>
202
203
  ))}
203
- </div>
204
+ </LoadingRegion>
204
205
  )}
205
206
  </ModalV2Content>
206
207
  ) : twoColumn ? (
@@ -1,6 +1,6 @@
1
1
  import { cn } from '../../utils/cn';
2
2
  import { ChatTypingIndicator } from '../chat/chat-typing-indicator';
3
- import { Skeleton } from './skeleton';
3
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
4
4
 
5
5
  export interface AnalyzingStateProps {
6
6
  /** What is being worked on, as a sentence with no closing mark ("Mingo is analyzing your logs"). */
@@ -19,7 +19,7 @@ const ROW_STAGGER_MS = 200;
19
19
  * and the chat's own typing dots. It says an agent is at work, where a bare
20
20
  * sentence in an empty box reads as idle.
21
21
  *
22
- * Built from the shared pieces only: `Skeleton` for the rows and
22
+ * Built from the shared pieces only: `UnifiedSkeleton` for the rows and
23
23
  * `ChatTypingIndicator` for the dots. Still under reduced motion. It is
24
24
  * announced as a status; the rows and dots are decoration.
25
25
  */
@@ -37,12 +37,9 @@ export function AnalyzingState({ label, className }: AnalyzingStateProps) {
37
37
  opacity,
38
38
  )}
39
39
  >
40
- <Skeleton
41
- className="h-2 w-2 shrink-0 rounded-full bg-ods-flamingo-cyan motion-reduce:animate-none"
42
- style={delay}
43
- />
44
- <Skeleton className="h-2.5 min-w-0 flex-1 motion-reduce:animate-none" style={delay} />
45
- <Skeleton className="h-2.5 w-12 shrink-0 motion-reduce:animate-none" style={delay} />
40
+ <UnifiedSkeleton className="h-2 w-2 shrink-0 rounded-full bg-ods-flamingo-cyan" style={delay} />
41
+ <UnifiedSkeleton className="h-2.5 min-w-0 flex-1" style={delay} />
42
+ <UnifiedSkeleton className="h-2.5 w-12 shrink-0" style={delay} />
46
43
  </div>
47
44
  );
48
45
  })}
@@ -1,6 +1,8 @@
1
1
  'use client';
2
2
 
3
3
  import { cn } from '../../utils/cn';
4
+ import { LoadingRegion } from '../loading/loading-region';
5
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
4
6
 
5
7
  export interface ContentLoaderProps {
6
8
  /**
@@ -23,6 +25,10 @@ export interface ContentLoaderProps {
23
25
  * Container CSS classes
24
26
  */
25
27
  containerClassName?: string;
28
+ /** What is loading, read once by a screen reader. Default "Loading". */
29
+ label?: string;
30
+ /** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
31
+ region?: boolean;
26
32
  }
27
33
 
28
34
  /**
@@ -35,35 +41,37 @@ export function ContentLoader({
35
41
  showTitle = true,
36
42
  className,
37
43
  containerClassName,
44
+ label = 'Loading',
45
+ region = true,
38
46
  }: ContentLoaderProps) {
39
47
  const renderCardSkeleton = () => (
40
- <div className="animate-pulse">
41
- {showTitle && <div className="mb-6 h-8 w-64 rounded bg-ods-skeleton" />}
48
+ <div>
49
+ {showTitle && <UnifiedSkeleton className="mb-6 h-8 w-64 rounded" />}
42
50
  <div className="rounded-lg border border-ods-border bg-ods-card p-6">
43
51
  <div className="mb-6 grid grid-cols-1 gap-6 content-md:grid-cols-4">
44
52
  {Array.from({ length: items }).map((_, i) => (
45
53
  <div key={i}>
46
- <div className="mb-2 h-4 w-20 rounded bg-ods-skeleton" />
47
- <div className="h-6 w-32 rounded bg-ods-skeleton" />
54
+ <UnifiedSkeleton className="mb-2 h-4 w-20 rounded" />
55
+ <UnifiedSkeleton className="h-6 w-32 rounded" />
48
56
  </div>
49
57
  ))}
50
58
  </div>
51
59
  <div className="border-t border-ods-border pt-4">
52
- <div className="h-4 w-64 rounded bg-ods-skeleton" />
60
+ <UnifiedSkeleton className="h-4 w-64 rounded" />
53
61
  </div>
54
62
  </div>
55
63
  </div>
56
64
  );
57
65
 
58
66
  const renderFormSkeleton = () => (
59
- <div className="animate-pulse">
60
- {showTitle && <div className="mb-6 h-8 w-64 rounded bg-ods-card" />}
67
+ <div>
68
+ {showTitle && <UnifiedSkeleton className="mb-6 h-8 w-64 rounded" />}
61
69
  <div className="rounded-lg bg-ods-card p-6">
62
70
  <div className="space-y-4">
63
71
  {Array.from({ length: items }).map((_, i) => (
64
72
  <div key={i}>
65
- <div className="mb-2 h-4 w-32 rounded bg-ods-skeleton" />
66
- <div className="h-10 rounded bg-ods-skeleton" />
73
+ <UnifiedSkeleton className="mb-2 h-4 w-32 rounded" />
74
+ <UnifiedSkeleton className="h-10 rounded" />
67
75
  </div>
68
76
  ))}
69
77
  </div>
@@ -72,23 +80,23 @@ export function ContentLoader({
72
80
  );
73
81
 
74
82
  const renderDetailSkeleton = () => (
75
- <div className="animate-pulse">
76
- {showTitle && <div className="mb-6 h-8 w-64 rounded bg-ods-skeleton" />}
83
+ <div>
84
+ {showTitle && <UnifiedSkeleton className="mb-6 h-8 w-64 rounded" />}
77
85
  <div className="rounded-lg border border-ods-border bg-ods-card p-6">
78
86
  <div className="grid grid-cols-1 gap-6 content-lg:grid-cols-3">
79
87
  <div className="content-lg:col-span-2">
80
- <div className="mb-4 h-64 rounded bg-ods-skeleton" />
88
+ <UnifiedSkeleton className="mb-4 h-64 rounded" />
81
89
  <div className="space-y-2">
82
90
  {Array.from({ length: 3 }).map((_, i) => (
83
- <div key={i} className="h-4 rounded bg-ods-skeleton" />
91
+ <UnifiedSkeleton key={i} className="h-4 rounded" />
84
92
  ))}
85
93
  </div>
86
94
  </div>
87
95
  <div>
88
- <div className="mb-4 h-32 rounded bg-ods-skeleton" />
96
+ <UnifiedSkeleton className="mb-4 h-32 rounded" />
89
97
  <div className="space-y-2">
90
98
  {Array.from({ length: items }).map((_, i) => (
91
- <div key={i} className="h-3 rounded bg-ods-skeleton" />
99
+ <UnifiedSkeleton key={i} className="h-3 rounded" />
92
100
  ))}
93
101
  </div>
94
102
  </div>
@@ -98,17 +106,17 @@ export function ContentLoader({
98
106
  );
99
107
 
100
108
  const renderListSkeleton = () => (
101
- <div className="animate-pulse space-y-3">
102
- {showTitle && <div className="mb-6 h-8 w-64 rounded bg-ods-skeleton" />}
109
+ <div className="space-y-3">
110
+ {showTitle && <UnifiedSkeleton className="mb-6 h-8 w-64 rounded" />}
103
111
  {Array.from({ length: items }).map((_, i) => (
104
112
  <div key={i} className="rounded-lg border border-ods-border bg-ods-card p-4">
105
113
  <div className="flex items-center gap-4">
106
- <div className="h-12 w-12 rounded bg-ods-skeleton" />
114
+ <UnifiedSkeleton className="h-12 w-12 rounded" />
107
115
  <div className="flex-1">
108
- <div className="mb-2 h-4 w-3/4 rounded bg-ods-skeleton" />
109
- <div className="h-3 w-1/2 rounded bg-ods-skeleton" />
116
+ <UnifiedSkeleton className="mb-2 h-4 w-3/4 rounded" />
117
+ <UnifiedSkeleton className="h-3 w-1/2 rounded" />
110
118
  </div>
111
- <div className="h-8 w-20 rounded bg-ods-skeleton" />
119
+ <UnifiedSkeleton className="h-8 w-20 rounded" />
112
120
  </div>
113
121
  </div>
114
122
  ))}
@@ -130,9 +138,9 @@ export function ContentLoader({
130
138
  };
131
139
 
132
140
  return (
133
- <div className={cn('p-6', containerClassName)}>
141
+ <LoadingRegion label={label} announce={region} className={cn('p-6', containerClassName)}>
134
142
  <div className={cn(className)}>{renderSkeleton()}</div>
135
- </div>
143
+ </LoadingRegion>
136
144
  );
137
145
  }
138
146