@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
@@ -10,10 +10,10 @@ var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
10
10
 
11
11
 
12
12
 
13
- var _chunkHNLI4OU5cjs = require('./chunk-HNLI4OU5.cjs');
13
+ var _chunkC6LPOYDMcjs = require('./chunk-C6LPOYDM.cjs');
14
14
  require('./chunk-LU7TD6QS.cjs');
15
- require('./chunk-PSIKUDUV.cjs');
16
- require('./chunk-B27QEHYR.cjs');
15
+ require('./chunk-LVO7FALW.cjs');
16
+ require('./chunk-P6F6PHVK.cjs');
17
17
  require('./chunk-ZOZR3QI2.cjs');
18
18
  require('./chunk-OMV5S5PI.cjs');
19
19
  require('./chunk-KHPX3KU4.cjs');
@@ -1818,13 +1818,14 @@ require('./chunk-ASMNNSUQ.cjs');
1818
1818
  require('./chunk-KTPR66EE.cjs');
1819
1819
  require('./chunk-DGFDBPO7.cjs');
1820
1820
  require('./chunk-HOTM4UM6.cjs');
1821
- require('./chunk-L2RMTGOK.cjs');
1821
+ require('./chunk-MGF3FUKD.cjs');
1822
1822
  require('./chunk-Z74QE57T.cjs');
1823
1823
  require('./chunk-XZJCBIYR.cjs');
1824
1824
  require('./chunk-2QMBXGMQ.cjs');
1825
1825
  require('./chunk-V45KLJQP.cjs');
1826
1826
  require('./chunk-3LU4UFPS.cjs');
1827
- require('./chunk-5M5C6UV4.cjs');
1827
+ require('./chunk-RB6BSE3O.cjs');
1828
+ require('./chunk-2YXOD2KL.cjs');
1828
1829
  require('./chunk-3ATAYP36.cjs');
1829
1830
 
1830
1831
  // src/components/product-demo/screens/tickets-board.tsx
@@ -1839,7 +1840,7 @@ function buildTicketsBoardFixture(cast) {
1839
1840
  const dana = assignee(cast.person("dana"));
1840
1841
  const alex = assignee(cast.person("alex"));
1841
1842
  return [
1842
- _chunkHNLI4OU5cjs.columnFromTicketStatus.call(void 0, "ACTIVE", [
1843
+ _chunkC6LPOYDMcjs.columnFromTicketStatus.call(void 0, "ACTIVE", [
1843
1844
  ticket("tk-1051", "Printer offline at the front desk", "ACTIVE", {
1844
1845
  ticketNumber: "1051",
1845
1846
  agent: "fae",
@@ -1857,7 +1858,7 @@ function buildTicketsBoardFixture(cast) {
1857
1858
  tags: ["onboarding"]
1858
1859
  })
1859
1860
  ]),
1860
- _chunkHNLI4OU5cjs.columnFromTicketStatus.call(void 0, "TECH_REQUIRED", [
1861
+ _chunkC6LPOYDMcjs.columnFromTicketStatus.call(void 0, "TECH_REQUIRED", [
1861
1862
  ticket("tk-1049", "Acrobat Pro for Maya", "TECH_REQUIRED", {
1862
1863
  ticketNumber: "1049",
1863
1864
  agent: "fae",
@@ -1881,7 +1882,7 @@ function buildTicketsBoardFixture(cast) {
1881
1882
  escalatedByUser: true
1882
1883
  })
1883
1884
  ]),
1884
- _chunkHNLI4OU5cjs.columnFromTicketStatus.call(void 0, "ON_HOLD", [
1885
+ _chunkC6LPOYDMcjs.columnFromTicketStatus.call(void 0, "ON_HOLD", [
1885
1886
  ticket("tk-1046", "Replace the conference room display", "ON_HOLD", {
1886
1887
  ticketNumber: "1046",
1887
1888
  organizationName: _chunkDKOLQPE7cjs.DEMO_ORGANIZATIONS.acme.name,
@@ -1890,7 +1891,7 @@ function buildTicketsBoardFixture(cast) {
1890
1891
  activity: { kind: "waiting-external" }
1891
1892
  })
1892
1893
  ]),
1893
- _chunkHNLI4OU5cjs.columnFromTicketStatus.call(void 0,
1894
+ _chunkC6LPOYDMcjs.columnFromTicketStatus.call(void 0,
1894
1895
  "RESOLVED",
1895
1896
  [
1896
1897
  ticket("tk-1048", "Slow laptop", "RESOLVED", {
@@ -1926,7 +1927,7 @@ function TicketsBoardScreen({ compact = false }) {
1926
1927
  const cast = _chunkSTEJZPIOcjs.useProductDemoCast.call(void 0, );
1927
1928
  const board = _react.useMemo.call(void 0, () => buildTicketsBoardFixture(cast), [cast]);
1928
1929
  const columns = compact ? board.filter((column) => column.id !== "ON_HOLD") : board;
1929
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg p-[var(--spacing-system-m)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHNLI4OU5cjs.Board, { columns, onChange: noop, initialCollapsed: compact ? void 0 : FOLDED }) });
1930
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg p-[var(--spacing-system-m)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkC6LPOYDMcjs.Board, { columns, onChange: noop, initialCollapsed: compact ? void 0 : FOLDED }) });
1930
1931
  }
1931
1932
 
1932
1933
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flamingo-stack/openframe-frontend-core",
3
- "version": "0.0.748",
3
+ "version": "0.0.749",
4
4
  "description": "Shared design system and components for all Flamingo platforms",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -3,6 +3,7 @@
3
3
  import { ChevronRight } from 'lucide-react';
4
4
  import Link from '../embed-shims/next-link';
5
5
  import type { RealCategoryCardProps } from '../types/category';
6
+ import { UnifiedSkeleton } from './loading/unified-skeleton';
6
7
  import { VendorIcon } from './vendor-icon';
7
8
 
8
9
  // Component that receives vendor and subcategory data as props
@@ -26,10 +27,7 @@ export function CategoriesCart({
26
27
  {isLoading
27
28
  ? // Skeleton loading for vendor icons
28
29
  Array.from({ length: 20 }).map((_, index) => (
29
- <div
30
- key={index}
31
- className="h-8 w-8 flex-shrink-0 animate-pulse rounded bg-ods-border md:h-10 md:w-10"
32
- />
30
+ <UnifiedSkeleton key={index} className="h-8 w-8 flex-shrink-0 rounded md:h-10 md:w-10" />
33
31
  ))
34
32
  : vendors && vendors.length > 0
35
33
  ? vendors.map(vendor => (
@@ -3,8 +3,8 @@ import { cn } from '../../utils/cn';
3
3
  import { Chevron02LeftIcon } from '../icons-v2-generated';
4
4
  import { PlusCircleIcon } from '../icons-v2-generated/signs-and-symbols/plus-circle-icon';
5
5
  import { XmarkIcon } from '../icons-v2-generated/signs-and-symbols/xmark-icon';
6
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
6
7
  import { Button } from '../ui/button';
7
- import { Skeleton } from '../ui/skeleton';
8
8
  import { SquareAvatar as Avatar } from '../ui/square-avatar';
9
9
  import { TicketStatusTag, resolveStatusTagProps } from '../ui/ticket-status-tag';
10
10
  import { MspOrganizationCard } from './msp-organization-card';
@@ -111,12 +111,12 @@ const ChatHeader = forwardRef<HTMLDivElement, ChatHeaderProps>(
111
111
  <div className="flex items-center gap-3">
112
112
  {/* 64px round avatar placeholder — matches the `w-16 h-16`
113
113
  rounded-full avatar / userIcon block below. */}
114
- <Skeleton className="h-16 w-16 shrink-0 rounded-full" />
114
+ <UnifiedSkeleton className="h-16 w-16 shrink-0 rounded-full" />
115
115
  <div className="flex flex-col gap-1">
116
116
  {/* Name line — sized to the `text-h3` name. */}
117
- <Skeleton className="h-6 w-40" />
117
+ <UnifiedSkeleton className="h-6 w-40" />
118
118
  {/* Server line — sized to the `text-h4` secondary row. */}
119
- <Skeleton className="h-4 w-28" />
119
+ <UnifiedSkeleton className="h-4 w-28" />
120
120
  </div>
121
121
  </div>
122
122
  ) : (
@@ -29,6 +29,7 @@ import { SearchIcon } from '../icons-v2-generated/interface/search-icon';
29
29
  import { Upload02Icon } from '../icons-v2-generated/interface/upload-02-icon';
30
30
  import { PlusIcon } from '../icons-v2-generated/signs-and-symbols/plus-icon';
31
31
  import { XmarkCircleIcon } from '../icons-v2-generated/signs-and-symbols/xmark-circle-icon';
32
+ import { LoadingRegion } from '../loading/loading-region';
32
33
  import {
33
34
  CONTEXT_BACK_CLASS,
34
35
  CONTEXT_STATE_CLASS,
@@ -384,9 +385,9 @@ export function ChatContextPicker({
384
385
  >
385
386
  <Suspense
386
387
  fallback={
387
- <div className="max-h-[340px] overflow-hidden">
388
+ <LoadingRegion label="Loading items" className="max-h-[340px] overflow-hidden">
388
389
  <ContextItemsSkeleton count={ITEMS_SKELETON_ROWS} />
389
- </div>
390
+ </LoadingRegion>
390
391
  }
391
392
  >
392
393
  {config.renderItems({
@@ -22,6 +22,7 @@
22
22
  import { useState, type ReactNode } from 'react';
23
23
  import Image from '../../embed-shims/next-image';
24
24
  import { personInitials } from '../../utils/format';
25
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
25
26
  import { useProxiedImageUrl } from './hooks/use-proxied-image-url';
26
27
 
27
28
  export interface ChatMessageRowProps {
@@ -104,20 +105,18 @@ export function ChatMessageRow({ displayName, avatarUrl, timeLabel, body, footer
104
105
  * name/time/body line-heights so the loading→loaded swap does not reflow.
105
106
  */
106
107
  export function ChatMessageRowSkeleton() {
107
- // Bars use `bg-ods-border` (NOT `bg-ods-skeleton` — that token resolves to
108
- // transparent in this build, leaving the box visually empty).
109
108
  return (
110
109
  <div className="flex w-full min-w-0 gap-2 md:gap-3">
111
- <div className="h-8 w-8 flex-shrink-0 animate-pulse rounded-lg bg-ods-border md:h-10 md:w-10" />
110
+ <UnifiedSkeleton className="h-8 w-8 flex-shrink-0 rounded-lg md:h-10 md:w-10" />
112
111
  <div className="min-w-0 flex-1">
113
112
  {/* Header row — name + time bars, same mb-1 + gap-2 as the real header. */}
114
113
  <div className="mb-1 flex items-center gap-2">
115
- <div className="h-[15px] w-24 animate-pulse rounded bg-ods-border md:h-[20px] md:w-32" />
116
- <div className="h-[12px] w-12 animate-pulse rounded bg-ods-border md:h-[16px] md:w-16" />
114
+ <UnifiedSkeleton className="h-[15px] w-24 rounded md:h-[20px] md:w-32" />
115
+ <UnifiedSkeleton className="h-[12px] w-12 rounded md:h-[16px] md:w-16" />
117
116
  </div>
118
117
  {/* Two body lines — match the 12/14px body line-height. */}
119
- <div className="h-[14px] w-full animate-pulse rounded bg-ods-border md:h-[18px]" />
120
- <div className="mt-1 h-[14px] w-3/4 animate-pulse rounded bg-ods-border md:h-[18px]" />
118
+ <UnifiedSkeleton className="h-[14px] w-full rounded md:h-[18px]" />
119
+ <UnifiedSkeleton className="mt-1 h-[14px] w-3/4 rounded md:h-[18px]" />
121
120
  </div>
122
121
  </div>
123
122
  );
@@ -1,6 +1,8 @@
1
1
  'use client';
2
2
 
3
3
  import { cn } from '../../utils/cn';
4
+ import { LoadingRegion } from '../loading/loading-region';
5
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
4
6
 
5
7
  interface ChatMessageSkeletonProps {
6
8
  className?: string;
@@ -40,15 +42,15 @@ export function ChatMessageSkeleton({
40
42
  `bg-ods-border` so the placeholders are actually visible (a tinted
41
43
  low-alpha fill reads as blank on the dark surface). */}
42
44
  <div className="flex items-center gap-[var(--spacing-system-xs)]">
43
- {showAvatar && !isUser && <div className="h-8 w-8 flex-shrink-0 animate-pulse rounded-full bg-ods-border" />}
44
- <div className="h-5 w-32 animate-pulse rounded bg-ods-border" />
45
- <div className="ml-auto h-4 w-14 animate-pulse rounded bg-ods-border" />
45
+ {showAvatar && !isUser && <UnifiedSkeleton className="h-8 w-8 flex-shrink-0 rounded-full" />}
46
+ <UnifiedSkeleton className="h-5 w-32 rounded" />
47
+ <UnifiedSkeleton className="ml-auto h-4 w-14 rounded" />
46
48
  </div>
47
49
 
48
50
  {/* Body lines — percentage widths so they reflow on panel resize. */}
49
51
  <div className="flex flex-col gap-2 pt-[var(--spacing-system-xxs)]">
50
52
  {Array.from({ length: lines }, (_, i) => (
51
- <div key={i} className={cn('h-4 animate-pulse rounded bg-ods-border', bodyLineWidth(i, lines))} />
53
+ <UnifiedSkeleton key={i} className={cn('h-4 rounded', bodyLineWidth(i, lines))} />
52
54
  ))}
53
55
  </div>
54
56
  </div>
@@ -57,6 +59,8 @@ export function ChatMessageSkeleton({
57
59
  }
58
60
 
59
61
  interface ChatMessageListSkeletonProps {
62
+ /** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
63
+ region?: boolean;
60
64
  className?: string;
61
65
  messageCount?: number;
62
66
  showAvatars?: boolean;
@@ -85,6 +89,7 @@ interface ChatMessageListSkeletonProps {
85
89
  }
86
90
 
87
91
  export function ChatMessageListSkeleton({
92
+ region = true,
88
93
  className,
89
94
  messageCount = 6,
90
95
  showAvatars = true,
@@ -99,7 +104,7 @@ export function ChatMessageListSkeleton({
99
104
  }));
100
105
 
101
106
  return (
102
- <div className="relative flex min-h-0 flex-1 flex-col">
107
+ <LoadingRegion label="Loading messages" announce={region} className="relative flex min-h-0 flex-1 flex-col">
103
108
  <div
104
109
  className={cn(
105
110
  'flex h-full w-full flex-1 flex-col',
@@ -131,6 +136,6 @@ export function ChatMessageListSkeleton({
131
136
  ))}
132
137
  </div>
133
138
  </div>
134
- </div>
139
+ </LoadingRegion>
135
140
  );
136
141
  }
@@ -1,6 +1,7 @@
1
1
  import { forwardRef } from 'react';
2
2
  import { cn } from '../../utils/cn';
3
3
  import { ChatPlusIcon } from '../icons-v2-generated';
4
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
4
5
  import { Button } from '../ui/button';
5
6
 
6
7
  interface DialogListItemSkeletonProps {
@@ -25,14 +26,14 @@ const DialogListItemSkeleton = forwardRef<HTMLDivElement, DialogListItemSkeleton
25
26
  <div className="flex flex-1 flex-col items-start justify-center gap-1">
26
27
  <div className="flex w-full items-center">
27
28
  {/* Title skeleton */}
28
- <div className="h-6 w-full max-w-[200px] animate-pulse rounded bg-ods-border" />
29
+ <UnifiedSkeleton className="h-6 w-full max-w-[200px] rounded" />
29
30
  </div>
30
31
  {/* Timestamp skeleton */}
31
- <div className="h-4 w-32 animate-pulse rounded bg-ods-border" />
32
+ <UnifiedSkeleton className="h-4 w-32 rounded" />
32
33
  </div>
33
34
 
34
35
  {/* Right side chevron skeleton */}
35
- <div className="size-6 shrink-0 animate-pulse rounded bg-ods-border" />
36
+ <UnifiedSkeleton className="size-6 shrink-0 rounded" />
36
37
  </div>
37
38
  );
38
39
  },
@@ -3,7 +3,7 @@
3
3
  import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';
4
4
  import { cn } from '../../utils/cn';
5
5
  import { Settings01Icon, SidebarIcon } from '../icons-v2-generated';
6
- import { Skeleton } from '../ui/skeleton';
6
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
7
7
  import { SquareAvatar } from '../ui/square-avatar';
8
8
 
9
9
  export interface ChatTopNavigationProps extends HTMLAttributes<HTMLElement> {
@@ -72,10 +72,10 @@ const ChatTopNavigation = forwardRef<HTMLElement, ChatTopNavigationProps>(
72
72
  <div className="flex min-w-0 flex-1 items-center gap-[var(--spacing-system-m)] px-[var(--spacing-system-m)]">
73
73
  {isLoading ? (
74
74
  <>
75
- <Skeleton className="size-10 shrink-0 rounded-full" />
75
+ <UnifiedSkeleton className="size-10 shrink-0 rounded-full" />
76
76
  <div className="flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-xxs)]">
77
- <Skeleton className="h-5 w-24" />
78
- <Skeleton className="h-4 w-32" />
77
+ <UnifiedSkeleton className="h-5 w-24" />
78
+ <UnifiedSkeleton className="h-4 w-32" />
79
79
  </div>
80
80
  </>
81
81
  ) : (
@@ -14,7 +14,8 @@
14
14
  import { Component, type ReactNode, type UIEvent, useCallback } from 'react';
15
15
  import { cn } from '../../utils/cn';
16
16
  import { CheckFillIcon } from '../icons-v2-generated/signs-and-symbols/check-fill-icon';
17
- import { Skeleton } from '../ui/skeleton';
17
+ import { LoadingRegion } from '../loading/loading-region';
18
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
18
19
  import type { ChatContextItem } from './types/context-item.types';
19
20
 
20
21
  const itemKey = (i: { type: string; id: string }) => `${i.type}:${i.id}`;
@@ -86,7 +87,7 @@ export function ContextItemsSkeleton({ count }: { count: number }) {
86
87
  key={`ctx-skeleton-${i}`}
87
88
  className="flex items-center border-b border-ods-border bg-ods-bg py-3 pl-4 pr-2 last:border-b-0"
88
89
  >
89
- <Skeleton className="h-5 w-1/2" />
90
+ <UnifiedSkeleton className="h-5 w-1/2" />
90
91
  </div>
91
92
  ))}
92
93
  </>
@@ -164,7 +165,12 @@ export function ContextItemsList({
164
165
  />
165
166
  );
166
167
  })}
167
- {loadingMore && <ContextItemsSkeleton count={3} />}
168
+ {loadingMore && (
169
+ // `contents`: the rows stay the list's own rows; the region only adds the one announcement.
170
+ <LoadingRegion label="Loading more items" className="contents">
171
+ <ContextItemsSkeleton count={3} />
172
+ </LoadingRegion>
173
+ )}
168
174
  </div>
169
175
  );
170
176
  }
@@ -2,6 +2,8 @@
2
2
 
3
3
  import type { ComponentType, ReactNode } from 'react';
4
4
  import { cn } from '../../../utils/cn';
5
+ import { LoadingRegion } from '../../loading/loading-region';
6
+ import { UnifiedSkeleton } from '../../loading/unified-skeleton';
5
7
 
6
8
  /** THE admin card grid: columns and gap shared by the live grid and its skeleton. */
7
9
  export const ADMIN_CONTENT_CARD_GRID_CLASS =
@@ -29,26 +31,26 @@ export function AdminContentCardSkeleton({
29
31
  return (
30
32
  <div
31
33
  className={cn(
32
- 'flex h-full animate-pulse flex-col overflow-hidden rounded-2xl border border-ods-border bg-transparent',
34
+ 'flex h-full flex-col overflow-hidden rounded-2xl border border-ods-border bg-transparent',
33
35
  className,
34
36
  )}
35
37
  >
36
- <div className="aspect-[3/2] w-full shrink-0 bg-ods-border/20" />
38
+ <UnifiedSkeleton className="aspect-[3/2] w-full shrink-0" />
37
39
  <div className="flex flex-1 flex-col gap-[var(--spacing-system-sf)] p-5">
38
- <div className="h-[2lh] w-full rounded bg-ods-border text-h3" />
39
- {subtitleRow && <div className="h-[1lh] w-1/2 rounded bg-ods-border text-h6" />}
40
- <div className="h-[2lh] w-full rounded bg-ods-border text-h6" />
40
+ <UnifiedSkeleton className="h-[2lh] w-full rounded text-h3" />
41
+ {subtitleRow && <UnifiedSkeleton className="h-[1lh] w-1/2 rounded text-h6" />}
42
+ <UnifiedSkeleton className="h-[2lh] w-full rounded text-h6" />
41
43
  <div className="flex h-7 items-center gap-[var(--spacing-system-xsf)]">
42
- <div className="h-5 w-20 rounded-full bg-ods-border" />
43
- <div className="h-5 w-24 rounded-full bg-ods-border" />
44
+ <UnifiedSkeleton className="h-5 w-20 rounded-full" />
45
+ <UnifiedSkeleton className="h-5 w-24 rounded-full" />
44
46
  </div>
45
- <div className="h-[1lh] w-32 rounded bg-ods-border text-h6" />
47
+ <UnifiedSkeleton className="h-[1lh] w-32 rounded text-h6" />
46
48
  {actions && (
47
49
  <div className="mt-auto flex items-center justify-between border-t border-ods-border pt-[var(--spacing-system-sf)]">
48
- <div className="h-10 w-24 rounded bg-ods-border" />
50
+ <UnifiedSkeleton className="h-10 w-24 rounded" />
49
51
  <div className="flex gap-[var(--spacing-system-xsf)]">
50
- <div className="h-10 w-20 rounded bg-ods-border" />
51
- <div className="h-10 w-20 rounded bg-ods-border" />
52
+ <UnifiedSkeleton className="h-10 w-20 rounded" />
53
+ <UnifiedSkeleton className="h-10 w-20 rounded" />
52
54
  </div>
53
55
  </div>
54
56
  )}
@@ -57,6 +59,44 @@ export function AdminContentCardSkeleton({
57
59
  );
58
60
  }
59
61
 
62
+ export interface AdminContentCardGridSkeletonProps {
63
+ /** How many placeholder cards: one page. */
64
+ count?: number;
65
+ /** The placeholder card. Default `AdminContentCardSkeleton`. */
66
+ Skeleton?: ComponentType<{ className?: string }>;
67
+ className?: string;
68
+ /** What is loading, read once by a screen reader. Default "Loading". */
69
+ label?: string;
70
+ /** The loading state announces itself (`LoadingRegion`). `false` inside another loading region. Default `true`. */
71
+ region?: boolean;
72
+ }
73
+
74
+ /**
75
+ * The grid's loading state on its own: one page of placeholder cards in the
76
+ * grid's columns. `AdminContentCardGrid` draws exactly this while it loads; a
77
+ * page that has no grid yet (a Suspense fallback) draws it directly.
78
+ */
79
+ export function AdminContentCardGridSkeleton({
80
+ count = 12,
81
+ Skeleton = AdminContentCardSkeleton,
82
+ className,
83
+ label = 'Loading',
84
+ region = true,
85
+ }: AdminContentCardGridSkeletonProps) {
86
+ return (
87
+ <LoadingRegion
88
+ label={label}
89
+ announce={region}
90
+ className={cn(ADMIN_CONTENT_CARD_GRID_CLASS, className)}
91
+ data-state="loading"
92
+ >
93
+ {Array.from({ length: count }, (_, i) => (
94
+ <Skeleton key={i} />
95
+ ))}
96
+ </LoadingRegion>
97
+ );
98
+ }
99
+
60
100
  export interface AdminContentCardGridProps<T> {
61
101
  items: readonly T[];
62
102
  /** One page of cards: the loading skeleton count and the reserved slot count. */
@@ -73,6 +113,10 @@ export interface AdminContentCardGridProps<T> {
73
113
  */
74
114
  Skeleton?: ComponentType<{ className?: string }>;
75
115
  className?: string;
116
+ /** What is loading, read once by a screen reader while `loading`. Default "Loading". */
117
+ loadingLabel?: string;
118
+ /** The loading state announces itself. `false` inside another loading region. Default `true`. */
119
+ loadingRegion?: boolean;
76
120
  }
77
121
 
78
122
  /**
@@ -97,18 +141,21 @@ export function AdminContentCardGrid<T>({
97
141
  empty,
98
142
  Skeleton = AdminContentCardSkeleton,
99
143
  className,
144
+ loadingLabel,
145
+ loadingRegion,
100
146
  }: AdminContentCardGridProps<T>) {
101
147
  const gridClass = cn(ADMIN_CONTENT_CARD_GRID_CLASS, className);
102
148
 
103
- if (loading) {
149
+ if (loading)
104
150
  return (
105
- <div className={gridClass} data-state="loading">
106
- {Array.from({ length: pageSize }, (_, i) => (
107
- <Skeleton key={i} />
108
- ))}
109
- </div>
151
+ <AdminContentCardGridSkeleton
152
+ count={pageSize}
153
+ Skeleton={Skeleton}
154
+ className={className}
155
+ label={loadingLabel}
156
+ region={loadingRegion}
157
+ />
110
158
  );
111
- }
112
159
 
113
160
  const slots = Array.from({ length: Math.max(0, pageSize - items.length) }, (_, i) => (
114
161
  <Skeleton key={`slot-${i}`} className="invisible" />
@@ -6,6 +6,7 @@ import Image from '../../../embed-shims/next-image';
6
6
  import { useImageEdgeColor } from '../../../hooks/ui/use-image-edge-color';
7
7
  import { cn } from '../../../utils/cn';
8
8
  import { PlatformBadge } from '../../features/platform-badge';
9
+ import { UnifiedSkeleton } from '../../loading/unified-skeleton';
9
10
  import { CONTENT_CARD_FRAME_CLASS } from './content-card-frame';
10
11
 
11
12
  interface PlatformInfo {
@@ -84,7 +85,7 @@ export function AdminContentCard({
84
85
  <div className="relative aspect-[3/2] w-full shrink-0 overflow-hidden" style={{ backgroundColor: imageBgColor }}>
85
86
  {displayUrl ? (
86
87
  <>
87
- {!imageLoaded && <div className="absolute inset-0 animate-pulse bg-ods-border/20" />}
88
+ {!imageLoaded && <UnifiedSkeleton className="absolute inset-0 h-full rounded-none" />}
88
89
  <Image
89
90
  src={displayUrl}
90
91
  alt={title}
@@ -24,6 +24,7 @@ import Link from '../../../embed-shims/next-link';
24
24
  import type { BlogPostSummary } from '../../../types/blog';
25
25
  import { cn } from '../../../utils/cn';
26
26
  import { formatDateWithTimezone } from '../../../utils/format';
27
+ import { UnifiedSkeleton } from '../../loading/unified-skeleton';
27
28
  import { StatusBadge } from '../../ui/status-badge';
28
29
  import {
29
30
  COMPACT_CARD_IMAGE_SLOT,
@@ -76,32 +77,32 @@ export function BlogCardSkeleton({ size = 'default' }: { size?: 'default' | 'sm'
76
77
  if (size === 'sm') {
77
78
  return (
78
79
  <span className={COMPACT_CARD_SKELETON_OUTER}>
79
- <span className={COMPACT_CARD_SKELETON_IMAGE_SLOT} />
80
+ <UnifiedSkeleton as="span" className={COMPACT_CARD_SKELETON_IMAGE_SLOT} />
80
81
  <span className={COMPACT_CARD_TEXT_COL}>
81
82
  <span className={COMPACT_CARD_TITLE_ROW}>
82
- <span className="h-3.5 w-3/5 rounded bg-ods-bg" />
83
+ <UnifiedSkeleton as="span" className="h-3.5 w-3/5 rounded" />
83
84
  </span>
84
85
  <span className={COMPACT_CARD_META_ROW_BOX}>
85
- <span className="h-3 w-2/5 rounded bg-ods-bg/70" />
86
+ <UnifiedSkeleton as="span" className="h-3 w-2/5 rounded" />
86
87
  </span>
87
88
  <span className={COMPACT_CARD_META_ROW_BOX}>
88
- <span className="h-3 w-11/12 rounded bg-ods-bg/40" />
89
+ <UnifiedSkeleton as="span" className="h-3 w-11/12 rounded" />
89
90
  </span>
90
91
  </span>
91
92
  </span>
92
93
  );
93
94
  }
94
95
  return (
95
- <article className={cn(CONTENT_CARD_SKELETON_FRAME_CLASS, 'group flex h-full animate-pulse flex-col')}>
96
- <div className="aspect-[1200/630] bg-ods-border" />
96
+ <article className={cn(CONTENT_CARD_SKELETON_FRAME_CLASS, 'group flex h-full flex-col')}>
97
+ <UnifiedSkeleton className="aspect-[1200/630]" />
97
98
  <div className="flex flex-grow flex-col space-y-3 p-4">
98
- <div className="h-5 w-3/4 rounded bg-ods-border" />
99
- <div className="h-5 w-1/2 rounded bg-ods-border" />
100
- <div className="h-3 w-full rounded bg-ods-border" />
101
- <div className="h-3 w-4/5 rounded bg-ods-border" />
99
+ <UnifiedSkeleton className="h-5 w-3/4 rounded" />
100
+ <UnifiedSkeleton className="h-5 w-1/2 rounded" />
101
+ <UnifiedSkeleton className="h-3 w-full rounded" />
102
+ <UnifiedSkeleton className="h-3 w-4/5 rounded" />
102
103
  <div className="mt-auto flex items-center gap-2">
103
- <div className="h-8 w-8 rounded-full bg-ods-border" />
104
- <div className="h-3 w-24 rounded bg-ods-border" />
104
+ <UnifiedSkeleton className="h-8 w-8 rounded-full" />
105
+ <UnifiedSkeleton className="h-3 w-24 rounded" />
105
106
  </div>
106
107
  </div>
107
108
  </article>
@@ -13,6 +13,7 @@ import { Megaphone } from 'lucide-react';
13
13
  import type React from 'react';
14
14
  import Link from '../../../embed-shims/next-link';
15
15
  import { formatDateShort } from '../../../utils/date-formatters';
16
+ import { UnifiedSkeleton } from '../../loading/unified-skeleton';
16
17
  import {
17
18
  COMPACT_CARD_ICON_SLOT,
18
19
  COMPACT_CARD_META_ROW_BOX,
@@ -96,16 +97,16 @@ export function CampaignCardAdmin({ campaign, className, anchorProps }: Campaign
96
97
  export function CampaignCardAdminSkeleton({ className }: { className?: string }) {
97
98
  return (
98
99
  <span className={`${COMPACT_CARD_SKELETON_OUTER} ${className ?? ''}`}>
99
- <span className={COMPACT_CARD_SKELETON_IMAGE_SLOT} />
100
+ <UnifiedSkeleton as="span" className={COMPACT_CARD_SKELETON_IMAGE_SLOT} />
100
101
  <span className={COMPACT_CARD_TEXT_COL}>
101
102
  <span className={COMPACT_CARD_TITLE_ROW}>
102
- <span className="h-3.5 w-3/5 rounded bg-ods-bg" />
103
+ <UnifiedSkeleton as="span" className="h-3.5 w-3/5 rounded" />
103
104
  </span>
104
105
  <span className={COMPACT_CARD_META_ROW_BOX}>
105
- <span className="h-3 w-1/2 rounded bg-ods-bg/70" />
106
+ <UnifiedSkeleton as="span" className="h-3 w-1/2 rounded" />
106
107
  </span>
107
108
  <span className={COMPACT_CARD_META_ROW_BOX}>
108
- <span className="h-3 w-11/12 rounded bg-ods-bg/40" />
109
+ <UnifiedSkeleton as="span" className="h-3 w-11/12 rounded" />
109
110
  </span>
110
111
  </span>
111
112
  </span>