@flamingo-stack/openframe-frontend-core 0.0.765 → 0.0.767

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 (1288) 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-BVA7YX4P.cjs → chunk-7TJVYRHR.cjs} +44 -44
  15. package/dist/{chunk-L2V7K7RR.cjs → chunk-7ZU3AVEX.cjs} +43 -41
  16. package/dist/{chunk-M7YZGRAV.cjs → chunk-AAECWUNV.cjs} +35 -8
  17. package/dist/{chunk-PERN37KO.cjs → chunk-BXMDLQUA.cjs} +5 -25
  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-K6VWTUCH.cjs → chunk-FL2RMEDX.cjs} +2 -2
  22. package/dist/{chunk-FMH2DYBC.cjs → chunk-FVH53QZJ.cjs} +4238 -3915
  23. package/dist/chunk-FZB4RMRK.cjs +695 -0
  24. package/dist/{chunk-PYK4ZSEZ.cjs → chunk-GJ5DHDFQ.cjs} +14 -14
  25. package/dist/{chunk-2OPYWMAV.cjs → chunk-GQ7RGD4Y.cjs} +258 -179
  26. package/dist/{chunk-BIA77I6B.cjs → chunk-GTONIRJU.cjs} +56 -54
  27. package/dist/chunk-I7A5MPXA.cjs +40 -0
  28. package/dist/{chunk-NJS7FQRW.cjs → chunk-IKXUJUXC.cjs} +207 -74
  29. package/dist/{chunk-T5FRANE6.cjs → chunk-JBJVUQVH.cjs} +546 -352
  30. package/dist/{chunk-EQZXJUYV.cjs → chunk-JTSUAHDL.cjs} +73 -51
  31. package/dist/{chunk-2Y36SQSZ.cjs → chunk-KHISVNNH.cjs} +11 -7
  32. package/dist/{chunk-EFTUFJS2.cjs → chunk-LELS4XMX.cjs} +20 -22
  33. package/dist/{chunk-QQ7LKNNP.cjs → chunk-M2UU3CWX.cjs} +13 -13
  34. package/dist/chunk-MNIMYGFR.cjs +495 -0
  35. package/dist/{chunk-ZCU2PYCW.cjs → chunk-MPTMT773.cjs} +62 -62
  36. package/dist/{chunk-LVKUMVUJ.cjs → chunk-NBVZIHGS.cjs} +12 -8
  37. package/dist/{chunk-RQQVN7LC.cjs → chunk-NO2DEFAP.cjs} +521 -413
  38. package/dist/{chunk-OJJ4RL2T.cjs → chunk-R3JX4MXD.cjs} +4 -4
  39. package/dist/{chunk-GY2JESOC.cjs → chunk-RB7VLVMD.cjs} +15 -15
  40. package/dist/{chunk-47GZ33ND.cjs → chunk-REJMFXGD.cjs} +198 -73
  41. package/dist/chunk-RMUSPTJN.cjs +102 -0
  42. package/dist/{chunk-3RFQPQ7Z.cjs → chunk-RNLRS4ID.cjs} +3 -3
  43. package/dist/{chunk-63N4FN5V.cjs → chunk-SETFUCZA.cjs} +7 -7
  44. package/dist/{chunk-2QMBXGMQ.cjs → chunk-TF5D5MNO.cjs} +222 -120
  45. package/dist/{chunk-B3W7RCQF.cjs → chunk-TPOLNGOW.cjs} +105 -117
  46. package/dist/{chunk-NET74KSQ.cjs → chunk-TZ4GKUO2.cjs} +5 -5
  47. package/dist/{chunk-3FC6AKEJ.cjs → chunk-UHDBMKJB.cjs} +200 -87
  48. package/dist/{chunk-MWLD6NXV.cjs → chunk-VFZFCRAL.cjs} +4 -6
  49. package/dist/{chunk-NO5UJLLQ.cjs → chunk-WEANWBJH.cjs} +6 -1
  50. package/dist/{chunk-VLJFAGMR.cjs → chunk-WEPIWJGR.cjs} +103 -61
  51. package/dist/chunk-XFRBEXQN.cjs +304 -0
  52. package/dist/{chunk-AKK3EO37.cjs → chunk-XIFEZ2JT.cjs} +35 -23
  53. package/dist/{chunk-MDB65HQC.cjs → chunk-XIXR6BHI.cjs} +286 -201
  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-WA4X55XY.cjs → chunk-ZV45VS6K.cjs} +359 -432
  62. package/dist/{cloud-tenants-6PSTDE3F.cjs → cloud-tenants-WXK5RDSY.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/index.d.ts.map +1 -1
  181. package/dist/components/chat/index.js +18 -4
  182. package/dist/components/chat/stream/chat-stream-reducer.d.ts +1 -1
  183. package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +1 -1
  184. package/dist/components/chat/stream/chat-stream-reducer.js +1 -1
  185. package/dist/components/chat/types/entities/index.d.ts +6 -4
  186. package/dist/components/chat/types/entities/index.d.ts.map +1 -1
  187. package/dist/components/chat/types/entities/index.js +4 -4
  188. package/dist/components/chat/types/entities/investor-update.d.ts +1 -1
  189. package/dist/components/chat/types/entities/investor-update.d.ts.map +1 -1
  190. package/dist/components/chat/types/entities/program-types.d.ts +2 -1
  191. package/dist/components/chat/types/entities/program-types.d.ts.map +1 -1
  192. package/dist/components/chat/types/entities/program-types.js +1 -4
  193. package/dist/components/chat/utils/compact-card-classes.d.ts +9 -1
  194. package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -1
  195. package/dist/components/chat/utils/compact-card-classes.js +11 -2
  196. package/dist/components/chat/utils/compact-card-skeleton.d.ts +40 -0
  197. package/dist/components/chat/utils/compact-card-skeleton.d.ts.map +1 -0
  198. package/dist/components/chat/utils/compact-card-skeleton.js +61 -0
  199. package/dist/components/chat/utils/icon-library.d.ts +0 -1
  200. package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
  201. package/dist/components/chat/utils/index.d.ts +5 -3
  202. package/dist/components/chat/utils/index.d.ts.map +1 -1
  203. package/dist/components/chat/utils/index.js +3 -2
  204. package/dist/components/chat/utils/scroll-anchor.d.ts +1 -2
  205. package/dist/components/chat/utils/scroll-anchor.d.ts.map +1 -1
  206. package/dist/components/chat/utils/scroll-anchor.js +0 -1
  207. package/dist/components/chat/utils/source-row-cta.d.ts +0 -2
  208. package/dist/components/chat/utils/source-row-cta.d.ts.map +1 -1
  209. package/dist/components/chat/utils/source-row-cta.js +1 -2
  210. package/dist/components/comment-card.d.ts +15 -0
  211. package/dist/components/comment-card.d.ts.map +1 -1
  212. package/dist/components/comment-card.js +178 -119
  213. package/dist/components/comment-thread.d.ts +29 -0
  214. package/dist/components/comment-thread.d.ts.map +1 -1
  215. package/dist/components/comment-thread.js +76 -18
  216. package/dist/components/contact/index.cjs +36 -40
  217. package/dist/components/content-loading-container.d.ts +1 -1
  218. package/dist/components/docs/doc-viewer.d.ts.map +1 -1
  219. package/dist/components/docs/doc-viewer.js +10 -9
  220. package/dist/components/docs/index.cjs +39 -43
  221. package/dist/components/docs/skeletons.d.ts +0 -5
  222. package/dist/components/docs/skeletons.d.ts.map +1 -1
  223. package/dist/components/docs/skeletons.js +30 -50
  224. package/dist/components/docs/use-document-tree.d.ts +0 -1
  225. package/dist/components/docs/use-document-tree.d.ts.map +1 -1
  226. package/dist/components/docs/use-document-tree.js +6 -1
  227. package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
  228. package/dist/components/embeds/embed-iframe.js +3 -0
  229. package/dist/components/embeds/index.cjs +38 -40
  230. package/dist/components/embeds/index.d.ts +1 -1
  231. package/dist/components/embeds/index.d.ts.map +1 -1
  232. package/dist/components/embeds/index.js +2 -1
  233. package/dist/components/embeds/markdown-image.d.ts.map +1 -1
  234. package/dist/components/embeds/markdown-image.js +5 -2
  235. package/dist/components/embeds/og-link-preview.d.ts +7 -3
  236. package/dist/components/embeds/og-link-preview.d.ts.map +1 -1
  237. package/dist/components/embeds/og-link-preview.js +106 -62
  238. package/dist/components/embeds/rich-markdown-runtime.d.ts +4 -1
  239. package/dist/components/embeds/rich-markdown-runtime.d.ts.map +1 -1
  240. package/dist/components/embeds/rich-markdown-runtime.js +6 -5
  241. package/dist/components/faq/faq-document-page.d.ts +5 -1
  242. package/dist/components/faq/faq-document-page.d.ts.map +1 -1
  243. package/dist/components/faq/faq-document-page.js +5 -1
  244. package/dist/components/faq/faq-section.d.ts +34 -1
  245. package/dist/components/faq/faq-section.d.ts.map +1 -1
  246. package/dist/components/faq/faq-section.js +146 -59
  247. package/dist/components/faq/index.cjs +41 -41
  248. package/dist/components/faq/index.d.ts +1 -1
  249. package/dist/components/faq/index.d.ts.map +1 -1
  250. package/dist/components/faq/index.js +9 -1
  251. package/dist/components/faq-accordion.d.ts +15 -0
  252. package/dist/components/faq-accordion.d.ts.map +1 -1
  253. package/dist/components/faq-accordion.js +37 -9
  254. package/dist/components/features/ai-enrich/AIStatusIndicator.d.ts.map +1 -1
  255. package/dist/components/features/ai-enrich/AIStatusIndicator.js +2 -1
  256. package/dist/components/features/approval-level.d.ts +15 -1
  257. package/dist/components/features/approval-level.d.ts.map +1 -1
  258. package/dist/components/features/approval-level.js +42 -6
  259. package/dist/components/features/capability-explorer.d.ts +5 -1
  260. package/dist/components/features/capability-explorer.d.ts.map +1 -1
  261. package/dist/components/features/capability-explorer.js +42 -37
  262. package/dist/components/features/cards-strip.d.ts +9 -0
  263. package/dist/components/features/cards-strip.d.ts.map +1 -1
  264. package/dist/components/features/cards-strip.js +35 -11
  265. package/dist/components/features/command-box.d.ts +19 -0
  266. package/dist/components/features/command-box.d.ts.map +1 -1
  267. package/dist/components/features/command-box.js +103 -11
  268. package/dist/components/features/conversation-card.d.ts +70 -5
  269. package/dist/components/features/conversation-card.d.ts.map +1 -1
  270. package/dist/components/features/conversation-card.js +146 -13
  271. package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -1
  272. package/dist/components/features/devices/device-selector/device-selector.js +1 -0
  273. package/dist/components/features/devices/devices-panel-view.d.ts +1 -1
  274. package/dist/components/features/devices/devices-panel-view.js +1 -1
  275. package/dist/components/features/entity-tag-badges.d.ts +32 -7
  276. package/dist/components/features/entity-tag-badges.d.ts.map +1 -1
  277. package/dist/components/features/entity-tag-badges.js +73 -9
  278. package/dist/components/features/entity-video-section.d.ts +14 -14
  279. package/dist/components/features/entity-video-section.d.ts.map +1 -1
  280. package/dist/components/features/entity-video-section.js +29 -22
  281. package/dist/components/features/figma-prototype-viewer.d.ts.map +1 -1
  282. package/dist/components/features/figma-prototype-viewer.js +3 -10
  283. package/dist/components/features/index.cjs +77 -39
  284. package/dist/components/features/index.d.ts +3 -0
  285. package/dist/components/features/index.d.ts.map +1 -1
  286. package/dist/components/features/index.js +5 -0
  287. package/dist/components/features/knowledge-base/index.d.ts +2 -1
  288. package/dist/components/features/knowledge-base/index.d.ts.map +1 -1
  289. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts +0 -1
  290. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts.map +1 -1
  291. package/dist/components/features/model-token-rates.d.ts.map +1 -1
  292. package/dist/components/features/model-token-rates.js +50 -78
  293. package/dist/components/features/notifications/approval-request-notification-tile.d.ts.map +1 -1
  294. package/dist/components/features/notifications/approval-request-notification-tile.js +9 -5
  295. package/dist/components/features/notifications/notification-tile.d.ts +22 -7
  296. package/dist/components/features/notifications/notification-tile.d.ts.map +1 -1
  297. package/dist/components/features/notifications/notification-tile.js +42 -15
  298. package/dist/components/features/paths-display.d.ts +9 -0
  299. package/dist/components/features/paths-display.d.ts.map +1 -1
  300. package/dist/components/features/paths-display.js +50 -5
  301. package/dist/components/features/platform-badge.d.ts +2 -0
  302. package/dist/components/features/platform-badge.d.ts.map +1 -1
  303. package/dist/components/features/platform-badge.js +33 -2
  304. package/dist/components/features/push-button-selector.d.ts +23 -1
  305. package/dist/components/features/push-button-selector.d.ts.map +1 -1
  306. package/dist/components/features/push-button-selector.js +114 -41
  307. package/dist/components/features/remote-session/index.d.ts +2 -2
  308. package/dist/components/features/remote-session/index.d.ts.map +1 -1
  309. package/dist/components/features/remote-session/index.js +3 -3
  310. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts +2 -0
  311. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts.map +1 -1
  312. package/dist/components/features/remote-session/remote-desktop-chat-message-row.js +18 -4
  313. package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts.map +1 -1
  314. package/dist/components/features/remote-session/remote-desktop-chat-panel.js +11 -2
  315. package/dist/components/features/remote-session/remote-desktop-view.d.ts +6 -6
  316. package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -1
  317. package/dist/components/features/remote-session/remote-desktop-view.js +27 -27
  318. package/dist/components/features/remote-session/remote-session-chat-panel.js +1 -1
  319. package/dist/components/features/status-filter-component.d.ts +19 -1
  320. package/dist/components/features/status-filter-component.d.ts.map +1 -1
  321. package/dist/components/features/status-filter-component.js +106 -43
  322. package/dist/components/features/use-video-warmup.d.ts +1 -1
  323. package/dist/components/features/use-video-warmup.d.ts.map +1 -1
  324. package/dist/components/features/use-video-warmup.js +2 -5
  325. package/dist/components/features/use-walkthrough-video.d.ts.map +1 -1
  326. package/dist/components/features/use-walkthrough-video.js +4 -1
  327. package/dist/components/features/video-bites-strip.d.ts +42 -1
  328. package/dist/components/features/video-bites-strip.d.ts.map +1 -1
  329. package/dist/components/features/video-bites-strip.js +100 -21
  330. package/dist/components/features/video-hover-preview.d.ts +1 -1
  331. package/dist/components/features/video-hover-preview.d.ts.map +1 -1
  332. package/dist/components/features/video.d.ts +9 -2
  333. package/dist/components/features/video.d.ts.map +1 -1
  334. package/dist/components/features/video.js +10 -5
  335. package/dist/components/features/walkthrough-video.d.ts.map +1 -1
  336. package/dist/components/features/walkthrough-video.js +8 -2
  337. package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -1
  338. package/dist/components/help-center-pages/download-apps-page.js +65 -33
  339. package/dist/components/help-center-pages/index.cjs +410 -316
  340. package/dist/components/help-center-pages/trust-center-page.d.ts +21 -9
  341. package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
  342. package/dist/components/help-center-pages/trust-center-page.js +100 -67
  343. package/dist/components/help-center-pages/trust-center-sections.d.ts +19 -14
  344. package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
  345. package/dist/components/help-center-pages/trust-center-sections.js +124 -97
  346. package/dist/components/icon-display.d.ts.map +1 -1
  347. package/dist/components/icon-display.js +6 -0
  348. package/dist/components/index.cjs +1505 -380
  349. package/dist/components/index.d.ts +5 -2
  350. package/dist/components/index.d.ts.map +1 -1
  351. package/dist/components/index.js +12 -2
  352. package/dist/components/interactive-wrapper.d.ts.map +1 -1
  353. package/dist/components/interactive-wrapper.js +2 -1
  354. package/dist/components/layout/list-page-layout.d.ts +3 -3
  355. package/dist/components/layout/list-page-layout.d.ts.map +1 -1
  356. package/dist/components/layout/page-container.d.ts +8 -1
  357. package/dist/components/layout/page-container.d.ts.map +1 -1
  358. package/dist/components/layout/page-container.js +25 -10
  359. package/dist/components/layout/page-data-sync.d.ts +7 -1
  360. package/dist/components/layout/page-data-sync.d.ts.map +1 -1
  361. package/dist/components/layout/page-data-sync.js +13 -4
  362. package/dist/components/layout/page-heading.d.ts +31 -0
  363. package/dist/components/layout/page-heading.d.ts.map +1 -1
  364. package/dist/components/layout/page-heading.js +44 -1
  365. package/dist/components/layout/page-layout.d.ts +4 -4
  366. package/dist/components/layout/page-layout.d.ts.map +1 -1
  367. package/dist/components/layout/page-layout.js +4 -5
  368. package/dist/components/layout/title-block.d.ts +12 -1
  369. package/dist/components/layout/title-block.d.ts.map +1 -1
  370. package/dist/components/layout/title-block.js +50 -12
  371. package/dist/components/loading/category-vendor-selector-skeleton.d.ts +3 -0
  372. package/dist/components/loading/category-vendor-selector-skeleton.d.ts.map +1 -1
  373. package/dist/components/loading/deprecated-layout-skeletons.d.ts +25 -0
  374. package/dist/components/loading/deprecated-layout-skeletons.d.ts.map +1 -0
  375. package/dist/components/loading/deprecated-layout-skeletons.js +78 -0
  376. package/dist/components/loading/device-card-skeleton.js +4 -4
  377. package/dist/components/loading/index.d.ts +4 -3
  378. package/dist/components/loading/index.d.ts.map +1 -1
  379. package/dist/components/loading/index.js +10 -16
  380. package/dist/components/loading/loading-region.d.ts +10 -9
  381. package/dist/components/loading/loading-region.d.ts.map +1 -1
  382. package/dist/components/loading/loading-region.js +4 -1
  383. package/dist/components/loading/msp-profile-form-skeleton.d.ts +2 -0
  384. package/dist/components/loading/msp-profile-form-skeleton.d.ts.map +1 -1
  385. package/dist/components/loading/organization-card-skeleton.d.ts +14 -10
  386. package/dist/components/loading/organization-card-skeleton.d.ts.map +1 -1
  387. package/dist/components/loading/organization-card-skeleton.js +38 -40
  388. package/dist/components/loading/page-layout-skeleton.d.ts +7 -51
  389. package/dist/components/loading/page-layout-skeleton.d.ts.map +1 -1
  390. package/dist/components/loading/page-layout-skeleton.js +2 -411
  391. package/dist/components/loading/settings-form-skeleton.d.ts +2 -0
  392. package/dist/components/loading/settings-form-skeleton.d.ts.map +1 -1
  393. package/dist/components/loading/unified-skeleton.d.ts +57 -9
  394. package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
  395. package/dist/components/loading/unified-skeleton.js +57 -8
  396. package/dist/components/log-severity-dot.d.ts +2 -0
  397. package/dist/components/log-severity-dot.d.ts.map +1 -1
  398. package/dist/components/log-severity-dot.js +11 -13
  399. package/dist/components/logs-list.d.ts.map +1 -1
  400. package/dist/components/logs-list.js +34 -43
  401. package/dist/components/media-carousel.d.ts +0 -1
  402. package/dist/components/media-carousel.d.ts.map +1 -1
  403. package/dist/components/meeting-scheduler/booking-form.d.ts +52 -8
  404. package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
  405. package/dist/components/meeting-scheduler/booking-form.js +150 -30
  406. package/dist/components/meeting-scheduler/context-panel.d.ts +18 -2
  407. package/dist/components/meeting-scheduler/context-panel.d.ts.map +1 -1
  408. package/dist/components/meeting-scheduler/context-panel.js +61 -23
  409. package/dist/components/meeting-scheduler/directory.d.ts +11 -1
  410. package/dist/components/meeting-scheduler/directory.d.ts.map +1 -1
  411. package/dist/components/meeting-scheduler/directory.js +47 -27
  412. package/dist/components/meeting-scheduler/index.cjs +556 -344
  413. package/dist/components/meeting-scheduler/index.d.ts +5 -4
  414. package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
  415. package/dist/components/meeting-scheduler/index.js +127 -102
  416. package/dist/components/meeting-scheduler/modal-header.d.ts +7 -3
  417. package/dist/components/meeting-scheduler/modal-header.d.ts.map +1 -1
  418. package/dist/components/meeting-scheduler/modal-header.js +29 -18
  419. package/dist/components/meeting-scheduler/slot-picker.d.ts +11 -4
  420. package/dist/components/meeting-scheduler/slot-picker.d.ts.map +1 -1
  421. package/dist/components/meeting-scheduler/slot-picker.js +12 -7
  422. package/dist/components/metric-value.d.ts +5 -0
  423. package/dist/components/metric-value.d.ts.map +1 -1
  424. package/dist/components/metric-value.js +15 -3
  425. package/dist/components/msp-display.d.ts +5 -0
  426. package/dist/components/msp-display.d.ts.map +1 -1
  427. package/dist/components/msp-display.js +19 -14
  428. package/dist/components/navigation/app-layout.d.ts +0 -2
  429. package/dist/components/navigation/app-layout.d.ts.map +1 -1
  430. package/dist/components/navigation/app-layout.js +1 -4
  431. package/dist/components/navigation/index.cjs +48 -42
  432. package/dist/components/navigation/index.d.ts +8 -3
  433. package/dist/components/navigation/index.d.ts.map +1 -1
  434. package/dist/components/navigation/index.js +18 -3
  435. package/dist/components/navigation/mingo-ai-button.d.ts +0 -2
  436. package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
  437. package/dist/components/navigation/mingo-ai-button.js +2 -4
  438. package/dist/components/navigation/mobile-nav-sheet.d.ts +0 -1
  439. package/dist/components/navigation/mobile-nav-sheet.d.ts.map +1 -1
  440. package/dist/components/navigation/mobile-nav-sheet.js +0 -2
  441. package/dist/components/navigation/multi-level-navigation.d.ts +21 -0
  442. package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -1
  443. package/dist/components/navigation/multi-level-navigation.js +98 -24
  444. package/dist/components/navigation/page-section-bar.d.ts +50 -0
  445. package/dist/components/navigation/page-section-bar.d.ts.map +1 -0
  446. package/dist/components/navigation/page-section-bar.js +85 -0
  447. package/dist/components/navigation/sticky-section-nav.d.ts +12 -0
  448. package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
  449. package/dist/components/navigation/sticky-section-nav.js +87 -20
  450. package/dist/components/navigation/ticket-alerts-button.js +1 -1
  451. package/dist/components/onboarding-guides/hooks/use-onboarding-guides.d.ts.map +1 -1
  452. package/dist/components/onboarding-guides/hooks/use-onboarding-guides.js +7 -1
  453. package/dist/components/onboarding-guides/index.cjs +38 -42
  454. package/dist/components/onboarding-guides/index.d.ts +1 -2
  455. package/dist/components/onboarding-guides/index.d.ts.map +1 -1
  456. package/dist/components/onboarding-guides/index.js +5 -3
  457. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts +8 -0
  458. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
  459. package/dist/components/onboarding-guides/onboarding-guide-detail-view.js +142 -84
  460. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts +18 -17
  461. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts.map +1 -1
  462. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.js +28 -21
  463. package/dist/components/onboarding-guides/onboarding-guides-catalog-view.d.ts.map +1 -1
  464. package/dist/components/onboarding-guides/onboarding-guides-catalog-view.js +57 -18
  465. package/dist/components/pagination.d.ts +26 -2
  466. package/dist/components/pagination.d.ts.map +1 -1
  467. package/dist/components/pagination.js +61 -38
  468. package/dist/components/persistent-filter-controls.d.ts.map +1 -1
  469. package/dist/components/persistent-filter-controls.js +1 -2
  470. package/dist/components/persistent-pagination.d.ts.map +1 -1
  471. package/dist/components/persistent-pagination.js +3 -1
  472. package/dist/components/platform/ToolBadge.d.ts +13 -1
  473. package/dist/components/platform/ToolBadge.d.ts.map +1 -1
  474. package/dist/components/platform/ToolBadge.js +38 -9
  475. package/dist/components/platform/index.d.ts +2 -2
  476. package/dist/components/platform/index.d.ts.map +1 -1
  477. package/dist/components/platform/index.js +4 -2
  478. package/dist/components/platform/tool-badge-mark.d.ts +6 -0
  479. package/dist/components/platform/tool-badge-mark.d.ts.map +1 -0
  480. package/dist/components/platform/tool-badge-mark.js +6 -0
  481. package/dist/components/product-demo/fixtures/devices.d.ts +0 -2
  482. package/dist/components/product-demo/fixtures/devices.d.ts.map +1 -1
  483. package/dist/components/product-demo/fixtures/devices.js +0 -2
  484. package/dist/components/product-demo/index.cjs +1889 -32
  485. package/dist/components/product-demo/product-screen.d.ts +5 -5
  486. package/dist/components/product-demo/product-screen.d.ts.map +1 -1
  487. package/dist/components/product-demo/product-screen.js +19 -15
  488. package/dist/components/product-demo/screen-loading.d.ts +10 -0
  489. package/dist/components/product-demo/screen-loading.d.ts.map +1 -0
  490. package/dist/components/product-demo/screen-loading.js +12 -0
  491. package/dist/components/product-demo/screens/devices-view.d.ts +22 -0
  492. package/dist/components/product-demo/screens/devices-view.d.ts.map +1 -0
  493. package/dist/components/product-demo/screens/devices-view.js +35 -0
  494. package/dist/components/product-demo/screens/devices.d.ts +1 -7
  495. package/dist/components/product-demo/screens/devices.d.ts.map +1 -1
  496. package/dist/components/product-demo/screens/devices.js +8 -15
  497. package/dist/components/related-content/card-registry.d.ts +3 -2
  498. package/dist/components/related-content/card-registry.d.ts.map +1 -1
  499. package/dist/components/related-content/card-registry.js +15 -3
  500. package/dist/components/related-content/index.cjs +19 -18
  501. package/dist/components/related-content/index.d.ts +2 -1
  502. package/dist/components/related-content/index.d.ts.map +1 -1
  503. package/dist/components/related-content/index.js +3 -1
  504. package/dist/components/related-content/related-content-section.d.ts +14 -1
  505. package/dist/components/related-content/related-content-section.d.ts.map +1 -1
  506. package/dist/components/related-content/related-content-section.js +144 -32
  507. package/dist/components/results-count.d.ts +5 -0
  508. package/dist/components/results-count.d.ts.map +1 -1
  509. package/dist/components/results-count.js +30 -6
  510. package/dist/components/shared/article-author-byline.d.ts +8 -0
  511. package/dist/components/shared/article-author-byline.d.ts.map +1 -1
  512. package/dist/components/shared/article-author-byline.js +54 -52
  513. package/dist/components/shared/delivery/delivery-lists.d.ts.map +1 -1
  514. package/dist/components/shared/delivery/delivery-lists.js +14 -2
  515. package/dist/components/shared/delivery/delivery-row.d.ts +5 -0
  516. package/dist/components/shared/delivery/delivery-row.d.ts.map +1 -1
  517. package/dist/components/shared/delivery/delivery-row.js +37 -10
  518. package/dist/components/shared/delivery/delivery-table.d.ts +4 -0
  519. package/dist/components/shared/delivery/delivery-table.d.ts.map +1 -1
  520. package/dist/components/shared/delivery/delivery-table.js +14 -26
  521. package/dist/components/shared/detail-page-skeleton.d.ts +3 -0
  522. package/dist/components/shared/detail-page-skeleton.d.ts.map +1 -1
  523. package/dist/components/shared/detail-page-skeleton.js +9 -1
  524. package/dist/components/shared/dev-section/dev-card-row.d.ts +2 -0
  525. package/dist/components/shared/dev-section/dev-card-row.d.ts.map +1 -1
  526. package/dist/components/shared/dev-section/dev-card-row.js +31 -21
  527. package/dist/components/shared/dev-section/dev-section-view.js +1 -1
  528. package/dist/components/shared/legal-document/index.d.ts +1 -1
  529. package/dist/components/shared/legal-document/index.d.ts.map +1 -1
  530. package/dist/components/shared/legal-document/index.js +5 -1
  531. package/dist/components/shared/legal-document/legal-document-page.d.ts +14 -0
  532. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
  533. package/dist/components/shared/legal-document/legal-document-page.js +47 -42
  534. package/dist/components/shared/legal-document/use-legal-docs.d.ts.map +1 -1
  535. package/dist/components/shared/legal-document/use-legal-docs.js +4 -1
  536. package/dist/components/shared/legal-document/use-legal-documents.d.ts.map +1 -1
  537. package/dist/components/shared/legal-document/use-legal-documents.js +3 -1
  538. package/dist/components/shared/media-gallery-strip.d.ts +7 -0
  539. package/dist/components/shared/media-gallery-strip.d.ts.map +1 -1
  540. package/dist/components/shared/media-gallery-strip.js +22 -3
  541. package/dist/components/shared/onboarding/index.d.ts +2 -1
  542. package/dist/components/shared/onboarding/index.d.ts.map +1 -1
  543. package/dist/components/shared/onboarding/index.js +1 -3
  544. package/dist/components/shared/product-release/index.d.ts +2 -1
  545. package/dist/components/shared/product-release/index.d.ts.map +1 -1
  546. package/dist/components/shared/product-release/product-release-card-classes.d.ts +26 -0
  547. package/dist/components/shared/product-release/product-release-card-classes.d.ts.map +1 -0
  548. package/dist/components/shared/product-release/product-release-card-classes.js +40 -0
  549. package/dist/components/shared/product-release/product-release-card-skeleton.d.ts.map +1 -1
  550. package/dist/components/shared/product-release/product-release-card-skeleton.js +37 -35
  551. package/dist/components/shared/product-release/product-release-card.d.ts +3 -1
  552. package/dist/components/shared/product-release/product-release-card.d.ts.map +1 -1
  553. package/dist/components/shared/product-release/product-release-card.js +86 -73
  554. package/dist/components/shared/product-release/product-releases-view.d.ts.map +1 -1
  555. package/dist/components/shared/product-release/product-releases-view.js +26 -13
  556. package/dist/components/shared/product-release/release-detail-page.d.ts +0 -1
  557. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  558. package/dist/components/shared/product-release/release-detail-page.js +281 -215
  559. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts +9 -1
  560. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts.map +1 -1
  561. package/dist/components/shared/roadmap/roadmap-grid-skeleton.js +12 -11
  562. package/dist/components/shared/roadmap/roadmap-grid.d.ts +13 -1
  563. package/dist/components/shared/roadmap/roadmap-grid.d.ts.map +1 -1
  564. package/dist/components/shared/roadmap/roadmap-grid.js +45 -29
  565. package/dist/components/shared/roadmap/roadmap-view.d.ts.map +1 -1
  566. package/dist/components/shared/roadmap/roadmap-view.js +2 -3
  567. package/dist/components/social-icon-row.d.ts +9 -2
  568. package/dist/components/social-icon-row.d.ts.map +1 -1
  569. package/dist/components/social-icon-row.js +12 -6
  570. package/dist/components/tickets/help-center-list.d.ts.map +1 -1
  571. package/dist/components/tickets/help-center-list.js +6 -2
  572. package/dist/components/tickets/hooks/use-ticket-actions.d.ts +2 -2
  573. package/dist/components/tickets/hooks/use-ticket-actions.d.ts.map +1 -1
  574. package/dist/components/tickets/index.cjs +42 -46
  575. package/dist/components/tickets/index.d.ts +2 -1
  576. package/dist/components/tickets/index.d.ts.map +1 -1
  577. package/dist/components/tickets/index.js +2 -3
  578. package/dist/components/tickets/ticket-center.d.ts.map +1 -1
  579. package/dist/components/tickets/ticket-center.js +117 -58
  580. package/dist/components/tickets/types.d.ts +0 -8
  581. package/dist/components/tickets/types.d.ts.map +1 -1
  582. package/dist/components/tickets/types.js +0 -3
  583. package/dist/components/toggle-group.d.ts +4 -2
  584. package/dist/components/toggle-group.d.ts.map +1 -1
  585. package/dist/components/toggle-group.js +3 -1
  586. package/dist/components/tool-icon.d.ts.map +1 -1
  587. package/dist/components/ui/analyzing-state.d.ts +3 -2
  588. package/dist/components/ui/analyzing-state.d.ts.map +1 -1
  589. package/dist/components/ui/analyzing-state.js +7 -4
  590. package/dist/components/ui/announcement-bar-view.d.ts +5 -0
  591. package/dist/components/ui/announcement-bar-view.d.ts.map +1 -1
  592. package/dist/components/ui/announcement-bar-view.js +3 -1
  593. package/dist/components/ui/autocomplete.d.ts +13 -0
  594. package/dist/components/ui/autocomplete.d.ts.map +1 -1
  595. package/dist/components/ui/autocomplete.js +30 -6
  596. package/dist/components/ui/avatar-stack.d.ts +7 -0
  597. package/dist/components/ui/avatar-stack.d.ts.map +1 -1
  598. package/dist/components/ui/avatar-stack.js +29 -4
  599. package/dist/components/ui/badge.d.ts +9 -1
  600. package/dist/components/ui/badge.d.ts.map +1 -1
  601. package/dist/components/ui/badge.js +11 -0
  602. package/dist/components/ui/benefit-list.d.ts +8 -0
  603. package/dist/components/ui/benefit-list.d.ts.map +1 -1
  604. package/dist/components/ui/benefit-list.js +20 -11
  605. package/dist/components/ui/button/button-styles.d.ts +16 -0
  606. package/dist/components/ui/button/button-styles.d.ts.map +1 -1
  607. package/dist/components/ui/button/button-styles.js +42 -0
  608. package/dist/components/ui/button/button.d.ts +3 -1
  609. package/dist/components/ui/button/button.d.ts.map +1 -1
  610. package/dist/components/ui/button/button.js +4 -40
  611. package/dist/components/ui/button/index.d.ts +1 -0
  612. package/dist/components/ui/button/index.d.ts.map +1 -1
  613. package/dist/components/ui/button/index.js +4 -0
  614. package/dist/components/ui/card.d.ts +13 -1
  615. package/dist/components/ui/card.d.ts.map +1 -1
  616. package/dist/components/ui/card.js +21 -14
  617. package/dist/components/ui/checkbox.d.ts +2 -0
  618. package/dist/components/ui/checkbox.d.ts.map +1 -1
  619. package/dist/components/ui/checkbox.js +5 -1
  620. package/dist/components/ui/compliance-badge.d.ts +2 -0
  621. package/dist/components/ui/compliance-badge.d.ts.map +1 -1
  622. package/dist/components/ui/compliance-badge.js +5 -2
  623. package/dist/components/ui/cursor-pagination.d.ts +8 -1
  624. package/dist/components/ui/cursor-pagination.d.ts.map +1 -1
  625. package/dist/components/ui/cursor-pagination.js +10 -4
  626. package/dist/components/ui/dashboard-info-card.d.ts +6 -1
  627. package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
  628. package/dist/components/ui/dashboard-info-card.js +19 -10
  629. package/dist/components/ui/data-attribution.d.ts +10 -5
  630. package/dist/components/ui/data-attribution.d.ts.map +1 -1
  631. package/dist/components/ui/data-attribution.js +27 -9
  632. package/dist/components/ui/data-table/data-table-body.d.ts +1 -1
  633. package/dist/components/ui/data-table/data-table-body.d.ts.map +1 -1
  634. package/dist/components/ui/data-table/data-table-body.js +18 -7
  635. package/dist/components/ui/data-table/data-table-row-count.d.ts +5 -0
  636. package/dist/components/ui/data-table/data-table-row-count.d.ts.map +1 -1
  637. package/dist/components/ui/data-table/data-table-row-count.js +18 -3
  638. package/dist/components/ui/data-table/data-table-row.d.ts.map +1 -1
  639. package/dist/components/ui/data-table/data-table-row.js +2 -6
  640. package/dist/components/ui/data-table/data-table-skeleton.js +5 -5
  641. package/dist/components/ui/data-table/index.d.ts +2 -2
  642. package/dist/components/ui/data-table/index.d.ts.map +1 -1
  643. package/dist/components/ui/data-table/index.js +2 -1
  644. package/dist/components/ui/date-picker.d.ts +0 -1
  645. package/dist/components/ui/date-picker.d.ts.map +1 -1
  646. package/dist/components/ui/entity-image.d.ts +4 -0
  647. package/dist/components/ui/entity-image.d.ts.map +1 -1
  648. package/dist/components/ui/entity-image.js +27 -5
  649. package/dist/components/ui/error-state.d.ts.map +1 -1
  650. package/dist/components/ui/error-state.js +4 -1
  651. package/dist/components/ui/feature-card.d.ts +31 -1
  652. package/dist/components/ui/feature-card.d.ts.map +1 -1
  653. package/dist/components/ui/feature-card.js +40 -11
  654. package/dist/components/ui/feature-list.d.ts +15 -1
  655. package/dist/components/ui/feature-list.d.ts.map +1 -1
  656. package/dist/components/ui/feature-list.js +43 -8
  657. package/dist/components/ui/field-wrapper.d.ts +6 -0
  658. package/dist/components/ui/field-wrapper.d.ts.map +1 -1
  659. package/dist/components/ui/field-wrapper.js +16 -5
  660. package/dist/components/ui/file-manager/index.cjs +63 -64
  661. package/dist/components/ui/filter-checkbox-item.d.ts +9 -0
  662. package/dist/components/ui/filter-checkbox-item.d.ts.map +1 -1
  663. package/dist/components/ui/filter-checkbox-item.js +36 -6
  664. package/dist/components/ui/filter-modal.d.ts +2 -3
  665. package/dist/components/ui/filter-modal.d.ts.map +1 -1
  666. package/dist/components/ui/filter-pill-row.d.ts +10 -5
  667. package/dist/components/ui/filter-pill-row.d.ts.map +1 -1
  668. package/dist/components/ui/filter-pill-row.js +56 -19
  669. package/dist/components/ui/incident-feed.d.ts +1 -1
  670. package/dist/components/ui/incident-feed.d.ts.map +1 -1
  671. package/dist/components/ui/incident-feed.js +57 -56
  672. package/dist/components/ui/index.cjs +219 -39
  673. package/dist/components/ui/index.d.ts +10 -1
  674. package/dist/components/ui/index.d.ts.map +1 -1
  675. package/dist/components/ui/index.js +29 -1
  676. package/dist/components/ui/info-card-row.d.ts +12 -0
  677. package/dist/components/ui/info-card-row.d.ts.map +1 -1
  678. package/dist/components/ui/info-card-row.js +56 -30
  679. package/dist/components/ui/info-card.d.ts +24 -1
  680. package/dist/components/ui/info-card.d.ts.map +1 -1
  681. package/dist/components/ui/info-card.js +87 -52
  682. package/dist/components/ui/input-styles.d.ts +7 -0
  683. package/dist/components/ui/input-styles.d.ts.map +1 -0
  684. package/dist/components/ui/input-styles.js +7 -0
  685. package/dist/components/ui/input.d.ts.map +1 -1
  686. package/dist/components/ui/input.js +4 -1
  687. package/dist/components/ui/layout-hold.d.ts +9 -7
  688. package/dist/components/ui/layout-hold.d.ts.map +1 -1
  689. package/dist/components/ui/leader-row.d.ts +11 -4
  690. package/dist/components/ui/leader-row.d.ts.map +1 -1
  691. package/dist/components/ui/leader-row.js +29 -5
  692. package/dist/components/ui/loading-scope.d.ts +26 -0
  693. package/dist/components/ui/loading-scope.d.ts.map +1 -0
  694. package/dist/components/ui/loading-scope.js +31 -0
  695. package/dist/components/ui/markdown/base-components.d.ts +25 -0
  696. package/dist/components/ui/markdown/base-components.d.ts.map +1 -1
  697. package/dist/components/ui/markdown/base-components.js +13 -7
  698. package/dist/components/ui/markdown/engine.d.ts +26 -1
  699. package/dist/components/ui/markdown/engine.d.ts.map +1 -1
  700. package/dist/components/ui/markdown/engine.js +63 -4
  701. package/dist/components/ui/markdown/index.d.ts +5 -3
  702. package/dist/components/ui/markdown/index.d.ts.map +1 -1
  703. package/dist/components/ui/markdown/index.js +12 -4
  704. package/dist/components/ui/markdown/mermaid-diagram.d.ts.map +1 -1
  705. package/dist/components/ui/markdown/mermaid-diagram.js +8 -2
  706. package/dist/components/ui/markdown/rich/embed-overrides.d.ts.map +1 -1
  707. package/dist/components/ui/markdown/rich/embed-overrides.js +10 -1
  708. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts +10 -0
  709. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts.map +1 -1
  710. package/dist/components/ui/markdown/rich/rich-markdown-renderer.js +21 -5
  711. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts +0 -2
  712. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts.map +1 -1
  713. package/dist/components/ui/markdown-editor.d.ts +10 -0
  714. package/dist/components/ui/markdown-editor.d.ts.map +1 -1
  715. package/dist/components/ui/markdown-editor.js +23 -7
  716. package/dist/components/ui/numbered-step.d.ts +10 -0
  717. package/dist/components/ui/numbered-step.d.ts.map +1 -1
  718. package/dist/components/ui/numbered-step.js +19 -2
  719. package/dist/components/ui/organization-card.d.ts.map +1 -1
  720. package/dist/components/ui/organization-card.js +30 -5
  721. package/dist/components/ui/page-actions.d.ts.map +1 -1
  722. package/dist/components/ui/page-actions.js +16 -20
  723. package/dist/components/ui/page-loader.d.ts.map +1 -1
  724. package/dist/components/ui/page-loader.js +2 -1
  725. package/dist/components/ui/people-cell.d.ts +4 -0
  726. package/dist/components/ui/people-cell.d.ts.map +1 -1
  727. package/dist/components/ui/people-cell.js +19 -3
  728. package/dist/components/ui/photo-wall.d.ts +1 -1
  729. package/dist/components/ui/photo-wall.d.ts.map +1 -1
  730. package/dist/components/ui/photo-wall.js +13 -3
  731. package/dist/components/ui/product-screen-frame.d.ts.map +1 -1
  732. package/dist/components/ui/product-screen-frame.js +3 -2
  733. package/dist/components/ui/progress-bar.d.ts +9 -0
  734. package/dist/components/ui/progress-bar.d.ts.map +1 -1
  735. package/dist/components/ui/progress-bar.js +34 -14
  736. package/dist/components/ui/progress.d.ts +15 -0
  737. package/dist/components/ui/progress.d.ts.map +1 -1
  738. package/dist/components/ui/progress.js +8 -3
  739. package/dist/components/ui/release-changelog-section.d.ts +22 -1
  740. package/dist/components/ui/release-changelog-section.d.ts.map +1 -1
  741. package/dist/components/ui/release-changelog-section.js +96 -28
  742. package/dist/components/ui/search-input.d.ts.map +1 -1
  743. package/dist/components/ui/search-input.js +11 -3
  744. package/dist/components/ui/searchable-select.d.ts.map +1 -1
  745. package/dist/components/ui/searchable-select.js +17 -4
  746. package/dist/components/ui/skeleton-surface.d.ts +12 -4
  747. package/dist/components/ui/skeleton-surface.d.ts.map +1 -1
  748. package/dist/components/ui/skeleton-surface.js +6 -2
  749. package/dist/components/ui/slack-channel-chip.d.ts +5 -1
  750. package/dist/components/ui/slack-channel-chip.d.ts.map +1 -1
  751. package/dist/components/ui/slack-channel-chip.js +16 -3
  752. package/dist/components/ui/snap-carousel.d.ts +4 -1
  753. package/dist/components/ui/snap-carousel.d.ts.map +1 -1
  754. package/dist/components/ui/snap-carousel.js +2 -0
  755. package/dist/components/ui/square-avatar.d.ts +3 -0
  756. package/dist/components/ui/square-avatar.d.ts.map +1 -1
  757. package/dist/components/ui/square-avatar.js +38 -23
  758. package/dist/components/ui/stacked-rows-panel.d.ts +24 -1
  759. package/dist/components/ui/stacked-rows-panel.d.ts.map +1 -1
  760. package/dist/components/ui/stacked-rows-panel.js +50 -13
  761. package/dist/components/ui/status-badge.d.ts +10 -2
  762. package/dist/components/ui/status-badge.d.ts.map +1 -1
  763. package/dist/components/ui/status-badge.js +14 -0
  764. package/dist/components/ui/status-indicator.d.ts +4 -0
  765. package/dist/components/ui/status-indicator.d.ts.map +1 -1
  766. package/dist/components/ui/status-indicator.js +16 -3
  767. package/dist/components/ui/status-line.d.ts.map +1 -1
  768. package/dist/components/ui/status-line.js +2 -1
  769. package/dist/components/ui/strip-card.d.ts +9 -0
  770. package/dist/components/ui/strip-card.d.ts.map +1 -1
  771. package/dist/components/ui/strip-card.js +57 -39
  772. package/dist/components/ui/tab-navigation.d.ts +26 -2
  773. package/dist/components/ui/tab-navigation.d.ts.map +1 -1
  774. package/dist/components/ui/tab-navigation.js +182 -115
  775. package/dist/components/ui/table/table-header.js +2 -2
  776. package/dist/components/ui/table/table-row.d.ts.map +1 -1
  777. package/dist/components/ui/table/table-row.js +2 -4
  778. package/dist/components/ui/table/table-skeleton.d.ts +6 -1
  779. package/dist/components/ui/table/table-skeleton.d.ts.map +1 -1
  780. package/dist/components/ui/table/table-skeleton.js +38 -50
  781. package/dist/components/ui/table/table.d.ts +1 -1
  782. package/dist/components/ui/table/table.d.ts.map +1 -1
  783. package/dist/components/ui/table/table.js +30 -25
  784. package/dist/components/ui/table/types.d.ts +14 -4
  785. package/dist/components/ui/table/types.d.ts.map +1 -1
  786. package/dist/components/ui/table/utils.d.ts +4 -0
  787. package/dist/components/ui/table/utils.d.ts.map +1 -1
  788. package/dist/components/ui/table/utils.js +4 -0
  789. package/dist/components/ui/tabs.d.ts +22 -1
  790. package/dist/components/ui/tabs.d.ts.map +1 -1
  791. package/dist/components/ui/tabs.js +33 -2
  792. package/dist/components/ui/tag.d.ts +21 -1
  793. package/dist/components/ui/tag.d.ts.map +1 -1
  794. package/dist/components/ui/tag.js +17 -12
  795. package/dist/components/ui/tags-input.d.ts +9 -0
  796. package/dist/components/ui/tags-input.d.ts.map +1 -1
  797. package/dist/components/ui/tags-input.js +41 -10
  798. package/dist/components/ui/textarea.d.ts +17 -1
  799. package/dist/components/ui/textarea.d.ts.map +1 -1
  800. package/dist/components/ui/textarea.js +22 -3
  801. package/dist/components/ui/ticket-info-section.d.ts +0 -1
  802. package/dist/components/ui/ticket-info-section.d.ts.map +1 -1
  803. package/dist/components/ui/timezone-select.d.ts +3 -1
  804. package/dist/components/ui/timezone-select.d.ts.map +1 -1
  805. package/dist/components/ui/timezone-select.js +3 -1
  806. package/dist/components/ui/toggle.d.ts +8 -2
  807. package/dist/components/ui/toggle.d.ts.map +1 -1
  808. package/dist/components/ui/toggle.js +10 -6
  809. package/dist/components/unified-pagination.d.ts +3 -1
  810. package/dist/components/unified-pagination.d.ts.map +1 -1
  811. package/dist/components/unified-pagination.js +7 -1
  812. package/dist/components/user-display.d.ts +11 -0
  813. package/dist/components/user-display.d.ts.map +1 -1
  814. package/dist/components/user-display.js +38 -14
  815. package/dist/components/user-summary-stub.d.ts.map +1 -1
  816. package/dist/components/user-summary-stub.js +7 -14
  817. package/dist/components/vendor-display-button.d.ts +4 -0
  818. package/dist/components/vendor-display-button.d.ts.map +1 -1
  819. package/dist/components/vendor-display-button.js +11 -13
  820. package/dist/components/vendor-icon.d.ts +5 -0
  821. package/dist/components/vendor-icon.d.ts.map +1 -1
  822. package/dist/components/vendor-icon.js +12 -3
  823. package/dist/components/vendor-tag.d.ts +5 -0
  824. package/dist/components/vendor-tag.d.ts.map +1 -1
  825. package/dist/components/vendor-tag.js +13 -5
  826. package/dist/{devices-O5PZ4IR6.cjs → devices-UHHHTCJF.cjs} +43 -55
  827. package/dist/embed-shims/index.cjs +4 -2
  828. package/dist/embed-shims/next-image.cjs +4 -2
  829. package/dist/embed-shims/next-image.d.ts.map +1 -1
  830. package/dist/embed-shims/next-image.js +24 -0
  831. package/dist/{embeddable-chat-YFUCVDMV.cjs → embeddable-chat-YL6ZSTDJ.cjs} +117 -119
  832. package/dist/hooks/index.cjs +12 -12
  833. package/dist/hooks/state/flatten-schema.d.ts +0 -1
  834. package/dist/hooks/state/flatten-schema.d.ts.map +1 -1
  835. package/dist/hooks/state/flatten-schema.js +0 -2
  836. package/dist/hooks/state/index.d.ts +6 -3
  837. package/dist/hooks/state/index.d.ts.map +1 -1
  838. package/dist/hooks/state/index.js +4 -3
  839. package/dist/hooks/state/url-converter.d.ts +1 -1
  840. package/dist/hooks/state/url-converter.d.ts.map +1 -1
  841. package/dist/hooks/state/url-converter.js +1 -2
  842. package/dist/hooks/state/use-api-params.d.ts +1 -3
  843. package/dist/hooks/state/use-api-params.d.ts.map +1 -1
  844. package/dist/hooks/state/use-api-params.js +1 -5
  845. package/dist/hooks/ui/index.d.ts +1 -0
  846. package/dist/hooks/ui/index.d.ts.map +1 -1
  847. package/dist/hooks/ui/use-image-edge-color.d.ts +1 -1
  848. package/dist/hooks/ui/use-image-edge-color.d.ts.map +1 -1
  849. package/dist/hooks/ui/use-image-edge-color.js +3 -1
  850. package/dist/hooks/ui/use-onboarding-state.d.ts +0 -1
  851. package/dist/hooks/ui/use-onboarding-state.d.ts.map +1 -1
  852. package/dist/hooks/use-downloads.d.ts +1 -1
  853. package/dist/hooks/use-downloads.d.ts.map +1 -1
  854. package/dist/hooks/use-downloads.js +8 -1
  855. package/dist/hooks/use-meeting-booking.d.ts.map +1 -1
  856. package/dist/hooks/use-meeting-booking.js +3 -0
  857. package/dist/hooks/use-self-fetch.d.ts +1 -1
  858. package/dist/hooks/use-self-fetch.d.ts.map +1 -1
  859. package/dist/hooks/use-self-fetch.js +7 -4
  860. package/dist/hooks/use-toast.d.ts +1 -1
  861. package/dist/index.cjs +331 -103
  862. package/dist/{knowledge-4OU73KTO.cjs → knowledge-TJKHM7W4.cjs} +36 -40
  863. package/dist/{logs-R6ZH32UU.cjs → logs-B3KCCMPE.cjs} +44 -48
  864. package/dist/nats/index.d.ts +1 -0
  865. package/dist/nats/index.d.ts.map +1 -1
  866. package/dist/nats/nats-provider.d.ts +0 -1
  867. package/dist/nats/nats-provider.d.ts.map +1 -1
  868. package/dist/nats/nats.d.ts +0 -1
  869. package/dist/nats/nats.d.ts.map +1 -1
  870. package/dist/nats/use-nats-subscription.d.ts +2 -1
  871. package/dist/nats/use-nats-subscription.d.ts.map +1 -1
  872. package/dist/{policies-XN4TDX3G.cjs → policies-ZTUIXSYZ.cjs} +39 -43
  873. package/dist/{remote-session-7NSC7DI5.cjs → remote-session-PPA5SXX7.cjs} +18 -21
  874. package/dist/schemas/meeting-booking-schema.cjs +4 -0
  875. package/dist/schemas/meeting-booking-schema.d.ts +8 -0
  876. package/dist/schemas/meeting-booking-schema.d.ts.map +1 -1
  877. package/dist/schemas/meeting-booking-schema.js +4 -0
  878. package/dist/{scripts-53VHKMY3.cjs → scripts-FIFAHBS6.cjs} +42 -46
  879. package/dist/{software-update-KLJSMAUM.cjs → software-update-62PLASQU.cjs} +41 -45
  880. package/dist/styles/component-sizes.d.ts +96 -0
  881. package/dist/styles/component-sizes.d.ts.map +1 -0
  882. package/dist/styles/component-sizes.js +77 -0
  883. package/dist/{tickets-board-DXMF7IKL.cjs → tickets-board-G3WBH4SV.cjs} +18 -20
  884. package/dist/types/announcement.d.ts +0 -1
  885. package/dist/types/announcement.d.ts.map +1 -1
  886. package/dist/types/blog.d.ts +0 -1
  887. package/dist/types/blog.d.ts.map +1 -1
  888. package/dist/types/case-study.d.ts +2 -2
  889. package/dist/types/case-study.d.ts.map +1 -1
  890. package/dist/types/customer-interview-ai.types.d.ts +1 -2
  891. package/dist/types/customer-interview-ai.types.d.ts.map +1 -1
  892. package/dist/types/customer-interview.d.ts +0 -1
  893. package/dist/types/customer-interview.d.ts.map +1 -1
  894. package/dist/types/index.d.ts +2 -0
  895. package/dist/types/index.d.ts.map +1 -1
  896. package/dist/types/product-release.d.ts +3 -0
  897. package/dist/types/product-release.d.ts.map +1 -1
  898. package/dist/types/stack.d.ts +0 -2
  899. package/dist/types/stack.d.ts.map +1 -1
  900. package/dist/utils/after-page-load.d.ts +8 -0
  901. package/dist/utils/after-page-load.d.ts.map +1 -0
  902. package/dist/utils/after-page-load.js +24 -0
  903. package/dist/utils/announcement-storage.d.ts +0 -3
  904. package/dist/utils/announcement-storage.d.ts.map +1 -1
  905. package/dist/utils/announcement-storage.js +1 -3
  906. package/dist/utils/dev-sections/openframe-dev-sections.d.ts +11 -0
  907. package/dist/utils/dev-sections/openframe-dev-sections.d.ts.map +1 -1
  908. package/dist/utils/dev-sections/openframe-dev-sections.js +5 -0
  909. package/dist/utils/index.cjs +43 -0
  910. package/dist/utils/index.d.ts +8 -2
  911. package/dist/utils/index.d.ts.map +1 -1
  912. package/dist/utils/index.js +9 -6
  913. package/dist/utils/markdown-heading-id.d.ts +0 -19
  914. package/dist/utils/markdown-heading-id.d.ts.map +1 -1
  915. package/dist/utils/markdown-heading-id.js +2 -5
  916. package/dist/utils/ods-color-utils.d.ts +0 -1
  917. package/dist/utils/ods-color-utils.d.ts.map +1 -1
  918. package/dist/utils/ods-color-utils.js +0 -2
  919. package/dist/utils/own-click.d.ts +4 -0
  920. package/dist/utils/own-click.d.ts.map +1 -0
  921. package/dist/utils/own-click.js +14 -0
  922. package/dist/utils/platform-config.d.ts +0 -1
  923. package/dist/utils/platform-config.d.ts.map +1 -1
  924. package/dist/utils/platform-config.js +0 -26
  925. package/dist/utils/source-icons.d.ts +2 -2
  926. package/dist/{video-file-player-QZ3YOLHO.cjs → video-file-player-COXRF4M5.cjs} +13 -13
  927. package/eslint-config/base.js +2 -0
  928. package/eslint-config/re-exports.js +56 -0
  929. package/package.json +1 -1
  930. package/src/ODS_TOKEN_RULES.md +2 -2
  931. package/src/chat-protocol/decode.ts +0 -5
  932. package/src/chat-protocol/index.ts +1 -0
  933. package/src/components/agent-identity.tsx +0 -2
  934. package/src/components/agent-mark.tsx +13 -4
  935. package/src/components/authors/author-detail-view.tsx +90 -44
  936. package/src/components/case-studies/entity-quotes-panel.tsx +50 -3
  937. package/src/components/case-studies/index.ts +2 -2
  938. package/src/components/case-studies/quote-cards-strip.tsx +75 -10
  939. package/src/components/categories-cart.tsx +82 -38
  940. package/src/components/category-card.tsx +1 -1
  941. package/src/components/chat/chat-attachment-bar.tsx +1 -1
  942. package/src/components/chat/chat-container.tsx +2 -1
  943. package/src/components/chat/chat-ticket-list.tsx +0 -1
  944. package/src/components/chat/chat-turn.tsx +124 -18
  945. package/src/components/chat/embeddable-chat.tsx +5 -5
  946. package/src/components/chat/entity-cards/admin-content-card-grid.tsx +1 -51
  947. package/src/components/chat/entity-cards/admin-content-card.tsx +80 -15
  948. package/src/components/chat/entity-cards/blog-card.tsx +71 -41
  949. package/src/components/chat/entity-cards/campaign-card-admin.tsx +4 -17
  950. package/src/components/chat/entity-cards/case-study-card.tsx +129 -68
  951. package/src/components/chat/entity-cards/chat-ticket-item.tsx +34 -29
  952. package/src/components/chat/entity-cards/customer-interview-card.tsx +61 -45
  953. package/src/components/chat/entity-cards/data-room-doc-card.tsx +11 -18
  954. package/src/components/chat/entity-cards/design-doc-card.tsx +48 -34
  955. package/src/components/chat/entity-cards/dispatch.tsx +9 -13
  956. package/src/components/chat/entity-cards/employee-entry-card.tsx +5 -5
  957. package/src/components/chat/entity-cards/entity-author-card.tsx +138 -32
  958. package/src/components/chat/entity-cards/entity-portrait-card.tsx +61 -16
  959. package/src/components/chat/entity-cards/generic-entity-card.tsx +11 -19
  960. package/src/components/chat/entity-cards/github-activity-card.tsx +14 -30
  961. package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +11 -23
  962. package/src/components/chat/entity-cards/index.ts +20 -7
  963. package/src/components/chat/entity-cards/investor-update-card.tsx +42 -35
  964. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +78 -64
  965. package/src/components/chat/entity-cards/program-card.tsx +96 -66
  966. package/src/components/chat/entity-cards/roadmap-card.tsx +85 -65
  967. package/src/components/chat/entity-cards/roadmap-vote-button.tsx +12 -1
  968. package/src/components/chat/entity-cards/slack-message-card.tsx +19 -26
  969. package/src/components/chat/hooks/index.ts +12 -2
  970. package/src/components/chat/hooks/use-ask-prompts.ts +5 -1
  971. package/src/components/chat/hooks/use-chat-dialog-manager.ts +1 -1
  972. package/src/components/chat/hooks/use-chat-history-hydration.ts +1 -1
  973. package/src/components/chat/hooks/use-chat.ts +0 -3
  974. package/src/components/chat/hooks/use-nats-chat-adapter.ts +0 -20
  975. package/src/components/chat/hooks/use-proxied-image-url.ts +27 -20
  976. package/src/components/chat/hooks/use-slash-commands.ts +1 -7
  977. package/src/components/chat/hooks/use-sse-chat-adapter.ts +4 -18
  978. package/src/components/chat/index.ts +22 -5
  979. package/src/components/chat/stream/chat-stream-reducer.ts +3 -2
  980. package/src/components/chat/types/entities/index.ts +24 -4
  981. package/src/components/chat/types/entities/investor-update.ts +1 -1
  982. package/src/components/chat/types/entities/program-types.ts +2 -5
  983. package/src/components/chat/utils/compact-card-classes.ts +15 -2
  984. package/src/components/chat/utils/compact-card-skeleton.tsx +111 -0
  985. package/src/components/chat/utils/icon-library.tsx +0 -2
  986. package/src/components/chat/utils/index.ts +5 -3
  987. package/src/components/chat/utils/scroll-anchor.ts +0 -2
  988. package/src/components/chat/utils/source-row-cta.ts +1 -5
  989. package/src/components/comment-card.tsx +118 -19
  990. package/src/components/comment-thread.tsx +130 -17
  991. package/src/components/docs/doc-viewer.tsx +33 -31
  992. package/src/components/docs/skeletons.tsx +37 -49
  993. package/src/components/docs/use-document-tree.ts +11 -7
  994. package/src/components/embeds/embed-iframe.tsx +5 -0
  995. package/src/components/embeds/index.ts +1 -1
  996. package/src/components/embeds/markdown-image.tsx +6 -2
  997. package/src/components/embeds/og-link-preview.tsx +155 -81
  998. package/src/components/embeds/rich-markdown-runtime.tsx +10 -6
  999. package/src/components/faq/faq-document-page.tsx +8 -0
  1000. package/src/components/faq/faq-section.tsx +249 -70
  1001. package/src/components/faq/index.ts +12 -1
  1002. package/src/components/faq-accordion.tsx +67 -7
  1003. package/src/components/features/ai-enrich/AIStatusIndicator.tsx +2 -1
  1004. package/src/components/features/approval-level.tsx +71 -8
  1005. package/src/components/features/capability-explorer.tsx +59 -61
  1006. package/src/components/features/cards-strip.tsx +54 -12
  1007. package/src/components/features/command-box.tsx +139 -10
  1008. package/src/components/features/conversation-card.tsx +242 -16
  1009. package/src/components/features/devices/device-selector/device-selector.tsx +1 -0
  1010. package/src/components/features/devices/devices-panel-view.tsx +2 -2
  1011. package/src/components/features/entity-tag-badges.tsx +143 -10
  1012. package/src/components/features/entity-video-section.tsx +52 -14
  1013. package/src/components/features/figma-prototype-viewer.tsx +4 -8
  1014. package/src/components/features/index.ts +11 -0
  1015. package/src/components/features/knowledge-base/index.ts +2 -5
  1016. package/src/components/features/knowledge-base/knowledge-base-article-view.tsx +0 -2
  1017. package/src/components/features/model-token-rates.tsx +64 -84
  1018. package/src/components/features/notifications/approval-request-notification-tile.tsx +9 -11
  1019. package/src/components/features/notifications/notification-tile.tsx +58 -23
  1020. package/src/components/features/paths-display.tsx +73 -6
  1021. package/src/components/features/platform-badge.tsx +41 -1
  1022. package/src/components/features/push-button-selector.tsx +167 -64
  1023. package/src/components/features/remote-session/index.ts +2 -2
  1024. package/src/components/features/remote-session/remote-desktop-chat-message-row.tsx +24 -3
  1025. package/src/components/features/remote-session/remote-desktop-chat-panel.tsx +19 -5
  1026. package/src/components/features/remote-session/remote-desktop-view.tsx +47 -38
  1027. package/src/components/features/remote-session/remote-session-chat-panel.tsx +1 -1
  1028. package/src/components/features/status-filter-component.tsx +105 -11
  1029. package/src/components/features/use-video-warmup.ts +0 -7
  1030. package/src/components/features/use-walkthrough-video.ts +5 -1
  1031. package/src/components/features/video-bites-strip.tsx +137 -22
  1032. package/src/components/features/video-hover-preview.tsx +2 -1
  1033. package/src/components/features/video.tsx +16 -12
  1034. package/src/components/features/walkthrough-video.tsx +17 -3
  1035. package/src/components/help-center-pages/download-apps-page.tsx +86 -32
  1036. package/src/components/help-center-pages/trust-center-page.tsx +132 -66
  1037. package/src/components/help-center-pages/trust-center-sections.tsx +205 -148
  1038. package/src/components/icon-display.tsx +9 -0
  1039. package/src/components/index.ts +11 -2
  1040. package/src/components/interactive-wrapper.tsx +2 -1
  1041. package/src/components/layout/list-page-layout.tsx +4 -5
  1042. package/src/components/layout/page-container.tsx +59 -29
  1043. package/src/components/layout/page-data-sync.tsx +40 -5
  1044. package/src/components/layout/page-heading.tsx +84 -1
  1045. package/src/components/layout/page-layout.tsx +5 -5
  1046. package/src/components/layout/title-block.tsx +72 -17
  1047. package/src/components/loading/category-vendor-selector-skeleton.tsx +4 -0
  1048. package/src/components/loading/deprecated-layout-skeletons.tsx +133 -0
  1049. package/src/components/loading/device-card-skeleton.tsx +4 -4
  1050. package/src/components/loading/index.ts +11 -13
  1051. package/src/components/loading/loading-region.tsx +16 -9
  1052. package/src/components/loading/msp-profile-form-skeleton.tsx +3 -0
  1053. package/src/components/loading/organization-card-skeleton.tsx +45 -71
  1054. package/src/components/loading/page-layout-skeleton.tsx +1 -641
  1055. package/src/components/loading/settings-form-skeleton.tsx +3 -0
  1056. package/src/components/loading/unified-skeleton.tsx +101 -11
  1057. package/src/components/log-severity-dot.tsx +17 -14
  1058. package/src/components/logs-list.tsx +43 -29
  1059. package/src/components/media-carousel.tsx +0 -4
  1060. package/src/components/meeting-scheduler/booking-form.tsx +245 -35
  1061. package/src/components/meeting-scheduler/context-panel.tsx +96 -30
  1062. package/src/components/meeting-scheduler/directory.tsx +70 -37
  1063. package/src/components/meeting-scheduler/index.tsx +136 -132
  1064. package/src/components/meeting-scheduler/modal-header.tsx +45 -31
  1065. package/src/components/meeting-scheduler/slot-picker.tsx +20 -8
  1066. package/src/components/metric-value.tsx +19 -2
  1067. package/src/components/msp-display.tsx +25 -10
  1068. package/src/components/navigation/app-layout.tsx +0 -3
  1069. package/src/components/navigation/index.ts +15 -3
  1070. package/src/components/navigation/mingo-ai-button.tsx +3 -4
  1071. package/src/components/navigation/mobile-nav-sheet.tsx +0 -2
  1072. package/src/components/navigation/multi-level-navigation.tsx +152 -35
  1073. package/src/components/navigation/page-section-bar.tsx +132 -0
  1074. package/src/components/navigation/sticky-section-nav.tsx +109 -18
  1075. package/src/components/navigation/ticket-alerts-button.tsx +1 -1
  1076. package/src/components/onboarding-guides/hooks/use-onboarding-guides.ts +8 -1
  1077. package/src/components/onboarding-guides/index.ts +5 -2
  1078. package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +166 -67
  1079. package/src/components/onboarding-guides/onboarding-guides-catalog-skeleton.tsx +38 -51
  1080. package/src/components/onboarding-guides/onboarding-guides-catalog-view.tsx +91 -45
  1081. package/src/components/pagination.tsx +103 -48
  1082. package/src/components/persistent-filter-controls.tsx +0 -7
  1083. package/src/components/persistent-pagination.tsx +6 -1
  1084. package/src/components/platform/ToolBadge.tsx +57 -10
  1085. package/src/components/platform/index.ts +2 -2
  1086. package/src/components/platform/tool-badge-mark.ts +6 -0
  1087. package/src/components/product-demo/fixtures/devices.ts +0 -3
  1088. package/src/components/product-demo/product-screen.tsx +42 -23
  1089. package/src/components/product-demo/screen-loading.tsx +20 -0
  1090. package/src/components/product-demo/screens/devices-view.tsx +58 -0
  1091. package/src/components/product-demo/screens/devices.tsx +9 -29
  1092. package/src/components/related-content/card-registry.tsx +20 -6
  1093. package/src/components/related-content/index.ts +3 -1
  1094. package/src/components/related-content/related-content-section.tsx +222 -46
  1095. package/src/components/results-count.tsx +37 -6
  1096. package/src/components/shared/article-author-byline.tsx +65 -41
  1097. package/src/components/shared/delivery/delivery-lists.tsx +15 -2
  1098. package/src/components/shared/delivery/delivery-row.tsx +55 -9
  1099. package/src/components/shared/delivery/delivery-table.tsx +19 -46
  1100. package/src/components/shared/detail-page-skeleton.tsx +15 -1
  1101. package/src/components/shared/dev-section/dev-card-row.tsx +45 -28
  1102. package/src/components/shared/dev-section/dev-section-view.tsx +1 -1
  1103. package/src/components/shared/doc-search/use-doc-search.ts +1 -1
  1104. package/src/components/shared/legal-document/index.ts +2 -0
  1105. package/src/components/shared/legal-document/legal-document-page.tsx +41 -21
  1106. package/src/components/shared/legal-document/use-legal-docs.ts +5 -1
  1107. package/src/components/shared/legal-document/use-legal-documents.ts +4 -1
  1108. package/src/components/shared/media-gallery-strip.tsx +35 -3
  1109. package/src/components/shared/onboarding/index.ts +2 -5
  1110. package/src/components/shared/product-release/index.ts +1 -1
  1111. package/src/components/shared/product-release/product-release-card-classes.ts +28 -0
  1112. package/src/components/shared/product-release/product-release-card-skeleton.tsx +62 -56
  1113. package/src/components/shared/product-release/product-release-card.tsx +62 -44
  1114. package/src/components/shared/product-release/product-releases-view.tsx +32 -24
  1115. package/src/components/shared/product-release/release-detail-page.tsx +229 -134
  1116. package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +20 -6
  1117. package/src/components/shared/roadmap/roadmap-grid.tsx +59 -9
  1118. package/src/components/shared/roadmap/roadmap-view.tsx +3 -3
  1119. package/src/components/social-icon-row.tsx +14 -8
  1120. package/src/components/tickets/help-center-list.tsx +6 -2
  1121. package/src/components/tickets/hooks/use-ticket-actions.ts +0 -4
  1122. package/src/components/tickets/index.ts +1 -2
  1123. package/src/components/tickets/ticket-center.tsx +189 -75
  1124. package/src/components/tickets/types.ts +0 -9
  1125. package/src/components/toggle-group.tsx +4 -1
  1126. package/src/components/tool-icon.tsx +2 -1
  1127. package/src/components/ui/analyzing-state.tsx +11 -6
  1128. package/src/components/ui/announcement-bar-view.tsx +7 -1
  1129. package/src/components/ui/autocomplete.tsx +58 -6
  1130. package/src/components/ui/avatar-stack.tsx +42 -3
  1131. package/src/components/ui/badge.tsx +16 -1
  1132. package/src/components/ui/benefit-list.tsx +41 -6
  1133. package/src/components/ui/button/button-styles.ts +48 -0
  1134. package/src/components/ui/button/button.tsx +5 -39
  1135. package/src/components/ui/button/index.ts +1 -0
  1136. package/src/components/ui/card.tsx +28 -13
  1137. package/src/components/ui/checkbox.tsx +6 -1
  1138. package/src/components/ui/compliance-badge.tsx +6 -2
  1139. package/src/components/ui/cursor-pagination.tsx +28 -3
  1140. package/src/components/ui/dashboard-info-card.tsx +29 -11
  1141. package/src/components/ui/data-attribution.tsx +42 -12
  1142. package/src/components/ui/data-table/data-table-body.tsx +11 -2
  1143. package/src/components/ui/data-table/data-table-row-count.tsx +19 -1
  1144. package/src/components/ui/data-table/data-table-row.tsx +4 -9
  1145. package/src/components/ui/data-table/data-table-skeleton.tsx +7 -7
  1146. package/src/components/ui/data-table/index.ts +2 -1
  1147. package/src/components/ui/date-picker.tsx +0 -6
  1148. package/src/components/ui/entity-image.tsx +27 -4
  1149. package/src/components/ui/error-state.tsx +8 -1
  1150. package/src/components/ui/feature-card.tsx +77 -12
  1151. package/src/components/ui/feature-list.tsx +72 -8
  1152. package/src/components/ui/field-wrapper.tsx +13 -1
  1153. package/src/components/ui/filter-checkbox-item.tsx +57 -6
  1154. package/src/components/ui/filter-modal.tsx +2 -6
  1155. package/src/components/ui/filter-pill-row.tsx +81 -27
  1156. package/src/components/ui/incident-feed.tsx +20 -11
  1157. package/src/components/ui/index.ts +21 -1
  1158. package/src/components/ui/info-card-row.tsx +74 -19
  1159. package/src/components/ui/info-card.tsx +87 -13
  1160. package/src/components/ui/input-styles.ts +6 -0
  1161. package/src/components/ui/input.tsx +4 -1
  1162. package/src/components/ui/layout-hold.tsx +9 -7
  1163. package/src/components/ui/leader-row.tsx +58 -4
  1164. package/src/components/ui/loading-scope.tsx +54 -0
  1165. package/src/components/ui/markdown/base-components.tsx +18 -9
  1166. package/src/components/ui/markdown/engine.tsx +131 -7
  1167. package/src/components/ui/markdown/index.ts +8 -6
  1168. package/src/components/ui/markdown/mermaid-diagram.tsx +7 -4
  1169. package/src/components/ui/markdown/rich/embed-overrides.tsx +11 -1
  1170. package/src/components/ui/markdown/rich/rich-markdown-renderer.tsx +26 -1
  1171. package/src/components/ui/markdown/simple-markdown-renderer.tsx +0 -3
  1172. package/src/components/ui/markdown-editor.tsx +83 -50
  1173. package/src/components/ui/numbered-step.tsx +32 -2
  1174. package/src/components/ui/organization-card.tsx +32 -7
  1175. package/src/components/ui/page-actions.tsx +25 -29
  1176. package/src/components/ui/page-loader.tsx +2 -1
  1177. package/src/components/ui/people-cell.tsx +25 -2
  1178. package/src/components/ui/photo-wall.tsx +14 -3
  1179. package/src/components/ui/product-screen-frame.tsx +14 -3
  1180. package/src/components/ui/progress-bar.tsx +26 -3
  1181. package/src/components/ui/progress.tsx +14 -3
  1182. package/src/components/ui/release-changelog-section.tsx +153 -20
  1183. package/src/components/ui/search-input.tsx +23 -3
  1184. package/src/components/ui/searchable-select.tsx +26 -6
  1185. package/src/components/ui/skeleton-surface.ts +16 -4
  1186. package/src/components/ui/slack-channel-chip.tsx +23 -3
  1187. package/src/components/ui/snap-carousel.tsx +5 -0
  1188. package/src/components/ui/square-avatar.tsx +41 -23
  1189. package/src/components/ui/stacked-rows-panel.tsx +88 -15
  1190. package/src/components/ui/status-badge.tsx +18 -1
  1191. package/src/components/ui/status-indicator.tsx +21 -2
  1192. package/src/components/ui/status-line.tsx +2 -1
  1193. package/src/components/ui/strip-card.tsx +73 -23
  1194. package/src/components/ui/tab-navigation.tsx +141 -28
  1195. package/src/components/ui/table/table-header.tsx +2 -2
  1196. package/src/components/ui/table/table-row.tsx +2 -4
  1197. package/src/components/ui/table/table-skeleton.tsx +48 -54
  1198. package/src/components/ui/table/table.tsx +36 -19
  1199. package/src/components/ui/table/types.ts +12 -4
  1200. package/src/components/ui/table/utils.ts +5 -0
  1201. package/src/components/ui/tabs.tsx +64 -4
  1202. package/src/components/ui/tag.tsx +33 -13
  1203. package/src/components/ui/tags-input.tsx +48 -10
  1204. package/src/components/ui/textarea.tsx +33 -3
  1205. package/src/components/ui/ticket-info-section.tsx +0 -2
  1206. package/src/components/ui/timezone-select.tsx +4 -0
  1207. package/src/components/ui/toggle.tsx +11 -5
  1208. package/src/components/unified-pagination.tsx +15 -0
  1209. package/src/components/user-display.tsx +53 -12
  1210. package/src/components/user-summary-stub.tsx +7 -11
  1211. package/src/components/vendor-display-button.tsx +15 -12
  1212. package/src/components/vendor-icon.tsx +13 -2
  1213. package/src/components/vendor-tag.tsx +18 -4
  1214. package/src/embed-shims/next-image.tsx +36 -1
  1215. package/src/hooks/state/flatten-schema.ts +0 -4
  1216. package/src/hooks/state/index.ts +5 -3
  1217. package/src/hooks/state/url-converter.ts +2 -2
  1218. package/src/hooks/state/use-api-params.ts +2 -10
  1219. package/src/hooks/ui/index.ts +1 -0
  1220. package/src/hooks/ui/use-image-edge-color.ts +4 -1
  1221. package/src/hooks/ui/use-onboarding-state.ts +0 -2
  1222. package/src/hooks/use-downloads.ts +9 -1
  1223. package/src/hooks/use-meeting-booking.ts +4 -0
  1224. package/src/hooks/use-self-fetch.ts +12 -4
  1225. package/src/nats/index.ts +1 -0
  1226. package/src/nats/nats-provider.tsx +0 -2
  1227. package/src/nats/nats.ts +0 -2
  1228. package/src/nats/use-nats-subscription.ts +2 -1
  1229. package/src/schemas/meeting-booking-schema.ts +11 -0
  1230. package/src/styles/component-sizes.ts +105 -0
  1231. package/src/types/announcement.ts +0 -3
  1232. package/src/types/blog.ts +0 -4
  1233. package/src/types/case-study.ts +2 -2
  1234. package/src/types/customer-interview-ai.types.ts +1 -4
  1235. package/src/types/customer-interview.ts +0 -11
  1236. package/src/types/index.ts +2 -0
  1237. package/src/types/product-release.ts +4 -2
  1238. package/src/types/stack.ts +0 -4
  1239. package/src/utils/after-page-load.ts +30 -0
  1240. package/src/utils/announcement-storage.ts +0 -7
  1241. package/src/utils/dev-sections/openframe-dev-sections.ts +11 -0
  1242. package/src/utils/index.ts +7 -9
  1243. package/src/utils/markdown-heading-id.ts +0 -28
  1244. package/src/utils/ods-color-utils.ts +0 -4
  1245. package/src/utils/own-click.ts +25 -0
  1246. package/src/utils/platform-config.tsx +0 -17
  1247. package/src/utils/source-icons.ts +2 -2
  1248. package/dist/chunk-3ATAYP36.cjs +0 -19
  1249. package/dist/chunk-3LU4UFPS.cjs +0 -14
  1250. package/dist/chunk-H3RYUTND.cjs +0 -142
  1251. package/dist/chunk-JB424IQK.cjs +0 -404
  1252. package/dist/chunk-L4UI63K6.cjs +0 -103
  1253. package/dist/chunk-NS64LMVE.cjs +0 -470
  1254. package/dist/chunk-OF336YWG.cjs +0 -20
  1255. package/dist/chunk-RB6BSE3O.cjs +0 -21
  1256. package/dist/chunk-UI2TLQWA.cjs +0 -163
  1257. package/dist/components/chat/entity-cards/product-release-card.d.ts +0 -12
  1258. package/dist/components/chat/entity-cards/product-release-card.d.ts.map +0 -1
  1259. package/dist/components/chat/entity-cards/product-release-card.js +0 -8
  1260. package/dist/components/chat/hooks/use-embedded-chat.d.ts +0 -15
  1261. package/dist/components/chat/hooks/use-embedded-chat.d.ts.map +0 -1
  1262. package/dist/components/chat/hooks/use-embedded-chat.js +0 -6
  1263. package/dist/components/chat/types/entities/blog.d.ts +0 -14
  1264. package/dist/components/chat/types/entities/blog.d.ts.map +0 -1
  1265. package/dist/components/chat/types/entities/blog.js +0 -1
  1266. package/dist/components/chat/types/entities/case-study.d.ts +0 -10
  1267. package/dist/components/chat/types/entities/case-study.d.ts.map +0 -1
  1268. package/dist/components/chat/types/entities/case-study.js +0 -1
  1269. package/dist/components/chat/types/entities/content-ref.d.ts +0 -8
  1270. package/dist/components/chat/types/entities/content-ref.d.ts.map +0 -1
  1271. package/dist/components/chat/types/entities/content-ref.js +0 -1
  1272. package/dist/components/chat/types/entities/customer-interview.d.ts +0 -10
  1273. package/dist/components/chat/types/entities/customer-interview.d.ts.map +0 -1
  1274. package/dist/components/chat/types/entities/customer-interview.js +0 -1
  1275. package/dist/components/chat/utils/source-icons.d.ts +0 -8
  1276. package/dist/components/chat/utils/source-icons.d.ts.map +0 -1
  1277. package/dist/components/chat/utils/source-icons.js +0 -16
  1278. package/dist/utils/image-proxy-stub.d.ts +0 -14
  1279. package/dist/utils/image-proxy-stub.d.ts.map +0 -1
  1280. package/dist/utils/image-proxy-stub.js +0 -22
  1281. package/src/components/chat/entity-cards/product-release-card.tsx +0 -19
  1282. package/src/components/chat/hooks/use-embedded-chat.ts +0 -25
  1283. package/src/components/chat/types/entities/blog.ts +0 -27
  1284. package/src/components/chat/types/entities/case-study.ts +0 -10
  1285. package/src/components/chat/types/entities/content-ref.ts +0 -7
  1286. package/src/components/chat/types/entities/customer-interview.ts +0 -15
  1287. package/src/components/chat/utils/source-icons.ts +0 -14
  1288. package/src/utils/image-proxy-stub.ts +0 -40
@@ -3,7 +3,7 @@
3
3
  import React from 'react';
4
4
  import { cn } from '../../utils/cn';
5
5
  import { Chevron02DownIcon } from '../icons-v2-generated';
6
- import { UnifiedSkeleton } from '../loading/unified-skeleton';
6
+ import { InteractiveSkeleton, UnifiedSkeleton } from '../loading/unified-skeleton';
7
7
  import { ActionsMenuDropdown, type ActionsMenuGroup, type ActionsMenuItem } from './actions-menu';
8
8
  import type { ButtonProps, SplitButtonIconAction } from './button';
9
9
  import { Button, SplitButton } from './button';
@@ -247,15 +247,6 @@ export interface PageActionsProps {
247
247
 
248
248
  const ACTIONS_GAP = 'gap-[var(--spacing-system-xs)]';
249
249
 
250
- /** Matches `Button` size="icon" / size="default" exactly, so a placeholder and the
251
- * button that replaces it occupy the same box at both breakpoints. `rounded-md`
252
- * is the same token `Button` itself uses — a raw `6px` would agree today and
253
- * drift the moment a platform overrides `--radius`. */
254
- const SKELETON_HEIGHT = 'h-11 md:h-12';
255
- const SKELETON_ICON_WIDTH = 'w-11 md:w-12';
256
- const SKELETON_LABEL_WIDTH = 'w-[120px] md:w-[140px]';
257
- const SKELETON_RADIUS = 'rounded-md';
258
-
259
250
  /**
260
251
  * Placeholders for actions whose SHAPE isn't known yet — the page is still
261
252
  * loading the record that decides which actions exist (e.g. an archived entity
@@ -297,24 +288,33 @@ function ActionSkeletons({
297
288
  // stretches only labelled buttons (`fullWidth: !!action.label`), so an
298
289
  // icon action keeps its square box there too.
299
290
  const isIconOnly = action ? !action.label || !!action.iconOnlyOnDesktop : emptyFallback === 'icon';
300
- return (
301
- <UnifiedSkeleton
302
- // Static placeholder list — index IS the identity here.
303
- key={`action-skeleton-${idx}`}
304
- className={cn(
305
- SKELETON_HEIGHT,
306
- SKELETON_RADIUS,
307
- isIconOnly ? SKELETON_ICON_WIDTH : fullWidth ? 'flex-1' : SKELETON_LABEL_WIDTH,
308
- )}
309
- />
310
- );
291
+ // Static placeholder list — index IS the identity here.
292
+ const key = `action-skeleton-${idx}`;
293
+ // The square button's own size (`Button size="icon"`).
294
+ if (isIconOnly) return <InteractiveSkeleton.Button key={key} size="icon" />;
295
+ // A labelled action is the button it will render (its label is the caller's copy), drawn invisible under one
296
+ // bar, so the placeholder is that button's box at every breakpoint. Not a control while it loads.
297
+ if (action) {
298
+ return (
299
+ <span key={key} inert aria-hidden className={cn('relative inline-flex', fullWidth && 'flex-1')}>
300
+ <span className={cn('invisible inline-flex', fullWidth && 'flex-1')}>
301
+ {renderRawActionButton(action, { fullWidth })}
302
+ </span>
303
+ <UnifiedSkeleton className="absolute inset-0 h-full" />
304
+ </span>
305
+ );
306
+ }
307
+ // An unknown set that settles into a labelled button: the default button's size.
308
+ return <InteractiveSkeleton.Button key={key} size="default" className={fullWidth ? 'flex-1' : undefined} />;
311
309
  })}
312
310
  </>
313
311
  );
314
312
  }
315
313
 
316
314
  /** Mobile placeholder for the variants that collapse to ONE trigger (icon button or "…"). */
317
- const MOBILE_TRIGGER_SKELETON_CLASS = cn(SKELETON_HEIGHT, SKELETON_ICON_WIDTH, SKELETON_RADIUS);
315
+ function MobileTriggerSkeleton() {
316
+ return <InteractiveSkeleton.Button size="icon" />;
317
+ }
318
318
 
319
319
  export function PageActions({
320
320
  variant = 'icon-buttons',
@@ -394,7 +394,7 @@ function IconButtonsVariant({
394
394
  {/* Mobile: single icon button OR all actions merged into one "..." menu */}
395
395
  <div className={cn('flex content-md:hidden', className)}>
396
396
  {loading ? (
397
- <UnifiedSkeleton className={MOBILE_TRIGGER_SKELETON_CLASS} />
397
+ <MobileTriggerSkeleton />
398
398
  ) : useSingleActionMobile && singleAction ? (
399
399
  renderActionButton(singleAction, { iconOnly: true })
400
400
  ) : hasMobileMenuItems ? (
@@ -448,11 +448,7 @@ function PrimaryButtonsVariant({
448
448
  </div>
449
449
 
450
450
  <div className={cn('hidden items-center md:content-max-md:flex', ACTIONS_GAP, className)}>
451
- {loading ? (
452
- <UnifiedSkeleton className={MOBILE_TRIGGER_SKELETON_CLASS} />
453
- ) : (
454
- <CompactPrimaryActions actions={desktopActions} />
455
- )}
451
+ {loading ? <MobileTriggerSkeleton /> : <CompactPrimaryActions actions={desktopActions} />}
456
452
  </div>
457
453
 
458
454
  <MobileBottomActions actions={sortedActions} loading={loading} />
@@ -503,7 +499,7 @@ function MenuPrimaryVariant({
503
499
 
504
500
  <div className={cn('flex content-md:hidden', className)}>
505
501
  {loading ? (
506
- <UnifiedSkeleton className={MOBILE_TRIGGER_SKELETON_CLASS} />
502
+ <MobileTriggerSkeleton />
507
503
  ) : hasMobileMenuItems || selector ? (
508
504
  // The selector rides into the menu as its header row: on mobile the
509
505
  // title row has no room for it, and hiding it entirely (what
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { cn } from '../../utils/cn';
4
4
  import { OpenframeLogoIcon } from '../icons-v2-generated/logos/openframe-logo-icon';
5
+ import { LIVE_PULSE_CLASS } from './skeleton-surface';
5
6
 
6
7
  export interface PageLoaderProps {
7
8
  /**
@@ -28,7 +29,7 @@ function LoaderMark() {
28
29
  <div className="relative h-6 w-6">
29
30
  <OpenframeLogoIcon
30
31
  secondaryColor="var(--color-text-tertiary)"
31
- className="h-6 w-6 animate-pulse text-ods-accent"
32
+ className={cn('h-6 w-6 text-ods-accent', LIVE_PULSE_CLASS)}
32
33
  color="currentColor"
33
34
  />
34
35
  </div>
@@ -1,10 +1,12 @@
1
1
  'use client';
2
2
 
3
3
  import { personFirstName } from '../../utils/format';
4
+ import { TextLineSkeleton } from '../loading/unified-skeleton';
4
5
  import { AvatarStack } from './avatar-stack';
5
6
  import { Button } from './button';
6
7
  import { FloatingTooltip } from './floating-tooltip';
7
- import { SquareAvatar } from './square-avatar';
8
+ import { useLoadingScope } from './loading-scope';
9
+ import { SquareAvatar, SquareAvatarSkeleton } from './square-avatar';
8
10
  import { TruncateText } from './truncate-text';
9
11
 
10
12
  /**
@@ -51,6 +53,9 @@ const PERSON_CELL_SIZE = {
51
53
  lg: { avatar: 'lg', gap: 'gap-[var(--spacing-system-sf)]', primary: 'h3' },
52
54
  } as const;
53
55
 
56
+ /** The cell's row: avatar, then its two lines. Read by the cell and by its skeleton. */
57
+ const PERSON_ROW_CLASS = 'flex min-w-0 items-center';
58
+
54
59
  export function PersonCell({
55
60
  name,
56
61
  avatarUrl,
@@ -60,10 +65,12 @@ export function PersonCell({
60
65
  actionTitle,
61
66
  size = 'sm',
62
67
  }: PersonCellProps) {
68
+ // In a page's loading state the person is read: the cell is its skeleton.
69
+ if (useLoadingScope()) return <PersonCellSkeleton size={size} />;
63
70
  const displayName = name || fallbackName;
64
71
  const scale = PERSON_CELL_SIZE[size];
65
72
  const row = (
66
- <div className={`group/person-cell flex min-w-0 items-center ${scale.gap}`}>
73
+ <div className={`group/person-cell ${PERSON_ROW_CLASS} ${scale.gap}`}>
67
74
  <SquareAvatar size={scale.avatar} src={avatarUrl ?? undefined} alt={displayName} fallback={displayName} />
68
75
  <div className="min-w-0 flex-1">
69
76
  <TruncateText
@@ -93,6 +100,20 @@ export function PersonCell({
93
100
  );
94
101
  }
95
102
 
103
+ /** The cell while it loads: the SAME avatar box, gap and two lines (the name's type step, then the caption's). */
104
+ export function PersonCellSkeleton({ size = 'sm' }: { size?: PersonCellProps['size'] }) {
105
+ const scale = PERSON_CELL_SIZE[size];
106
+ return (
107
+ <div className={`${PERSON_ROW_CLASS} ${scale.gap}`} aria-hidden>
108
+ <SquareAvatarSkeleton size={scale.avatar} />
109
+ <div className="flex min-w-0 flex-1 flex-col">
110
+ <TextLineSkeleton type={scale.primary} className="w-3/4" />
111
+ <TextLineSkeleton type="h6" className="w-1/2" />
112
+ </div>
113
+ </div>
114
+ );
115
+ }
116
+
96
117
  export interface PeopleCellPerson {
97
118
  /** Stable render key (a profile id) — names can collide or be blank. */
98
119
  key?: string | number;
@@ -112,6 +133,8 @@ export interface PeopleCellProps {
112
133
  const PEOPLE_CELL_STACK_SLOTS = 2;
113
134
 
114
135
  export function PeopleCell({ people, fallbackName = 'Unassigned' }: PeopleCellProps) {
136
+ // In a page's loading state the people are read: the cell is a person cell's skeleton.
137
+ if (useLoadingScope()) return <PersonCellSkeleton />;
115
138
  if (people.length <= 1) {
116
139
  const [person] = people;
117
140
  return (
@@ -20,6 +20,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
20
20
  import Image, { resizedImageUrl } from '../../embed-shims/next-image';
21
21
  import { cn } from '../../utils/cn';
22
22
  import { UnifiedSkeleton } from '../loading/unified-skeleton';
23
+ import { useLoadingScope } from './loading-scope';
23
24
  import { MarqueeWall } from './marquee-wall';
24
25
 
25
26
  export interface PhotoWallImage {
@@ -175,7 +176,17 @@ export interface PhotoWallProps {
175
176
  loading?: boolean;
176
177
  }
177
178
 
178
- export function PhotoWall({ images, columns = 2, speed = 24, fadeColor, className, loading = false }: PhotoWallProps) {
179
+ export function PhotoWall({
180
+ images,
181
+ columns = 2,
182
+ speed = 24,
183
+ fadeColor,
184
+ className,
185
+ loading: loadingProp = false,
186
+ }: PhotoWallProps) {
187
+ // In a page's loading state the pictures are read: the wall draws its placeholder frames and measures nothing.
188
+ const inScope = useLoadingScope();
189
+ const loading = loadingProp || inScope;
179
190
  const rootRef = useRef<HTMLDivElement | null>(null);
180
191
  const [box, setBox] = useState<{ width: number; height: number } | null>(null);
181
192
  useEffect(() => {
@@ -208,11 +219,11 @@ export function PhotoWall({ images, columns = 2, speed = 24, fadeColor, classNam
208
219
  // One frame per picture: a url listed twice is its first entry. Nothing is
209
220
  // asked for before the wall knows its width.
210
221
  const unique = useMemo(() => {
211
- if (requestWidth === undefined) return [];
222
+ if (requestWidth === undefined || inScope) return [];
212
223
  const byUrl = new Map<string, PhotoWallImage>();
213
224
  for (const image of images) if (!byUrl.has(image.url)) byUrl.set(image.url, image);
214
225
  return Array.from(byUrl.values());
215
- }, [images, requestWidth]);
226
+ }, [images, requestWidth, inScope]);
216
227
  // Each picture is measured at the url it is drawn from (the boxed `Image`'s
217
228
  // `optimizedWidth`: the host's resizer at the column's width), so it is downloaded once.
218
229
  const drawnWidth = requestWidth ?? undefined;
@@ -4,6 +4,7 @@ import { type CSSProperties, type ReactNode, useLayoutEffect, useRef, useState }
4
4
  import { LAYOUT_STEPS } from '../../styles/layout-steps';
5
5
  import { cn } from '../../utils/cn';
6
6
  import { PagePicture } from '../layout/page-picture';
7
+ import { LoadingScope } from './loading-scope';
7
8
  import { CollisionBoundaryContext, PortalContainerContext } from './portal-container';
8
9
 
9
10
  /** The widest content step: a product screen is drawn at this width and scaled to its frame. */
@@ -69,7 +70,8 @@ export function ProductScreenFrame({
69
70
  const [frame, setFrame] = useState<HTMLDivElement | null>(null);
70
71
  const [portalHost, setPortalHost] = useState<HTMLDivElement | null>(null);
71
72
  // Which layout the screen takes. `pending` until measured: the frame keeps its
72
- // box and shows nothing, so the first paint is never the unscaled screen.
73
+ // box and the screen draws as its own loading state, so the first paint is
74
+ // never the unscaled real screen.
73
75
  // React holds only this (it changes at two widths); the scale itself changes
74
76
  // with every pixel of a resize, so it is written to a CSS variable on the
75
77
  // frame and never re-renders the screen.
@@ -118,11 +120,20 @@ export function ProductScreenFrame({
118
120
  <div
119
121
  inert
120
122
  aria-hidden
121
- className={cn('ods-content-area', mode === 'pending' && 'invisible')}
123
+ className="ods-content-area"
122
124
  style={screenStyle}
123
125
  >
124
126
  <div className="ods-content-scope">
125
- <PagePicture>{children}</PagePicture>
127
+ {/* Until measured (the server's HTML, a page without scripts) the screen is its own loading state: every
128
+ component in it draws its skeleton, so the window shows the screen's shape instead of nothing, and
129
+ the unscaled real screen is never painted. */}
130
+ {mode === 'pending' ? (
131
+ <LoadingScope bare>
132
+ <PagePicture>{children}</PagePicture>
133
+ </LoadingScope>
134
+ ) : (
135
+ <PagePicture>{children}</PagePicture>
136
+ )}
126
137
  </div>
127
138
  <div ref={setPortalHost} style={{ display: 'contents' }} />
128
139
  </div>
@@ -3,6 +3,18 @@
3
3
  import type React from 'react';
4
4
  import { useEffect, useRef, useState } from 'react';
5
5
  import { useContentMdUp } from '../../hooks/ui/use-content-breakpoint';
6
+ import { cn } from '../../utils/cn';
7
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
8
+
9
+ /** The bar's height in px: below the content `md` step, and from it (the bar switches on the content's width). */
10
+ export const PROGRESS_BAR_HEIGHT = { mobile: 8, desktop: 24 } as const;
11
+ /** The same heights as a class (8px, 24px from `content-md`), read by the bar's box and by its skeleton. */
12
+ const PROGRESS_BAR_HEIGHT_CLASS = 'h-2 content-md:h-6';
13
+
14
+ /** The bar while its value is read: one box at the bar's own height, switched at the bar's own step. */
15
+ export function ProgressBarSkeleton({ className }: { className?: string }) {
16
+ return <UnifiedSkeleton className={cn(PROGRESS_BAR_HEIGHT_CLASS, 'w-full rounded', className)} />;
17
+ }
6
18
 
7
19
  type ProgressBarProps = {
8
20
  progress: number; // 0–100
@@ -23,8 +35,8 @@ export const ProgressBar: React.FC<ProgressBarProps> = ({
23
35
  segmentWidth = 3.43,
24
36
  mobileSegmentWidth = 5,
25
37
  segmentGap = 2,
26
- height = 24,
27
- mobileHeight = 8,
38
+ height = PROGRESS_BAR_HEIGHT.desktop,
39
+ mobileHeight = PROGRESS_BAR_HEIGHT.mobile,
28
40
  inverted = false,
29
41
  }) => {
30
42
  const isMdUp = useContentMdUp() ?? true;
@@ -70,7 +82,18 @@ export const ProgressBar: React.FC<ProgressBarProps> = ({
70
82
  };
71
83
 
72
84
  return (
73
- <div ref={containerRef} className="flex w-full" style={{ gap: `${segmentGap}px` }}>
85
+ <div
86
+ ref={containerRef}
87
+ // The box holds the bar's height before its segments are counted: the default heights by the class the skeleton
88
+ // reads, a host's own by style.
89
+ className={cn(
90
+ 'flex w-full',
91
+ height === PROGRESS_BAR_HEIGHT.desktop &&
92
+ mobileHeight === PROGRESS_BAR_HEIGHT.mobile &&
93
+ PROGRESS_BAR_HEIGHT_CLASS,
94
+ )}
95
+ style={{ gap: `${segmentGap}px` }}
96
+ >
74
97
  {Array.from({ length: segmentCount }).map((_, i) => (
75
98
  <div
76
99
  key={i}
@@ -5,19 +5,30 @@ import { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from 'reac
5
5
 
6
6
  import { cn } from '../../utils/cn';
7
7
 
8
+ /**
9
+ * `default`: the original bar. `step`: a thin ODS bar (border-coloured track, accent fill)
10
+ * for a step line ("Step 1 of 2").
11
+ */
12
+ const PROGRESS_VARIANT = {
13
+ default: { root: 'h-2 bg-secondary', indicator: 'bg-primary' },
14
+ step: { root: 'h-1 bg-ods-border', indicator: 'bg-ods-accent' },
15
+ } as const;
16
+
8
17
  const Progress = forwardRef<
9
18
  ElementRef<typeof ProgressPrimitive.Root>,
10
19
  ComponentPropsWithoutRef<typeof ProgressPrimitive.Root> & {
11
20
  indicatorClassName?: string;
21
+ variant?: keyof typeof PROGRESS_VARIANT;
12
22
  }
13
- >(({ className, value, indicatorClassName, ...props }, ref) => (
23
+ >(({ className, value, indicatorClassName, variant = 'default', ...props }, ref) => (
14
24
  <ProgressPrimitive.Root
15
25
  ref={ref}
16
- className={cn('relative h-2 w-full overflow-hidden rounded-full bg-secondary', className)}
26
+ className={cn('relative w-full overflow-hidden rounded-full', PROGRESS_VARIANT[variant].root, className)}
27
+ value={value}
17
28
  {...props}
18
29
  >
19
30
  <ProgressPrimitive.Indicator
20
- className={cn('h-full w-full flex-1 bg-primary transition-all', indicatorClassName)}
31
+ className={cn('h-full w-full flex-1 transition-all', PROGRESS_VARIANT[variant].indicator, indicatorClassName)}
21
32
  style={{ transform: `translateX(-${100 - (value || 0)}%)` }}
22
33
  />
23
34
  </ProgressPrimitive.Root>
@@ -4,8 +4,12 @@ import { ChevronDown } from 'lucide-react';
4
4
  import type React from 'react';
5
5
  import { useState } from 'react';
6
6
  import type { ChangelogEntry } from '../../types/product-release';
7
- import { Badge } from './badge';
7
+ import { cn } from '../../utils/cn';
8
+ import { TextLineSkeleton, UnifiedSkeleton } from '../loading/unified-skeleton';
9
+ import { Badge, BadgeSkeleton } from './badge';
10
+ import { Button } from './button';
8
11
  import { FadePreview } from './fade-preview';
12
+ import { useLoadingScope } from './loading-scope';
9
13
  import { RichMarkdownRenderer } from './markdown';
10
14
 
11
15
  interface ReleaseChangelogSectionProps {
@@ -39,12 +43,43 @@ interface ReleaseChangelogSectionProps {
39
43
  * (YouTube, OG cards, etc.) work out of the box. Hosts that already
40
44
  * wrap with a Supabase-aware preset can keep passing their own. */
41
45
  MarkdownRenderer?: React.ComponentType<{ content: string }>;
46
+ /** Mark the loaded section `data-loading-optional`: a block its page's loading state does not draw. */
47
+ loadingOptional?: boolean;
42
48
  }
43
49
 
44
50
  // Collapsed height for the preview-first mode. ~120px shows the first
45
51
  // entry's title + the start of its description before the mask kicks in.
46
52
  const PREVIEW_COLLAPSED_HEIGHT = 120;
47
53
 
54
+ /** The section's layout, read by the section and by its skeleton, so the skeleton is the section's size. */
55
+ const SECTION_CLASS = 'space-y-4';
56
+ const COLLAPSIBLE_TITLE_ROW_CLASS = 'flex w-full cursor-pointer items-center justify-between';
57
+ /**
58
+ * The collapsible title row as a `glyph` `Button` (no surface, no box of its own: `size="wrap"`): it lets the
59
+ * heading wrap, and restates the heading icon's 24px, because a Button sizes every svg inside it.
60
+ */
61
+ const COLLAPSIBLE_TITLE_BUTTON_CLASS = cn(
62
+ COLLAPSIBLE_TITLE_ROW_CLASS,
63
+ 'whitespace-normal text-left [&_svg]:h-6 [&_svg]:w-6',
64
+ );
65
+ const TITLE_BASE_CLASS = 'flex items-center gap-2 text-h2';
66
+ const titleClass = (isBreaking: boolean) =>
67
+ `${TITLE_BASE_CLASS} ${isBreaking ? 'text-ods-error' : 'text-ods-text-primary'}`;
68
+ const COUNT_BADGE_CLASS = 'ml-2';
69
+ /** 16px, kept against the title Button's svg size (`!`). */
70
+ const CHEVRON_CLASS = '!h-4 !w-4 shrink-0 text-ods-text-secondary transition-transform duration-200';
71
+ const ENTRY_LIST_CLASS = 'space-y-6';
72
+ const ENTRY_CLASS = 'ml-0 border-l-2 border-ods-border pl-4';
73
+ const ENTRY_TITLE_CLASS =
74
+ 'mb-2 text-ods-text-primary text-h3 [&_p+p]:!mt-2 [&_p]:!my-0 [&_p]:!text-[length:var(--font-size-h3-body)] [&_p]:!font-bold [&_p]:!leading-[var(--font-line-space-h3-body)]';
75
+ const ENTRY_DESCRIPTION_CLASS =
76
+ 'text-ods-text-primary text-h4 [&_p]:!text-[length:var(--font-size-h4-body)] [&_p]:!font-medium [&_p]:!leading-[var(--font-line-space-h4-body)]';
77
+ /** FadePreview's toggle row: a `size="compact"` link Button (h-6, at every width) under a `mf` gap. */
78
+ const COMPACT_BUTTON_HEIGHT_CLASS = 'h-6';
79
+ const PREVIEW_TOGGLE_SKELETON_CLASS = cn('mt-[var(--spacing-system-mf)] w-28', COMPACT_BUTTON_HEIGHT_CLASS);
80
+ /** Entries a skeleton draws when it is not told how many (the first fold of a section). */
81
+ const CHANGELOG_SKELETON_ENTRIES = 1;
82
+
48
83
  export function ReleaseChangelogSection({
49
84
  title,
50
85
  entries,
@@ -55,8 +90,23 @@ export function ReleaseChangelogSection({
55
90
  previewFirst = false,
56
91
  icon,
57
92
  MarkdownRenderer = RichMarkdownRenderer,
93
+ loadingOptional = false,
58
94
  }: ReleaseChangelogSectionProps) {
59
95
  const [collapsed, setCollapsed] = useState(collapsible ? defaultCollapsed : false);
96
+ const loading = useLoadingScope();
97
+
98
+ if (loading)
99
+ return (
100
+ <ReleaseChangelogSectionSkeleton
101
+ title={title}
102
+ isBreaking={isBreaking}
103
+ hideTitle={hideTitle}
104
+ collapsible={collapsible}
105
+ defaultCollapsed={defaultCollapsed}
106
+ previewFirst={previewFirst}
107
+ icon={icon}
108
+ />
109
+ );
60
110
 
61
111
  if (!entries || entries.length === 0) return null;
62
112
 
@@ -65,34 +115,31 @@ export function ReleaseChangelogSection({
65
115
  const showEntries = !collapsible || !collapsed;
66
116
 
67
117
  return (
68
- <div className="space-y-4">
118
+ <div className={SECTION_CLASS} data-loading-optional={loadingOptional || undefined}>
69
119
  {!hideTitle &&
70
120
  (collapsible ? (
71
- <button
121
+ <Button
72
122
  type="button"
123
+ variant="glyph"
124
+ size="wrap"
73
125
  onClick={() => setCollapsed(!collapsed)}
74
- className="flex w-full cursor-pointer items-center justify-between"
126
+ aria-expanded={!collapsed}
127
+ className={COLLAPSIBLE_TITLE_BUTTON_CLASS}
75
128
  >
76
- <h2
77
- className={`flex items-center gap-2 text-h2 ${isBreaking ? 'text-ods-error' : 'text-ods-text-primary'}`}
78
- >
129
+ <h2 className={titleClass(isBreaking)}>
79
130
  {icon}
80
131
  {title}
81
- <Badge variant="secondary" className="ml-2">
132
+ <Badge variant="secondary" className={COUNT_BADGE_CLASS}>
82
133
  {entries.length}
83
134
  </Badge>
84
135
  </h2>
85
- <ChevronDown
86
- className={`h-4 w-4 shrink-0 text-ods-text-secondary transition-transform duration-200 ${
87
- !collapsed ? 'rotate-180' : ''
88
- }`}
89
- />
90
- </button>
136
+ <ChevronDown className={`${CHEVRON_CLASS} ${!collapsed ? 'rotate-180' : ''}`} />
137
+ </Button>
91
138
  ) : (
92
- <h2 className={`flex items-center gap-2 text-h2 ${isBreaking ? 'text-ods-error' : 'text-ods-text-primary'}`}>
139
+ <h2 className={titleClass(isBreaking)}>
93
140
  {icon}
94
141
  {title}
95
- <Badge variant="secondary" className="ml-2">
142
+ <Badge variant="secondary" className={COUNT_BADGE_CLASS}>
96
143
  {entries.length}
97
144
  </Badge>
98
145
  </h2>
@@ -129,9 +176,9 @@ function ChangelogEntryList({
129
176
  MarkdownRenderer: React.ComponentType<{ content: string }>;
130
177
  }) {
131
178
  return (
132
- <ul className="space-y-6">
179
+ <ul className={ENTRY_LIST_CLASS}>
133
180
  {entries.map((entry, index) => (
134
- <li key={index} className="ml-0 border-l-2 border-ods-border pl-4">
181
+ <li key={index} className={ENTRY_CLASS}>
135
182
  {/* Entry title — run through the SAME markdown renderer as the
136
183
  description so inline markdown (links like `[label](url)`,
137
184
  emphasis) renders instead of showing as raw text, then pinned
@@ -140,7 +187,7 @@ function ChangelogEntryList({
140
187
  so plain-text titles look exactly as before. `[&_p]:!my-0`
141
188
  strips the renderer's paragraph margins; `mb-2` keeps the gap to
142
189
  the description. */}
143
- <div className="mb-2 text-ods-text-primary text-h3 [&_p+p]:!mt-2 [&_p]:!my-0 [&_p]:!text-[length:var(--font-size-h3-body)] [&_p]:!font-bold [&_p]:!leading-[var(--font-line-space-h3-body)]">
190
+ <div className={ENTRY_TITLE_CLASS}>
144
191
  <MarkdownRenderer content={entry.title} />
145
192
  </div>
146
193
  {entry.description && (
@@ -151,7 +198,7 @@ function ChangelogEntryList({
151
198
  inflate the changelog body to 20px. The `[&_p]:!` overrides
152
199
  pin every descendant `<p>` back to the h4 responsive tokens
153
200
  so the breakpoints stay aligned with the rest of the page. */
154
- <div className="text-ods-text-primary text-h4 [&_p]:!text-[length:var(--font-size-h4-body)] [&_p]:!font-medium [&_p]:!leading-[var(--font-line-space-h4-body)]">
201
+ <div className={ENTRY_DESCRIPTION_CLASS}>
155
202
  <MarkdownRenderer content={entry.description} />
156
203
  </div>
157
204
  )}
@@ -160,3 +207,89 @@ function ChangelogEntryList({
160
207
  </ul>
161
208
  );
162
209
  }
210
+
211
+ export interface ReleaseChangelogSectionSkeletonProps {
212
+ /** The section's heading (static copy: drawn for real). */
213
+ title: string;
214
+ /** Entries drawn when not `previewFirst` (the first fold). Default 1. */
215
+ count?: number;
216
+ isBreaking?: boolean;
217
+ hideTitle?: boolean;
218
+ collapsible?: boolean;
219
+ defaultCollapsed?: boolean;
220
+ /** The preview-first mode: the first entry clamped to the preview height, then the toggle row. */
221
+ previewFirst?: boolean;
222
+ icon?: React.ReactNode;
223
+ className?: string;
224
+ }
225
+
226
+ /**
227
+ * A changelog section while it is read: the real icon and heading, the count badge as a chip, the first entry (title
228
+ * line and description lines) as bars, clamped to the preview height with FadePreview's toggle row in preview mode.
229
+ */
230
+ export function ReleaseChangelogSectionSkeleton({
231
+ title,
232
+ count = CHANGELOG_SKELETON_ENTRIES,
233
+ isBreaking = false,
234
+ hideTitle = false,
235
+ collapsible = false,
236
+ defaultCollapsed = true,
237
+ previewFirst = false,
238
+ icon,
239
+ className,
240
+ }: ReleaseChangelogSectionSkeletonProps) {
241
+ const heading = (
242
+ <h2 className={titleClass(isBreaking)}>
243
+ {icon}
244
+ {title}
245
+ {/* The count badge's own frame; its text is one or two digits. */}
246
+ <BadgeSkeleton className={cn(COUNT_BADGE_CLASS, 'w-[2ch]')} />
247
+ </h2>
248
+ );
249
+ const inPreviewMode = previewFirst && !collapsible;
250
+ const showEntries = !collapsible || !defaultCollapsed;
251
+ const list = <ChangelogEntryListSkeleton count={inPreviewMode ? 1 : count} />;
252
+ return (
253
+ <div className={cn(SECTION_CLASS, className)} aria-hidden>
254
+ {!hideTitle &&
255
+ (collapsible ? (
256
+ <div className={COLLAPSIBLE_TITLE_ROW_CLASS}>
257
+ {heading}
258
+ <ChevronDown className={cn(CHEVRON_CLASS, !defaultCollapsed && 'rotate-180')} />
259
+ </div>
260
+ ) : (
261
+ heading
262
+ ))}
263
+ {showEntries &&
264
+ (inPreviewMode ? (
265
+ <div className="relative">
266
+ <div className="overflow-hidden" style={{ maxHeight: PREVIEW_COLLAPSED_HEIGHT }}>
267
+ {list}
268
+ </div>
269
+ <UnifiedSkeleton className={PREVIEW_TOGGLE_SKELETON_CLASS} />
270
+ </div>
271
+ ) : (
272
+ list
273
+ ))}
274
+ </div>
275
+ );
276
+ }
277
+
278
+ function ChangelogEntryListSkeleton({ count }: { count: number }) {
279
+ return (
280
+ <ul className={ENTRY_LIST_CLASS}>
281
+ {Array.from({ length: count }, (_, index) => (
282
+ // biome-ignore lint/suspicious/noArrayIndexKey: skeleton entries never reorder
283
+ <li key={index} className={ENTRY_CLASS}>
284
+ <div className={ENTRY_TITLE_CLASS}>
285
+ <TextLineSkeleton type="h3" className="w-2/3" />
286
+ </div>
287
+ <div className={ENTRY_DESCRIPTION_CLASS}>
288
+ {/* Five lines: in preview mode the entry runs past the 120px clamp, as a real first entry does. */}
289
+ <TextLineSkeleton type="inherit" lines={5} className="w-full" />
290
+ </div>
291
+ </li>
292
+ ))}
293
+ </ul>
294
+ );
295
+ }
@@ -19,9 +19,16 @@ import { useKeyboardCollisionPadding } from '../../hooks/ui/use-keyboard-collisi
19
19
  import { cn } from '../../utils/cn';
20
20
  import { SearchIcon } from '../icons-v2-generated';
21
21
  import { XmarkCircleIcon } from '../icons-v2-generated/signs-and-symbols/xmark-circle-icon';
22
+ import { LoadingRegion } from '../loading/loading-region';
23
+ import { TextLineSkeleton } from '../loading/unified-skeleton';
22
24
  import { HiddenTagsPopup } from './hidden-tags-popup';
23
25
  import { Tag } from './tag';
24
26
 
27
+ /** A result row's frame, read by the rows and by their loading state. */
28
+ const SEARCH_RESULT_ROW_CLASS = 'flex min-h-10 items-center border-b border-ods-border px-3 last:border-b-0';
29
+ /** Rows the results' loading state draws: the dropdown's 320px scroller holds eight 40px rows. */
30
+ const SEARCH_RESULTS_FOLD = 8;
31
+
25
32
  // ---------------------------------------------------------------------------
26
33
  // Types
27
34
  // ---------------------------------------------------------------------------
@@ -394,7 +401,8 @@ export function SearchInput({
394
401
  role="option"
395
402
  aria-selected={isHighlighted}
396
403
  className={cn(
397
- 'flex min-h-10 cursor-pointer items-center border-b border-ods-border px-3 transition-colors last:border-b-0',
404
+ SEARCH_RESULT_ROW_CLASS,
405
+ 'cursor-pointer transition-colors',
398
406
  isHighlighted && 'bg-ods-bg-hover',
399
407
  !isHighlighted && 'hover:bg-ods-bg-hover',
400
408
  )}
@@ -409,7 +417,17 @@ export function SearchInput({
409
417
  // ---- Dropdown content ----
410
418
  const renderDropdownContent = () => {
411
419
  if (isLoading) {
412
- return <div className="px-4 py-3 text-ods-text-secondary text-h6">Loading...</div>;
420
+ // The results while they are read: the dropdown's own rows, a title bar each.
421
+ return (
422
+ <LoadingRegion label="Loading results">
423
+ {Array.from({ length: SEARCH_RESULTS_FOLD }, (_, i) => (
424
+ // biome-ignore lint/suspicious/noArrayIndexKey: skeleton rows never reorder
425
+ <div key={i} className={SEARCH_RESULT_ROW_CLASS} aria-hidden>
426
+ <TextLineSkeleton type="h6" className="w-2/3" />
427
+ </div>
428
+ ))}
429
+ </LoadingRegion>
430
+ );
413
431
  }
414
432
 
415
433
  if (flatResults.length === 0) {
@@ -560,7 +578,9 @@ export function SearchInput({
560
578
  >
561
579
  <ScrollAreaPrimitive.Root className="flex min-h-0 flex-col overflow-hidden">
562
580
  <ScrollAreaPrimitive.Viewport className="max-h-[320px] min-h-0 w-full">
563
- <div role="listbox">{renderDropdownContent()}</div>
581
+ {/* A listbox owns options only: while the results are read the box is the loading region's (a status
582
+ and hidden rows), with no listbox role around it. */}
583
+ <div role={isLoading ? undefined : 'listbox'}>{renderDropdownContent()}</div>
564
584
  </ScrollAreaPrimitive.Viewport>
565
585
  <ScrollAreaPrimitive.Scrollbar className="hidden" orientation="vertical">
566
586
  <ScrollAreaPrimitive.Thumb />