@flamingo-stack/openframe-frontend-core 0.0.764 → 0.0.766

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 (1275) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/chat-protocol/decode.d.ts +0 -1
  3. package/dist/chat-protocol/decode.d.ts.map +1 -1
  4. package/dist/chat-protocol/decode.js +1 -3
  5. package/dist/chat-protocol/index.d.ts +1 -0
  6. package/dist/chat-protocol/index.d.ts.map +1 -1
  7. package/dist/chat-protocol/index.js +2 -0
  8. package/dist/{chunk-FQSXZC2K.cjs → chunk-2JRSYWFP.cjs} +3 -3
  9. package/dist/{chunk-I5MSCD57.cjs → chunk-3LW5TD54.cjs} +7 -3
  10. package/dist/{chunk-7AM3AFM4.cjs → chunk-4YIDZCTL.cjs} +1 -3
  11. package/dist/{chunk-SVP6DJFL.cjs → chunk-57B5RUYD.cjs} +2 -2
  12. package/dist/{chunk-R3TWQ3ZJ.cjs → chunk-5P4TDV7V.cjs} +16 -7
  13. package/dist/chunk-65VVJSQZ.cjs +109 -0
  14. package/dist/{chunk-LNGR4DXA.cjs → chunk-7U3ELNGC.cjs} +103 -61
  15. package/dist/{chunk-T5FRANE6.cjs → chunk-7VI7TOGI.cjs} +509 -353
  16. package/dist/{chunk-5AV5R5RC.cjs → chunk-7XFVUUVZ.cjs} +14 -14
  17. package/dist/{chunk-M7YZGRAV.cjs → chunk-AAECWUNV.cjs} +35 -8
  18. package/dist/{chunk-YUMFVQIN.cjs → chunk-C42WIUH6.cjs} +11 -5
  19. package/dist/{chunk-22XAPV6N.cjs → chunk-DGNBXZXT.cjs} +1069 -1020
  20. package/dist/{chunk-HOTM4UM6.cjs → chunk-E76ONBKF.cjs} +28 -0
  21. package/dist/{chunk-PERN37KO.cjs → chunk-F7R3U5EN.cjs} +5 -25
  22. package/dist/{chunk-K6VWTUCH.cjs → chunk-FL2RMEDX.cjs} +2 -2
  23. package/dist/chunk-FZB4RMRK.cjs +695 -0
  24. package/dist/{chunk-BIA77I6B.cjs → chunk-GTONIRJU.cjs} +56 -54
  25. package/dist/{chunk-3FC6AKEJ.cjs → chunk-HNQRY6RU.cjs} +200 -87
  26. package/dist/chunk-INI4ADPT.cjs +495 -0
  27. package/dist/{chunk-JD7CL2I6.cjs → chunk-JGWN6GH5.cjs} +11 -7
  28. package/dist/{chunk-RYSNH2VY.cjs → chunk-JKQVKWLB.cjs} +258 -179
  29. package/dist/{chunk-EQZXJUYV.cjs → chunk-JTSUAHDL.cjs} +73 -51
  30. package/dist/chunk-K3IHNXR4.cjs +40 -0
  31. package/dist/{chunk-EFTUFJS2.cjs → chunk-LELS4XMX.cjs} +20 -22
  32. package/dist/{chunk-ZCU2PYCW.cjs → chunk-MPTMT773.cjs} +62 -62
  33. package/dist/{chunk-LVKUMVUJ.cjs → chunk-NBVZIHGS.cjs} +12 -8
  34. package/dist/{chunk-IDGOMHTC.cjs → chunk-NF3PBWDJ.cjs} +521 -413
  35. package/dist/{chunk-7GUWPGB4.cjs → chunk-NJMZ3N7Q.cjs} +44 -44
  36. package/dist/{chunk-OJJ4RL2T.cjs → chunk-R3JX4MXD.cjs} +4 -4
  37. package/dist/{chunk-GY2JESOC.cjs → chunk-RB7VLVMD.cjs} +15 -15
  38. package/dist/{chunk-47GZ33ND.cjs → chunk-REJMFXGD.cjs} +198 -73
  39. package/dist/chunk-RMUSPTJN.cjs +102 -0
  40. package/dist/{chunk-3RFQPQ7Z.cjs → chunk-RNLRS4ID.cjs} +3 -3
  41. package/dist/{chunk-ZG6F5A3A.cjs → chunk-RTBYQWAV.cjs} +286 -201
  42. package/dist/{chunk-63N4FN5V.cjs → chunk-SETFUCZA.cjs} +7 -7
  43. package/dist/{chunk-2QMBXGMQ.cjs → chunk-TF5D5MNO.cjs} +222 -120
  44. package/dist/{chunk-NET74KSQ.cjs → chunk-TZ4GKUO2.cjs} +5 -5
  45. package/dist/{chunk-JJ2S6C5U.cjs → chunk-UW7UWUZU.cjs} +105 -117
  46. package/dist/{chunk-MWLD6NXV.cjs → chunk-VFZFCRAL.cjs} +4 -6
  47. package/dist/{chunk-VL6IXTAI.cjs → chunk-VRDHAR3X.cjs} +4229 -3918
  48. package/dist/{chunk-NJS7FQRW.cjs → chunk-VYYLYZUC.cjs} +207 -74
  49. package/dist/{chunk-NO5UJLLQ.cjs → chunk-WEANWBJH.cjs} +6 -1
  50. package/dist/{chunk-XFNWHCRM.cjs → chunk-WO3XO27C.cjs} +13 -13
  51. package/dist/{chunk-L2V7K7RR.cjs → chunk-X7ECVSVN.cjs} +43 -41
  52. package/dist/chunk-XFRBEXQN.cjs +304 -0
  53. package/dist/{chunk-AKK3EO37.cjs → chunk-XIFEZ2JT.cjs} +35 -23
  54. package/dist/{chunk-XCH7SPGI.cjs → chunk-XVFM6SJA.cjs} +61 -52
  55. package/dist/{chunk-3RYIF4OW.cjs → chunk-XXJL5GY3.cjs} +3 -3
  56. package/dist/{chunk-GZKWF6NH.cjs → chunk-XZ6DKGT4.cjs} +34 -34
  57. package/dist/{chunk-74ALTXXC.cjs → chunk-YL6ZB2SR.cjs} +1624 -1440
  58. package/dist/{chunk-TSJUL6IH.cjs → chunk-YRFWOJF4.cjs} +16 -8
  59. package/dist/{chunk-HTRILBJD.cjs → chunk-YXDHVHB2.cjs} +30 -13
  60. package/dist/{chunk-RO72PRQI.cjs → chunk-ZRDMGMY7.cjs} +75 -50
  61. package/dist/{chunk-2IFCRPNP.cjs → chunk-ZV45VS6K.cjs} +369 -433
  62. package/dist/{cloud-tenants-N5CLYDPU.cjs → cloud-tenants-U2KMEIO7.cjs} +35 -39
  63. package/dist/components/agent-identity.d.ts +1 -2
  64. package/dist/components/agent-identity.d.ts.map +1 -1
  65. package/dist/components/agent-identity.js +0 -1
  66. package/dist/components/agent-mark.d.ts +4 -6
  67. package/dist/components/agent-mark.d.ts.map +1 -1
  68. package/dist/components/agent-mark.js +7 -8
  69. package/dist/components/authors/author-detail-view.d.ts.map +1 -1
  70. package/dist/components/authors/author-detail-view.js +51 -18
  71. package/dist/components/calendar.cjs +10 -10
  72. package/dist/components/case-studies/entity-quotes-panel.d.ts +6 -4
  73. package/dist/components/case-studies/entity-quotes-panel.d.ts.map +1 -1
  74. package/dist/components/case-studies/entity-quotes-panel.js +44 -11
  75. package/dist/components/case-studies/index.cjs +140 -70
  76. package/dist/components/case-studies/index.d.ts +2 -2
  77. package/dist/components/case-studies/index.d.ts.map +1 -1
  78. package/dist/components/case-studies/index.js +5 -2
  79. package/dist/components/case-studies/quote-cards-strip.d.ts +23 -2
  80. package/dist/components/case-studies/quote-cards-strip.d.ts.map +1 -1
  81. package/dist/components/case-studies/quote-cards-strip.js +48 -10
  82. package/dist/components/categories-cart.d.ts +7 -0
  83. package/dist/components/categories-cart.d.ts.map +1 -1
  84. package/dist/components/categories-cart.js +58 -36
  85. package/dist/components/category-card.js +1 -1
  86. package/dist/components/chat/chat-attachment-bar.js +1 -1
  87. package/dist/components/chat/chat-container.d.ts.map +1 -1
  88. package/dist/components/chat/chat-container.js +2 -1
  89. package/dist/components/chat/chat-ticket-list.d.ts +0 -1
  90. package/dist/components/chat/chat-ticket-list.d.ts.map +1 -1
  91. package/dist/components/chat/chat-turn.d.ts +31 -1
  92. package/dist/components/chat/chat-turn.d.ts.map +1 -1
  93. package/dist/components/chat/chat-turn.js +85 -19
  94. package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
  95. package/dist/components/chat/embeddable-chat.js +1 -1
  96. package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts +0 -15
  97. package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts.map +1 -1
  98. package/dist/components/chat/entity-cards/admin-content-card-grid.js +2 -38
  99. package/dist/components/chat/entity-cards/admin-content-card.d.ts +15 -0
  100. package/dist/components/chat/entity-cards/admin-content-card.d.ts.map +1 -1
  101. package/dist/components/chat/entity-cards/admin-content-card.js +52 -10
  102. package/dist/components/chat/entity-cards/blog-card.d.ts +9 -2
  103. package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -1
  104. package/dist/components/chat/entity-cards/blog-card.js +49 -33
  105. package/dist/components/chat/entity-cards/campaign-card-admin.d.ts.map +1 -1
  106. package/dist/components/chat/entity-cards/campaign-card-admin.js +4 -11
  107. package/dist/components/chat/entity-cards/case-study-card.d.ts +27 -9
  108. package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
  109. package/dist/components/chat/entity-cards/case-study-card.js +80 -54
  110. package/dist/components/chat/entity-cards/chat-ticket-item.d.ts +7 -0
  111. package/dist/components/chat/entity-cards/chat-ticket-item.d.ts.map +1 -1
  112. package/dist/components/chat/entity-cards/chat-ticket-item.js +24 -28
  113. package/dist/components/chat/entity-cards/customer-interview-card.d.ts +9 -2
  114. package/dist/components/chat/entity-cards/customer-interview-card.d.ts.map +1 -1
  115. package/dist/components/chat/entity-cards/customer-interview-card.js +39 -36
  116. package/dist/components/chat/entity-cards/data-room-doc-card.d.ts.map +1 -1
  117. package/dist/components/chat/entity-cards/data-room-doc-card.js +14 -16
  118. package/dist/components/chat/entity-cards/design-doc-card.d.ts +8 -2
  119. package/dist/components/chat/entity-cards/design-doc-card.d.ts.map +1 -1
  120. package/dist/components/chat/entity-cards/design-doc-card.js +37 -43
  121. package/dist/components/chat/entity-cards/dispatch.d.ts +2 -5
  122. package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
  123. package/dist/components/chat/entity-cards/dispatch.js +6 -6
  124. package/dist/components/chat/entity-cards/employee-entry-card.d.ts.map +1 -1
  125. package/dist/components/chat/entity-cards/employee-entry-card.js +5 -5
  126. package/dist/components/chat/entity-cards/entity-author-card.d.ts +33 -6
  127. package/dist/components/chat/entity-cards/entity-author-card.d.ts.map +1 -1
  128. package/dist/components/chat/entity-cards/entity-author-card.js +98 -32
  129. package/dist/components/chat/entity-cards/entity-portrait-card.d.ts +9 -0
  130. package/dist/components/chat/entity-cards/entity-portrait-card.d.ts.map +1 -1
  131. package/dist/components/chat/entity-cards/entity-portrait-card.js +46 -18
  132. package/dist/components/chat/entity-cards/generic-entity-card.d.ts.map +1 -1
  133. package/dist/components/chat/entity-cards/generic-entity-card.js +14 -17
  134. package/dist/components/chat/entity-cards/github-activity-card.d.ts.map +1 -1
  135. package/dist/components/chat/entity-cards/github-activity-card.js +15 -20
  136. package/dist/components/chat/entity-cards/hubspot-ticket-card.d.ts.map +1 -1
  137. package/dist/components/chat/entity-cards/hubspot-ticket-card.js +14 -19
  138. package/dist/components/chat/entity-cards/index.d.ts +8 -7
  139. package/dist/components/chat/entity-cards/index.d.ts.map +1 -1
  140. package/dist/components/chat/entity-cards/index.js +21 -8
  141. package/dist/components/chat/entity-cards/investor-update-card.d.ts +9 -3
  142. package/dist/components/chat/entity-cards/investor-update-card.d.ts.map +1 -1
  143. package/dist/components/chat/entity-cards/investor-update-card.js +28 -28
  144. package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts +11 -2
  145. package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts.map +1 -1
  146. package/dist/components/chat/entity-cards/onboarding-guide-card.js +66 -63
  147. package/dist/components/chat/entity-cards/program-card.d.ts +9 -2
  148. package/dist/components/chat/entity-cards/program-card.d.ts.map +1 -1
  149. package/dist/components/chat/entity-cards/program-card.js +69 -58
  150. package/dist/components/chat/entity-cards/roadmap-card.d.ts +10 -1
  151. package/dist/components/chat/entity-cards/roadmap-card.d.ts.map +1 -1
  152. package/dist/components/chat/entity-cards/roadmap-card.js +148 -156
  153. package/dist/components/chat/entity-cards/roadmap-vote-button.d.ts.map +1 -1
  154. package/dist/components/chat/entity-cards/roadmap-vote-button.js +5 -1
  155. package/dist/components/chat/entity-cards/slack-message-card.d.ts.map +1 -1
  156. package/dist/components/chat/entity-cards/slack-message-card.js +23 -18
  157. package/dist/components/chat/hooks/index.d.ts +7 -1
  158. package/dist/components/chat/hooks/index.d.ts.map +1 -1
  159. package/dist/components/chat/hooks/index.js +8 -1
  160. package/dist/components/chat/hooks/use-ask-prompts.d.ts.map +1 -1
  161. package/dist/components/chat/hooks/use-ask-prompts.js +3 -1
  162. package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts +1 -1
  163. package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts.map +1 -1
  164. package/dist/components/chat/hooks/use-chat-history-hydration.d.ts +1 -1
  165. package/dist/components/chat/hooks/use-chat-history-hydration.d.ts.map +1 -1
  166. package/dist/components/chat/hooks/use-chat.d.ts +1 -2
  167. package/dist/components/chat/hooks/use-chat.d.ts.map +1 -1
  168. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +0 -2
  169. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  170. package/dist/components/chat/hooks/use-nats-chat-adapter.js +0 -8
  171. package/dist/components/chat/hooks/use-proxied-image-url.d.ts +17 -13
  172. package/dist/components/chat/hooks/use-proxied-image-url.d.ts.map +1 -1
  173. package/dist/components/chat/hooks/use-proxied-image-url.js +10 -8
  174. package/dist/components/chat/hooks/use-slash-commands.d.ts +1 -2
  175. package/dist/components/chat/hooks/use-slash-commands.d.ts.map +1 -1
  176. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts +1 -8
  177. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
  178. package/dist/components/chat/hooks/use-sse-chat-adapter.js +1 -1
  179. package/dist/components/chat/index.cjs +44 -29
  180. package/dist/components/chat/stream/chat-stream-reducer.d.ts +1 -1
  181. package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +1 -1
  182. package/dist/components/chat/stream/chat-stream-reducer.js +1 -1
  183. package/dist/components/chat/types/entities/index.d.ts +6 -4
  184. package/dist/components/chat/types/entities/index.d.ts.map +1 -1
  185. package/dist/components/chat/types/entities/index.js +4 -4
  186. package/dist/components/chat/types/entities/investor-update.d.ts +1 -1
  187. package/dist/components/chat/types/entities/investor-update.d.ts.map +1 -1
  188. package/dist/components/chat/types/entities/program-types.d.ts +2 -1
  189. package/dist/components/chat/types/entities/program-types.d.ts.map +1 -1
  190. package/dist/components/chat/types/entities/program-types.js +1 -4
  191. package/dist/components/chat/utils/compact-card-classes.d.ts +9 -1
  192. package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -1
  193. package/dist/components/chat/utils/compact-card-classes.js +11 -2
  194. package/dist/components/chat/utils/compact-card-skeleton.d.ts +40 -0
  195. package/dist/components/chat/utils/compact-card-skeleton.d.ts.map +1 -0
  196. package/dist/components/chat/utils/compact-card-skeleton.js +61 -0
  197. package/dist/components/chat/utils/icon-library.d.ts +0 -1
  198. package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
  199. package/dist/components/chat/utils/index.d.ts +5 -3
  200. package/dist/components/chat/utils/index.d.ts.map +1 -1
  201. package/dist/components/chat/utils/index.js +3 -2
  202. package/dist/components/chat/utils/scroll-anchor.d.ts +1 -2
  203. package/dist/components/chat/utils/scroll-anchor.d.ts.map +1 -1
  204. package/dist/components/chat/utils/scroll-anchor.js +0 -1
  205. package/dist/components/chat/utils/source-row-cta.d.ts +0 -2
  206. package/dist/components/chat/utils/source-row-cta.d.ts.map +1 -1
  207. package/dist/components/chat/utils/source-row-cta.js +1 -2
  208. package/dist/components/comment-card.d.ts +15 -0
  209. package/dist/components/comment-card.d.ts.map +1 -1
  210. package/dist/components/comment-card.js +178 -119
  211. package/dist/components/comment-thread.d.ts +29 -0
  212. package/dist/components/comment-thread.d.ts.map +1 -1
  213. package/dist/components/comment-thread.js +76 -18
  214. package/dist/components/contact/index.cjs +36 -40
  215. package/dist/components/content-loading-container.d.ts +1 -1
  216. package/dist/components/docs/doc-viewer.d.ts.map +1 -1
  217. package/dist/components/docs/doc-viewer.js +10 -9
  218. package/dist/components/docs/index.cjs +39 -43
  219. package/dist/components/docs/skeletons.d.ts +0 -5
  220. package/dist/components/docs/skeletons.d.ts.map +1 -1
  221. package/dist/components/docs/skeletons.js +30 -50
  222. package/dist/components/docs/use-document-tree.d.ts +0 -1
  223. package/dist/components/docs/use-document-tree.d.ts.map +1 -1
  224. package/dist/components/docs/use-document-tree.js +6 -1
  225. package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
  226. package/dist/components/embeds/embed-iframe.js +3 -0
  227. package/dist/components/embeds/index.cjs +38 -40
  228. package/dist/components/embeds/index.d.ts +1 -1
  229. package/dist/components/embeds/index.d.ts.map +1 -1
  230. package/dist/components/embeds/index.js +2 -1
  231. package/dist/components/embeds/markdown-image.d.ts.map +1 -1
  232. package/dist/components/embeds/markdown-image.js +5 -2
  233. package/dist/components/embeds/og-link-preview.d.ts +7 -3
  234. package/dist/components/embeds/og-link-preview.d.ts.map +1 -1
  235. package/dist/components/embeds/og-link-preview.js +106 -62
  236. package/dist/components/faq/faq-document-page.d.ts +5 -1
  237. package/dist/components/faq/faq-document-page.d.ts.map +1 -1
  238. package/dist/components/faq/faq-document-page.js +5 -1
  239. package/dist/components/faq/faq-section.d.ts +34 -1
  240. package/dist/components/faq/faq-section.d.ts.map +1 -1
  241. package/dist/components/faq/faq-section.js +146 -59
  242. package/dist/components/faq/index.cjs +41 -41
  243. package/dist/components/faq/index.d.ts +1 -1
  244. package/dist/components/faq/index.d.ts.map +1 -1
  245. package/dist/components/faq/index.js +9 -1
  246. package/dist/components/faq-accordion.d.ts +15 -0
  247. package/dist/components/faq-accordion.d.ts.map +1 -1
  248. package/dist/components/faq-accordion.js +37 -9
  249. package/dist/components/features/ai-enrich/AIStatusIndicator.d.ts.map +1 -1
  250. package/dist/components/features/ai-enrich/AIStatusIndicator.js +2 -1
  251. package/dist/components/features/approval-level.d.ts +15 -1
  252. package/dist/components/features/approval-level.d.ts.map +1 -1
  253. package/dist/components/features/approval-level.js +42 -6
  254. package/dist/components/features/capability-explorer.d.ts +5 -1
  255. package/dist/components/features/capability-explorer.d.ts.map +1 -1
  256. package/dist/components/features/capability-explorer.js +42 -37
  257. package/dist/components/features/cards-strip.d.ts +9 -0
  258. package/dist/components/features/cards-strip.d.ts.map +1 -1
  259. package/dist/components/features/cards-strip.js +35 -11
  260. package/dist/components/features/command-box.d.ts +19 -0
  261. package/dist/components/features/command-box.d.ts.map +1 -1
  262. package/dist/components/features/command-box.js +103 -11
  263. package/dist/components/features/conversation-card.d.ts +70 -5
  264. package/dist/components/features/conversation-card.d.ts.map +1 -1
  265. package/dist/components/features/conversation-card.js +146 -13
  266. package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -1
  267. package/dist/components/features/devices/device-selector/device-selector.js +1 -0
  268. package/dist/components/features/devices/devices-panel-view.d.ts +1 -1
  269. package/dist/components/features/devices/devices-panel-view.js +1 -1
  270. package/dist/components/features/entity-tag-badges.d.ts +32 -7
  271. package/dist/components/features/entity-tag-badges.d.ts.map +1 -1
  272. package/dist/components/features/entity-tag-badges.js +73 -9
  273. package/dist/components/features/entity-video-section.d.ts +14 -14
  274. package/dist/components/features/entity-video-section.d.ts.map +1 -1
  275. package/dist/components/features/entity-video-section.js +29 -22
  276. package/dist/components/features/figma-prototype-viewer.d.ts.map +1 -1
  277. package/dist/components/features/figma-prototype-viewer.js +3 -10
  278. package/dist/components/features/index.cjs +77 -39
  279. package/dist/components/features/index.d.ts +3 -0
  280. package/dist/components/features/index.d.ts.map +1 -1
  281. package/dist/components/features/index.js +5 -0
  282. package/dist/components/features/knowledge-base/index.d.ts +2 -1
  283. package/dist/components/features/knowledge-base/index.d.ts.map +1 -1
  284. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts +0 -1
  285. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts.map +1 -1
  286. package/dist/components/features/model-token-rates.d.ts.map +1 -1
  287. package/dist/components/features/model-token-rates.js +50 -78
  288. package/dist/components/features/notifications/approval-request-notification-tile.d.ts.map +1 -1
  289. package/dist/components/features/notifications/approval-request-notification-tile.js +9 -5
  290. package/dist/components/features/notifications/notification-tile.d.ts +22 -7
  291. package/dist/components/features/notifications/notification-tile.d.ts.map +1 -1
  292. package/dist/components/features/notifications/notification-tile.js +42 -15
  293. package/dist/components/features/paths-display.d.ts +9 -0
  294. package/dist/components/features/paths-display.d.ts.map +1 -1
  295. package/dist/components/features/paths-display.js +50 -5
  296. package/dist/components/features/platform-badge.d.ts +2 -0
  297. package/dist/components/features/platform-badge.d.ts.map +1 -1
  298. package/dist/components/features/platform-badge.js +33 -2
  299. package/dist/components/features/push-button-selector.d.ts +23 -1
  300. package/dist/components/features/push-button-selector.d.ts.map +1 -1
  301. package/dist/components/features/push-button-selector.js +114 -41
  302. package/dist/components/features/remote-session/index.d.ts +2 -2
  303. package/dist/components/features/remote-session/index.d.ts.map +1 -1
  304. package/dist/components/features/remote-session/index.js +3 -3
  305. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts +2 -0
  306. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts.map +1 -1
  307. package/dist/components/features/remote-session/remote-desktop-chat-message-row.js +18 -4
  308. package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts.map +1 -1
  309. package/dist/components/features/remote-session/remote-desktop-chat-panel.js +11 -2
  310. package/dist/components/features/remote-session/remote-desktop-view.d.ts +6 -6
  311. package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -1
  312. package/dist/components/features/remote-session/remote-desktop-view.js +27 -27
  313. package/dist/components/features/remote-session/remote-session-chat-panel.js +1 -1
  314. package/dist/components/features/status-filter-component.d.ts +19 -1
  315. package/dist/components/features/status-filter-component.d.ts.map +1 -1
  316. package/dist/components/features/status-filter-component.js +106 -43
  317. package/dist/components/features/use-video-warmup.d.ts +1 -1
  318. package/dist/components/features/use-video-warmup.d.ts.map +1 -1
  319. package/dist/components/features/use-video-warmup.js +2 -5
  320. package/dist/components/features/use-walkthrough-video.d.ts.map +1 -1
  321. package/dist/components/features/use-walkthrough-video.js +4 -1
  322. package/dist/components/features/video-bites-strip.d.ts +42 -1
  323. package/dist/components/features/video-bites-strip.d.ts.map +1 -1
  324. package/dist/components/features/video-bites-strip.js +100 -21
  325. package/dist/components/features/video-hover-preview.d.ts +1 -1
  326. package/dist/components/features/video-hover-preview.d.ts.map +1 -1
  327. package/dist/components/features/video.d.ts +9 -2
  328. package/dist/components/features/video.d.ts.map +1 -1
  329. package/dist/components/features/video.js +10 -5
  330. package/dist/components/features/walkthrough-video.d.ts.map +1 -1
  331. package/dist/components/features/walkthrough-video.js +5 -1
  332. package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -1
  333. package/dist/components/help-center-pages/download-apps-page.js +65 -33
  334. package/dist/components/help-center-pages/index.cjs +410 -316
  335. package/dist/components/help-center-pages/trust-center-page.d.ts +21 -9
  336. package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
  337. package/dist/components/help-center-pages/trust-center-page.js +100 -67
  338. package/dist/components/help-center-pages/trust-center-sections.d.ts +19 -14
  339. package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
  340. package/dist/components/help-center-pages/trust-center-sections.js +124 -97
  341. package/dist/components/icon-display.d.ts.map +1 -1
  342. package/dist/components/icon-display.js +6 -0
  343. package/dist/components/index.cjs +1505 -380
  344. package/dist/components/index.d.ts +5 -2
  345. package/dist/components/index.d.ts.map +1 -1
  346. package/dist/components/index.js +12 -2
  347. package/dist/components/interactive-wrapper.d.ts.map +1 -1
  348. package/dist/components/interactive-wrapper.js +2 -1
  349. package/dist/components/layout/list-page-layout.d.ts +3 -3
  350. package/dist/components/layout/list-page-layout.d.ts.map +1 -1
  351. package/dist/components/layout/page-container.d.ts +8 -1
  352. package/dist/components/layout/page-container.d.ts.map +1 -1
  353. package/dist/components/layout/page-container.js +25 -10
  354. package/dist/components/layout/page-data-sync.d.ts +7 -1
  355. package/dist/components/layout/page-data-sync.d.ts.map +1 -1
  356. package/dist/components/layout/page-data-sync.js +13 -4
  357. package/dist/components/layout/page-heading.d.ts +31 -0
  358. package/dist/components/layout/page-heading.d.ts.map +1 -1
  359. package/dist/components/layout/page-heading.js +44 -1
  360. package/dist/components/layout/page-layout.d.ts +4 -4
  361. package/dist/components/layout/page-layout.d.ts.map +1 -1
  362. package/dist/components/layout/page-layout.js +4 -5
  363. package/dist/components/layout/title-block.d.ts +12 -1
  364. package/dist/components/layout/title-block.d.ts.map +1 -1
  365. package/dist/components/layout/title-block.js +50 -12
  366. package/dist/components/loading/category-vendor-selector-skeleton.d.ts +3 -0
  367. package/dist/components/loading/category-vendor-selector-skeleton.d.ts.map +1 -1
  368. package/dist/components/loading/deprecated-layout-skeletons.d.ts +25 -0
  369. package/dist/components/loading/deprecated-layout-skeletons.d.ts.map +1 -0
  370. package/dist/components/loading/deprecated-layout-skeletons.js +78 -0
  371. package/dist/components/loading/device-card-skeleton.js +4 -4
  372. package/dist/components/loading/index.d.ts +4 -3
  373. package/dist/components/loading/index.d.ts.map +1 -1
  374. package/dist/components/loading/index.js +10 -16
  375. package/dist/components/loading/loading-region.d.ts +10 -9
  376. package/dist/components/loading/loading-region.d.ts.map +1 -1
  377. package/dist/components/loading/loading-region.js +4 -1
  378. package/dist/components/loading/msp-profile-form-skeleton.d.ts +2 -0
  379. package/dist/components/loading/msp-profile-form-skeleton.d.ts.map +1 -1
  380. package/dist/components/loading/organization-card-skeleton.d.ts +14 -10
  381. package/dist/components/loading/organization-card-skeleton.d.ts.map +1 -1
  382. package/dist/components/loading/organization-card-skeleton.js +38 -40
  383. package/dist/components/loading/page-layout-skeleton.d.ts +7 -51
  384. package/dist/components/loading/page-layout-skeleton.d.ts.map +1 -1
  385. package/dist/components/loading/page-layout-skeleton.js +2 -411
  386. package/dist/components/loading/settings-form-skeleton.d.ts +2 -0
  387. package/dist/components/loading/settings-form-skeleton.d.ts.map +1 -1
  388. package/dist/components/loading/unified-skeleton.d.ts +57 -9
  389. package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
  390. package/dist/components/loading/unified-skeleton.js +57 -8
  391. package/dist/components/log-severity-dot.d.ts +2 -0
  392. package/dist/components/log-severity-dot.d.ts.map +1 -1
  393. package/dist/components/log-severity-dot.js +11 -13
  394. package/dist/components/logs-list.d.ts.map +1 -1
  395. package/dist/components/logs-list.js +34 -43
  396. package/dist/components/media-carousel.d.ts +0 -1
  397. package/dist/components/media-carousel.d.ts.map +1 -1
  398. package/dist/components/meeting-scheduler/booking-form.d.ts +52 -8
  399. package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
  400. package/dist/components/meeting-scheduler/booking-form.js +150 -30
  401. package/dist/components/meeting-scheduler/context-panel.d.ts +18 -2
  402. package/dist/components/meeting-scheduler/context-panel.d.ts.map +1 -1
  403. package/dist/components/meeting-scheduler/context-panel.js +61 -23
  404. package/dist/components/meeting-scheduler/directory.d.ts +11 -1
  405. package/dist/components/meeting-scheduler/directory.d.ts.map +1 -1
  406. package/dist/components/meeting-scheduler/directory.js +47 -27
  407. package/dist/components/meeting-scheduler/index.cjs +556 -344
  408. package/dist/components/meeting-scheduler/index.d.ts +5 -4
  409. package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
  410. package/dist/components/meeting-scheduler/index.js +127 -102
  411. package/dist/components/meeting-scheduler/modal-header.d.ts +7 -3
  412. package/dist/components/meeting-scheduler/modal-header.d.ts.map +1 -1
  413. package/dist/components/meeting-scheduler/modal-header.js +29 -18
  414. package/dist/components/meeting-scheduler/slot-picker.d.ts +11 -4
  415. package/dist/components/meeting-scheduler/slot-picker.d.ts.map +1 -1
  416. package/dist/components/meeting-scheduler/slot-picker.js +12 -7
  417. package/dist/components/metric-value.d.ts +5 -0
  418. package/dist/components/metric-value.d.ts.map +1 -1
  419. package/dist/components/metric-value.js +15 -3
  420. package/dist/components/msp-display.d.ts +5 -0
  421. package/dist/components/msp-display.d.ts.map +1 -1
  422. package/dist/components/msp-display.js +19 -14
  423. package/dist/components/navigation/app-layout.d.ts +0 -2
  424. package/dist/components/navigation/app-layout.d.ts.map +1 -1
  425. package/dist/components/navigation/app-layout.js +1 -4
  426. package/dist/components/navigation/index.cjs +48 -42
  427. package/dist/components/navigation/index.d.ts +8 -3
  428. package/dist/components/navigation/index.d.ts.map +1 -1
  429. package/dist/components/navigation/index.js +18 -3
  430. package/dist/components/navigation/mingo-ai-button.d.ts +0 -2
  431. package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
  432. package/dist/components/navigation/mingo-ai-button.js +2 -4
  433. package/dist/components/navigation/mobile-nav-sheet.d.ts +0 -1
  434. package/dist/components/navigation/mobile-nav-sheet.d.ts.map +1 -1
  435. package/dist/components/navigation/mobile-nav-sheet.js +0 -2
  436. package/dist/components/navigation/multi-level-navigation.d.ts +21 -0
  437. package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -1
  438. package/dist/components/navigation/multi-level-navigation.js +98 -24
  439. package/dist/components/navigation/page-section-bar.d.ts +50 -0
  440. package/dist/components/navigation/page-section-bar.d.ts.map +1 -0
  441. package/dist/components/navigation/page-section-bar.js +85 -0
  442. package/dist/components/navigation/sticky-section-nav.d.ts +12 -0
  443. package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
  444. package/dist/components/navigation/sticky-section-nav.js +87 -20
  445. package/dist/components/navigation/ticket-alerts-button.js +1 -1
  446. package/dist/components/onboarding-guides/hooks/use-onboarding-guides.d.ts.map +1 -1
  447. package/dist/components/onboarding-guides/hooks/use-onboarding-guides.js +7 -1
  448. package/dist/components/onboarding-guides/index.cjs +38 -42
  449. package/dist/components/onboarding-guides/index.d.ts +1 -2
  450. package/dist/components/onboarding-guides/index.d.ts.map +1 -1
  451. package/dist/components/onboarding-guides/index.js +5 -3
  452. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts +8 -0
  453. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
  454. package/dist/components/onboarding-guides/onboarding-guide-detail-view.js +142 -84
  455. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts +18 -17
  456. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts.map +1 -1
  457. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.js +28 -21
  458. package/dist/components/onboarding-guides/onboarding-guides-catalog-view.d.ts.map +1 -1
  459. package/dist/components/onboarding-guides/onboarding-guides-catalog-view.js +57 -18
  460. package/dist/components/pagination.d.ts +26 -2
  461. package/dist/components/pagination.d.ts.map +1 -1
  462. package/dist/components/pagination.js +61 -38
  463. package/dist/components/persistent-filter-controls.d.ts.map +1 -1
  464. package/dist/components/persistent-filter-controls.js +1 -2
  465. package/dist/components/persistent-pagination.d.ts.map +1 -1
  466. package/dist/components/persistent-pagination.js +3 -1
  467. package/dist/components/platform/ToolBadge.d.ts +13 -1
  468. package/dist/components/platform/ToolBadge.d.ts.map +1 -1
  469. package/dist/components/platform/ToolBadge.js +38 -9
  470. package/dist/components/platform/index.d.ts +2 -2
  471. package/dist/components/platform/index.d.ts.map +1 -1
  472. package/dist/components/platform/index.js +4 -2
  473. package/dist/components/platform/tool-badge-mark.d.ts +6 -0
  474. package/dist/components/platform/tool-badge-mark.d.ts.map +1 -0
  475. package/dist/components/platform/tool-badge-mark.js +6 -0
  476. package/dist/components/product-demo/fixtures/devices.d.ts +0 -2
  477. package/dist/components/product-demo/fixtures/devices.d.ts.map +1 -1
  478. package/dist/components/product-demo/fixtures/devices.js +0 -2
  479. package/dist/components/product-demo/index.cjs +1889 -32
  480. package/dist/components/product-demo/product-screen.d.ts +5 -5
  481. package/dist/components/product-demo/product-screen.d.ts.map +1 -1
  482. package/dist/components/product-demo/product-screen.js +19 -15
  483. package/dist/components/product-demo/screen-loading.d.ts +10 -0
  484. package/dist/components/product-demo/screen-loading.d.ts.map +1 -0
  485. package/dist/components/product-demo/screen-loading.js +12 -0
  486. package/dist/components/product-demo/screens/devices-view.d.ts +22 -0
  487. package/dist/components/product-demo/screens/devices-view.d.ts.map +1 -0
  488. package/dist/components/product-demo/screens/devices-view.js +35 -0
  489. package/dist/components/product-demo/screens/devices.d.ts +1 -7
  490. package/dist/components/product-demo/screens/devices.d.ts.map +1 -1
  491. package/dist/components/product-demo/screens/devices.js +8 -15
  492. package/dist/components/related-content/card-registry.d.ts +3 -2
  493. package/dist/components/related-content/card-registry.d.ts.map +1 -1
  494. package/dist/components/related-content/card-registry.js +15 -3
  495. package/dist/components/related-content/index.cjs +19 -18
  496. package/dist/components/related-content/index.d.ts +2 -1
  497. package/dist/components/related-content/index.d.ts.map +1 -1
  498. package/dist/components/related-content/index.js +3 -1
  499. package/dist/components/related-content/related-content-section.d.ts +14 -1
  500. package/dist/components/related-content/related-content-section.d.ts.map +1 -1
  501. package/dist/components/related-content/related-content-section.js +144 -32
  502. package/dist/components/results-count.d.ts +5 -0
  503. package/dist/components/results-count.d.ts.map +1 -1
  504. package/dist/components/results-count.js +30 -6
  505. package/dist/components/shared/article-author-byline.d.ts +8 -0
  506. package/dist/components/shared/article-author-byline.d.ts.map +1 -1
  507. package/dist/components/shared/article-author-byline.js +54 -52
  508. package/dist/components/shared/delivery/delivery-lists.d.ts.map +1 -1
  509. package/dist/components/shared/delivery/delivery-lists.js +14 -2
  510. package/dist/components/shared/delivery/delivery-row.d.ts +5 -0
  511. package/dist/components/shared/delivery/delivery-row.d.ts.map +1 -1
  512. package/dist/components/shared/delivery/delivery-row.js +37 -10
  513. package/dist/components/shared/delivery/delivery-table.d.ts +4 -0
  514. package/dist/components/shared/delivery/delivery-table.d.ts.map +1 -1
  515. package/dist/components/shared/delivery/delivery-table.js +14 -26
  516. package/dist/components/shared/detail-page-skeleton.d.ts +3 -0
  517. package/dist/components/shared/detail-page-skeleton.d.ts.map +1 -1
  518. package/dist/components/shared/detail-page-skeleton.js +9 -1
  519. package/dist/components/shared/dev-section/dev-card-row.d.ts +2 -0
  520. package/dist/components/shared/dev-section/dev-card-row.d.ts.map +1 -1
  521. package/dist/components/shared/dev-section/dev-card-row.js +31 -21
  522. package/dist/components/shared/dev-section/dev-section-view.js +1 -1
  523. package/dist/components/shared/legal-document/index.d.ts +1 -1
  524. package/dist/components/shared/legal-document/index.d.ts.map +1 -1
  525. package/dist/components/shared/legal-document/index.js +5 -1
  526. package/dist/components/shared/legal-document/legal-document-page.d.ts +14 -0
  527. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
  528. package/dist/components/shared/legal-document/legal-document-page.js +47 -42
  529. package/dist/components/shared/legal-document/use-legal-docs.d.ts.map +1 -1
  530. package/dist/components/shared/legal-document/use-legal-docs.js +4 -1
  531. package/dist/components/shared/legal-document/use-legal-documents.d.ts.map +1 -1
  532. package/dist/components/shared/legal-document/use-legal-documents.js +3 -1
  533. package/dist/components/shared/media-gallery-strip.d.ts +7 -0
  534. package/dist/components/shared/media-gallery-strip.d.ts.map +1 -1
  535. package/dist/components/shared/media-gallery-strip.js +22 -3
  536. package/dist/components/shared/onboarding/index.d.ts +2 -1
  537. package/dist/components/shared/onboarding/index.d.ts.map +1 -1
  538. package/dist/components/shared/onboarding/index.js +1 -3
  539. package/dist/components/shared/product-release/index.d.ts +2 -1
  540. package/dist/components/shared/product-release/index.d.ts.map +1 -1
  541. package/dist/components/shared/product-release/product-release-card-classes.d.ts +26 -0
  542. package/dist/components/shared/product-release/product-release-card-classes.d.ts.map +1 -0
  543. package/dist/components/shared/product-release/product-release-card-classes.js +40 -0
  544. package/dist/components/shared/product-release/product-release-card-skeleton.d.ts.map +1 -1
  545. package/dist/components/shared/product-release/product-release-card-skeleton.js +37 -35
  546. package/dist/components/shared/product-release/product-release-card.d.ts +3 -1
  547. package/dist/components/shared/product-release/product-release-card.d.ts.map +1 -1
  548. package/dist/components/shared/product-release/product-release-card.js +86 -73
  549. package/dist/components/shared/product-release/product-releases-view.d.ts.map +1 -1
  550. package/dist/components/shared/product-release/product-releases-view.js +26 -13
  551. package/dist/components/shared/product-release/release-detail-page.d.ts +0 -1
  552. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  553. package/dist/components/shared/product-release/release-detail-page.js +281 -215
  554. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts +9 -1
  555. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts.map +1 -1
  556. package/dist/components/shared/roadmap/roadmap-grid-skeleton.js +12 -11
  557. package/dist/components/shared/roadmap/roadmap-grid.d.ts +13 -1
  558. package/dist/components/shared/roadmap/roadmap-grid.d.ts.map +1 -1
  559. package/dist/components/shared/roadmap/roadmap-grid.js +45 -29
  560. package/dist/components/shared/roadmap/roadmap-view.d.ts.map +1 -1
  561. package/dist/components/shared/roadmap/roadmap-view.js +2 -3
  562. package/dist/components/social-icon-row.d.ts +9 -2
  563. package/dist/components/social-icon-row.d.ts.map +1 -1
  564. package/dist/components/social-icon-row.js +12 -6
  565. package/dist/components/tickets/help-center-list.d.ts.map +1 -1
  566. package/dist/components/tickets/help-center-list.js +6 -2
  567. package/dist/components/tickets/hooks/use-ticket-actions.d.ts +2 -2
  568. package/dist/components/tickets/hooks/use-ticket-actions.d.ts.map +1 -1
  569. package/dist/components/tickets/index.cjs +42 -46
  570. package/dist/components/tickets/index.d.ts +2 -1
  571. package/dist/components/tickets/index.d.ts.map +1 -1
  572. package/dist/components/tickets/index.js +2 -3
  573. package/dist/components/tickets/ticket-center.d.ts.map +1 -1
  574. package/dist/components/tickets/ticket-center.js +117 -58
  575. package/dist/components/tickets/types.d.ts +0 -8
  576. package/dist/components/tickets/types.d.ts.map +1 -1
  577. package/dist/components/tickets/types.js +0 -3
  578. package/dist/components/toggle-group.d.ts +4 -2
  579. package/dist/components/toggle-group.d.ts.map +1 -1
  580. package/dist/components/toggle-group.js +3 -1
  581. package/dist/components/tool-icon.d.ts.map +1 -1
  582. package/dist/components/ui/analyzing-state.d.ts +3 -2
  583. package/dist/components/ui/analyzing-state.d.ts.map +1 -1
  584. package/dist/components/ui/analyzing-state.js +7 -4
  585. package/dist/components/ui/announcement-bar-view.d.ts +5 -0
  586. package/dist/components/ui/announcement-bar-view.d.ts.map +1 -1
  587. package/dist/components/ui/announcement-bar-view.js +3 -1
  588. package/dist/components/ui/autocomplete.d.ts +13 -0
  589. package/dist/components/ui/autocomplete.d.ts.map +1 -1
  590. package/dist/components/ui/autocomplete.js +30 -6
  591. package/dist/components/ui/avatar-stack.d.ts +7 -0
  592. package/dist/components/ui/avatar-stack.d.ts.map +1 -1
  593. package/dist/components/ui/avatar-stack.js +29 -4
  594. package/dist/components/ui/badge.d.ts +9 -1
  595. package/dist/components/ui/badge.d.ts.map +1 -1
  596. package/dist/components/ui/badge.js +11 -0
  597. package/dist/components/ui/benefit-list.d.ts +8 -0
  598. package/dist/components/ui/benefit-list.d.ts.map +1 -1
  599. package/dist/components/ui/benefit-list.js +20 -11
  600. package/dist/components/ui/button/button-styles.d.ts +16 -0
  601. package/dist/components/ui/button/button-styles.d.ts.map +1 -1
  602. package/dist/components/ui/button/button-styles.js +42 -0
  603. package/dist/components/ui/button/button.d.ts +3 -1
  604. package/dist/components/ui/button/button.d.ts.map +1 -1
  605. package/dist/components/ui/button/button.js +4 -40
  606. package/dist/components/ui/button/index.d.ts +1 -0
  607. package/dist/components/ui/button/index.d.ts.map +1 -1
  608. package/dist/components/ui/button/index.js +4 -0
  609. package/dist/components/ui/card.d.ts +13 -1
  610. package/dist/components/ui/card.d.ts.map +1 -1
  611. package/dist/components/ui/card.js +21 -14
  612. package/dist/components/ui/checkbox.d.ts +2 -0
  613. package/dist/components/ui/checkbox.d.ts.map +1 -1
  614. package/dist/components/ui/checkbox.js +5 -1
  615. package/dist/components/ui/compliance-badge.d.ts +2 -0
  616. package/dist/components/ui/compliance-badge.d.ts.map +1 -1
  617. package/dist/components/ui/compliance-badge.js +5 -2
  618. package/dist/components/ui/cursor-pagination.d.ts +8 -1
  619. package/dist/components/ui/cursor-pagination.d.ts.map +1 -1
  620. package/dist/components/ui/cursor-pagination.js +10 -4
  621. package/dist/components/ui/dashboard-info-card.d.ts +6 -1
  622. package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
  623. package/dist/components/ui/dashboard-info-card.js +19 -10
  624. package/dist/components/ui/data-attribution.d.ts +10 -5
  625. package/dist/components/ui/data-attribution.d.ts.map +1 -1
  626. package/dist/components/ui/data-attribution.js +27 -9
  627. package/dist/components/ui/data-table/data-table-body.d.ts +1 -1
  628. package/dist/components/ui/data-table/data-table-body.d.ts.map +1 -1
  629. package/dist/components/ui/data-table/data-table-body.js +18 -7
  630. package/dist/components/ui/data-table/data-table-row-count.d.ts +5 -0
  631. package/dist/components/ui/data-table/data-table-row-count.d.ts.map +1 -1
  632. package/dist/components/ui/data-table/data-table-row-count.js +18 -3
  633. package/dist/components/ui/data-table/data-table-row.d.ts.map +1 -1
  634. package/dist/components/ui/data-table/data-table-row.js +2 -6
  635. package/dist/components/ui/data-table/data-table-skeleton.js +5 -5
  636. package/dist/components/ui/data-table/index.d.ts +2 -2
  637. package/dist/components/ui/data-table/index.d.ts.map +1 -1
  638. package/dist/components/ui/data-table/index.js +2 -1
  639. package/dist/components/ui/date-picker.d.ts +0 -1
  640. package/dist/components/ui/date-picker.d.ts.map +1 -1
  641. package/dist/components/ui/entity-image.d.ts +4 -0
  642. package/dist/components/ui/entity-image.d.ts.map +1 -1
  643. package/dist/components/ui/entity-image.js +27 -5
  644. package/dist/components/ui/error-state.d.ts.map +1 -1
  645. package/dist/components/ui/error-state.js +4 -1
  646. package/dist/components/ui/feature-card.d.ts +31 -1
  647. package/dist/components/ui/feature-card.d.ts.map +1 -1
  648. package/dist/components/ui/feature-card.js +40 -11
  649. package/dist/components/ui/feature-list.d.ts +15 -1
  650. package/dist/components/ui/feature-list.d.ts.map +1 -1
  651. package/dist/components/ui/feature-list.js +43 -8
  652. package/dist/components/ui/field-wrapper.d.ts +6 -0
  653. package/dist/components/ui/field-wrapper.d.ts.map +1 -1
  654. package/dist/components/ui/field-wrapper.js +16 -5
  655. package/dist/components/ui/file-manager/index.cjs +63 -64
  656. package/dist/components/ui/filter-checkbox-item.d.ts +9 -0
  657. package/dist/components/ui/filter-checkbox-item.d.ts.map +1 -1
  658. package/dist/components/ui/filter-checkbox-item.js +36 -6
  659. package/dist/components/ui/filter-modal.d.ts +2 -3
  660. package/dist/components/ui/filter-modal.d.ts.map +1 -1
  661. package/dist/components/ui/filter-pill-row.d.ts +10 -5
  662. package/dist/components/ui/filter-pill-row.d.ts.map +1 -1
  663. package/dist/components/ui/filter-pill-row.js +56 -19
  664. package/dist/components/ui/incident-feed.d.ts +1 -1
  665. package/dist/components/ui/incident-feed.d.ts.map +1 -1
  666. package/dist/components/ui/incident-feed.js +57 -56
  667. package/dist/components/ui/index.cjs +219 -39
  668. package/dist/components/ui/index.d.ts +10 -1
  669. package/dist/components/ui/index.d.ts.map +1 -1
  670. package/dist/components/ui/index.js +29 -1
  671. package/dist/components/ui/info-card-row.d.ts +12 -0
  672. package/dist/components/ui/info-card-row.d.ts.map +1 -1
  673. package/dist/components/ui/info-card-row.js +56 -30
  674. package/dist/components/ui/info-card.d.ts +24 -1
  675. package/dist/components/ui/info-card.d.ts.map +1 -1
  676. package/dist/components/ui/info-card.js +87 -52
  677. package/dist/components/ui/input-styles.d.ts +7 -0
  678. package/dist/components/ui/input-styles.d.ts.map +1 -0
  679. package/dist/components/ui/input-styles.js +7 -0
  680. package/dist/components/ui/input.d.ts.map +1 -1
  681. package/dist/components/ui/input.js +4 -1
  682. package/dist/components/ui/layout-hold.d.ts +9 -7
  683. package/dist/components/ui/layout-hold.d.ts.map +1 -1
  684. package/dist/components/ui/leader-row.d.ts +11 -4
  685. package/dist/components/ui/leader-row.d.ts.map +1 -1
  686. package/dist/components/ui/leader-row.js +29 -5
  687. package/dist/components/ui/loading-scope.d.ts +26 -0
  688. package/dist/components/ui/loading-scope.d.ts.map +1 -0
  689. package/dist/components/ui/loading-scope.js +31 -0
  690. package/dist/components/ui/markdown/base-components.d.ts +25 -0
  691. package/dist/components/ui/markdown/base-components.d.ts.map +1 -1
  692. package/dist/components/ui/markdown/base-components.js +13 -7
  693. package/dist/components/ui/markdown/engine.d.ts +26 -1
  694. package/dist/components/ui/markdown/engine.d.ts.map +1 -1
  695. package/dist/components/ui/markdown/engine.js +63 -4
  696. package/dist/components/ui/markdown/index.d.ts +5 -3
  697. package/dist/components/ui/markdown/index.d.ts.map +1 -1
  698. package/dist/components/ui/markdown/index.js +12 -4
  699. package/dist/components/ui/markdown/mermaid-diagram.d.ts.map +1 -1
  700. package/dist/components/ui/markdown/mermaid-diagram.js +8 -2
  701. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts +10 -0
  702. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts.map +1 -1
  703. package/dist/components/ui/markdown/rich/rich-markdown-renderer.js +21 -5
  704. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts +0 -2
  705. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts.map +1 -1
  706. package/dist/components/ui/markdown-editor.d.ts +10 -0
  707. package/dist/components/ui/markdown-editor.d.ts.map +1 -1
  708. package/dist/components/ui/markdown-editor.js +23 -7
  709. package/dist/components/ui/numbered-step.d.ts +10 -0
  710. package/dist/components/ui/numbered-step.d.ts.map +1 -1
  711. package/dist/components/ui/numbered-step.js +19 -2
  712. package/dist/components/ui/organization-card.d.ts.map +1 -1
  713. package/dist/components/ui/organization-card.js +30 -5
  714. package/dist/components/ui/page-actions.d.ts +2 -1
  715. package/dist/components/ui/page-actions.d.ts.map +1 -1
  716. package/dist/components/ui/page-actions.js +26 -21
  717. package/dist/components/ui/page-loader.d.ts.map +1 -1
  718. package/dist/components/ui/page-loader.js +2 -1
  719. package/dist/components/ui/people-cell.d.ts +4 -0
  720. package/dist/components/ui/people-cell.d.ts.map +1 -1
  721. package/dist/components/ui/people-cell.js +19 -3
  722. package/dist/components/ui/photo-wall.d.ts +1 -1
  723. package/dist/components/ui/photo-wall.d.ts.map +1 -1
  724. package/dist/components/ui/photo-wall.js +13 -3
  725. package/dist/components/ui/product-screen-frame.d.ts.map +1 -1
  726. package/dist/components/ui/product-screen-frame.js +3 -2
  727. package/dist/components/ui/progress-bar.d.ts +9 -0
  728. package/dist/components/ui/progress-bar.d.ts.map +1 -1
  729. package/dist/components/ui/progress-bar.js +34 -14
  730. package/dist/components/ui/progress.d.ts +15 -0
  731. package/dist/components/ui/progress.d.ts.map +1 -1
  732. package/dist/components/ui/progress.js +8 -3
  733. package/dist/components/ui/release-changelog-section.d.ts +22 -1
  734. package/dist/components/ui/release-changelog-section.d.ts.map +1 -1
  735. package/dist/components/ui/release-changelog-section.js +96 -28
  736. package/dist/components/ui/search-input.d.ts.map +1 -1
  737. package/dist/components/ui/search-input.js +11 -3
  738. package/dist/components/ui/searchable-select.d.ts.map +1 -1
  739. package/dist/components/ui/searchable-select.js +17 -4
  740. package/dist/components/ui/skeleton-surface.d.ts +12 -4
  741. package/dist/components/ui/skeleton-surface.d.ts.map +1 -1
  742. package/dist/components/ui/skeleton-surface.js +6 -2
  743. package/dist/components/ui/slack-channel-chip.d.ts +5 -1
  744. package/dist/components/ui/slack-channel-chip.d.ts.map +1 -1
  745. package/dist/components/ui/slack-channel-chip.js +16 -3
  746. package/dist/components/ui/snap-carousel.d.ts +4 -1
  747. package/dist/components/ui/snap-carousel.d.ts.map +1 -1
  748. package/dist/components/ui/snap-carousel.js +2 -0
  749. package/dist/components/ui/square-avatar.d.ts +3 -0
  750. package/dist/components/ui/square-avatar.d.ts.map +1 -1
  751. package/dist/components/ui/square-avatar.js +38 -23
  752. package/dist/components/ui/stacked-rows-panel.d.ts +24 -1
  753. package/dist/components/ui/stacked-rows-panel.d.ts.map +1 -1
  754. package/dist/components/ui/stacked-rows-panel.js +50 -13
  755. package/dist/components/ui/status-badge.d.ts +10 -2
  756. package/dist/components/ui/status-badge.d.ts.map +1 -1
  757. package/dist/components/ui/status-badge.js +14 -0
  758. package/dist/components/ui/status-indicator.d.ts +4 -0
  759. package/dist/components/ui/status-indicator.d.ts.map +1 -1
  760. package/dist/components/ui/status-indicator.js +16 -3
  761. package/dist/components/ui/status-line.d.ts.map +1 -1
  762. package/dist/components/ui/status-line.js +2 -1
  763. package/dist/components/ui/strip-card.d.ts +9 -0
  764. package/dist/components/ui/strip-card.d.ts.map +1 -1
  765. package/dist/components/ui/strip-card.js +57 -39
  766. package/dist/components/ui/tab-navigation.d.ts +26 -2
  767. package/dist/components/ui/tab-navigation.d.ts.map +1 -1
  768. package/dist/components/ui/tab-navigation.js +182 -115
  769. package/dist/components/ui/table/table-header.js +2 -2
  770. package/dist/components/ui/table/table-row.d.ts.map +1 -1
  771. package/dist/components/ui/table/table-row.js +2 -4
  772. package/dist/components/ui/table/table-skeleton.d.ts +6 -1
  773. package/dist/components/ui/table/table-skeleton.d.ts.map +1 -1
  774. package/dist/components/ui/table/table-skeleton.js +38 -50
  775. package/dist/components/ui/table/table.d.ts +1 -1
  776. package/dist/components/ui/table/table.d.ts.map +1 -1
  777. package/dist/components/ui/table/table.js +30 -25
  778. package/dist/components/ui/table/types.d.ts +14 -4
  779. package/dist/components/ui/table/types.d.ts.map +1 -1
  780. package/dist/components/ui/table/utils.d.ts +4 -0
  781. package/dist/components/ui/table/utils.d.ts.map +1 -1
  782. package/dist/components/ui/table/utils.js +4 -0
  783. package/dist/components/ui/tabs.d.ts +22 -1
  784. package/dist/components/ui/tabs.d.ts.map +1 -1
  785. package/dist/components/ui/tabs.js +33 -2
  786. package/dist/components/ui/tag.d.ts +21 -1
  787. package/dist/components/ui/tag.d.ts.map +1 -1
  788. package/dist/components/ui/tag.js +17 -12
  789. package/dist/components/ui/tags-input.d.ts +9 -0
  790. package/dist/components/ui/tags-input.d.ts.map +1 -1
  791. package/dist/components/ui/tags-input.js +41 -10
  792. package/dist/components/ui/textarea.d.ts +17 -1
  793. package/dist/components/ui/textarea.d.ts.map +1 -1
  794. package/dist/components/ui/textarea.js +22 -3
  795. package/dist/components/ui/ticket-info-section.d.ts +0 -1
  796. package/dist/components/ui/ticket-info-section.d.ts.map +1 -1
  797. package/dist/components/ui/timezone-select.d.ts +3 -1
  798. package/dist/components/ui/timezone-select.d.ts.map +1 -1
  799. package/dist/components/ui/timezone-select.js +3 -1
  800. package/dist/components/ui/toggle.d.ts +8 -2
  801. package/dist/components/ui/toggle.d.ts.map +1 -1
  802. package/dist/components/ui/toggle.js +10 -6
  803. package/dist/components/unified-pagination.d.ts +3 -1
  804. package/dist/components/unified-pagination.d.ts.map +1 -1
  805. package/dist/components/unified-pagination.js +7 -1
  806. package/dist/components/user-display.d.ts +11 -0
  807. package/dist/components/user-display.d.ts.map +1 -1
  808. package/dist/components/user-display.js +38 -14
  809. package/dist/components/user-summary-stub.d.ts.map +1 -1
  810. package/dist/components/user-summary-stub.js +7 -14
  811. package/dist/components/vendor-display-button.d.ts +4 -0
  812. package/dist/components/vendor-display-button.d.ts.map +1 -1
  813. package/dist/components/vendor-display-button.js +11 -13
  814. package/dist/components/vendor-icon.d.ts +5 -0
  815. package/dist/components/vendor-icon.d.ts.map +1 -1
  816. package/dist/components/vendor-icon.js +12 -3
  817. package/dist/components/vendor-tag.d.ts +5 -0
  818. package/dist/components/vendor-tag.d.ts.map +1 -1
  819. package/dist/components/vendor-tag.js +13 -5
  820. package/dist/{devices-557PMFDC.cjs → devices-2D3XSIIE.cjs} +43 -55
  821. package/dist/embed-shims/index.cjs +4 -2
  822. package/dist/embed-shims/next-image.cjs +4 -2
  823. package/dist/embed-shims/next-image.d.ts.map +1 -1
  824. package/dist/embed-shims/next-image.js +24 -0
  825. package/dist/{embeddable-chat-YFUCVDMV.cjs → embeddable-chat-YL6ZSTDJ.cjs} +117 -119
  826. package/dist/hooks/index.cjs +12 -12
  827. package/dist/hooks/state/flatten-schema.d.ts +0 -1
  828. package/dist/hooks/state/flatten-schema.d.ts.map +1 -1
  829. package/dist/hooks/state/flatten-schema.js +0 -2
  830. package/dist/hooks/state/index.d.ts +6 -3
  831. package/dist/hooks/state/index.d.ts.map +1 -1
  832. package/dist/hooks/state/index.js +4 -3
  833. package/dist/hooks/state/url-converter.d.ts +1 -1
  834. package/dist/hooks/state/url-converter.d.ts.map +1 -1
  835. package/dist/hooks/state/url-converter.js +1 -2
  836. package/dist/hooks/state/use-api-params.d.ts +1 -3
  837. package/dist/hooks/state/use-api-params.d.ts.map +1 -1
  838. package/dist/hooks/state/use-api-params.js +1 -5
  839. package/dist/hooks/ui/index.d.ts +1 -0
  840. package/dist/hooks/ui/index.d.ts.map +1 -1
  841. package/dist/hooks/ui/use-image-edge-color.d.ts +1 -1
  842. package/dist/hooks/ui/use-image-edge-color.d.ts.map +1 -1
  843. package/dist/hooks/ui/use-image-edge-color.js +3 -1
  844. package/dist/hooks/ui/use-onboarding-state.d.ts +0 -1
  845. package/dist/hooks/ui/use-onboarding-state.d.ts.map +1 -1
  846. package/dist/hooks/use-downloads.d.ts +1 -1
  847. package/dist/hooks/use-downloads.d.ts.map +1 -1
  848. package/dist/hooks/use-downloads.js +8 -1
  849. package/dist/hooks/use-meeting-booking.d.ts.map +1 -1
  850. package/dist/hooks/use-meeting-booking.js +3 -0
  851. package/dist/hooks/use-self-fetch.d.ts +1 -1
  852. package/dist/hooks/use-self-fetch.d.ts.map +1 -1
  853. package/dist/hooks/use-self-fetch.js +7 -4
  854. package/dist/hooks/use-toast.d.ts +1 -1
  855. package/dist/index.cjs +329 -103
  856. package/dist/{knowledge-4JTOUDAR.cjs → knowledge-AJ36PMK2.cjs} +36 -40
  857. package/dist/{logs-7YWAOPZ2.cjs → logs-DNE44ACE.cjs} +44 -48
  858. package/dist/nats/index.d.ts +1 -0
  859. package/dist/nats/index.d.ts.map +1 -1
  860. package/dist/nats/nats-provider.d.ts +0 -1
  861. package/dist/nats/nats-provider.d.ts.map +1 -1
  862. package/dist/nats/nats.d.ts +0 -1
  863. package/dist/nats/nats.d.ts.map +1 -1
  864. package/dist/nats/use-nats-subscription.d.ts +2 -1
  865. package/dist/nats/use-nats-subscription.d.ts.map +1 -1
  866. package/dist/{policies-W5JEPQTA.cjs → policies-AJHSP6ZY.cjs} +39 -43
  867. package/dist/{remote-session-F72S6I7J.cjs → remote-session-PPA5SXX7.cjs} +18 -21
  868. package/dist/schemas/meeting-booking-schema.cjs +4 -0
  869. package/dist/schemas/meeting-booking-schema.d.ts +8 -0
  870. package/dist/schemas/meeting-booking-schema.d.ts.map +1 -1
  871. package/dist/schemas/meeting-booking-schema.js +4 -0
  872. package/dist/{scripts-FY5IPOIM.cjs → scripts-4YO2QL36.cjs} +42 -46
  873. package/dist/{software-update-5BOGZOHG.cjs → software-update-KMI2EOO3.cjs} +41 -45
  874. package/dist/styles/component-sizes.d.ts +96 -0
  875. package/dist/styles/component-sizes.d.ts.map +1 -0
  876. package/dist/styles/component-sizes.js +77 -0
  877. package/dist/{tickets-board-DXMF7IKL.cjs → tickets-board-G3WBH4SV.cjs} +18 -20
  878. package/dist/types/announcement.d.ts +0 -1
  879. package/dist/types/announcement.d.ts.map +1 -1
  880. package/dist/types/blog.d.ts +0 -1
  881. package/dist/types/blog.d.ts.map +1 -1
  882. package/dist/types/case-study.d.ts +2 -2
  883. package/dist/types/case-study.d.ts.map +1 -1
  884. package/dist/types/customer-interview-ai.types.d.ts +1 -2
  885. package/dist/types/customer-interview-ai.types.d.ts.map +1 -1
  886. package/dist/types/customer-interview.d.ts +0 -1
  887. package/dist/types/customer-interview.d.ts.map +1 -1
  888. package/dist/types/index.d.ts +2 -0
  889. package/dist/types/index.d.ts.map +1 -1
  890. package/dist/types/product-release.d.ts +3 -0
  891. package/dist/types/product-release.d.ts.map +1 -1
  892. package/dist/types/stack.d.ts +0 -2
  893. package/dist/types/stack.d.ts.map +1 -1
  894. package/dist/utils/announcement-storage.d.ts +0 -3
  895. package/dist/utils/announcement-storage.d.ts.map +1 -1
  896. package/dist/utils/announcement-storage.js +1 -3
  897. package/dist/utils/dev-sections/openframe-dev-sections.d.ts +11 -0
  898. package/dist/utils/dev-sections/openframe-dev-sections.d.ts.map +1 -1
  899. package/dist/utils/dev-sections/openframe-dev-sections.js +5 -0
  900. package/dist/utils/index.cjs +19 -0
  901. package/dist/utils/index.d.ts +7 -2
  902. package/dist/utils/index.d.ts.map +1 -1
  903. package/dist/utils/index.js +8 -6
  904. package/dist/utils/markdown-heading-id.d.ts +0 -19
  905. package/dist/utils/markdown-heading-id.d.ts.map +1 -1
  906. package/dist/utils/markdown-heading-id.js +2 -5
  907. package/dist/utils/ods-color-utils.d.ts +0 -1
  908. package/dist/utils/ods-color-utils.d.ts.map +1 -1
  909. package/dist/utils/ods-color-utils.js +0 -2
  910. package/dist/utils/own-click.d.ts +4 -0
  911. package/dist/utils/own-click.d.ts.map +1 -0
  912. package/dist/utils/own-click.js +14 -0
  913. package/dist/utils/platform-config.d.ts +0 -1
  914. package/dist/utils/platform-config.d.ts.map +1 -1
  915. package/dist/utils/platform-config.js +0 -26
  916. package/dist/utils/source-icons.d.ts +2 -2
  917. package/dist/{video-file-player-QZ3YOLHO.cjs → video-file-player-COXRF4M5.cjs} +13 -13
  918. package/eslint-config/base.js +2 -0
  919. package/eslint-config/re-exports.js +56 -0
  920. package/package.json +1 -1
  921. package/src/ODS_TOKEN_RULES.md +2 -2
  922. package/src/chat-protocol/decode.ts +0 -5
  923. package/src/chat-protocol/index.ts +1 -0
  924. package/src/components/agent-identity.tsx +0 -2
  925. package/src/components/agent-mark.tsx +13 -4
  926. package/src/components/authors/author-detail-view.tsx +90 -44
  927. package/src/components/case-studies/entity-quotes-panel.tsx +50 -3
  928. package/src/components/case-studies/index.ts +2 -2
  929. package/src/components/case-studies/quote-cards-strip.tsx +75 -10
  930. package/src/components/categories-cart.tsx +82 -38
  931. package/src/components/category-card.tsx +1 -1
  932. package/src/components/chat/chat-attachment-bar.tsx +1 -1
  933. package/src/components/chat/chat-container.tsx +2 -1
  934. package/src/components/chat/chat-ticket-list.tsx +0 -1
  935. package/src/components/chat/chat-turn.tsx +124 -18
  936. package/src/components/chat/embeddable-chat.tsx +5 -5
  937. package/src/components/chat/entity-cards/admin-content-card-grid.tsx +1 -51
  938. package/src/components/chat/entity-cards/admin-content-card.tsx +80 -15
  939. package/src/components/chat/entity-cards/blog-card.tsx +71 -41
  940. package/src/components/chat/entity-cards/campaign-card-admin.tsx +4 -17
  941. package/src/components/chat/entity-cards/case-study-card.tsx +129 -68
  942. package/src/components/chat/entity-cards/chat-ticket-item.tsx +34 -29
  943. package/src/components/chat/entity-cards/customer-interview-card.tsx +61 -45
  944. package/src/components/chat/entity-cards/data-room-doc-card.tsx +11 -18
  945. package/src/components/chat/entity-cards/design-doc-card.tsx +48 -34
  946. package/src/components/chat/entity-cards/dispatch.tsx +9 -13
  947. package/src/components/chat/entity-cards/employee-entry-card.tsx +5 -5
  948. package/src/components/chat/entity-cards/entity-author-card.tsx +138 -32
  949. package/src/components/chat/entity-cards/entity-portrait-card.tsx +61 -16
  950. package/src/components/chat/entity-cards/generic-entity-card.tsx +11 -19
  951. package/src/components/chat/entity-cards/github-activity-card.tsx +14 -30
  952. package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +11 -23
  953. package/src/components/chat/entity-cards/index.ts +20 -7
  954. package/src/components/chat/entity-cards/investor-update-card.tsx +42 -35
  955. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +78 -64
  956. package/src/components/chat/entity-cards/program-card.tsx +96 -66
  957. package/src/components/chat/entity-cards/roadmap-card.tsx +85 -65
  958. package/src/components/chat/entity-cards/roadmap-vote-button.tsx +12 -1
  959. package/src/components/chat/entity-cards/slack-message-card.tsx +19 -26
  960. package/src/components/chat/hooks/index.ts +12 -2
  961. package/src/components/chat/hooks/use-ask-prompts.ts +5 -1
  962. package/src/components/chat/hooks/use-chat-dialog-manager.ts +1 -1
  963. package/src/components/chat/hooks/use-chat-history-hydration.ts +1 -1
  964. package/src/components/chat/hooks/use-chat.ts +0 -3
  965. package/src/components/chat/hooks/use-nats-chat-adapter.ts +0 -20
  966. package/src/components/chat/hooks/use-proxied-image-url.ts +27 -20
  967. package/src/components/chat/hooks/use-slash-commands.ts +1 -7
  968. package/src/components/chat/hooks/use-sse-chat-adapter.ts +4 -18
  969. package/src/components/chat/stream/chat-stream-reducer.ts +3 -2
  970. package/src/components/chat/types/entities/index.ts +24 -4
  971. package/src/components/chat/types/entities/investor-update.ts +1 -1
  972. package/src/components/chat/types/entities/program-types.ts +2 -5
  973. package/src/components/chat/utils/compact-card-classes.ts +15 -2
  974. package/src/components/chat/utils/compact-card-skeleton.tsx +111 -0
  975. package/src/components/chat/utils/icon-library.tsx +0 -2
  976. package/src/components/chat/utils/index.ts +5 -3
  977. package/src/components/chat/utils/scroll-anchor.ts +0 -2
  978. package/src/components/chat/utils/source-row-cta.ts +1 -5
  979. package/src/components/comment-card.tsx +118 -19
  980. package/src/components/comment-thread.tsx +130 -17
  981. package/src/components/docs/doc-viewer.tsx +33 -31
  982. package/src/components/docs/skeletons.tsx +37 -49
  983. package/src/components/docs/use-document-tree.ts +11 -7
  984. package/src/components/embeds/embed-iframe.tsx +5 -0
  985. package/src/components/embeds/index.ts +1 -1
  986. package/src/components/embeds/markdown-image.tsx +6 -2
  987. package/src/components/embeds/og-link-preview.tsx +155 -81
  988. package/src/components/faq/faq-document-page.tsx +8 -0
  989. package/src/components/faq/faq-section.tsx +249 -70
  990. package/src/components/faq/index.ts +12 -1
  991. package/src/components/faq-accordion.tsx +67 -7
  992. package/src/components/features/ai-enrich/AIStatusIndicator.tsx +2 -1
  993. package/src/components/features/approval-level.tsx +71 -8
  994. package/src/components/features/capability-explorer.tsx +59 -61
  995. package/src/components/features/cards-strip.tsx +54 -12
  996. package/src/components/features/command-box.tsx +139 -10
  997. package/src/components/features/conversation-card.tsx +242 -16
  998. package/src/components/features/devices/device-selector/device-selector.tsx +1 -0
  999. package/src/components/features/devices/devices-panel-view.tsx +2 -2
  1000. package/src/components/features/entity-tag-badges.tsx +143 -10
  1001. package/src/components/features/entity-video-section.tsx +52 -14
  1002. package/src/components/features/figma-prototype-viewer.tsx +4 -8
  1003. package/src/components/features/index.ts +11 -0
  1004. package/src/components/features/knowledge-base/index.ts +2 -5
  1005. package/src/components/features/knowledge-base/knowledge-base-article-view.tsx +0 -2
  1006. package/src/components/features/model-token-rates.tsx +64 -84
  1007. package/src/components/features/notifications/approval-request-notification-tile.tsx +9 -11
  1008. package/src/components/features/notifications/notification-tile.tsx +58 -23
  1009. package/src/components/features/paths-display.tsx +73 -6
  1010. package/src/components/features/platform-badge.tsx +41 -1
  1011. package/src/components/features/push-button-selector.tsx +167 -64
  1012. package/src/components/features/remote-session/index.ts +2 -2
  1013. package/src/components/features/remote-session/remote-desktop-chat-message-row.tsx +24 -3
  1014. package/src/components/features/remote-session/remote-desktop-chat-panel.tsx +19 -5
  1015. package/src/components/features/remote-session/remote-desktop-view.tsx +47 -38
  1016. package/src/components/features/remote-session/remote-session-chat-panel.tsx +1 -1
  1017. package/src/components/features/status-filter-component.tsx +105 -11
  1018. package/src/components/features/use-video-warmup.ts +0 -7
  1019. package/src/components/features/use-walkthrough-video.ts +5 -1
  1020. package/src/components/features/video-bites-strip.tsx +137 -22
  1021. package/src/components/features/video-hover-preview.tsx +2 -1
  1022. package/src/components/features/video.tsx +16 -12
  1023. package/src/components/features/walkthrough-video.tsx +9 -2
  1024. package/src/components/help-center-pages/download-apps-page.tsx +86 -32
  1025. package/src/components/help-center-pages/trust-center-page.tsx +132 -66
  1026. package/src/components/help-center-pages/trust-center-sections.tsx +205 -148
  1027. package/src/components/icon-display.tsx +9 -0
  1028. package/src/components/index.ts +11 -2
  1029. package/src/components/interactive-wrapper.tsx +2 -1
  1030. package/src/components/layout/list-page-layout.tsx +4 -5
  1031. package/src/components/layout/page-container.tsx +59 -29
  1032. package/src/components/layout/page-data-sync.tsx +40 -5
  1033. package/src/components/layout/page-heading.tsx +84 -1
  1034. package/src/components/layout/page-layout.tsx +5 -5
  1035. package/src/components/layout/title-block.tsx +72 -17
  1036. package/src/components/loading/category-vendor-selector-skeleton.tsx +4 -0
  1037. package/src/components/loading/deprecated-layout-skeletons.tsx +133 -0
  1038. package/src/components/loading/device-card-skeleton.tsx +4 -4
  1039. package/src/components/loading/index.ts +11 -13
  1040. package/src/components/loading/loading-region.tsx +16 -9
  1041. package/src/components/loading/msp-profile-form-skeleton.tsx +3 -0
  1042. package/src/components/loading/organization-card-skeleton.tsx +45 -71
  1043. package/src/components/loading/page-layout-skeleton.tsx +1 -641
  1044. package/src/components/loading/settings-form-skeleton.tsx +3 -0
  1045. package/src/components/loading/unified-skeleton.tsx +101 -11
  1046. package/src/components/log-severity-dot.tsx +17 -14
  1047. package/src/components/logs-list.tsx +43 -29
  1048. package/src/components/media-carousel.tsx +0 -4
  1049. package/src/components/meeting-scheduler/booking-form.tsx +245 -35
  1050. package/src/components/meeting-scheduler/context-panel.tsx +96 -30
  1051. package/src/components/meeting-scheduler/directory.tsx +70 -37
  1052. package/src/components/meeting-scheduler/index.tsx +136 -132
  1053. package/src/components/meeting-scheduler/modal-header.tsx +45 -31
  1054. package/src/components/meeting-scheduler/slot-picker.tsx +20 -8
  1055. package/src/components/metric-value.tsx +19 -2
  1056. package/src/components/msp-display.tsx +25 -10
  1057. package/src/components/navigation/app-layout.tsx +0 -3
  1058. package/src/components/navigation/index.ts +15 -3
  1059. package/src/components/navigation/mingo-ai-button.tsx +3 -4
  1060. package/src/components/navigation/mobile-nav-sheet.tsx +0 -2
  1061. package/src/components/navigation/multi-level-navigation.tsx +152 -35
  1062. package/src/components/navigation/page-section-bar.tsx +132 -0
  1063. package/src/components/navigation/sticky-section-nav.tsx +109 -18
  1064. package/src/components/navigation/ticket-alerts-button.tsx +1 -1
  1065. package/src/components/onboarding-guides/hooks/use-onboarding-guides.ts +8 -1
  1066. package/src/components/onboarding-guides/index.ts +5 -2
  1067. package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +166 -67
  1068. package/src/components/onboarding-guides/onboarding-guides-catalog-skeleton.tsx +38 -51
  1069. package/src/components/onboarding-guides/onboarding-guides-catalog-view.tsx +91 -45
  1070. package/src/components/pagination.tsx +103 -48
  1071. package/src/components/persistent-filter-controls.tsx +0 -7
  1072. package/src/components/persistent-pagination.tsx +6 -1
  1073. package/src/components/platform/ToolBadge.tsx +57 -10
  1074. package/src/components/platform/index.ts +2 -2
  1075. package/src/components/platform/tool-badge-mark.ts +6 -0
  1076. package/src/components/product-demo/fixtures/devices.ts +0 -3
  1077. package/src/components/product-demo/product-screen.tsx +42 -23
  1078. package/src/components/product-demo/screen-loading.tsx +20 -0
  1079. package/src/components/product-demo/screens/devices-view.tsx +58 -0
  1080. package/src/components/product-demo/screens/devices.tsx +9 -29
  1081. package/src/components/related-content/card-registry.tsx +20 -6
  1082. package/src/components/related-content/index.ts +3 -1
  1083. package/src/components/related-content/related-content-section.tsx +222 -46
  1084. package/src/components/results-count.tsx +37 -6
  1085. package/src/components/shared/article-author-byline.tsx +65 -41
  1086. package/src/components/shared/delivery/delivery-lists.tsx +15 -2
  1087. package/src/components/shared/delivery/delivery-row.tsx +55 -9
  1088. package/src/components/shared/delivery/delivery-table.tsx +19 -46
  1089. package/src/components/shared/detail-page-skeleton.tsx +15 -1
  1090. package/src/components/shared/dev-section/dev-card-row.tsx +45 -28
  1091. package/src/components/shared/dev-section/dev-section-view.tsx +1 -1
  1092. package/src/components/shared/doc-search/use-doc-search.ts +1 -1
  1093. package/src/components/shared/legal-document/index.ts +2 -0
  1094. package/src/components/shared/legal-document/legal-document-page.tsx +41 -21
  1095. package/src/components/shared/legal-document/use-legal-docs.ts +5 -1
  1096. package/src/components/shared/legal-document/use-legal-documents.ts +4 -1
  1097. package/src/components/shared/media-gallery-strip.tsx +35 -3
  1098. package/src/components/shared/onboarding/index.ts +2 -5
  1099. package/src/components/shared/product-release/index.ts +1 -1
  1100. package/src/components/shared/product-release/product-release-card-classes.ts +28 -0
  1101. package/src/components/shared/product-release/product-release-card-skeleton.tsx +62 -56
  1102. package/src/components/shared/product-release/product-release-card.tsx +62 -44
  1103. package/src/components/shared/product-release/product-releases-view.tsx +32 -24
  1104. package/src/components/shared/product-release/release-detail-page.tsx +229 -134
  1105. package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +20 -6
  1106. package/src/components/shared/roadmap/roadmap-grid.tsx +59 -9
  1107. package/src/components/shared/roadmap/roadmap-view.tsx +3 -3
  1108. package/src/components/social-icon-row.tsx +14 -8
  1109. package/src/components/tickets/help-center-list.tsx +6 -2
  1110. package/src/components/tickets/hooks/use-ticket-actions.ts +0 -4
  1111. package/src/components/tickets/index.ts +1 -2
  1112. package/src/components/tickets/ticket-center.tsx +189 -75
  1113. package/src/components/tickets/types.ts +0 -9
  1114. package/src/components/toggle-group.tsx +4 -1
  1115. package/src/components/tool-icon.tsx +2 -1
  1116. package/src/components/ui/analyzing-state.tsx +11 -6
  1117. package/src/components/ui/announcement-bar-view.tsx +7 -1
  1118. package/src/components/ui/autocomplete.tsx +58 -6
  1119. package/src/components/ui/avatar-stack.tsx +42 -3
  1120. package/src/components/ui/badge.tsx +16 -1
  1121. package/src/components/ui/benefit-list.tsx +41 -6
  1122. package/src/components/ui/button/button-styles.ts +48 -0
  1123. package/src/components/ui/button/button.tsx +5 -39
  1124. package/src/components/ui/button/index.ts +1 -0
  1125. package/src/components/ui/card.tsx +28 -13
  1126. package/src/components/ui/checkbox.tsx +6 -1
  1127. package/src/components/ui/compliance-badge.tsx +6 -2
  1128. package/src/components/ui/cursor-pagination.tsx +28 -3
  1129. package/src/components/ui/dashboard-info-card.tsx +29 -11
  1130. package/src/components/ui/data-attribution.tsx +42 -12
  1131. package/src/components/ui/data-table/data-table-body.tsx +11 -2
  1132. package/src/components/ui/data-table/data-table-row-count.tsx +19 -1
  1133. package/src/components/ui/data-table/data-table-row.tsx +4 -9
  1134. package/src/components/ui/data-table/data-table-skeleton.tsx +7 -7
  1135. package/src/components/ui/data-table/index.ts +2 -1
  1136. package/src/components/ui/date-picker.tsx +0 -6
  1137. package/src/components/ui/entity-image.tsx +27 -4
  1138. package/src/components/ui/error-state.tsx +8 -1
  1139. package/src/components/ui/feature-card.tsx +77 -12
  1140. package/src/components/ui/feature-list.tsx +72 -8
  1141. package/src/components/ui/field-wrapper.tsx +13 -1
  1142. package/src/components/ui/filter-checkbox-item.tsx +57 -6
  1143. package/src/components/ui/filter-modal.tsx +2 -6
  1144. package/src/components/ui/filter-pill-row.tsx +81 -27
  1145. package/src/components/ui/incident-feed.tsx +20 -11
  1146. package/src/components/ui/index.ts +21 -1
  1147. package/src/components/ui/info-card-row.tsx +74 -19
  1148. package/src/components/ui/info-card.tsx +87 -13
  1149. package/src/components/ui/input-styles.ts +6 -0
  1150. package/src/components/ui/input.tsx +4 -1
  1151. package/src/components/ui/layout-hold.tsx +9 -7
  1152. package/src/components/ui/leader-row.tsx +58 -4
  1153. package/src/components/ui/loading-scope.tsx +54 -0
  1154. package/src/components/ui/markdown/base-components.tsx +18 -9
  1155. package/src/components/ui/markdown/engine.tsx +131 -7
  1156. package/src/components/ui/markdown/index.ts +8 -6
  1157. package/src/components/ui/markdown/mermaid-diagram.tsx +7 -4
  1158. package/src/components/ui/markdown/rich/rich-markdown-renderer.tsx +26 -1
  1159. package/src/components/ui/markdown/simple-markdown-renderer.tsx +0 -3
  1160. package/src/components/ui/markdown-editor.tsx +83 -50
  1161. package/src/components/ui/numbered-step.tsx +32 -2
  1162. package/src/components/ui/organization-card.tsx +32 -7
  1163. package/src/components/ui/page-actions.tsx +51 -31
  1164. package/src/components/ui/page-loader.tsx +2 -1
  1165. package/src/components/ui/people-cell.tsx +25 -2
  1166. package/src/components/ui/photo-wall.tsx +14 -3
  1167. package/src/components/ui/product-screen-frame.tsx +14 -3
  1168. package/src/components/ui/progress-bar.tsx +26 -3
  1169. package/src/components/ui/progress.tsx +14 -3
  1170. package/src/components/ui/release-changelog-section.tsx +153 -20
  1171. package/src/components/ui/search-input.tsx +23 -3
  1172. package/src/components/ui/searchable-select.tsx +26 -6
  1173. package/src/components/ui/skeleton-surface.ts +16 -4
  1174. package/src/components/ui/slack-channel-chip.tsx +23 -3
  1175. package/src/components/ui/snap-carousel.tsx +5 -0
  1176. package/src/components/ui/square-avatar.tsx +41 -23
  1177. package/src/components/ui/stacked-rows-panel.tsx +88 -15
  1178. package/src/components/ui/status-badge.tsx +18 -1
  1179. package/src/components/ui/status-indicator.tsx +21 -2
  1180. package/src/components/ui/status-line.tsx +2 -1
  1181. package/src/components/ui/strip-card.tsx +73 -23
  1182. package/src/components/ui/tab-navigation.tsx +141 -28
  1183. package/src/components/ui/table/table-header.tsx +2 -2
  1184. package/src/components/ui/table/table-row.tsx +2 -4
  1185. package/src/components/ui/table/table-skeleton.tsx +48 -54
  1186. package/src/components/ui/table/table.tsx +36 -19
  1187. package/src/components/ui/table/types.ts +12 -4
  1188. package/src/components/ui/table/utils.ts +5 -0
  1189. package/src/components/ui/tabs.tsx +64 -4
  1190. package/src/components/ui/tag.tsx +33 -13
  1191. package/src/components/ui/tags-input.tsx +48 -10
  1192. package/src/components/ui/textarea.tsx +33 -3
  1193. package/src/components/ui/ticket-info-section.tsx +0 -2
  1194. package/src/components/ui/timezone-select.tsx +4 -0
  1195. package/src/components/ui/toggle.tsx +11 -5
  1196. package/src/components/unified-pagination.tsx +15 -0
  1197. package/src/components/user-display.tsx +53 -12
  1198. package/src/components/user-summary-stub.tsx +7 -11
  1199. package/src/components/vendor-display-button.tsx +15 -12
  1200. package/src/components/vendor-icon.tsx +13 -2
  1201. package/src/components/vendor-tag.tsx +18 -4
  1202. package/src/embed-shims/next-image.tsx +36 -1
  1203. package/src/hooks/state/flatten-schema.ts +0 -4
  1204. package/src/hooks/state/index.ts +5 -3
  1205. package/src/hooks/state/url-converter.ts +2 -2
  1206. package/src/hooks/state/use-api-params.ts +2 -10
  1207. package/src/hooks/ui/index.ts +1 -0
  1208. package/src/hooks/ui/use-image-edge-color.ts +4 -1
  1209. package/src/hooks/ui/use-onboarding-state.ts +0 -2
  1210. package/src/hooks/use-downloads.ts +9 -1
  1211. package/src/hooks/use-meeting-booking.ts +4 -0
  1212. package/src/hooks/use-self-fetch.ts +12 -4
  1213. package/src/nats/index.ts +1 -0
  1214. package/src/nats/nats-provider.tsx +0 -2
  1215. package/src/nats/nats.ts +0 -2
  1216. package/src/nats/use-nats-subscription.ts +2 -1
  1217. package/src/schemas/meeting-booking-schema.ts +11 -0
  1218. package/src/styles/component-sizes.ts +105 -0
  1219. package/src/types/announcement.ts +0 -3
  1220. package/src/types/blog.ts +0 -4
  1221. package/src/types/case-study.ts +2 -2
  1222. package/src/types/customer-interview-ai.types.ts +1 -4
  1223. package/src/types/customer-interview.ts +0 -11
  1224. package/src/types/index.ts +2 -0
  1225. package/src/types/product-release.ts +4 -2
  1226. package/src/types/stack.ts +0 -4
  1227. package/src/utils/announcement-storage.ts +0 -7
  1228. package/src/utils/dev-sections/openframe-dev-sections.ts +11 -0
  1229. package/src/utils/index.ts +6 -9
  1230. package/src/utils/markdown-heading-id.ts +0 -28
  1231. package/src/utils/ods-color-utils.ts +0 -4
  1232. package/src/utils/own-click.ts +25 -0
  1233. package/src/utils/platform-config.tsx +0 -17
  1234. package/src/utils/source-icons.ts +2 -2
  1235. package/dist/chunk-3ATAYP36.cjs +0 -19
  1236. package/dist/chunk-3LU4UFPS.cjs +0 -14
  1237. package/dist/chunk-FQWBIKF4.cjs +0 -404
  1238. package/dist/chunk-H3RYUTND.cjs +0 -142
  1239. package/dist/chunk-L4UI63K6.cjs +0 -103
  1240. package/dist/chunk-NS64LMVE.cjs +0 -470
  1241. package/dist/chunk-OF336YWG.cjs +0 -20
  1242. package/dist/chunk-RB6BSE3O.cjs +0 -21
  1243. package/dist/chunk-RM6AHNM4.cjs +0 -163
  1244. package/dist/components/chat/entity-cards/product-release-card.d.ts +0 -12
  1245. package/dist/components/chat/entity-cards/product-release-card.d.ts.map +0 -1
  1246. package/dist/components/chat/entity-cards/product-release-card.js +0 -8
  1247. package/dist/components/chat/hooks/use-embedded-chat.d.ts +0 -15
  1248. package/dist/components/chat/hooks/use-embedded-chat.d.ts.map +0 -1
  1249. package/dist/components/chat/hooks/use-embedded-chat.js +0 -6
  1250. package/dist/components/chat/types/entities/blog.d.ts +0 -14
  1251. package/dist/components/chat/types/entities/blog.d.ts.map +0 -1
  1252. package/dist/components/chat/types/entities/blog.js +0 -1
  1253. package/dist/components/chat/types/entities/case-study.d.ts +0 -10
  1254. package/dist/components/chat/types/entities/case-study.d.ts.map +0 -1
  1255. package/dist/components/chat/types/entities/case-study.js +0 -1
  1256. package/dist/components/chat/types/entities/content-ref.d.ts +0 -8
  1257. package/dist/components/chat/types/entities/content-ref.d.ts.map +0 -1
  1258. package/dist/components/chat/types/entities/content-ref.js +0 -1
  1259. package/dist/components/chat/types/entities/customer-interview.d.ts +0 -10
  1260. package/dist/components/chat/types/entities/customer-interview.d.ts.map +0 -1
  1261. package/dist/components/chat/types/entities/customer-interview.js +0 -1
  1262. package/dist/components/chat/utils/source-icons.d.ts +0 -8
  1263. package/dist/components/chat/utils/source-icons.d.ts.map +0 -1
  1264. package/dist/components/chat/utils/source-icons.js +0 -16
  1265. package/dist/utils/image-proxy-stub.d.ts +0 -14
  1266. package/dist/utils/image-proxy-stub.d.ts.map +0 -1
  1267. package/dist/utils/image-proxy-stub.js +0 -22
  1268. package/src/components/chat/entity-cards/product-release-card.tsx +0 -19
  1269. package/src/components/chat/hooks/use-embedded-chat.ts +0 -25
  1270. package/src/components/chat/types/entities/blog.ts +0 -27
  1271. package/src/components/chat/types/entities/case-study.ts +0 -10
  1272. package/src/components/chat/types/entities/content-ref.ts +0 -7
  1273. package/src/components/chat/types/entities/customer-interview.ts +0 -15
  1274. package/src/components/chat/utils/source-icons.ts +0 -14
  1275. package/src/utils/image-proxy-stub.ts +0 -40
@@ -60,7 +60,6 @@ import type { ChatCardDispatchExtras } from '../chat/entity-cards/dispatch';
60
60
  import { HowIWorkCard, HowIWorkCardSkeleton, type HowIWorkCardData } from '../chat/entity-cards/how-i-work-card';
61
61
  import { InvestorUpdateCard, InvestorUpdateCardSkeleton } from '../chat/entity-cards/investor-update-card';
62
62
  import { OnboardingGuideCard, OnboardingGuideCardSkeleton } from '../chat/entity-cards/onboarding-guide-card';
63
- import { ProductReleaseCard, ProductReleaseCardSkeleton } from '../chat/entity-cards/product-release-card';
64
63
  import { buildProductReleaseCardProps } from '../chat/entity-cards/product-release-card-defaults';
65
64
  import { ProgramCard, ProgramCardSkeleton } from '../chat/entity-cards/program-card';
66
65
  import { RoadmapCard, RoadmapCardSkeleton } from '../chat/entity-cards/roadmap-card';
@@ -73,6 +72,8 @@ import type { InvestorUpdate } from '../chat/types/entities/investor-update';
73
72
  import type { OnboardingGuide } from '../chat/types/entities/onboarding-guide';
74
73
  import type { BaseProgramItem, ProgramHost, ProgramMedia } from '../chat/types/entities/program-types';
75
74
  import type { RoadmapItem } from '../chat/types/entities/roadmap-item';
75
+ import { ProductReleaseCard } from '../shared/product-release/product-release-card';
76
+ import { ProductReleaseCardSkeleton } from '../shared/product-release/product-release-card-skeleton';
76
77
 
77
78
  export type CardSize = 'lg' | 'default' | 'sm';
78
79
 
@@ -585,8 +586,9 @@ export interface RelatedCardContext {
585
586
  /** One registered content type. `Row` is erased here — `cardEntry` below is
586
587
  * what keeps each branch's row type concrete. */
587
588
  export interface RelatedCardRegistryEntry {
588
- /** Sized to match the resolved card exactly (zero layout shift). */
589
- skeleton: (size: CardSize) => React.ReactNode;
589
+ /** Sized to match the resolved card exactly (zero layout shift). `extras` are the host's (a program's config says
590
+ * whether its cards show hosts). */
591
+ skeleton: (size: CardSize, extras?: ChatCardDispatchExtras) => React.ReactNode;
590
592
  render: (row: unknown, ctx: RelatedCardContext) => React.ReactNode;
591
593
  }
592
594
 
@@ -600,7 +602,7 @@ export interface RelatedCardRegistryEntry {
600
602
  * used to do, minus the promise it could not keep.
601
603
  */
602
604
  function cardEntry<Row>(definition: {
603
- skeleton: (size: CardSize) => React.ReactNode;
605
+ skeleton: (size: CardSize, extras?: ChatCardDispatchExtras) => React.ReactNode;
604
606
  decode: (row: unknown) => Row;
605
607
  render: (row: Row, ctx: RelatedCardContext) => React.ReactNode;
606
608
  }): RelatedCardRegistryEntry {
@@ -614,9 +616,21 @@ function cardEntry<Row>(definition: {
614
616
  * which host-supplied `ProgramConfig` they render with. A group whose config
615
617
  * the host didn't supply renders nothing (the skeleton still reserves its
616
618
  * height, so a rail that never resolves collapses instead of flickering). */
619
+ /** Gallery thumbnails an event card's skeleton draws: the gallery row's first fold (the row scrolls past it). */
620
+ const EVENT_CARD_SKELETON_MEDIA = 4;
621
+
617
622
  function programEntry(configKey: 'podcast' | 'webinar' | 'event'): RelatedCardRegistryEntry {
618
623
  return cardEntry({
619
- skeleton: size => <ProgramCardSkeleton size={size === 'sm' ? 'sm' : 'default'} />,
624
+ // An event's list API serves its gallery (the loaded card draws its photo row), the other programs' none.
625
+ // Hosts are drawn only for a type whose cards show them (its config's `cardShowsHosts`): elsewhere a record may
626
+ // have none.
627
+ skeleton: (size, extras) => (
628
+ <ProgramCardSkeleton
629
+ size={size === 'sm' ? 'sm' : 'default'}
630
+ media={configKey === 'event' ? EVENT_CARD_SKELETON_MEDIA : 0}
631
+ hosts={extras?.programConfigs?.[configKey]?.cardShowsHosts ? 1 : 0}
632
+ />
633
+ ),
620
634
  decode: decodeProgramRow,
621
635
  render: (item, ctx) => {
622
636
  const config = ctx.extras?.programConfigs?.[configKey];
@@ -761,7 +775,7 @@ export const RELATED_CARD_REGISTRY: Record<string, RelatedCardRegistryEntry> = {
761
775
  * step-numbered 'default' variant is for the guide detail page's "More in
762
776
  * section" rail, not this full-width row. */
763
777
  onboarding_guide: cardEntry({
764
- skeleton: size => <OnboardingGuideCardSkeleton size={size === 'sm' ? 'sm' : 'catalog'} />,
778
+ skeleton: size => <OnboardingGuideCardSkeleton size={size === 'sm' ? 'sm' : 'catalog'} published={false} />,
765
779
  decode: decodeOnboardingGuideRow,
766
780
  render: (guide, ctx) => (
767
781
  <OnboardingGuideCard
@@ -1,10 +1,12 @@
1
1
  // CLIENT subpath barrel — `@flamingo-stack/openframe-frontend-core/components/related-content`
2
2
  export {
3
3
  RelatedContentSection,
4
+ RelatedContentSectionSkeleton,
5
+ type RelatedContentSectionSkeletonProps,
4
6
  GROUP_PAGE_SIZE,
5
7
  type RelatedContentSectionProps,
6
8
  type CardLinkProvider,
7
9
  type CardLinkProviderProps,
8
- type CardLinkAnchorProps,
9
10
  type AdminCampaignCardSlot,
10
11
  } from './related-content-section';
12
+ export { type CardLinkAnchorProps } from './card-registry';
@@ -49,7 +49,7 @@
49
49
  */
50
50
 
51
51
  import type React from 'react';
52
- import { useMemo, useState } from 'react';
52
+ import { useCallback, useEffect, useMemo, useState } from 'react';
53
53
  import { useSelfFetch } from '../../hooks/use-self-fetch';
54
54
  import type { ContentRef, ContentRefWithReason } from '../../types/content-ref';
55
55
  import {
@@ -67,7 +67,9 @@ import type { ChatCardDispatchExtras } from '../chat/entity-cards/dispatch';
67
67
  import { decideNewTab } from '../chat/utils/decide-new-tab';
68
68
  import { accentSentenceMarks } from '../layout/page-heading';
69
69
  import { LoadingRegion } from '../loading/loading-region';
70
+ import { TextLineSkeleton } from '../loading/unified-skeleton';
70
71
  import { Pagination } from '../pagination';
72
+ import { useLoadingScope } from '../ui/loading-scope';
71
73
  // The per-type card dispatch — one registry entry per content type, each
72
74
  // carrying its OWN row type — plus the DEEP card imports that keep this
73
75
  // chunk's source graph free of @tanstack/react-query (the `../chat` barrel
@@ -82,8 +84,6 @@ import {
82
84
  type RelatedCardRegistryEntry,
83
85
  } from './card-registry';
84
86
 
85
- export type { CardLinkAnchorProps };
86
-
87
87
  /** Render-prop component injection for the navigation decision — keeps hook
88
88
  * calls legal (hooks live INSIDE the injected component; `CardForType`
89
89
  * itself calls zero hooks). The hub injects a `useNavLink`-backed provider;
@@ -157,18 +157,22 @@ export interface AdminCampaignCardSlot {
157
157
  *
158
158
  * `marketing_campaign` is the one type with no registry entry: BOTH its card
159
159
  * and its skeleton are host-injected (`AdminCampaignCardSlot`), so there is no
160
- * lib component to register.
160
+ * lib component to register. A type with no skeleton of its own (unregistered,
161
+ * or the campaign slot not injected) draws the generic card's skeleton: a group
162
+ * is never an empty grid while it loads.
161
163
  */
162
164
  function renderSkeletonForType(
163
165
  type: string,
164
166
  size: CardSize,
165
167
  adminCampaignCard?: AdminCampaignCardSlot,
168
+ extras?: ChatCardDispatchExtras,
166
169
  ): React.ReactNode {
170
+ // A type with no card (no host slot, no registry entry) draws nothing loaded (`CardForType`), so nothing loading.
167
171
  if (type === 'marketing_campaign') {
168
172
  return adminCampaignCard ? <adminCampaignCard.Skeleton size={size === 'sm' ? 'sm' : 'default'} /> : null;
169
173
  }
170
174
  const entry: RelatedCardRegistryEntry | undefined = RELATED_CARD_REGISTRY[type];
171
- return entry ? entry.skeleton(size) : null;
175
+ return entry ? entry.skeleton(size, extras) : null;
172
176
  }
173
177
 
174
178
  /**
@@ -308,6 +312,61 @@ function resolveGroupConfig(type: string): ContentRefGroupConfig {
308
312
  * assertion of that relation (entity-suggestion-sections.tsx). */
309
313
  export const GROUP_PAGE_SIZE = 12;
310
314
 
315
+ /** A group's layout, read by the group and by the rail's skeleton, so the skeleton is the rail's size. */
316
+ const GROUP_CLASS = 'space-y-4';
317
+ const GROUP_LIST_CLASS = 'space-y-4';
318
+ const GROUP_HEADING_CLASS = 'font-semibold text-ods-text-secondary text-h5';
319
+ // A column with a gap, not space-y: the region's screen-reader status (absolutely positioned) must not take a margin.
320
+ // The rail is a page section (a `<section>`, loaded and loading). Its groups and each group's cards are read lists
321
+ // (`data-loading-item`): how many there are is the data's, and the skeleton draws one fold of each group.
322
+ const RAIL_CLASS = 'flex flex-col gap-8';
323
+ /** Cards per group a skeleton draws when the host states no count. */
324
+ const RAIL_SKELETON_CARDS = 3;
325
+ /**
326
+ * One screen of a group, the most its skeleton draws (the host's count is the upper bound): list groups stack
327
+ * full-width cards, two of which fill a screen; grid groups show two rows at their widest column count, and the
328
+ * cards past two rows at a narrower step are hidden by the same breakpoints the grid uses (`gridClassFor`).
329
+ */
330
+ const RAIL_LIST_FOLD = 2;
331
+ const RAIL_GRID_FOLD_ROWS = 2;
332
+ /**
333
+ * The card an unknown-type group draws while its type is read: the rail's grid content card (a cover over a title
334
+ * and an excerpt), the shape the read types' grid cards share, so the group holds a grid card's height.
335
+ */
336
+ const UNKNOWN_TYPE_CARD = 'blog_post_existing';
337
+ /** The grid's column count per step, as `gridClassFor` sets it: [phone, sm, lg]. */
338
+ const GRID_COLUMNS_BY_STEP: Record<2 | 3, readonly [number, number, number]> = { 2: [1, 2, 2], 3: [1, 2, 3] };
339
+
340
+ /** A grid skeleton card's visibility: shown only at the steps where it is within the fold's rows. */
341
+ function gridFoldClass(index: number, columns: 2 | 3): string | undefined {
342
+ const [phone, sm, lg] = GRID_COLUMNS_BY_STEP[columns].map(c => c * RAIL_GRID_FOLD_ROWS);
343
+ if (index < phone) return undefined;
344
+ if (index < sm) return 'hidden sm:block';
345
+ if (index < lg) return 'hidden lg:block';
346
+ return 'hidden';
347
+ }
348
+
349
+ /** A group's heading: the type's label (static copy), loaded and loading. */
350
+ function GroupHeading({ type }: { type: string }) {
351
+ return <h3 className={GROUP_HEADING_CLASS}>{getContentRefLabelOrTitleCase(type)}</h3>;
352
+ }
353
+
354
+ /**
355
+ * The rail's group order, for the loaded rail and its skeleton alike: registered types in CONTENT_REF_GROUPS order,
356
+ * unregistered ones after, and the host's own type hoisted first (compared through the alias canonicalizer).
357
+ */
358
+ function orderRailTypes(types: Iterable<string>, entityType?: string): string[] {
359
+ let ordered = orderContentRefTypes(types);
360
+ if (entityType) {
361
+ const canonicalEntityType = canonicalContentRefType(entityType);
362
+ const sameType = ordered.filter(t => canonicalContentRefType(t) === canonicalEntityType);
363
+ if (sameType.length > 0) {
364
+ ordered = [...sameType, ...ordered.filter(t => canonicalContentRefType(t) !== canonicalEntityType)];
365
+ }
366
+ }
367
+ return ordered;
368
+ }
369
+
311
370
  function ContentGroup({
312
371
  type,
313
372
  refs,
@@ -318,6 +377,7 @@ function ContentGroup({
318
377
  extras,
319
378
  adminCampaignCard,
320
379
  heading,
380
+ onLoadingChange,
321
381
  }: {
322
382
  type: string;
323
383
  refs: ContentRef[];
@@ -331,6 +391,8 @@ function ContentGroup({
331
391
  * nothing (fetch miss / unsupported type / missing program config) drops
332
392
  * its heading too — no orphaned titles. */
333
393
  heading: React.ReactNode;
394
+ /** Tells the rail when this group starts and stops loading: the rail announces once for all its groups. */
395
+ onLoadingChange: (type: string, loading: boolean) => void;
334
396
  }) {
335
397
  const config = resolveGroupConfig(type);
336
398
  const isListLayout = config.layout === 'list';
@@ -353,19 +415,26 @@ function ContentGroup({
353
415
  const { items, isLoading } = useGroupItems(type, pageRefs, buildUrl);
354
416
  const groupPagination =
355
417
  totalGroupPages > 1 ? <Pagination currentPage={page} totalPages={totalGroupPages} onPageChange={setPage} /> : null;
418
+ useEffect(() => {
419
+ onLoadingChange(type, isLoading);
420
+ return () => onLoadingChange(type, false);
421
+ }, [onLoadingChange, type, isLoading]);
356
422
 
357
423
  // Skeletons until this page's rows land — SSR HTML and the client's first
358
424
  // paint render identical skeletons (useSelfFetch starts loading on both
359
425
  // sides). The pager stays in place while an unfetched page loads.
360
426
  if (isLoading) {
361
427
  const skeletons = pageRefs.map(r => (
362
- <div key={r.id}>{renderSkeletonForType(type, cardSize, adminCampaignCard)}</div>
428
+ <div key={r.id} data-loading-item>
429
+ {renderSkeletonForType(type, cardSize, adminCampaignCard, extras)}
430
+ </div>
363
431
  ));
364
432
  return (
365
- <LoadingRegion label="Loading related content" className="space-y-4">
433
+ // The rail announces for every group (`announce={false}`): one rail, one "loading".
434
+ <LoadingRegion announce={false} className={GROUP_CLASS} data-loading-item>
366
435
  {heading}
367
436
  {isListLayout ? (
368
- <div className="space-y-4">{skeletons}</div>
437
+ <div className={GROUP_LIST_CLASS}>{skeletons}</div>
369
438
  ) : (
370
439
  <div className={gridClassFor(columns)}>{skeletons}</div>
371
440
  )}
@@ -405,7 +474,7 @@ function ContentGroup({
405
474
  const href = resolved.href ?? '';
406
475
  const targetPlatform = resolved.targetPlatform ?? contentRef.targetPlatform ?? null;
407
476
  return (
408
- <div key={itemId}>
477
+ <div key={itemId} data-loading-item>
409
478
  <LinkProvider href={href || null} targetPlatform={targetPlatform}>
410
479
  {linkProps => (
411
480
  <CardForType
@@ -433,7 +502,7 @@ function ContentGroup({
433
502
  // (no pager) still vanishes with its heading.
434
503
  if (groupPagination) {
435
504
  return (
436
- <div className="space-y-4">
505
+ <div className={GROUP_CLASS} data-loading-item>
437
506
  {heading}
438
507
  {groupPagination}
439
508
  </div>
@@ -443,9 +512,13 @@ function ContentGroup({
443
512
  }
444
513
 
445
514
  return (
446
- <div className="space-y-4">
515
+ <div className={GROUP_CLASS} data-loading-item>
447
516
  {heading}
448
- {isListLayout ? <div className="space-y-4">{cards}</div> : <div className={gridClassFor(columns)}>{cards}</div>}
517
+ {isListLayout ? (
518
+ <div className={GROUP_LIST_CLASS}>{cards}</div>
519
+ ) : (
520
+ <div className={gridClassFor(columns)}>{cards}</div>
521
+ )}
449
522
  {groupPagination}
450
523
  </div>
451
524
  );
@@ -547,6 +620,9 @@ export interface RelatedContentSectionProps {
547
620
  emptyState?: React.ReactNode;
548
621
  }
549
622
 
623
+ /** The rail's title, loaded and loading. */
624
+ const RAIL_TITLE_CLASS = 'text-ods-text-primary text-h2';
625
+
550
626
  export function RelatedContentSection({
551
627
  contentRefs,
552
628
  entityType,
@@ -623,6 +699,18 @@ export function RelatedContentSection({
623
699
  [initialItems, suggestionsDisabled],
624
700
  );
625
701
  const { data, isLoading } = useSelfFetch<RelatedContentResponse>(suggestUrl, { initialData });
702
+ const inScope = useLoadingScope();
703
+ // The groups still reading their cards: while any is, the rail is the ONE region that says "loading".
704
+ const [loadingTypes, setLoadingTypes] = useState<ReadonlySet<string>>(() => new Set());
705
+ const onGroupLoadingChange = useCallback((type: string, loading: boolean) => {
706
+ setLoadingTypes(prev => {
707
+ if (prev.has(type) === loading) return prev;
708
+ const next = new Set(prev);
709
+ if (loading) next.add(type);
710
+ else next.delete(type);
711
+ return next;
712
+ });
713
+ }, []);
626
714
 
627
715
  // Default group fetcher: the lib's byte-parity-tested builder, prefixed for
628
716
  // embeds. Memoized so group-fetch URLs stay value-stable across renders.
@@ -643,26 +731,31 @@ export function RelatedContentSection({
643
731
  // no empty shell. Opt-in (`showWhenEmpty`): render the title + an empty-state
644
732
  // line so the section is always present (e.g. people-hub "What I Shipped").
645
733
  if (!visibleRefs.length) {
646
- if (!showWhenEmpty) return null; // non-showWhenEmpty consumers stay blank (unchanged)
734
+ // Loading first (a page's loading state, or the rail's own unanswered fetch): the rail holds its place. Only a
735
+ // settled empty answer is the empty state (nothing, unless `showWhenEmpty`).
647
736
  // Client-fetch loading (author/suggestion mode, no SSR initialItems): render a
648
737
  // SKELETON grid — reserves height + matches the rest of the app's loading, so
649
738
  // there's no blank-then-pop jump (the prior `return null` collapsed the tab to
650
739
  // zero height during the fetch). SSR controlled mode has isLoading=false → it
651
740
  // skips straight to the empty state below. Skeleton type = the requested rail
652
741
  // type (author mode passes a single `includeTypes`).
653
- if (isLoading) {
654
- const skeletonType = includeTypes?.[0] ?? entityType ?? 'blog_post_existing';
742
+ if (isLoading || inScope) {
655
743
  return (
656
- <LoadingRegion label="Loading related content" className="space-y-8">
657
- <h2 className="text-ods-text-primary text-h2">{accentSentenceMarks(title)}</h2>
658
- <div className={gridClassFor(columns)}>
659
- {Array.from({ length: 3 }).map((_, i) => (
660
- <div key={i}>{renderSkeletonForType(skeletonType, 'default', adminCampaignCard)}</div>
661
- ))}
662
- </div>
663
- </LoadingRegion>
744
+ <RelatedContentSectionSkeleton
745
+ title={title}
746
+ // The groups a rail may hold, when the host states them; otherwise (an author's rail) which groups there are
747
+ // is read data: the skeleton draws one group whose type is not known.
748
+ types={(includeTypes ?? []).filter(t => !exclude.has(t))}
749
+ entityType={entityType}
750
+ minResults={minResults}
751
+ sameTypeMinResults={sameTypeMinResults}
752
+ columns={columns}
753
+ adminCampaignCard={adminCampaignCard}
754
+ extras={extras}
755
+ />
664
756
  );
665
757
  }
758
+ if (!showWhenEmpty) return null; // non-showWhenEmpty consumers stay blank (unchanged)
666
759
  return (
667
760
  <div className="space-y-8">
668
761
  <h2 className="text-2xl font-bold text-ods-text-primary">{accentSentenceMarks(title)}</h2>
@@ -677,28 +770,30 @@ export function RelatedContentSection({
677
770
  grouped[ref.type].push(ref);
678
771
  }
679
772
 
680
- // Registered types in CONTENT_REF_GROUPS order, then any unregistered
681
- // types appended (same shape the investor-email builder uses — both
682
- // consume `orderContentRefTypes` so cross-surface ordering matches).
683
- // SAME-TYPE FIRST: when a host entityType is known (suggestion / SSR
684
- // modes), its own content-type group is hoisted to the top — a blog
685
- // post's rail leads with blog posts. Rail group keys are compared via
686
- // the shared alias canonicalizer (blog_post_existing ↔ blog_post).
687
- let orderedTypes = orderContentRefTypes(Object.keys(grouped));
688
- if (entityType) {
689
- // Canonicalize BOTH sides — hosts pass registry vocab ('blog_post') but
690
- // rail-vocab aliases ('blog_post_existing') are also legal inputs; a raw
691
- // comparison would silently lose the same-type-first hoist for aliases.
692
- const canonicalEntityType = canonicalContentRefType(entityType);
693
- const sameType = orderedTypes.filter(t => canonicalContentRefType(t) === canonicalEntityType);
694
- if (sameType.length > 0) {
695
- orderedTypes = [...sameType, ...orderedTypes.filter(t => canonicalContentRefType(t) !== canonicalEntityType)];
696
- }
773
+ // Registered types in CONTENT_REF_GROUPS order, then any unregistered types appended (same shape the
774
+ // investor-email builder uses: both consume `orderContentRefTypes`). SAME-TYPE FIRST: the host's own type group
775
+ // is hoisted to the top (a blog post's rail leads with blog posts). See `orderRailTypes`.
776
+ const orderedTypes = orderRailTypes(Object.keys(grouped), entityType);
777
+
778
+ // In a page's loading state the groups are read: the rail draws its skeleton of the groups it was handed.
779
+ if (inScope) {
780
+ return (
781
+ <RelatedContentSectionSkeleton
782
+ title={title}
783
+ types={orderedTypes}
784
+ entityType={entityType}
785
+ minResults={minResults}
786
+ sameTypeMinResults={sameTypeMinResults}
787
+ columns={columns}
788
+ adminCampaignCard={adminCampaignCard}
789
+ extras={extras}
790
+ />
791
+ );
697
792
  }
698
793
 
699
794
  return (
700
- <div className="space-y-8">
701
- <h2 className="text-ods-text-primary text-h2">{accentSentenceMarks(title)}</h2>
795
+ <LoadingRegion as="section" label="Loading related content" announce={loadingTypes.size > 0} className={RAIL_CLASS}>
796
+ <h2 className={RAIL_TITLE_CLASS}>{accentSentenceMarks(title)}</h2>
702
797
  {orderedTypes.map(type => (
703
798
  <ContentGroup
704
799
  key={type}
@@ -710,11 +805,92 @@ export function RelatedContentSection({
710
805
  LinkProvider={LinkProvider}
711
806
  extras={extras}
712
807
  adminCampaignCard={adminCampaignCard}
713
- heading={
714
- <h3 className="font-semibold text-ods-text-secondary text-h5">{getContentRefLabelOrTitleCase(type)}</h3>
715
- }
808
+ heading={<GroupHeading type={type} />}
809
+ onLoadingChange={onGroupLoadingChange}
716
810
  />
717
811
  ))}
718
- </div>
812
+ </LoadingRegion>
813
+ );
814
+ }
815
+
816
+ export interface RelatedContentSectionSkeletonProps extends Pick<
817
+ RelatedContentSectionProps,
818
+ 'title' | 'entityType' | 'minResults' | 'sameTypeMinResults' | 'columns' | 'adminCampaignCard' | 'extras'
819
+ > {
820
+ /**
821
+ * The rail's content types (its `includeTypes`, or the types of the refs it holds). Ordered like the loaded rail.
822
+ * Empty: the types are read data (an author's rail): one group of an unknown type, its heading a bar and its cards
823
+ * the rail's grid content card's skeleton.
824
+ */
825
+ types: string[];
826
+ }
827
+
828
+ /**
829
+ * The rail while its groups are read: the title (a bar when it is read with the record and passed empty), then one
830
+ * group per type in the loaded rail's order, each with its real label heading and its cards' own skeletons in the
831
+ * group's layout: `sameTypeMinResults` for the host's type, `minResults` for the others (a page never needs a pager).
832
+ */
833
+ export function RelatedContentSectionSkeleton({
834
+ title = 'Related Content',
835
+ types,
836
+ entityType,
837
+ minResults,
838
+ sameTypeMinResults,
839
+ columns = 2,
840
+ adminCampaignCard,
841
+ extras,
842
+ }: RelatedContentSectionSkeletonProps) {
843
+ const canonicalEntityType = entityType ? canonicalContentRefType(entityType) : null;
844
+ const unknownGroup =
845
+ types.length === 0 ? (
846
+ <div className={GROUP_CLASS} aria-hidden data-loading-item>
847
+ <h3 className={GROUP_HEADING_CLASS}>
848
+ <TextLineSkeleton type="inherit" as="span" className="w-24" />
849
+ </h3>
850
+ <div className={gridClassFor(columns)}>
851
+ {Array.from({ length: Math.max(...GRID_COLUMNS_BY_STEP[columns]) * RAIL_GRID_FOLD_ROWS }, (_, i) => (
852
+ // biome-ignore lint/suspicious/noArrayIndexKey: skeleton cards never reorder
853
+ <div key={i} className={gridFoldClass(i, columns)} data-loading-item>
854
+ {renderSkeletonForType(UNKNOWN_TYPE_CARD, 'default', adminCampaignCard, extras)}
855
+ </div>
856
+ ))}
857
+ </div>
858
+ </div>
859
+ ) : null;
860
+ return (
861
+ <LoadingRegion as="section" label="Loading related content" className={RAIL_CLASS}>
862
+ <h2 className={RAIL_TITLE_CLASS}>
863
+ {/* A title read with the record (passed empty while it is read) is a bar of its line. */}
864
+ {title ? accentSentenceMarks(title) : <TextLineSkeleton type="inherit" as="span" className="w-1/2" />}
865
+ </h2>
866
+ {unknownGroup}
867
+ {orderRailTypes(new Set(types), entityType).map(type => {
868
+ const config = resolveGroupConfig(type);
869
+ const sameType = canonicalEntityType !== null && canonicalContentRefType(type) === canonicalEntityType;
870
+ const isList = config.layout === 'list';
871
+ const fold = isList ? RAIL_LIST_FOLD : Math.max(...GRID_COLUMNS_BY_STEP[columns]) * RAIL_GRID_FOLD_ROWS;
872
+ const count = Math.min(
873
+ GROUP_PAGE_SIZE,
874
+ fold,
875
+ (sameType ? (sameTypeMinResults ?? minResults) : minResults) ?? RAIL_SKELETON_CARDS,
876
+ );
877
+ const cards = Array.from({ length: count }, (_, i) => (
878
+ // biome-ignore lint/suspicious/noArrayIndexKey: skeleton cards never reorder
879
+ <div key={i} className={isList ? undefined : gridFoldClass(i, columns)} data-loading-item>
880
+ {renderSkeletonForType(type, config.gridSize, adminCampaignCard, extras)}
881
+ </div>
882
+ ));
883
+ return (
884
+ <div key={type} className={GROUP_CLASS} aria-hidden data-loading-item>
885
+ <GroupHeading type={type} />
886
+ {isList ? (
887
+ <div className={GROUP_LIST_CLASS}>{cards}</div>
888
+ ) : (
889
+ <div className={gridClassFor(columns)}>{cards}</div>
890
+ )}
891
+ </div>
892
+ );
893
+ })}
894
+ </LoadingRegion>
719
895
  );
720
896
  }
@@ -1,5 +1,8 @@
1
1
  'use client';
2
2
 
3
+ import { TextLineSkeleton } from './loading/unified-skeleton';
4
+ import { useLoadingScope } from './ui/loading-scope';
5
+
3
6
  export interface ResultsCountProps {
4
7
  currentPage: number;
5
8
  pageSize: number;
@@ -8,27 +11,55 @@ export interface ResultsCountProps {
8
11
  sortingMessage?: string;
9
12
  }
10
13
 
14
+ /** The row's box and its line, read by the count and by its skeleton, so the skeleton is the row's size. */
15
+ const RESULTS_COUNT_ROW_CLASS = 'mb-6';
16
+ const RESULTS_COUNT_TEXT_CLASS = 'text-ods-text-secondary text-h6';
17
+ const RESULTS_COUNT_SORTING_CLASS = 'ml-2 text-ods-accent';
18
+
19
+ const resultLabel = (resultType: ResultsCountProps['resultType'], one: boolean) =>
20
+ resultType === 'vendors' ? (one ? 'vendor' : 'vendors') : one ? 'post' : 'posts';
21
+
11
22
  export function ResultsCount({ currentPage, pageSize, totalResults, resultType, sortingMessage }: ResultsCountProps) {
23
+ // While the list is read the count is not known: the row is drawn with its numbers as bars, never left out.
24
+ if (useLoadingScope()) return <ResultsCountSkeleton resultType={resultType} sortingMessage={sortingMessage} />;
25
+
12
26
  if (totalResults === 0) {
13
27
  return null;
14
28
  }
15
29
 
16
30
  const startIndex = (currentPage - 1) * pageSize + 1;
17
31
  const endIndex = Math.min(currentPage * pageSize, totalResults);
18
- const plural = resultType === 'vendors' ? 'vendors' : 'posts';
19
- const singular = resultType === 'vendors' ? 'vendor' : 'post';
20
- const displayType = totalResults === 1 ? singular : plural;
32
+ const displayType = resultLabel(resultType, totalResults === 1);
21
33
 
22
34
  return (
23
- <div className="mb-6">
24
- <p className="text-ods-text-secondary text-h6">
35
+ <div className={RESULTS_COUNT_ROW_CLASS}>
36
+ <p className={RESULTS_COUNT_TEXT_CLASS}>
25
37
  {totalResults > 0 && (
26
38
  <>
27
39
  Showing {startIndex}-{endIndex} of {totalResults} {displayType}
28
- {sortingMessage && <span className="ml-2 text-ods-accent">• {sortingMessage}</span>}
40
+ {sortingMessage && <span className={RESULTS_COUNT_SORTING_CLASS}>• {sortingMessage}</span>}
29
41
  </>
30
42
  )}
31
43
  </p>
32
44
  </div>
33
45
  );
34
46
  }
47
+
48
+ /**
49
+ * The results count while the list is read: the same row and line, the words its own ("Showing", "of", the result
50
+ * type, the sorting message) and the two numbers as bars.
51
+ */
52
+ export function ResultsCountSkeleton({
53
+ resultType,
54
+ sortingMessage,
55
+ }: Pick<ResultsCountProps, 'resultType' | 'sortingMessage'>) {
56
+ return (
57
+ <div className={RESULTS_COUNT_ROW_CLASS} aria-hidden>
58
+ <p className={RESULTS_COUNT_TEXT_CLASS}>
59
+ Showing <TextLineSkeleton type="inherit" as="span" className="inline-block align-top w-10" /> of{' '}
60
+ <TextLineSkeleton type="inherit" as="span" className="inline-block align-top w-6" /> {resultLabel(resultType, false)}
61
+ {sortingMessage && <span className={RESULTS_COUNT_SORTING_CLASS}>• {sortingMessage}</span>}
62
+ </p>
63
+ </div>
64
+ );
65
+ }