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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1274) 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-VLJFAGMR.cjs → chunk-7U3ELNGC.cjs} +103 -61
  15. package/dist/{chunk-T5FRANE6.cjs → chunk-7VI7TOGI.cjs} +509 -353
  16. package/dist/{chunk-PYK4ZSEZ.cjs → chunk-7XFVUUVZ.cjs} +14 -14
  17. package/dist/{chunk-M7YZGRAV.cjs → chunk-AAECWUNV.cjs} +35 -8
  18. package/dist/{chunk-YUMFVQIN.cjs → chunk-C42WIUH6.cjs} +11 -5
  19. package/dist/{chunk-22XAPV6N.cjs → chunk-DGNBXZXT.cjs} +1069 -1020
  20. package/dist/{chunk-HOTM4UM6.cjs → chunk-E76ONBKF.cjs} +28 -0
  21. package/dist/{chunk-PERN37KO.cjs → chunk-F7R3U5EN.cjs} +5 -25
  22. package/dist/{chunk-K6VWTUCH.cjs → chunk-FL2RMEDX.cjs} +2 -2
  23. package/dist/chunk-FZB4RMRK.cjs +695 -0
  24. package/dist/{chunk-BIA77I6B.cjs → chunk-GTONIRJU.cjs} +56 -54
  25. package/dist/{chunk-3FC6AKEJ.cjs → chunk-HNQRY6RU.cjs} +200 -87
  26. package/dist/chunk-INI4ADPT.cjs +495 -0
  27. package/dist/{chunk-2Y36SQSZ.cjs → chunk-JGWN6GH5.cjs} +11 -7
  28. package/dist/{chunk-2OPYWMAV.cjs → chunk-JKQVKWLB.cjs} +258 -179
  29. package/dist/{chunk-EQZXJUYV.cjs → chunk-JTSUAHDL.cjs} +73 -51
  30. package/dist/chunk-K3IHNXR4.cjs +40 -0
  31. package/dist/{chunk-EFTUFJS2.cjs → chunk-LELS4XMX.cjs} +20 -22
  32. package/dist/{chunk-ZCU2PYCW.cjs → chunk-MPTMT773.cjs} +62 -62
  33. package/dist/{chunk-LVKUMVUJ.cjs → chunk-NBVZIHGS.cjs} +12 -8
  34. package/dist/{chunk-RQQVN7LC.cjs → chunk-NF3PBWDJ.cjs} +521 -413
  35. package/dist/{chunk-BVA7YX4P.cjs → chunk-NJMZ3N7Q.cjs} +44 -44
  36. package/dist/{chunk-OJJ4RL2T.cjs → chunk-R3JX4MXD.cjs} +4 -4
  37. package/dist/{chunk-GY2JESOC.cjs → chunk-RB7VLVMD.cjs} +15 -15
  38. package/dist/{chunk-47GZ33ND.cjs → chunk-REJMFXGD.cjs} +198 -73
  39. package/dist/chunk-RMUSPTJN.cjs +102 -0
  40. package/dist/{chunk-3RFQPQ7Z.cjs → chunk-RNLRS4ID.cjs} +3 -3
  41. package/dist/{chunk-MDB65HQC.cjs → chunk-RTBYQWAV.cjs} +286 -201
  42. package/dist/{chunk-63N4FN5V.cjs → chunk-SETFUCZA.cjs} +7 -7
  43. package/dist/{chunk-2QMBXGMQ.cjs → chunk-TF5D5MNO.cjs} +222 -120
  44. package/dist/{chunk-NET74KSQ.cjs → chunk-TZ4GKUO2.cjs} +5 -5
  45. package/dist/{chunk-B3W7RCQF.cjs → chunk-UW7UWUZU.cjs} +105 -117
  46. package/dist/{chunk-MWLD6NXV.cjs → chunk-VFZFCRAL.cjs} +4 -6
  47. package/dist/{chunk-FMH2DYBC.cjs → chunk-VRDHAR3X.cjs} +4229 -3918
  48. package/dist/{chunk-NJS7FQRW.cjs → chunk-VYYLYZUC.cjs} +207 -74
  49. package/dist/{chunk-NO5UJLLQ.cjs → chunk-WEANWBJH.cjs} +6 -1
  50. package/dist/{chunk-QQ7LKNNP.cjs → chunk-WO3XO27C.cjs} +13 -13
  51. package/dist/{chunk-L2V7K7RR.cjs → chunk-X7ECVSVN.cjs} +43 -41
  52. package/dist/chunk-XFRBEXQN.cjs +304 -0
  53. package/dist/{chunk-AKK3EO37.cjs → chunk-XIFEZ2JT.cjs} +35 -23
  54. package/dist/{chunk-XCH7SPGI.cjs → chunk-XVFM6SJA.cjs} +61 -52
  55. package/dist/{chunk-3RYIF4OW.cjs → chunk-XXJL5GY3.cjs} +3 -3
  56. package/dist/{chunk-GZKWF6NH.cjs → chunk-XZ6DKGT4.cjs} +34 -34
  57. package/dist/{chunk-74ALTXXC.cjs → chunk-YL6ZB2SR.cjs} +1624 -1440
  58. package/dist/{chunk-TSJUL6IH.cjs → chunk-YRFWOJF4.cjs} +16 -8
  59. package/dist/{chunk-HTRILBJD.cjs → chunk-YXDHVHB2.cjs} +30 -13
  60. package/dist/{chunk-RO72PRQI.cjs → chunk-ZRDMGMY7.cjs} +75 -50
  61. package/dist/{chunk-WA4X55XY.cjs → chunk-ZV45VS6K.cjs} +359 -432
  62. package/dist/{cloud-tenants-6PSTDE3F.cjs → cloud-tenants-U2KMEIO7.cjs} +35 -39
  63. package/dist/components/agent-identity.d.ts +1 -2
  64. package/dist/components/agent-identity.d.ts.map +1 -1
  65. package/dist/components/agent-identity.js +0 -1
  66. package/dist/components/agent-mark.d.ts +4 -6
  67. package/dist/components/agent-mark.d.ts.map +1 -1
  68. package/dist/components/agent-mark.js +7 -8
  69. package/dist/components/authors/author-detail-view.d.ts.map +1 -1
  70. package/dist/components/authors/author-detail-view.js +51 -18
  71. package/dist/components/calendar.cjs +10 -10
  72. package/dist/components/case-studies/entity-quotes-panel.d.ts +6 -4
  73. package/dist/components/case-studies/entity-quotes-panel.d.ts.map +1 -1
  74. package/dist/components/case-studies/entity-quotes-panel.js +44 -11
  75. package/dist/components/case-studies/index.cjs +140 -70
  76. package/dist/components/case-studies/index.d.ts +2 -2
  77. package/dist/components/case-studies/index.d.ts.map +1 -1
  78. package/dist/components/case-studies/index.js +5 -2
  79. package/dist/components/case-studies/quote-cards-strip.d.ts +23 -2
  80. package/dist/components/case-studies/quote-cards-strip.d.ts.map +1 -1
  81. package/dist/components/case-studies/quote-cards-strip.js +48 -10
  82. package/dist/components/categories-cart.d.ts +7 -0
  83. package/dist/components/categories-cart.d.ts.map +1 -1
  84. package/dist/components/categories-cart.js +58 -36
  85. package/dist/components/category-card.js +1 -1
  86. package/dist/components/chat/chat-attachment-bar.js +1 -1
  87. package/dist/components/chat/chat-container.d.ts.map +1 -1
  88. package/dist/components/chat/chat-container.js +2 -1
  89. package/dist/components/chat/chat-ticket-list.d.ts +0 -1
  90. package/dist/components/chat/chat-ticket-list.d.ts.map +1 -1
  91. package/dist/components/chat/chat-turn.d.ts +31 -1
  92. package/dist/components/chat/chat-turn.d.ts.map +1 -1
  93. package/dist/components/chat/chat-turn.js +85 -19
  94. package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
  95. package/dist/components/chat/embeddable-chat.js +1 -1
  96. package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts +0 -15
  97. package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts.map +1 -1
  98. package/dist/components/chat/entity-cards/admin-content-card-grid.js +2 -38
  99. package/dist/components/chat/entity-cards/admin-content-card.d.ts +15 -0
  100. package/dist/components/chat/entity-cards/admin-content-card.d.ts.map +1 -1
  101. package/dist/components/chat/entity-cards/admin-content-card.js +52 -10
  102. package/dist/components/chat/entity-cards/blog-card.d.ts +9 -2
  103. package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -1
  104. package/dist/components/chat/entity-cards/blog-card.js +49 -33
  105. package/dist/components/chat/entity-cards/campaign-card-admin.d.ts.map +1 -1
  106. package/dist/components/chat/entity-cards/campaign-card-admin.js +4 -11
  107. package/dist/components/chat/entity-cards/case-study-card.d.ts +27 -9
  108. package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
  109. package/dist/components/chat/entity-cards/case-study-card.js +80 -54
  110. package/dist/components/chat/entity-cards/chat-ticket-item.d.ts +7 -0
  111. package/dist/components/chat/entity-cards/chat-ticket-item.d.ts.map +1 -1
  112. package/dist/components/chat/entity-cards/chat-ticket-item.js +24 -28
  113. package/dist/components/chat/entity-cards/customer-interview-card.d.ts +9 -2
  114. package/dist/components/chat/entity-cards/customer-interview-card.d.ts.map +1 -1
  115. package/dist/components/chat/entity-cards/customer-interview-card.js +39 -36
  116. package/dist/components/chat/entity-cards/data-room-doc-card.d.ts.map +1 -1
  117. package/dist/components/chat/entity-cards/data-room-doc-card.js +14 -16
  118. package/dist/components/chat/entity-cards/design-doc-card.d.ts +8 -2
  119. package/dist/components/chat/entity-cards/design-doc-card.d.ts.map +1 -1
  120. package/dist/components/chat/entity-cards/design-doc-card.js +37 -43
  121. package/dist/components/chat/entity-cards/dispatch.d.ts +2 -5
  122. package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
  123. package/dist/components/chat/entity-cards/dispatch.js +6 -6
  124. package/dist/components/chat/entity-cards/employee-entry-card.d.ts.map +1 -1
  125. package/dist/components/chat/entity-cards/employee-entry-card.js +5 -5
  126. package/dist/components/chat/entity-cards/entity-author-card.d.ts +33 -6
  127. package/dist/components/chat/entity-cards/entity-author-card.d.ts.map +1 -1
  128. package/dist/components/chat/entity-cards/entity-author-card.js +98 -32
  129. package/dist/components/chat/entity-cards/entity-portrait-card.d.ts +9 -0
  130. package/dist/components/chat/entity-cards/entity-portrait-card.d.ts.map +1 -1
  131. package/dist/components/chat/entity-cards/entity-portrait-card.js +46 -18
  132. package/dist/components/chat/entity-cards/generic-entity-card.d.ts.map +1 -1
  133. package/dist/components/chat/entity-cards/generic-entity-card.js +14 -17
  134. package/dist/components/chat/entity-cards/github-activity-card.d.ts.map +1 -1
  135. package/dist/components/chat/entity-cards/github-activity-card.js +15 -20
  136. package/dist/components/chat/entity-cards/hubspot-ticket-card.d.ts.map +1 -1
  137. package/dist/components/chat/entity-cards/hubspot-ticket-card.js +14 -19
  138. package/dist/components/chat/entity-cards/index.d.ts +8 -7
  139. package/dist/components/chat/entity-cards/index.d.ts.map +1 -1
  140. package/dist/components/chat/entity-cards/index.js +21 -8
  141. package/dist/components/chat/entity-cards/investor-update-card.d.ts +9 -3
  142. package/dist/components/chat/entity-cards/investor-update-card.d.ts.map +1 -1
  143. package/dist/components/chat/entity-cards/investor-update-card.js +28 -28
  144. package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts +11 -2
  145. package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts.map +1 -1
  146. package/dist/components/chat/entity-cards/onboarding-guide-card.js +66 -63
  147. package/dist/components/chat/entity-cards/program-card.d.ts +9 -2
  148. package/dist/components/chat/entity-cards/program-card.d.ts.map +1 -1
  149. package/dist/components/chat/entity-cards/program-card.js +69 -58
  150. package/dist/components/chat/entity-cards/roadmap-card.d.ts +10 -1
  151. package/dist/components/chat/entity-cards/roadmap-card.d.ts.map +1 -1
  152. package/dist/components/chat/entity-cards/roadmap-card.js +148 -156
  153. package/dist/components/chat/entity-cards/roadmap-vote-button.d.ts.map +1 -1
  154. package/dist/components/chat/entity-cards/roadmap-vote-button.js +5 -1
  155. package/dist/components/chat/entity-cards/slack-message-card.d.ts.map +1 -1
  156. package/dist/components/chat/entity-cards/slack-message-card.js +23 -18
  157. package/dist/components/chat/hooks/index.d.ts +7 -1
  158. package/dist/components/chat/hooks/index.d.ts.map +1 -1
  159. package/dist/components/chat/hooks/index.js +8 -1
  160. package/dist/components/chat/hooks/use-ask-prompts.d.ts.map +1 -1
  161. package/dist/components/chat/hooks/use-ask-prompts.js +3 -1
  162. package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts +1 -1
  163. package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts.map +1 -1
  164. package/dist/components/chat/hooks/use-chat-history-hydration.d.ts +1 -1
  165. package/dist/components/chat/hooks/use-chat-history-hydration.d.ts.map +1 -1
  166. package/dist/components/chat/hooks/use-chat.d.ts +1 -2
  167. package/dist/components/chat/hooks/use-chat.d.ts.map +1 -1
  168. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +0 -2
  169. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  170. package/dist/components/chat/hooks/use-nats-chat-adapter.js +0 -8
  171. package/dist/components/chat/hooks/use-proxied-image-url.d.ts +17 -13
  172. package/dist/components/chat/hooks/use-proxied-image-url.d.ts.map +1 -1
  173. package/dist/components/chat/hooks/use-proxied-image-url.js +10 -8
  174. package/dist/components/chat/hooks/use-slash-commands.d.ts +1 -2
  175. package/dist/components/chat/hooks/use-slash-commands.d.ts.map +1 -1
  176. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts +1 -8
  177. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
  178. package/dist/components/chat/hooks/use-sse-chat-adapter.js +1 -1
  179. package/dist/components/chat/index.cjs +44 -29
  180. package/dist/components/chat/stream/chat-stream-reducer.d.ts +1 -1
  181. package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +1 -1
  182. package/dist/components/chat/stream/chat-stream-reducer.js +1 -1
  183. package/dist/components/chat/types/entities/index.d.ts +6 -4
  184. package/dist/components/chat/types/entities/index.d.ts.map +1 -1
  185. package/dist/components/chat/types/entities/index.js +4 -4
  186. package/dist/components/chat/types/entities/investor-update.d.ts +1 -1
  187. package/dist/components/chat/types/entities/investor-update.d.ts.map +1 -1
  188. package/dist/components/chat/types/entities/program-types.d.ts +2 -1
  189. package/dist/components/chat/types/entities/program-types.d.ts.map +1 -1
  190. package/dist/components/chat/types/entities/program-types.js +1 -4
  191. package/dist/components/chat/utils/compact-card-classes.d.ts +9 -1
  192. package/dist/components/chat/utils/compact-card-classes.d.ts.map +1 -1
  193. package/dist/components/chat/utils/compact-card-classes.js +11 -2
  194. package/dist/components/chat/utils/compact-card-skeleton.d.ts +40 -0
  195. package/dist/components/chat/utils/compact-card-skeleton.d.ts.map +1 -0
  196. package/dist/components/chat/utils/compact-card-skeleton.js +61 -0
  197. package/dist/components/chat/utils/icon-library.d.ts +0 -1
  198. package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
  199. package/dist/components/chat/utils/index.d.ts +5 -3
  200. package/dist/components/chat/utils/index.d.ts.map +1 -1
  201. package/dist/components/chat/utils/index.js +3 -2
  202. package/dist/components/chat/utils/scroll-anchor.d.ts +1 -2
  203. package/dist/components/chat/utils/scroll-anchor.d.ts.map +1 -1
  204. package/dist/components/chat/utils/scroll-anchor.js +0 -1
  205. package/dist/components/chat/utils/source-row-cta.d.ts +0 -2
  206. package/dist/components/chat/utils/source-row-cta.d.ts.map +1 -1
  207. package/dist/components/chat/utils/source-row-cta.js +1 -2
  208. package/dist/components/comment-card.d.ts +15 -0
  209. package/dist/components/comment-card.d.ts.map +1 -1
  210. package/dist/components/comment-card.js +178 -119
  211. package/dist/components/comment-thread.d.ts +29 -0
  212. package/dist/components/comment-thread.d.ts.map +1 -1
  213. package/dist/components/comment-thread.js +76 -18
  214. package/dist/components/contact/index.cjs +36 -40
  215. package/dist/components/content-loading-container.d.ts +1 -1
  216. package/dist/components/docs/doc-viewer.d.ts.map +1 -1
  217. package/dist/components/docs/doc-viewer.js +10 -9
  218. package/dist/components/docs/index.cjs +39 -43
  219. package/dist/components/docs/skeletons.d.ts +0 -5
  220. package/dist/components/docs/skeletons.d.ts.map +1 -1
  221. package/dist/components/docs/skeletons.js +30 -50
  222. package/dist/components/docs/use-document-tree.d.ts +0 -1
  223. package/dist/components/docs/use-document-tree.d.ts.map +1 -1
  224. package/dist/components/docs/use-document-tree.js +6 -1
  225. package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
  226. package/dist/components/embeds/embed-iframe.js +3 -0
  227. package/dist/components/embeds/index.cjs +38 -40
  228. package/dist/components/embeds/index.d.ts +1 -1
  229. package/dist/components/embeds/index.d.ts.map +1 -1
  230. package/dist/components/embeds/index.js +2 -1
  231. package/dist/components/embeds/markdown-image.d.ts.map +1 -1
  232. package/dist/components/embeds/markdown-image.js +5 -2
  233. package/dist/components/embeds/og-link-preview.d.ts +7 -3
  234. package/dist/components/embeds/og-link-preview.d.ts.map +1 -1
  235. package/dist/components/embeds/og-link-preview.js +106 -62
  236. package/dist/components/faq/faq-document-page.d.ts +5 -1
  237. package/dist/components/faq/faq-document-page.d.ts.map +1 -1
  238. package/dist/components/faq/faq-document-page.js +5 -1
  239. package/dist/components/faq/faq-section.d.ts +34 -1
  240. package/dist/components/faq/faq-section.d.ts.map +1 -1
  241. package/dist/components/faq/faq-section.js +146 -59
  242. package/dist/components/faq/index.cjs +41 -41
  243. package/dist/components/faq/index.d.ts +1 -1
  244. package/dist/components/faq/index.d.ts.map +1 -1
  245. package/dist/components/faq/index.js +9 -1
  246. package/dist/components/faq-accordion.d.ts +15 -0
  247. package/dist/components/faq-accordion.d.ts.map +1 -1
  248. package/dist/components/faq-accordion.js +37 -9
  249. package/dist/components/features/ai-enrich/AIStatusIndicator.d.ts.map +1 -1
  250. package/dist/components/features/ai-enrich/AIStatusIndicator.js +2 -1
  251. package/dist/components/features/approval-level.d.ts +15 -1
  252. package/dist/components/features/approval-level.d.ts.map +1 -1
  253. package/dist/components/features/approval-level.js +42 -6
  254. package/dist/components/features/capability-explorer.d.ts +5 -1
  255. package/dist/components/features/capability-explorer.d.ts.map +1 -1
  256. package/dist/components/features/capability-explorer.js +42 -37
  257. package/dist/components/features/cards-strip.d.ts +9 -0
  258. package/dist/components/features/cards-strip.d.ts.map +1 -1
  259. package/dist/components/features/cards-strip.js +35 -11
  260. package/dist/components/features/command-box.d.ts +19 -0
  261. package/dist/components/features/command-box.d.ts.map +1 -1
  262. package/dist/components/features/command-box.js +103 -11
  263. package/dist/components/features/conversation-card.d.ts +70 -5
  264. package/dist/components/features/conversation-card.d.ts.map +1 -1
  265. package/dist/components/features/conversation-card.js +146 -13
  266. package/dist/components/features/devices/device-selector/device-selector.d.ts.map +1 -1
  267. package/dist/components/features/devices/device-selector/device-selector.js +1 -0
  268. package/dist/components/features/devices/devices-panel-view.d.ts +1 -1
  269. package/dist/components/features/devices/devices-panel-view.js +1 -1
  270. package/dist/components/features/entity-tag-badges.d.ts +32 -7
  271. package/dist/components/features/entity-tag-badges.d.ts.map +1 -1
  272. package/dist/components/features/entity-tag-badges.js +73 -9
  273. package/dist/components/features/entity-video-section.d.ts +14 -14
  274. package/dist/components/features/entity-video-section.d.ts.map +1 -1
  275. package/dist/components/features/entity-video-section.js +29 -22
  276. package/dist/components/features/figma-prototype-viewer.d.ts.map +1 -1
  277. package/dist/components/features/figma-prototype-viewer.js +3 -10
  278. package/dist/components/features/index.cjs +77 -39
  279. package/dist/components/features/index.d.ts +3 -0
  280. package/dist/components/features/index.d.ts.map +1 -1
  281. package/dist/components/features/index.js +5 -0
  282. package/dist/components/features/knowledge-base/index.d.ts +2 -1
  283. package/dist/components/features/knowledge-base/index.d.ts.map +1 -1
  284. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts +0 -1
  285. package/dist/components/features/knowledge-base/knowledge-base-article-view.d.ts.map +1 -1
  286. package/dist/components/features/model-token-rates.d.ts.map +1 -1
  287. package/dist/components/features/model-token-rates.js +50 -78
  288. package/dist/components/features/notifications/approval-request-notification-tile.d.ts.map +1 -1
  289. package/dist/components/features/notifications/approval-request-notification-tile.js +9 -5
  290. package/dist/components/features/notifications/notification-tile.d.ts +22 -7
  291. package/dist/components/features/notifications/notification-tile.d.ts.map +1 -1
  292. package/dist/components/features/notifications/notification-tile.js +42 -15
  293. package/dist/components/features/paths-display.d.ts +9 -0
  294. package/dist/components/features/paths-display.d.ts.map +1 -1
  295. package/dist/components/features/paths-display.js +50 -5
  296. package/dist/components/features/platform-badge.d.ts +2 -0
  297. package/dist/components/features/platform-badge.d.ts.map +1 -1
  298. package/dist/components/features/platform-badge.js +33 -2
  299. package/dist/components/features/push-button-selector.d.ts +23 -1
  300. package/dist/components/features/push-button-selector.d.ts.map +1 -1
  301. package/dist/components/features/push-button-selector.js +114 -41
  302. package/dist/components/features/remote-session/index.d.ts +2 -2
  303. package/dist/components/features/remote-session/index.d.ts.map +1 -1
  304. package/dist/components/features/remote-session/index.js +3 -3
  305. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts +2 -0
  306. package/dist/components/features/remote-session/remote-desktop-chat-message-row.d.ts.map +1 -1
  307. package/dist/components/features/remote-session/remote-desktop-chat-message-row.js +18 -4
  308. package/dist/components/features/remote-session/remote-desktop-chat-panel.d.ts.map +1 -1
  309. package/dist/components/features/remote-session/remote-desktop-chat-panel.js +11 -2
  310. package/dist/components/features/remote-session/remote-desktop-view.d.ts +6 -6
  311. package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -1
  312. package/dist/components/features/remote-session/remote-desktop-view.js +27 -27
  313. package/dist/components/features/remote-session/remote-session-chat-panel.js +1 -1
  314. package/dist/components/features/status-filter-component.d.ts +19 -1
  315. package/dist/components/features/status-filter-component.d.ts.map +1 -1
  316. package/dist/components/features/status-filter-component.js +106 -43
  317. package/dist/components/features/use-video-warmup.d.ts +1 -1
  318. package/dist/components/features/use-video-warmup.d.ts.map +1 -1
  319. package/dist/components/features/use-video-warmup.js +2 -5
  320. package/dist/components/features/use-walkthrough-video.d.ts.map +1 -1
  321. package/dist/components/features/use-walkthrough-video.js +4 -1
  322. package/dist/components/features/video-bites-strip.d.ts +42 -1
  323. package/dist/components/features/video-bites-strip.d.ts.map +1 -1
  324. package/dist/components/features/video-bites-strip.js +100 -21
  325. package/dist/components/features/video-hover-preview.d.ts +1 -1
  326. package/dist/components/features/video-hover-preview.d.ts.map +1 -1
  327. package/dist/components/features/video.d.ts +9 -2
  328. package/dist/components/features/video.d.ts.map +1 -1
  329. package/dist/components/features/video.js +10 -5
  330. package/dist/components/features/walkthrough-video.d.ts.map +1 -1
  331. package/dist/components/features/walkthrough-video.js +5 -1
  332. package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -1
  333. package/dist/components/help-center-pages/download-apps-page.js +65 -33
  334. package/dist/components/help-center-pages/index.cjs +410 -316
  335. package/dist/components/help-center-pages/trust-center-page.d.ts +21 -9
  336. package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
  337. package/dist/components/help-center-pages/trust-center-page.js +100 -67
  338. package/dist/components/help-center-pages/trust-center-sections.d.ts +19 -14
  339. package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
  340. package/dist/components/help-center-pages/trust-center-sections.js +124 -97
  341. package/dist/components/icon-display.d.ts.map +1 -1
  342. package/dist/components/icon-display.js +6 -0
  343. package/dist/components/index.cjs +1505 -380
  344. package/dist/components/index.d.ts +5 -2
  345. package/dist/components/index.d.ts.map +1 -1
  346. package/dist/components/index.js +12 -2
  347. package/dist/components/interactive-wrapper.d.ts.map +1 -1
  348. package/dist/components/interactive-wrapper.js +2 -1
  349. package/dist/components/layout/list-page-layout.d.ts +3 -3
  350. package/dist/components/layout/list-page-layout.d.ts.map +1 -1
  351. package/dist/components/layout/page-container.d.ts +8 -1
  352. package/dist/components/layout/page-container.d.ts.map +1 -1
  353. package/dist/components/layout/page-container.js +25 -10
  354. package/dist/components/layout/page-data-sync.d.ts +7 -1
  355. package/dist/components/layout/page-data-sync.d.ts.map +1 -1
  356. package/dist/components/layout/page-data-sync.js +13 -4
  357. package/dist/components/layout/page-heading.d.ts +31 -0
  358. package/dist/components/layout/page-heading.d.ts.map +1 -1
  359. package/dist/components/layout/page-heading.js +44 -1
  360. package/dist/components/layout/page-layout.d.ts +4 -4
  361. package/dist/components/layout/page-layout.d.ts.map +1 -1
  362. package/dist/components/layout/page-layout.js +4 -5
  363. package/dist/components/layout/title-block.d.ts +12 -1
  364. package/dist/components/layout/title-block.d.ts.map +1 -1
  365. package/dist/components/layout/title-block.js +50 -12
  366. package/dist/components/loading/category-vendor-selector-skeleton.d.ts +3 -0
  367. package/dist/components/loading/category-vendor-selector-skeleton.d.ts.map +1 -1
  368. package/dist/components/loading/deprecated-layout-skeletons.d.ts +25 -0
  369. package/dist/components/loading/deprecated-layout-skeletons.d.ts.map +1 -0
  370. package/dist/components/loading/deprecated-layout-skeletons.js +78 -0
  371. package/dist/components/loading/device-card-skeleton.js +4 -4
  372. package/dist/components/loading/index.d.ts +4 -3
  373. package/dist/components/loading/index.d.ts.map +1 -1
  374. package/dist/components/loading/index.js +10 -16
  375. package/dist/components/loading/loading-region.d.ts +10 -9
  376. package/dist/components/loading/loading-region.d.ts.map +1 -1
  377. package/dist/components/loading/loading-region.js +4 -1
  378. package/dist/components/loading/msp-profile-form-skeleton.d.ts +2 -0
  379. package/dist/components/loading/msp-profile-form-skeleton.d.ts.map +1 -1
  380. package/dist/components/loading/organization-card-skeleton.d.ts +14 -10
  381. package/dist/components/loading/organization-card-skeleton.d.ts.map +1 -1
  382. package/dist/components/loading/organization-card-skeleton.js +38 -40
  383. package/dist/components/loading/page-layout-skeleton.d.ts +7 -51
  384. package/dist/components/loading/page-layout-skeleton.d.ts.map +1 -1
  385. package/dist/components/loading/page-layout-skeleton.js +2 -411
  386. package/dist/components/loading/settings-form-skeleton.d.ts +2 -0
  387. package/dist/components/loading/settings-form-skeleton.d.ts.map +1 -1
  388. package/dist/components/loading/unified-skeleton.d.ts +57 -9
  389. package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
  390. package/dist/components/loading/unified-skeleton.js +57 -8
  391. package/dist/components/log-severity-dot.d.ts +2 -0
  392. package/dist/components/log-severity-dot.d.ts.map +1 -1
  393. package/dist/components/log-severity-dot.js +11 -13
  394. package/dist/components/logs-list.d.ts.map +1 -1
  395. package/dist/components/logs-list.js +34 -43
  396. package/dist/components/media-carousel.d.ts +0 -1
  397. package/dist/components/media-carousel.d.ts.map +1 -1
  398. package/dist/components/meeting-scheduler/booking-form.d.ts +52 -8
  399. package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
  400. package/dist/components/meeting-scheduler/booking-form.js +150 -30
  401. package/dist/components/meeting-scheduler/context-panel.d.ts +18 -2
  402. package/dist/components/meeting-scheduler/context-panel.d.ts.map +1 -1
  403. package/dist/components/meeting-scheduler/context-panel.js +61 -23
  404. package/dist/components/meeting-scheduler/directory.d.ts +11 -1
  405. package/dist/components/meeting-scheduler/directory.d.ts.map +1 -1
  406. package/dist/components/meeting-scheduler/directory.js +47 -27
  407. package/dist/components/meeting-scheduler/index.cjs +556 -344
  408. package/dist/components/meeting-scheduler/index.d.ts +5 -4
  409. package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
  410. package/dist/components/meeting-scheduler/index.js +127 -102
  411. package/dist/components/meeting-scheduler/modal-header.d.ts +7 -3
  412. package/dist/components/meeting-scheduler/modal-header.d.ts.map +1 -1
  413. package/dist/components/meeting-scheduler/modal-header.js +29 -18
  414. package/dist/components/meeting-scheduler/slot-picker.d.ts +11 -4
  415. package/dist/components/meeting-scheduler/slot-picker.d.ts.map +1 -1
  416. package/dist/components/meeting-scheduler/slot-picker.js +12 -7
  417. package/dist/components/metric-value.d.ts +5 -0
  418. package/dist/components/metric-value.d.ts.map +1 -1
  419. package/dist/components/metric-value.js +15 -3
  420. package/dist/components/msp-display.d.ts +5 -0
  421. package/dist/components/msp-display.d.ts.map +1 -1
  422. package/dist/components/msp-display.js +19 -14
  423. package/dist/components/navigation/app-layout.d.ts +0 -2
  424. package/dist/components/navigation/app-layout.d.ts.map +1 -1
  425. package/dist/components/navigation/app-layout.js +1 -4
  426. package/dist/components/navigation/index.cjs +48 -42
  427. package/dist/components/navigation/index.d.ts +8 -3
  428. package/dist/components/navigation/index.d.ts.map +1 -1
  429. package/dist/components/navigation/index.js +18 -3
  430. package/dist/components/navigation/mingo-ai-button.d.ts +0 -2
  431. package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
  432. package/dist/components/navigation/mingo-ai-button.js +2 -4
  433. package/dist/components/navigation/mobile-nav-sheet.d.ts +0 -1
  434. package/dist/components/navigation/mobile-nav-sheet.d.ts.map +1 -1
  435. package/dist/components/navigation/mobile-nav-sheet.js +0 -2
  436. package/dist/components/navigation/multi-level-navigation.d.ts +21 -0
  437. package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -1
  438. package/dist/components/navigation/multi-level-navigation.js +98 -24
  439. package/dist/components/navigation/page-section-bar.d.ts +50 -0
  440. package/dist/components/navigation/page-section-bar.d.ts.map +1 -0
  441. package/dist/components/navigation/page-section-bar.js +85 -0
  442. package/dist/components/navigation/sticky-section-nav.d.ts +12 -0
  443. package/dist/components/navigation/sticky-section-nav.d.ts.map +1 -1
  444. package/dist/components/navigation/sticky-section-nav.js +87 -20
  445. package/dist/components/navigation/ticket-alerts-button.js +1 -1
  446. package/dist/components/onboarding-guides/hooks/use-onboarding-guides.d.ts.map +1 -1
  447. package/dist/components/onboarding-guides/hooks/use-onboarding-guides.js +7 -1
  448. package/dist/components/onboarding-guides/index.cjs +38 -42
  449. package/dist/components/onboarding-guides/index.d.ts +1 -2
  450. package/dist/components/onboarding-guides/index.d.ts.map +1 -1
  451. package/dist/components/onboarding-guides/index.js +5 -3
  452. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts +8 -0
  453. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
  454. package/dist/components/onboarding-guides/onboarding-guide-detail-view.js +142 -84
  455. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts +18 -17
  456. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts.map +1 -1
  457. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.js +28 -21
  458. package/dist/components/onboarding-guides/onboarding-guides-catalog-view.d.ts.map +1 -1
  459. package/dist/components/onboarding-guides/onboarding-guides-catalog-view.js +57 -18
  460. package/dist/components/pagination.d.ts +26 -2
  461. package/dist/components/pagination.d.ts.map +1 -1
  462. package/dist/components/pagination.js +61 -38
  463. package/dist/components/persistent-filter-controls.d.ts.map +1 -1
  464. package/dist/components/persistent-filter-controls.js +1 -2
  465. package/dist/components/persistent-pagination.d.ts.map +1 -1
  466. package/dist/components/persistent-pagination.js +3 -1
  467. package/dist/components/platform/ToolBadge.d.ts +13 -1
  468. package/dist/components/platform/ToolBadge.d.ts.map +1 -1
  469. package/dist/components/platform/ToolBadge.js +38 -9
  470. package/dist/components/platform/index.d.ts +2 -2
  471. package/dist/components/platform/index.d.ts.map +1 -1
  472. package/dist/components/platform/index.js +4 -2
  473. package/dist/components/platform/tool-badge-mark.d.ts +6 -0
  474. package/dist/components/platform/tool-badge-mark.d.ts.map +1 -0
  475. package/dist/components/platform/tool-badge-mark.js +6 -0
  476. package/dist/components/product-demo/fixtures/devices.d.ts +0 -2
  477. package/dist/components/product-demo/fixtures/devices.d.ts.map +1 -1
  478. package/dist/components/product-demo/fixtures/devices.js +0 -2
  479. package/dist/components/product-demo/index.cjs +1889 -32
  480. package/dist/components/product-demo/product-screen.d.ts +5 -5
  481. package/dist/components/product-demo/product-screen.d.ts.map +1 -1
  482. package/dist/components/product-demo/product-screen.js +19 -15
  483. package/dist/components/product-demo/screen-loading.d.ts +10 -0
  484. package/dist/components/product-demo/screen-loading.d.ts.map +1 -0
  485. package/dist/components/product-demo/screen-loading.js +12 -0
  486. package/dist/components/product-demo/screens/devices-view.d.ts +22 -0
  487. package/dist/components/product-demo/screens/devices-view.d.ts.map +1 -0
  488. package/dist/components/product-demo/screens/devices-view.js +35 -0
  489. package/dist/components/product-demo/screens/devices.d.ts +1 -7
  490. package/dist/components/product-demo/screens/devices.d.ts.map +1 -1
  491. package/dist/components/product-demo/screens/devices.js +8 -15
  492. package/dist/components/related-content/card-registry.d.ts +3 -2
  493. package/dist/components/related-content/card-registry.d.ts.map +1 -1
  494. package/dist/components/related-content/card-registry.js +15 -3
  495. package/dist/components/related-content/index.cjs +19 -18
  496. package/dist/components/related-content/index.d.ts +2 -1
  497. package/dist/components/related-content/index.d.ts.map +1 -1
  498. package/dist/components/related-content/index.js +3 -1
  499. package/dist/components/related-content/related-content-section.d.ts +14 -1
  500. package/dist/components/related-content/related-content-section.d.ts.map +1 -1
  501. package/dist/components/related-content/related-content-section.js +144 -32
  502. package/dist/components/results-count.d.ts +5 -0
  503. package/dist/components/results-count.d.ts.map +1 -1
  504. package/dist/components/results-count.js +30 -6
  505. package/dist/components/shared/article-author-byline.d.ts +8 -0
  506. package/dist/components/shared/article-author-byline.d.ts.map +1 -1
  507. package/dist/components/shared/article-author-byline.js +54 -52
  508. package/dist/components/shared/delivery/delivery-lists.d.ts.map +1 -1
  509. package/dist/components/shared/delivery/delivery-lists.js +14 -2
  510. package/dist/components/shared/delivery/delivery-row.d.ts +5 -0
  511. package/dist/components/shared/delivery/delivery-row.d.ts.map +1 -1
  512. package/dist/components/shared/delivery/delivery-row.js +37 -10
  513. package/dist/components/shared/delivery/delivery-table.d.ts +4 -0
  514. package/dist/components/shared/delivery/delivery-table.d.ts.map +1 -1
  515. package/dist/components/shared/delivery/delivery-table.js +14 -26
  516. package/dist/components/shared/detail-page-skeleton.d.ts +3 -0
  517. package/dist/components/shared/detail-page-skeleton.d.ts.map +1 -1
  518. package/dist/components/shared/detail-page-skeleton.js +9 -1
  519. package/dist/components/shared/dev-section/dev-card-row.d.ts +2 -0
  520. package/dist/components/shared/dev-section/dev-card-row.d.ts.map +1 -1
  521. package/dist/components/shared/dev-section/dev-card-row.js +31 -21
  522. package/dist/components/shared/dev-section/dev-section-view.js +1 -1
  523. package/dist/components/shared/legal-document/index.d.ts +1 -1
  524. package/dist/components/shared/legal-document/index.d.ts.map +1 -1
  525. package/dist/components/shared/legal-document/index.js +5 -1
  526. package/dist/components/shared/legal-document/legal-document-page.d.ts +14 -0
  527. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
  528. package/dist/components/shared/legal-document/legal-document-page.js +47 -42
  529. package/dist/components/shared/legal-document/use-legal-docs.d.ts.map +1 -1
  530. package/dist/components/shared/legal-document/use-legal-docs.js +4 -1
  531. package/dist/components/shared/legal-document/use-legal-documents.d.ts.map +1 -1
  532. package/dist/components/shared/legal-document/use-legal-documents.js +3 -1
  533. package/dist/components/shared/media-gallery-strip.d.ts +7 -0
  534. package/dist/components/shared/media-gallery-strip.d.ts.map +1 -1
  535. package/dist/components/shared/media-gallery-strip.js +22 -3
  536. package/dist/components/shared/onboarding/index.d.ts +2 -1
  537. package/dist/components/shared/onboarding/index.d.ts.map +1 -1
  538. package/dist/components/shared/onboarding/index.js +1 -3
  539. package/dist/components/shared/product-release/index.d.ts +2 -1
  540. package/dist/components/shared/product-release/index.d.ts.map +1 -1
  541. package/dist/components/shared/product-release/product-release-card-classes.d.ts +26 -0
  542. package/dist/components/shared/product-release/product-release-card-classes.d.ts.map +1 -0
  543. package/dist/components/shared/product-release/product-release-card-classes.js +40 -0
  544. package/dist/components/shared/product-release/product-release-card-skeleton.d.ts.map +1 -1
  545. package/dist/components/shared/product-release/product-release-card-skeleton.js +37 -35
  546. package/dist/components/shared/product-release/product-release-card.d.ts +3 -1
  547. package/dist/components/shared/product-release/product-release-card.d.ts.map +1 -1
  548. package/dist/components/shared/product-release/product-release-card.js +86 -73
  549. package/dist/components/shared/product-release/product-releases-view.d.ts.map +1 -1
  550. package/dist/components/shared/product-release/product-releases-view.js +26 -13
  551. package/dist/components/shared/product-release/release-detail-page.d.ts +0 -1
  552. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  553. package/dist/components/shared/product-release/release-detail-page.js +281 -215
  554. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts +9 -1
  555. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts.map +1 -1
  556. package/dist/components/shared/roadmap/roadmap-grid-skeleton.js +12 -11
  557. package/dist/components/shared/roadmap/roadmap-grid.d.ts +13 -1
  558. package/dist/components/shared/roadmap/roadmap-grid.d.ts.map +1 -1
  559. package/dist/components/shared/roadmap/roadmap-grid.js +45 -29
  560. package/dist/components/shared/roadmap/roadmap-view.d.ts.map +1 -1
  561. package/dist/components/shared/roadmap/roadmap-view.js +2 -3
  562. package/dist/components/social-icon-row.d.ts +9 -2
  563. package/dist/components/social-icon-row.d.ts.map +1 -1
  564. package/dist/components/social-icon-row.js +12 -6
  565. package/dist/components/tickets/help-center-list.d.ts.map +1 -1
  566. package/dist/components/tickets/help-center-list.js +6 -2
  567. package/dist/components/tickets/hooks/use-ticket-actions.d.ts +2 -2
  568. package/dist/components/tickets/hooks/use-ticket-actions.d.ts.map +1 -1
  569. package/dist/components/tickets/index.cjs +42 -46
  570. package/dist/components/tickets/index.d.ts +2 -1
  571. package/dist/components/tickets/index.d.ts.map +1 -1
  572. package/dist/components/tickets/index.js +2 -3
  573. package/dist/components/tickets/ticket-center.d.ts.map +1 -1
  574. package/dist/components/tickets/ticket-center.js +117 -58
  575. package/dist/components/tickets/types.d.ts +0 -8
  576. package/dist/components/tickets/types.d.ts.map +1 -1
  577. package/dist/components/tickets/types.js +0 -3
  578. package/dist/components/toggle-group.d.ts +4 -2
  579. package/dist/components/toggle-group.d.ts.map +1 -1
  580. package/dist/components/toggle-group.js +3 -1
  581. package/dist/components/tool-icon.d.ts.map +1 -1
  582. package/dist/components/ui/analyzing-state.d.ts +3 -2
  583. package/dist/components/ui/analyzing-state.d.ts.map +1 -1
  584. package/dist/components/ui/analyzing-state.js +7 -4
  585. package/dist/components/ui/announcement-bar-view.d.ts +5 -0
  586. package/dist/components/ui/announcement-bar-view.d.ts.map +1 -1
  587. package/dist/components/ui/announcement-bar-view.js +3 -1
  588. package/dist/components/ui/autocomplete.d.ts +13 -0
  589. package/dist/components/ui/autocomplete.d.ts.map +1 -1
  590. package/dist/components/ui/autocomplete.js +30 -6
  591. package/dist/components/ui/avatar-stack.d.ts +7 -0
  592. package/dist/components/ui/avatar-stack.d.ts.map +1 -1
  593. package/dist/components/ui/avatar-stack.js +29 -4
  594. package/dist/components/ui/badge.d.ts +9 -1
  595. package/dist/components/ui/badge.d.ts.map +1 -1
  596. package/dist/components/ui/badge.js +11 -0
  597. package/dist/components/ui/benefit-list.d.ts +8 -0
  598. package/dist/components/ui/benefit-list.d.ts.map +1 -1
  599. package/dist/components/ui/benefit-list.js +20 -11
  600. package/dist/components/ui/button/button-styles.d.ts +16 -0
  601. package/dist/components/ui/button/button-styles.d.ts.map +1 -1
  602. package/dist/components/ui/button/button-styles.js +42 -0
  603. package/dist/components/ui/button/button.d.ts +3 -1
  604. package/dist/components/ui/button/button.d.ts.map +1 -1
  605. package/dist/components/ui/button/button.js +4 -40
  606. package/dist/components/ui/button/index.d.ts +1 -0
  607. package/dist/components/ui/button/index.d.ts.map +1 -1
  608. package/dist/components/ui/button/index.js +4 -0
  609. package/dist/components/ui/card.d.ts +13 -1
  610. package/dist/components/ui/card.d.ts.map +1 -1
  611. package/dist/components/ui/card.js +21 -14
  612. package/dist/components/ui/checkbox.d.ts +2 -0
  613. package/dist/components/ui/checkbox.d.ts.map +1 -1
  614. package/dist/components/ui/checkbox.js +5 -1
  615. package/dist/components/ui/compliance-badge.d.ts +2 -0
  616. package/dist/components/ui/compliance-badge.d.ts.map +1 -1
  617. package/dist/components/ui/compliance-badge.js +5 -2
  618. package/dist/components/ui/cursor-pagination.d.ts +8 -1
  619. package/dist/components/ui/cursor-pagination.d.ts.map +1 -1
  620. package/dist/components/ui/cursor-pagination.js +10 -4
  621. package/dist/components/ui/dashboard-info-card.d.ts +6 -1
  622. package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
  623. package/dist/components/ui/dashboard-info-card.js +19 -10
  624. package/dist/components/ui/data-attribution.d.ts +10 -5
  625. package/dist/components/ui/data-attribution.d.ts.map +1 -1
  626. package/dist/components/ui/data-attribution.js +27 -9
  627. package/dist/components/ui/data-table/data-table-body.d.ts +1 -1
  628. package/dist/components/ui/data-table/data-table-body.d.ts.map +1 -1
  629. package/dist/components/ui/data-table/data-table-body.js +18 -7
  630. package/dist/components/ui/data-table/data-table-row-count.d.ts +5 -0
  631. package/dist/components/ui/data-table/data-table-row-count.d.ts.map +1 -1
  632. package/dist/components/ui/data-table/data-table-row-count.js +18 -3
  633. package/dist/components/ui/data-table/data-table-row.d.ts.map +1 -1
  634. package/dist/components/ui/data-table/data-table-row.js +2 -6
  635. package/dist/components/ui/data-table/data-table-skeleton.js +5 -5
  636. package/dist/components/ui/data-table/index.d.ts +2 -2
  637. package/dist/components/ui/data-table/index.d.ts.map +1 -1
  638. package/dist/components/ui/data-table/index.js +2 -1
  639. package/dist/components/ui/date-picker.d.ts +0 -1
  640. package/dist/components/ui/date-picker.d.ts.map +1 -1
  641. package/dist/components/ui/entity-image.d.ts +4 -0
  642. package/dist/components/ui/entity-image.d.ts.map +1 -1
  643. package/dist/components/ui/entity-image.js +27 -5
  644. package/dist/components/ui/error-state.d.ts.map +1 -1
  645. package/dist/components/ui/error-state.js +4 -1
  646. package/dist/components/ui/feature-card.d.ts +31 -1
  647. package/dist/components/ui/feature-card.d.ts.map +1 -1
  648. package/dist/components/ui/feature-card.js +40 -11
  649. package/dist/components/ui/feature-list.d.ts +15 -1
  650. package/dist/components/ui/feature-list.d.ts.map +1 -1
  651. package/dist/components/ui/feature-list.js +43 -8
  652. package/dist/components/ui/field-wrapper.d.ts +6 -0
  653. package/dist/components/ui/field-wrapper.d.ts.map +1 -1
  654. package/dist/components/ui/field-wrapper.js +16 -5
  655. package/dist/components/ui/file-manager/index.cjs +63 -64
  656. package/dist/components/ui/filter-checkbox-item.d.ts +9 -0
  657. package/dist/components/ui/filter-checkbox-item.d.ts.map +1 -1
  658. package/dist/components/ui/filter-checkbox-item.js +36 -6
  659. package/dist/components/ui/filter-modal.d.ts +2 -3
  660. package/dist/components/ui/filter-modal.d.ts.map +1 -1
  661. package/dist/components/ui/filter-pill-row.d.ts +10 -5
  662. package/dist/components/ui/filter-pill-row.d.ts.map +1 -1
  663. package/dist/components/ui/filter-pill-row.js +56 -19
  664. package/dist/components/ui/incident-feed.d.ts +1 -1
  665. package/dist/components/ui/incident-feed.d.ts.map +1 -1
  666. package/dist/components/ui/incident-feed.js +57 -56
  667. package/dist/components/ui/index.cjs +219 -39
  668. package/dist/components/ui/index.d.ts +10 -1
  669. package/dist/components/ui/index.d.ts.map +1 -1
  670. package/dist/components/ui/index.js +29 -1
  671. package/dist/components/ui/info-card-row.d.ts +12 -0
  672. package/dist/components/ui/info-card-row.d.ts.map +1 -1
  673. package/dist/components/ui/info-card-row.js +56 -30
  674. package/dist/components/ui/info-card.d.ts +24 -1
  675. package/dist/components/ui/info-card.d.ts.map +1 -1
  676. package/dist/components/ui/info-card.js +87 -52
  677. package/dist/components/ui/input-styles.d.ts +7 -0
  678. package/dist/components/ui/input-styles.d.ts.map +1 -0
  679. package/dist/components/ui/input-styles.js +7 -0
  680. package/dist/components/ui/input.d.ts.map +1 -1
  681. package/dist/components/ui/input.js +4 -1
  682. package/dist/components/ui/layout-hold.d.ts +9 -7
  683. package/dist/components/ui/layout-hold.d.ts.map +1 -1
  684. package/dist/components/ui/leader-row.d.ts +11 -4
  685. package/dist/components/ui/leader-row.d.ts.map +1 -1
  686. package/dist/components/ui/leader-row.js +29 -5
  687. package/dist/components/ui/loading-scope.d.ts +26 -0
  688. package/dist/components/ui/loading-scope.d.ts.map +1 -0
  689. package/dist/components/ui/loading-scope.js +31 -0
  690. package/dist/components/ui/markdown/base-components.d.ts +25 -0
  691. package/dist/components/ui/markdown/base-components.d.ts.map +1 -1
  692. package/dist/components/ui/markdown/base-components.js +13 -7
  693. package/dist/components/ui/markdown/engine.d.ts +26 -1
  694. package/dist/components/ui/markdown/engine.d.ts.map +1 -1
  695. package/dist/components/ui/markdown/engine.js +63 -4
  696. package/dist/components/ui/markdown/index.d.ts +5 -3
  697. package/dist/components/ui/markdown/index.d.ts.map +1 -1
  698. package/dist/components/ui/markdown/index.js +12 -4
  699. package/dist/components/ui/markdown/mermaid-diagram.d.ts.map +1 -1
  700. package/dist/components/ui/markdown/mermaid-diagram.js +8 -2
  701. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts +10 -0
  702. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts.map +1 -1
  703. package/dist/components/ui/markdown/rich/rich-markdown-renderer.js +21 -5
  704. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts +0 -2
  705. package/dist/components/ui/markdown/simple-markdown-renderer.d.ts.map +1 -1
  706. package/dist/components/ui/markdown-editor.d.ts +10 -0
  707. package/dist/components/ui/markdown-editor.d.ts.map +1 -1
  708. package/dist/components/ui/markdown-editor.js +23 -7
  709. package/dist/components/ui/numbered-step.d.ts +10 -0
  710. package/dist/components/ui/numbered-step.d.ts.map +1 -1
  711. package/dist/components/ui/numbered-step.js +19 -2
  712. package/dist/components/ui/organization-card.d.ts.map +1 -1
  713. package/dist/components/ui/organization-card.js +30 -5
  714. package/dist/components/ui/page-actions.d.ts.map +1 -1
  715. package/dist/components/ui/page-actions.js +16 -20
  716. package/dist/components/ui/page-loader.d.ts.map +1 -1
  717. package/dist/components/ui/page-loader.js +2 -1
  718. package/dist/components/ui/people-cell.d.ts +4 -0
  719. package/dist/components/ui/people-cell.d.ts.map +1 -1
  720. package/dist/components/ui/people-cell.js +19 -3
  721. package/dist/components/ui/photo-wall.d.ts +1 -1
  722. package/dist/components/ui/photo-wall.d.ts.map +1 -1
  723. package/dist/components/ui/photo-wall.js +13 -3
  724. package/dist/components/ui/product-screen-frame.d.ts.map +1 -1
  725. package/dist/components/ui/product-screen-frame.js +3 -2
  726. package/dist/components/ui/progress-bar.d.ts +9 -0
  727. package/dist/components/ui/progress-bar.d.ts.map +1 -1
  728. package/dist/components/ui/progress-bar.js +34 -14
  729. package/dist/components/ui/progress.d.ts +15 -0
  730. package/dist/components/ui/progress.d.ts.map +1 -1
  731. package/dist/components/ui/progress.js +8 -3
  732. package/dist/components/ui/release-changelog-section.d.ts +22 -1
  733. package/dist/components/ui/release-changelog-section.d.ts.map +1 -1
  734. package/dist/components/ui/release-changelog-section.js +96 -28
  735. package/dist/components/ui/search-input.d.ts.map +1 -1
  736. package/dist/components/ui/search-input.js +11 -3
  737. package/dist/components/ui/searchable-select.d.ts.map +1 -1
  738. package/dist/components/ui/searchable-select.js +17 -4
  739. package/dist/components/ui/skeleton-surface.d.ts +12 -4
  740. package/dist/components/ui/skeleton-surface.d.ts.map +1 -1
  741. package/dist/components/ui/skeleton-surface.js +6 -2
  742. package/dist/components/ui/slack-channel-chip.d.ts +5 -1
  743. package/dist/components/ui/slack-channel-chip.d.ts.map +1 -1
  744. package/dist/components/ui/slack-channel-chip.js +16 -3
  745. package/dist/components/ui/snap-carousel.d.ts +4 -1
  746. package/dist/components/ui/snap-carousel.d.ts.map +1 -1
  747. package/dist/components/ui/snap-carousel.js +2 -0
  748. package/dist/components/ui/square-avatar.d.ts +3 -0
  749. package/dist/components/ui/square-avatar.d.ts.map +1 -1
  750. package/dist/components/ui/square-avatar.js +38 -23
  751. package/dist/components/ui/stacked-rows-panel.d.ts +24 -1
  752. package/dist/components/ui/stacked-rows-panel.d.ts.map +1 -1
  753. package/dist/components/ui/stacked-rows-panel.js +50 -13
  754. package/dist/components/ui/status-badge.d.ts +10 -2
  755. package/dist/components/ui/status-badge.d.ts.map +1 -1
  756. package/dist/components/ui/status-badge.js +14 -0
  757. package/dist/components/ui/status-indicator.d.ts +4 -0
  758. package/dist/components/ui/status-indicator.d.ts.map +1 -1
  759. package/dist/components/ui/status-indicator.js +16 -3
  760. package/dist/components/ui/status-line.d.ts.map +1 -1
  761. package/dist/components/ui/status-line.js +2 -1
  762. package/dist/components/ui/strip-card.d.ts +9 -0
  763. package/dist/components/ui/strip-card.d.ts.map +1 -1
  764. package/dist/components/ui/strip-card.js +57 -39
  765. package/dist/components/ui/tab-navigation.d.ts +26 -2
  766. package/dist/components/ui/tab-navigation.d.ts.map +1 -1
  767. package/dist/components/ui/tab-navigation.js +182 -115
  768. package/dist/components/ui/table/table-header.js +2 -2
  769. package/dist/components/ui/table/table-row.d.ts.map +1 -1
  770. package/dist/components/ui/table/table-row.js +2 -4
  771. package/dist/components/ui/table/table-skeleton.d.ts +6 -1
  772. package/dist/components/ui/table/table-skeleton.d.ts.map +1 -1
  773. package/dist/components/ui/table/table-skeleton.js +38 -50
  774. package/dist/components/ui/table/table.d.ts +1 -1
  775. package/dist/components/ui/table/table.d.ts.map +1 -1
  776. package/dist/components/ui/table/table.js +30 -25
  777. package/dist/components/ui/table/types.d.ts +14 -4
  778. package/dist/components/ui/table/types.d.ts.map +1 -1
  779. package/dist/components/ui/table/utils.d.ts +4 -0
  780. package/dist/components/ui/table/utils.d.ts.map +1 -1
  781. package/dist/components/ui/table/utils.js +4 -0
  782. package/dist/components/ui/tabs.d.ts +22 -1
  783. package/dist/components/ui/tabs.d.ts.map +1 -1
  784. package/dist/components/ui/tabs.js +33 -2
  785. package/dist/components/ui/tag.d.ts +21 -1
  786. package/dist/components/ui/tag.d.ts.map +1 -1
  787. package/dist/components/ui/tag.js +17 -12
  788. package/dist/components/ui/tags-input.d.ts +9 -0
  789. package/dist/components/ui/tags-input.d.ts.map +1 -1
  790. package/dist/components/ui/tags-input.js +41 -10
  791. package/dist/components/ui/textarea.d.ts +17 -1
  792. package/dist/components/ui/textarea.d.ts.map +1 -1
  793. package/dist/components/ui/textarea.js +22 -3
  794. package/dist/components/ui/ticket-info-section.d.ts +0 -1
  795. package/dist/components/ui/ticket-info-section.d.ts.map +1 -1
  796. package/dist/components/ui/timezone-select.d.ts +3 -1
  797. package/dist/components/ui/timezone-select.d.ts.map +1 -1
  798. package/dist/components/ui/timezone-select.js +3 -1
  799. package/dist/components/ui/toggle.d.ts +8 -2
  800. package/dist/components/ui/toggle.d.ts.map +1 -1
  801. package/dist/components/ui/toggle.js +10 -6
  802. package/dist/components/unified-pagination.d.ts +3 -1
  803. package/dist/components/unified-pagination.d.ts.map +1 -1
  804. package/dist/components/unified-pagination.js +7 -1
  805. package/dist/components/user-display.d.ts +11 -0
  806. package/dist/components/user-display.d.ts.map +1 -1
  807. package/dist/components/user-display.js +38 -14
  808. package/dist/components/user-summary-stub.d.ts.map +1 -1
  809. package/dist/components/user-summary-stub.js +7 -14
  810. package/dist/components/vendor-display-button.d.ts +4 -0
  811. package/dist/components/vendor-display-button.d.ts.map +1 -1
  812. package/dist/components/vendor-display-button.js +11 -13
  813. package/dist/components/vendor-icon.d.ts +5 -0
  814. package/dist/components/vendor-icon.d.ts.map +1 -1
  815. package/dist/components/vendor-icon.js +12 -3
  816. package/dist/components/vendor-tag.d.ts +5 -0
  817. package/dist/components/vendor-tag.d.ts.map +1 -1
  818. package/dist/components/vendor-tag.js +13 -5
  819. package/dist/{devices-O5PZ4IR6.cjs → devices-2D3XSIIE.cjs} +43 -55
  820. package/dist/embed-shims/index.cjs +4 -2
  821. package/dist/embed-shims/next-image.cjs +4 -2
  822. package/dist/embed-shims/next-image.d.ts.map +1 -1
  823. package/dist/embed-shims/next-image.js +24 -0
  824. package/dist/{embeddable-chat-YFUCVDMV.cjs → embeddable-chat-YL6ZSTDJ.cjs} +117 -119
  825. package/dist/hooks/index.cjs +12 -12
  826. package/dist/hooks/state/flatten-schema.d.ts +0 -1
  827. package/dist/hooks/state/flatten-schema.d.ts.map +1 -1
  828. package/dist/hooks/state/flatten-schema.js +0 -2
  829. package/dist/hooks/state/index.d.ts +6 -3
  830. package/dist/hooks/state/index.d.ts.map +1 -1
  831. package/dist/hooks/state/index.js +4 -3
  832. package/dist/hooks/state/url-converter.d.ts +1 -1
  833. package/dist/hooks/state/url-converter.d.ts.map +1 -1
  834. package/dist/hooks/state/url-converter.js +1 -2
  835. package/dist/hooks/state/use-api-params.d.ts +1 -3
  836. package/dist/hooks/state/use-api-params.d.ts.map +1 -1
  837. package/dist/hooks/state/use-api-params.js +1 -5
  838. package/dist/hooks/ui/index.d.ts +1 -0
  839. package/dist/hooks/ui/index.d.ts.map +1 -1
  840. package/dist/hooks/ui/use-image-edge-color.d.ts +1 -1
  841. package/dist/hooks/ui/use-image-edge-color.d.ts.map +1 -1
  842. package/dist/hooks/ui/use-image-edge-color.js +3 -1
  843. package/dist/hooks/ui/use-onboarding-state.d.ts +0 -1
  844. package/dist/hooks/ui/use-onboarding-state.d.ts.map +1 -1
  845. package/dist/hooks/use-downloads.d.ts +1 -1
  846. package/dist/hooks/use-downloads.d.ts.map +1 -1
  847. package/dist/hooks/use-downloads.js +8 -1
  848. package/dist/hooks/use-meeting-booking.d.ts.map +1 -1
  849. package/dist/hooks/use-meeting-booking.js +3 -0
  850. package/dist/hooks/use-self-fetch.d.ts +1 -1
  851. package/dist/hooks/use-self-fetch.d.ts.map +1 -1
  852. package/dist/hooks/use-self-fetch.js +7 -4
  853. package/dist/hooks/use-toast.d.ts +1 -1
  854. package/dist/index.cjs +329 -103
  855. package/dist/{knowledge-4OU73KTO.cjs → knowledge-AJ36PMK2.cjs} +36 -40
  856. package/dist/{logs-R6ZH32UU.cjs → logs-DNE44ACE.cjs} +44 -48
  857. package/dist/nats/index.d.ts +1 -0
  858. package/dist/nats/index.d.ts.map +1 -1
  859. package/dist/nats/nats-provider.d.ts +0 -1
  860. package/dist/nats/nats-provider.d.ts.map +1 -1
  861. package/dist/nats/nats.d.ts +0 -1
  862. package/dist/nats/nats.d.ts.map +1 -1
  863. package/dist/nats/use-nats-subscription.d.ts +2 -1
  864. package/dist/nats/use-nats-subscription.d.ts.map +1 -1
  865. package/dist/{policies-XN4TDX3G.cjs → policies-AJHSP6ZY.cjs} +39 -43
  866. package/dist/{remote-session-7NSC7DI5.cjs → remote-session-PPA5SXX7.cjs} +18 -21
  867. package/dist/schemas/meeting-booking-schema.cjs +4 -0
  868. package/dist/schemas/meeting-booking-schema.d.ts +8 -0
  869. package/dist/schemas/meeting-booking-schema.d.ts.map +1 -1
  870. package/dist/schemas/meeting-booking-schema.js +4 -0
  871. package/dist/{scripts-53VHKMY3.cjs → scripts-4YO2QL36.cjs} +42 -46
  872. package/dist/{software-update-KLJSMAUM.cjs → software-update-KMI2EOO3.cjs} +41 -45
  873. package/dist/styles/component-sizes.d.ts +96 -0
  874. package/dist/styles/component-sizes.d.ts.map +1 -0
  875. package/dist/styles/component-sizes.js +77 -0
  876. package/dist/{tickets-board-DXMF7IKL.cjs → tickets-board-G3WBH4SV.cjs} +18 -20
  877. package/dist/types/announcement.d.ts +0 -1
  878. package/dist/types/announcement.d.ts.map +1 -1
  879. package/dist/types/blog.d.ts +0 -1
  880. package/dist/types/blog.d.ts.map +1 -1
  881. package/dist/types/case-study.d.ts +2 -2
  882. package/dist/types/case-study.d.ts.map +1 -1
  883. package/dist/types/customer-interview-ai.types.d.ts +1 -2
  884. package/dist/types/customer-interview-ai.types.d.ts.map +1 -1
  885. package/dist/types/customer-interview.d.ts +0 -1
  886. package/dist/types/customer-interview.d.ts.map +1 -1
  887. package/dist/types/index.d.ts +2 -0
  888. package/dist/types/index.d.ts.map +1 -1
  889. package/dist/types/product-release.d.ts +3 -0
  890. package/dist/types/product-release.d.ts.map +1 -1
  891. package/dist/types/stack.d.ts +0 -2
  892. package/dist/types/stack.d.ts.map +1 -1
  893. package/dist/utils/announcement-storage.d.ts +0 -3
  894. package/dist/utils/announcement-storage.d.ts.map +1 -1
  895. package/dist/utils/announcement-storage.js +1 -3
  896. package/dist/utils/dev-sections/openframe-dev-sections.d.ts +11 -0
  897. package/dist/utils/dev-sections/openframe-dev-sections.d.ts.map +1 -1
  898. package/dist/utils/dev-sections/openframe-dev-sections.js +5 -0
  899. package/dist/utils/index.cjs +19 -0
  900. package/dist/utils/index.d.ts +7 -2
  901. package/dist/utils/index.d.ts.map +1 -1
  902. package/dist/utils/index.js +8 -6
  903. package/dist/utils/markdown-heading-id.d.ts +0 -19
  904. package/dist/utils/markdown-heading-id.d.ts.map +1 -1
  905. package/dist/utils/markdown-heading-id.js +2 -5
  906. package/dist/utils/ods-color-utils.d.ts +0 -1
  907. package/dist/utils/ods-color-utils.d.ts.map +1 -1
  908. package/dist/utils/ods-color-utils.js +0 -2
  909. package/dist/utils/own-click.d.ts +4 -0
  910. package/dist/utils/own-click.d.ts.map +1 -0
  911. package/dist/utils/own-click.js +14 -0
  912. package/dist/utils/platform-config.d.ts +0 -1
  913. package/dist/utils/platform-config.d.ts.map +1 -1
  914. package/dist/utils/platform-config.js +0 -26
  915. package/dist/utils/source-icons.d.ts +2 -2
  916. package/dist/{video-file-player-QZ3YOLHO.cjs → video-file-player-COXRF4M5.cjs} +13 -13
  917. package/eslint-config/base.js +2 -0
  918. package/eslint-config/re-exports.js +56 -0
  919. package/package.json +1 -1
  920. package/src/ODS_TOKEN_RULES.md +2 -2
  921. package/src/chat-protocol/decode.ts +0 -5
  922. package/src/chat-protocol/index.ts +1 -0
  923. package/src/components/agent-identity.tsx +0 -2
  924. package/src/components/agent-mark.tsx +13 -4
  925. package/src/components/authors/author-detail-view.tsx +90 -44
  926. package/src/components/case-studies/entity-quotes-panel.tsx +50 -3
  927. package/src/components/case-studies/index.ts +2 -2
  928. package/src/components/case-studies/quote-cards-strip.tsx +75 -10
  929. package/src/components/categories-cart.tsx +82 -38
  930. package/src/components/category-card.tsx +1 -1
  931. package/src/components/chat/chat-attachment-bar.tsx +1 -1
  932. package/src/components/chat/chat-container.tsx +2 -1
  933. package/src/components/chat/chat-ticket-list.tsx +0 -1
  934. package/src/components/chat/chat-turn.tsx +124 -18
  935. package/src/components/chat/embeddable-chat.tsx +5 -5
  936. package/src/components/chat/entity-cards/admin-content-card-grid.tsx +1 -51
  937. package/src/components/chat/entity-cards/admin-content-card.tsx +80 -15
  938. package/src/components/chat/entity-cards/blog-card.tsx +71 -41
  939. package/src/components/chat/entity-cards/campaign-card-admin.tsx +4 -17
  940. package/src/components/chat/entity-cards/case-study-card.tsx +129 -68
  941. package/src/components/chat/entity-cards/chat-ticket-item.tsx +34 -29
  942. package/src/components/chat/entity-cards/customer-interview-card.tsx +61 -45
  943. package/src/components/chat/entity-cards/data-room-doc-card.tsx +11 -18
  944. package/src/components/chat/entity-cards/design-doc-card.tsx +48 -34
  945. package/src/components/chat/entity-cards/dispatch.tsx +9 -13
  946. package/src/components/chat/entity-cards/employee-entry-card.tsx +5 -5
  947. package/src/components/chat/entity-cards/entity-author-card.tsx +138 -32
  948. package/src/components/chat/entity-cards/entity-portrait-card.tsx +61 -16
  949. package/src/components/chat/entity-cards/generic-entity-card.tsx +11 -19
  950. package/src/components/chat/entity-cards/github-activity-card.tsx +14 -30
  951. package/src/components/chat/entity-cards/hubspot-ticket-card.tsx +11 -23
  952. package/src/components/chat/entity-cards/index.ts +20 -7
  953. package/src/components/chat/entity-cards/investor-update-card.tsx +42 -35
  954. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +78 -64
  955. package/src/components/chat/entity-cards/program-card.tsx +96 -66
  956. package/src/components/chat/entity-cards/roadmap-card.tsx +85 -65
  957. package/src/components/chat/entity-cards/roadmap-vote-button.tsx +12 -1
  958. package/src/components/chat/entity-cards/slack-message-card.tsx +19 -26
  959. package/src/components/chat/hooks/index.ts +12 -2
  960. package/src/components/chat/hooks/use-ask-prompts.ts +5 -1
  961. package/src/components/chat/hooks/use-chat-dialog-manager.ts +1 -1
  962. package/src/components/chat/hooks/use-chat-history-hydration.ts +1 -1
  963. package/src/components/chat/hooks/use-chat.ts +0 -3
  964. package/src/components/chat/hooks/use-nats-chat-adapter.ts +0 -20
  965. package/src/components/chat/hooks/use-proxied-image-url.ts +27 -20
  966. package/src/components/chat/hooks/use-slash-commands.ts +1 -7
  967. package/src/components/chat/hooks/use-sse-chat-adapter.ts +4 -18
  968. package/src/components/chat/stream/chat-stream-reducer.ts +3 -2
  969. package/src/components/chat/types/entities/index.ts +24 -4
  970. package/src/components/chat/types/entities/investor-update.ts +1 -1
  971. package/src/components/chat/types/entities/program-types.ts +2 -5
  972. package/src/components/chat/utils/compact-card-classes.ts +15 -2
  973. package/src/components/chat/utils/compact-card-skeleton.tsx +111 -0
  974. package/src/components/chat/utils/icon-library.tsx +0 -2
  975. package/src/components/chat/utils/index.ts +5 -3
  976. package/src/components/chat/utils/scroll-anchor.ts +0 -2
  977. package/src/components/chat/utils/source-row-cta.ts +1 -5
  978. package/src/components/comment-card.tsx +118 -19
  979. package/src/components/comment-thread.tsx +130 -17
  980. package/src/components/docs/doc-viewer.tsx +33 -31
  981. package/src/components/docs/skeletons.tsx +37 -49
  982. package/src/components/docs/use-document-tree.ts +11 -7
  983. package/src/components/embeds/embed-iframe.tsx +5 -0
  984. package/src/components/embeds/index.ts +1 -1
  985. package/src/components/embeds/markdown-image.tsx +6 -2
  986. package/src/components/embeds/og-link-preview.tsx +155 -81
  987. package/src/components/faq/faq-document-page.tsx +8 -0
  988. package/src/components/faq/faq-section.tsx +249 -70
  989. package/src/components/faq/index.ts +12 -1
  990. package/src/components/faq-accordion.tsx +67 -7
  991. package/src/components/features/ai-enrich/AIStatusIndicator.tsx +2 -1
  992. package/src/components/features/approval-level.tsx +71 -8
  993. package/src/components/features/capability-explorer.tsx +59 -61
  994. package/src/components/features/cards-strip.tsx +54 -12
  995. package/src/components/features/command-box.tsx +139 -10
  996. package/src/components/features/conversation-card.tsx +242 -16
  997. package/src/components/features/devices/device-selector/device-selector.tsx +1 -0
  998. package/src/components/features/devices/devices-panel-view.tsx +2 -2
  999. package/src/components/features/entity-tag-badges.tsx +143 -10
  1000. package/src/components/features/entity-video-section.tsx +52 -14
  1001. package/src/components/features/figma-prototype-viewer.tsx +4 -8
  1002. package/src/components/features/index.ts +11 -0
  1003. package/src/components/features/knowledge-base/index.ts +2 -5
  1004. package/src/components/features/knowledge-base/knowledge-base-article-view.tsx +0 -2
  1005. package/src/components/features/model-token-rates.tsx +64 -84
  1006. package/src/components/features/notifications/approval-request-notification-tile.tsx +9 -11
  1007. package/src/components/features/notifications/notification-tile.tsx +58 -23
  1008. package/src/components/features/paths-display.tsx +73 -6
  1009. package/src/components/features/platform-badge.tsx +41 -1
  1010. package/src/components/features/push-button-selector.tsx +167 -64
  1011. package/src/components/features/remote-session/index.ts +2 -2
  1012. package/src/components/features/remote-session/remote-desktop-chat-message-row.tsx +24 -3
  1013. package/src/components/features/remote-session/remote-desktop-chat-panel.tsx +19 -5
  1014. package/src/components/features/remote-session/remote-desktop-view.tsx +47 -38
  1015. package/src/components/features/remote-session/remote-session-chat-panel.tsx +1 -1
  1016. package/src/components/features/status-filter-component.tsx +105 -11
  1017. package/src/components/features/use-video-warmup.ts +0 -7
  1018. package/src/components/features/use-walkthrough-video.ts +5 -1
  1019. package/src/components/features/video-bites-strip.tsx +137 -22
  1020. package/src/components/features/video-hover-preview.tsx +2 -1
  1021. package/src/components/features/video.tsx +16 -12
  1022. package/src/components/features/walkthrough-video.tsx +9 -2
  1023. package/src/components/help-center-pages/download-apps-page.tsx +86 -32
  1024. package/src/components/help-center-pages/trust-center-page.tsx +132 -66
  1025. package/src/components/help-center-pages/trust-center-sections.tsx +205 -148
  1026. package/src/components/icon-display.tsx +9 -0
  1027. package/src/components/index.ts +11 -2
  1028. package/src/components/interactive-wrapper.tsx +2 -1
  1029. package/src/components/layout/list-page-layout.tsx +4 -5
  1030. package/src/components/layout/page-container.tsx +59 -29
  1031. package/src/components/layout/page-data-sync.tsx +40 -5
  1032. package/src/components/layout/page-heading.tsx +84 -1
  1033. package/src/components/layout/page-layout.tsx +5 -5
  1034. package/src/components/layout/title-block.tsx +72 -17
  1035. package/src/components/loading/category-vendor-selector-skeleton.tsx +4 -0
  1036. package/src/components/loading/deprecated-layout-skeletons.tsx +133 -0
  1037. package/src/components/loading/device-card-skeleton.tsx +4 -4
  1038. package/src/components/loading/index.ts +11 -13
  1039. package/src/components/loading/loading-region.tsx +16 -9
  1040. package/src/components/loading/msp-profile-form-skeleton.tsx +3 -0
  1041. package/src/components/loading/organization-card-skeleton.tsx +45 -71
  1042. package/src/components/loading/page-layout-skeleton.tsx +1 -641
  1043. package/src/components/loading/settings-form-skeleton.tsx +3 -0
  1044. package/src/components/loading/unified-skeleton.tsx +101 -11
  1045. package/src/components/log-severity-dot.tsx +17 -14
  1046. package/src/components/logs-list.tsx +43 -29
  1047. package/src/components/media-carousel.tsx +0 -4
  1048. package/src/components/meeting-scheduler/booking-form.tsx +245 -35
  1049. package/src/components/meeting-scheduler/context-panel.tsx +96 -30
  1050. package/src/components/meeting-scheduler/directory.tsx +70 -37
  1051. package/src/components/meeting-scheduler/index.tsx +136 -132
  1052. package/src/components/meeting-scheduler/modal-header.tsx +45 -31
  1053. package/src/components/meeting-scheduler/slot-picker.tsx +20 -8
  1054. package/src/components/metric-value.tsx +19 -2
  1055. package/src/components/msp-display.tsx +25 -10
  1056. package/src/components/navigation/app-layout.tsx +0 -3
  1057. package/src/components/navigation/index.ts +15 -3
  1058. package/src/components/navigation/mingo-ai-button.tsx +3 -4
  1059. package/src/components/navigation/mobile-nav-sheet.tsx +0 -2
  1060. package/src/components/navigation/multi-level-navigation.tsx +152 -35
  1061. package/src/components/navigation/page-section-bar.tsx +132 -0
  1062. package/src/components/navigation/sticky-section-nav.tsx +109 -18
  1063. package/src/components/navigation/ticket-alerts-button.tsx +1 -1
  1064. package/src/components/onboarding-guides/hooks/use-onboarding-guides.ts +8 -1
  1065. package/src/components/onboarding-guides/index.ts +5 -2
  1066. package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +166 -67
  1067. package/src/components/onboarding-guides/onboarding-guides-catalog-skeleton.tsx +38 -51
  1068. package/src/components/onboarding-guides/onboarding-guides-catalog-view.tsx +91 -45
  1069. package/src/components/pagination.tsx +103 -48
  1070. package/src/components/persistent-filter-controls.tsx +0 -7
  1071. package/src/components/persistent-pagination.tsx +6 -1
  1072. package/src/components/platform/ToolBadge.tsx +57 -10
  1073. package/src/components/platform/index.ts +2 -2
  1074. package/src/components/platform/tool-badge-mark.ts +6 -0
  1075. package/src/components/product-demo/fixtures/devices.ts +0 -3
  1076. package/src/components/product-demo/product-screen.tsx +42 -23
  1077. package/src/components/product-demo/screen-loading.tsx +20 -0
  1078. package/src/components/product-demo/screens/devices-view.tsx +58 -0
  1079. package/src/components/product-demo/screens/devices.tsx +9 -29
  1080. package/src/components/related-content/card-registry.tsx +20 -6
  1081. package/src/components/related-content/index.ts +3 -1
  1082. package/src/components/related-content/related-content-section.tsx +222 -46
  1083. package/src/components/results-count.tsx +37 -6
  1084. package/src/components/shared/article-author-byline.tsx +65 -41
  1085. package/src/components/shared/delivery/delivery-lists.tsx +15 -2
  1086. package/src/components/shared/delivery/delivery-row.tsx +55 -9
  1087. package/src/components/shared/delivery/delivery-table.tsx +19 -46
  1088. package/src/components/shared/detail-page-skeleton.tsx +15 -1
  1089. package/src/components/shared/dev-section/dev-card-row.tsx +45 -28
  1090. package/src/components/shared/dev-section/dev-section-view.tsx +1 -1
  1091. package/src/components/shared/doc-search/use-doc-search.ts +1 -1
  1092. package/src/components/shared/legal-document/index.ts +2 -0
  1093. package/src/components/shared/legal-document/legal-document-page.tsx +41 -21
  1094. package/src/components/shared/legal-document/use-legal-docs.ts +5 -1
  1095. package/src/components/shared/legal-document/use-legal-documents.ts +4 -1
  1096. package/src/components/shared/media-gallery-strip.tsx +35 -3
  1097. package/src/components/shared/onboarding/index.ts +2 -5
  1098. package/src/components/shared/product-release/index.ts +1 -1
  1099. package/src/components/shared/product-release/product-release-card-classes.ts +28 -0
  1100. package/src/components/shared/product-release/product-release-card-skeleton.tsx +62 -56
  1101. package/src/components/shared/product-release/product-release-card.tsx +62 -44
  1102. package/src/components/shared/product-release/product-releases-view.tsx +32 -24
  1103. package/src/components/shared/product-release/release-detail-page.tsx +229 -134
  1104. package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +20 -6
  1105. package/src/components/shared/roadmap/roadmap-grid.tsx +59 -9
  1106. package/src/components/shared/roadmap/roadmap-view.tsx +3 -3
  1107. package/src/components/social-icon-row.tsx +14 -8
  1108. package/src/components/tickets/help-center-list.tsx +6 -2
  1109. package/src/components/tickets/hooks/use-ticket-actions.ts +0 -4
  1110. package/src/components/tickets/index.ts +1 -2
  1111. package/src/components/tickets/ticket-center.tsx +189 -75
  1112. package/src/components/tickets/types.ts +0 -9
  1113. package/src/components/toggle-group.tsx +4 -1
  1114. package/src/components/tool-icon.tsx +2 -1
  1115. package/src/components/ui/analyzing-state.tsx +11 -6
  1116. package/src/components/ui/announcement-bar-view.tsx +7 -1
  1117. package/src/components/ui/autocomplete.tsx +58 -6
  1118. package/src/components/ui/avatar-stack.tsx +42 -3
  1119. package/src/components/ui/badge.tsx +16 -1
  1120. package/src/components/ui/benefit-list.tsx +41 -6
  1121. package/src/components/ui/button/button-styles.ts +48 -0
  1122. package/src/components/ui/button/button.tsx +5 -39
  1123. package/src/components/ui/button/index.ts +1 -0
  1124. package/src/components/ui/card.tsx +28 -13
  1125. package/src/components/ui/checkbox.tsx +6 -1
  1126. package/src/components/ui/compliance-badge.tsx +6 -2
  1127. package/src/components/ui/cursor-pagination.tsx +28 -3
  1128. package/src/components/ui/dashboard-info-card.tsx +29 -11
  1129. package/src/components/ui/data-attribution.tsx +42 -12
  1130. package/src/components/ui/data-table/data-table-body.tsx +11 -2
  1131. package/src/components/ui/data-table/data-table-row-count.tsx +19 -1
  1132. package/src/components/ui/data-table/data-table-row.tsx +4 -9
  1133. package/src/components/ui/data-table/data-table-skeleton.tsx +7 -7
  1134. package/src/components/ui/data-table/index.ts +2 -1
  1135. package/src/components/ui/date-picker.tsx +0 -6
  1136. package/src/components/ui/entity-image.tsx +27 -4
  1137. package/src/components/ui/error-state.tsx +8 -1
  1138. package/src/components/ui/feature-card.tsx +77 -12
  1139. package/src/components/ui/feature-list.tsx +72 -8
  1140. package/src/components/ui/field-wrapper.tsx +13 -1
  1141. package/src/components/ui/filter-checkbox-item.tsx +57 -6
  1142. package/src/components/ui/filter-modal.tsx +2 -6
  1143. package/src/components/ui/filter-pill-row.tsx +81 -27
  1144. package/src/components/ui/incident-feed.tsx +20 -11
  1145. package/src/components/ui/index.ts +21 -1
  1146. package/src/components/ui/info-card-row.tsx +74 -19
  1147. package/src/components/ui/info-card.tsx +87 -13
  1148. package/src/components/ui/input-styles.ts +6 -0
  1149. package/src/components/ui/input.tsx +4 -1
  1150. package/src/components/ui/layout-hold.tsx +9 -7
  1151. package/src/components/ui/leader-row.tsx +58 -4
  1152. package/src/components/ui/loading-scope.tsx +54 -0
  1153. package/src/components/ui/markdown/base-components.tsx +18 -9
  1154. package/src/components/ui/markdown/engine.tsx +131 -7
  1155. package/src/components/ui/markdown/index.ts +8 -6
  1156. package/src/components/ui/markdown/mermaid-diagram.tsx +7 -4
  1157. package/src/components/ui/markdown/rich/rich-markdown-renderer.tsx +26 -1
  1158. package/src/components/ui/markdown/simple-markdown-renderer.tsx +0 -3
  1159. package/src/components/ui/markdown-editor.tsx +83 -50
  1160. package/src/components/ui/numbered-step.tsx +32 -2
  1161. package/src/components/ui/organization-card.tsx +32 -7
  1162. package/src/components/ui/page-actions.tsx +25 -29
  1163. package/src/components/ui/page-loader.tsx +2 -1
  1164. package/src/components/ui/people-cell.tsx +25 -2
  1165. package/src/components/ui/photo-wall.tsx +14 -3
  1166. package/src/components/ui/product-screen-frame.tsx +14 -3
  1167. package/src/components/ui/progress-bar.tsx +26 -3
  1168. package/src/components/ui/progress.tsx +14 -3
  1169. package/src/components/ui/release-changelog-section.tsx +153 -20
  1170. package/src/components/ui/search-input.tsx +23 -3
  1171. package/src/components/ui/searchable-select.tsx +26 -6
  1172. package/src/components/ui/skeleton-surface.ts +16 -4
  1173. package/src/components/ui/slack-channel-chip.tsx +23 -3
  1174. package/src/components/ui/snap-carousel.tsx +5 -0
  1175. package/src/components/ui/square-avatar.tsx +41 -23
  1176. package/src/components/ui/stacked-rows-panel.tsx +88 -15
  1177. package/src/components/ui/status-badge.tsx +18 -1
  1178. package/src/components/ui/status-indicator.tsx +21 -2
  1179. package/src/components/ui/status-line.tsx +2 -1
  1180. package/src/components/ui/strip-card.tsx +73 -23
  1181. package/src/components/ui/tab-navigation.tsx +141 -28
  1182. package/src/components/ui/table/table-header.tsx +2 -2
  1183. package/src/components/ui/table/table-row.tsx +2 -4
  1184. package/src/components/ui/table/table-skeleton.tsx +48 -54
  1185. package/src/components/ui/table/table.tsx +36 -19
  1186. package/src/components/ui/table/types.ts +12 -4
  1187. package/src/components/ui/table/utils.ts +5 -0
  1188. package/src/components/ui/tabs.tsx +64 -4
  1189. package/src/components/ui/tag.tsx +33 -13
  1190. package/src/components/ui/tags-input.tsx +48 -10
  1191. package/src/components/ui/textarea.tsx +33 -3
  1192. package/src/components/ui/ticket-info-section.tsx +0 -2
  1193. package/src/components/ui/timezone-select.tsx +4 -0
  1194. package/src/components/ui/toggle.tsx +11 -5
  1195. package/src/components/unified-pagination.tsx +15 -0
  1196. package/src/components/user-display.tsx +53 -12
  1197. package/src/components/user-summary-stub.tsx +7 -11
  1198. package/src/components/vendor-display-button.tsx +15 -12
  1199. package/src/components/vendor-icon.tsx +13 -2
  1200. package/src/components/vendor-tag.tsx +18 -4
  1201. package/src/embed-shims/next-image.tsx +36 -1
  1202. package/src/hooks/state/flatten-schema.ts +0 -4
  1203. package/src/hooks/state/index.ts +5 -3
  1204. package/src/hooks/state/url-converter.ts +2 -2
  1205. package/src/hooks/state/use-api-params.ts +2 -10
  1206. package/src/hooks/ui/index.ts +1 -0
  1207. package/src/hooks/ui/use-image-edge-color.ts +4 -1
  1208. package/src/hooks/ui/use-onboarding-state.ts +0 -2
  1209. package/src/hooks/use-downloads.ts +9 -1
  1210. package/src/hooks/use-meeting-booking.ts +4 -0
  1211. package/src/hooks/use-self-fetch.ts +12 -4
  1212. package/src/nats/index.ts +1 -0
  1213. package/src/nats/nats-provider.tsx +0 -2
  1214. package/src/nats/nats.ts +0 -2
  1215. package/src/nats/use-nats-subscription.ts +2 -1
  1216. package/src/schemas/meeting-booking-schema.ts +11 -0
  1217. package/src/styles/component-sizes.ts +105 -0
  1218. package/src/types/announcement.ts +0 -3
  1219. package/src/types/blog.ts +0 -4
  1220. package/src/types/case-study.ts +2 -2
  1221. package/src/types/customer-interview-ai.types.ts +1 -4
  1222. package/src/types/customer-interview.ts +0 -11
  1223. package/src/types/index.ts +2 -0
  1224. package/src/types/product-release.ts +4 -2
  1225. package/src/types/stack.ts +0 -4
  1226. package/src/utils/announcement-storage.ts +0 -7
  1227. package/src/utils/dev-sections/openframe-dev-sections.ts +11 -0
  1228. package/src/utils/index.ts +6 -9
  1229. package/src/utils/markdown-heading-id.ts +0 -28
  1230. package/src/utils/ods-color-utils.ts +0 -4
  1231. package/src/utils/own-click.ts +25 -0
  1232. package/src/utils/platform-config.tsx +0 -17
  1233. package/src/utils/source-icons.ts +2 -2
  1234. package/dist/chunk-3ATAYP36.cjs +0 -19
  1235. package/dist/chunk-3LU4UFPS.cjs +0 -14
  1236. package/dist/chunk-H3RYUTND.cjs +0 -142
  1237. package/dist/chunk-JB424IQK.cjs +0 -404
  1238. package/dist/chunk-L4UI63K6.cjs +0 -103
  1239. package/dist/chunk-NS64LMVE.cjs +0 -470
  1240. package/dist/chunk-OF336YWG.cjs +0 -20
  1241. package/dist/chunk-RB6BSE3O.cjs +0 -21
  1242. package/dist/chunk-UI2TLQWA.cjs +0 -163
  1243. package/dist/components/chat/entity-cards/product-release-card.d.ts +0 -12
  1244. package/dist/components/chat/entity-cards/product-release-card.d.ts.map +0 -1
  1245. package/dist/components/chat/entity-cards/product-release-card.js +0 -8
  1246. package/dist/components/chat/hooks/use-embedded-chat.d.ts +0 -15
  1247. package/dist/components/chat/hooks/use-embedded-chat.d.ts.map +0 -1
  1248. package/dist/components/chat/hooks/use-embedded-chat.js +0 -6
  1249. package/dist/components/chat/types/entities/blog.d.ts +0 -14
  1250. package/dist/components/chat/types/entities/blog.d.ts.map +0 -1
  1251. package/dist/components/chat/types/entities/blog.js +0 -1
  1252. package/dist/components/chat/types/entities/case-study.d.ts +0 -10
  1253. package/dist/components/chat/types/entities/case-study.d.ts.map +0 -1
  1254. package/dist/components/chat/types/entities/case-study.js +0 -1
  1255. package/dist/components/chat/types/entities/content-ref.d.ts +0 -8
  1256. package/dist/components/chat/types/entities/content-ref.d.ts.map +0 -1
  1257. package/dist/components/chat/types/entities/content-ref.js +0 -1
  1258. package/dist/components/chat/types/entities/customer-interview.d.ts +0 -10
  1259. package/dist/components/chat/types/entities/customer-interview.d.ts.map +0 -1
  1260. package/dist/components/chat/types/entities/customer-interview.js +0 -1
  1261. package/dist/components/chat/utils/source-icons.d.ts +0 -8
  1262. package/dist/components/chat/utils/source-icons.d.ts.map +0 -1
  1263. package/dist/components/chat/utils/source-icons.js +0 -16
  1264. package/dist/utils/image-proxy-stub.d.ts +0 -14
  1265. package/dist/utils/image-proxy-stub.d.ts.map +0 -1
  1266. package/dist/utils/image-proxy-stub.js +0 -22
  1267. package/src/components/chat/entity-cards/product-release-card.tsx +0 -19
  1268. package/src/components/chat/hooks/use-embedded-chat.ts +0 -25
  1269. package/src/components/chat/types/entities/blog.ts +0 -27
  1270. package/src/components/chat/types/entities/case-study.ts +0 -10
  1271. package/src/components/chat/types/entities/content-ref.ts +0 -7
  1272. package/src/components/chat/types/entities/customer-interview.ts +0 -15
  1273. package/src/components/chat/utils/source-icons.ts +0 -14
  1274. package/src/utils/image-proxy-stub.ts +0 -40
@@ -6,10 +6,21 @@ import { useKeyboardCollisionPadding } from '../../hooks/ui/use-keyboard-collisi
6
6
  import { cn } from '../../utils/cn';
7
7
  import { CheckIcon, SearchIcon } from '../icons-v2-generated';
8
8
  import { Chevron02DownIcon } from '../icons-v2-generated/arrows/chevron-02-down-icon';
9
+ import { LoadingRegion } from '../loading/loading-region';
10
+ import { TextLineSkeleton } from '../loading/unified-skeleton';
9
11
  import { FieldWrapper } from './field-wrapper';
10
12
  import { Input } from './input';
11
13
  import { usePortalContainer } from './portal-container';
12
14
 
15
+ /** An option's frame (a list row, or a tile in the grid), read by the options and by their loading state. */
16
+ const SELECT_ROW_CLASS =
17
+ 'flex w-full items-center gap-[var(--spacing-system-xs)] px-[var(--spacing-system-sf)] py-[var(--spacing-system-xs)] text-left';
18
+ const SELECT_TILE_CLASS =
19
+ 'flex min-w-0 flex-col items-center justify-center gap-[var(--spacing-system-xxs)] border-b border-r border-ods-border p-[var(--spacing-system-xs)]';
20
+ /** Options the loading state draws: the `max-h-80` (320px) list holds eight 40px rows, or about twelve tiles. */
21
+ const SELECT_ROWS_FOLD = 8;
22
+ const SELECT_TILES_FOLD = 12;
23
+
13
24
  export interface SearchableSelectOption {
14
25
  value: string;
15
26
  label: string;
@@ -87,7 +98,7 @@ export function SearchableSelect(allProps: SearchableSelectProps) {
87
98
  placeholder = 'Select...',
88
99
  searchPlaceholder = 'Search...',
89
100
  emptyText = 'No results found',
90
- loadingText = 'Loading…',
101
+ loadingText = 'Loading options',
91
102
  isLoading = false,
92
103
  disabled = false,
93
104
  trigger,
@@ -229,10 +240,21 @@ export function SearchableSelect(allProps: SearchableSelectProps) {
229
240
  // bottom/right rule, so the grid needs no gap.
230
241
  isGrid ? 'grid grid-cols-[repeat(auto-fill,minmax(7rem,1fr))]' : 'py-[var(--spacing-system-xs)]',
231
242
  )}
232
- role="listbox"
243
+ // A listbox owns options only: while they are read the box holds the loading region (a status and
244
+ // hidden rows), with no listbox role around it.
245
+ role={isLoading ? undefined : 'listbox'}
233
246
  >
234
247
  {isLoading ? (
235
- <div className={statusClass}>{loadingText}</div>
248
+ // The options while they are read: the list's own rows (or tiles), a label bar each; `loadingText` is
249
+ // what a screen reader hears.
250
+ <LoadingRegion label={loadingText} className="contents">
251
+ {Array.from({ length: isGrid ? SELECT_TILES_FOLD : SELECT_ROWS_FOLD }, (_, i) => (
252
+ // biome-ignore lint/suspicious/noArrayIndexKey: skeleton rows never reorder
253
+ <div key={i} className={isGrid ? SELECT_TILE_CLASS : SELECT_ROW_CLASS} aria-hidden>
254
+ <TextLineSkeleton type={isGrid ? 'h6' : 'h4'} className={isGrid ? 'w-full' : 'w-2/3'} />
255
+ </div>
256
+ ))}
257
+ </LoadingRegion>
236
258
  ) : filtered.length === 0 ? (
237
259
  <div className={statusClass}>{emptyText}</div>
238
260
  ) : (
@@ -247,9 +269,7 @@ export function SearchableSelect(allProps: SearchableSelectProps) {
247
269
  onClick={() => handleSelect(opt.value)}
248
270
  className={cn(
249
271
  'transition-colors hover:bg-ods-bg-hover',
250
- isGrid
251
- ? 'flex min-w-0 flex-col items-center justify-center gap-[var(--spacing-system-xxs)] border-b border-r border-ods-border p-[var(--spacing-system-xs)]'
252
- : 'flex w-full items-center gap-[var(--spacing-system-xs)] px-[var(--spacing-system-sf)] py-[var(--spacing-system-xs)] text-left',
272
+ isGrid ? SELECT_TILE_CLASS : SELECT_ROW_CLASS,
253
273
  isSelected && 'bg-ods-bg-hover',
254
274
  )}
255
275
  >
@@ -1,6 +1,18 @@
1
1
  /**
2
- * What a skeleton looks like: the pulsing surface every loading stand-in draws
3
- * (`UnifiedSkeleton` and its presets, `TextHold`'s bars). A plain module, with
4
- * no client directive, so a server component can read the string itself.
2
+ * THE two pulses of the library, and the only places `animate-pulse` is written (a test fails on any other).
3
+ * A plain module, with no client directive, so a server component can read the strings itself.
4
+ *
5
+ * - `SKELETON_SURFACE_CLASS`: what a skeleton looks like, the pulsing surface every loading shape draws
6
+ * (`UnifiedSkeleton` and its presets, `TextHold`'s bars). Every surface carries the `ods-skeleton` marker, and
7
+ * a surface stops the pulse of every surface inside it: a skeleton drawn inside another one pulses with its
8
+ * parent, once, never twice over (two opacity animations multiplied read as a faster, harsher pulse).
9
+ * - `LIVE_PULSE_CLASS`: a live indicator that is not a loading state (a "working" status dot, a connecting
10
+ * light, a busy mark). Same animation and timing as the skeleton, so the page has one rhythm.
5
11
  */
6
- export const SKELETON_SURFACE_CLASS = 'animate-pulse motion-reduce:animate-none bg-ods-skeleton';
12
+ export const SKELETON_SURFACE_MARKER = 'ods-skeleton';
13
+
14
+ // One literal (no interpolation), so a Tailwind scan of the built bundle sees every class.
15
+ export const SKELETON_SURFACE_CLASS =
16
+ 'ods-skeleton animate-pulse motion-reduce:animate-none bg-ods-skeleton [&_.ods-skeleton]:animate-none';
17
+
18
+ export const LIVE_PULSE_CLASS = 'animate-pulse motion-reduce:animate-none';
@@ -1,6 +1,15 @@
1
+ 'use client';
2
+
1
3
  import Link from '../../embed-shims/next-link';
4
+ import { ICON_SIZE } from '../../styles/component-sizes';
2
5
  import { cn } from '../../utils/cn';
3
6
  import { SlackIcon } from '../icons-v2-generated/brand-logos/slack-icon';
7
+ import { TextLineSkeleton } from '../loading/unified-skeleton';
8
+ import { useLoadingScope } from './loading-scope';
9
+
10
+ /** The chip: Slack's mark, then the channel. Read by the chip and by its skeleton. */
11
+ const CHIP_CLASS = 'inline-flex items-center gap-1 align-baseline text-ods-text-primary';
12
+ const MARK_CLASS = `${ICON_SIZE.sm} flex-shrink-0`;
4
13
 
5
14
  export interface SlackChannelChipProps {
6
15
  /** Channel display name, no '#' prefix. Falls back to plain "Slack" when null. */
@@ -13,13 +22,14 @@ export interface SlackChannelChipProps {
13
22
 
14
23
  /**
15
24
  * Inline Slack-channel reference: the Slack icon + "#name", optionally linked
16
- * to the channel's web deep link. Server-component safe (no hooks/state).
25
+ * to the channel's web deep link. In a page's loading state the channel is read: the chip is its skeleton.
17
26
  * Degrades gracefully: no name renders plain "Slack", no href renders unlinked.
18
27
  */
19
28
  export function SlackChannelChip({ name, href, className }: SlackChannelChipProps) {
29
+ if (useLoadingScope()) return <SlackChannelChipSkeleton className={className} />;
20
30
  const inner = (
21
- <span className={cn('inline-flex items-center gap-1 align-baseline text-ods-text-primary', className)}>
22
- <SlackIcon className="h-4 w-4 flex-shrink-0" />
31
+ <span className={cn(CHIP_CLASS, className)}>
32
+ <SlackIcon className={MARK_CLASS} />
23
33
  {name ? `#${name}` : 'Slack'}
24
34
  </span>
25
35
  );
@@ -30,3 +40,13 @@ export function SlackChannelChip({ name, href, className }: SlackChannelChipProp
30
40
  </Link>
31
41
  );
32
42
  }
43
+
44
+ /** A SlackChannelChip while its channel is read: Slack's mark (static), the channel's name a bar of its line. */
45
+ export function SlackChannelChipSkeleton({ className }: { className?: string }) {
46
+ return (
47
+ <span className={cn(CHIP_CLASS, className)} aria-hidden>
48
+ <SlackIcon className={MARK_CLASS} />
49
+ <TextLineSkeleton type="inherit" as="span" className="inline-block w-24 align-bottom" />
50
+ </span>
51
+ );
52
+ }
@@ -34,6 +34,9 @@ export interface SnapCarouselProps<T> {
34
34
  nextLabel?: string;
35
35
  /** A slide to bring into view whenever this value changes (a link that names it). Only the track moves, never the page. */
36
36
  focusIndex?: number;
37
+ /** The slides are read data (a list whose length is the record's): each slide is marked an item of ONE read list
38
+ * (`data-loading-item`), so a loading state drawn with the same carousel has the same structure as the loaded one. */
39
+ readItems?: boolean;
37
40
  className?: string;
38
41
  }
39
42
 
@@ -90,6 +93,7 @@ export function SnapCarousel<T>({
90
93
  prevLabel = 'Previous',
91
94
  nextLabel = 'Next',
92
95
  focusIndex,
96
+ readItems = false,
93
97
  className,
94
98
  }: SnapCarouselProps<T>) {
95
99
  const trackRef = useRef<HTMLDivElement | null>(null);
@@ -174,6 +178,7 @@ export function SnapCarousel<T>({
174
178
  // Never `aria-hidden`: the neighbouring slides are on screen and their links take focus.
175
179
  aria-current={itemIndex === index ? 'true' : undefined}
176
180
  className={cn('flex shrink-0 grow-0 snap-start', slideClassName)}
181
+ data-loading-item={readItems || undefined}
177
182
  >
178
183
  <div className="min-w-0 flex-1">{renderItem(item, itemIndex)}</div>
179
184
  </div>
@@ -3,12 +3,16 @@
3
3
  import { type HTMLAttributes, memo, forwardRef } from 'react';
4
4
  import Image from '../../embed-shims/next-image';
5
5
  import { useAuthedImageSrc } from '../../hooks/use-authed-image-src';
6
+ import { AVATAR_SIZE, AVATAR_SIZE_PX } from '../../styles/component-sizes';
6
7
  import { cn } from '../../utils/cn';
7
8
  import { personInitials } from '../../utils/format';
9
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
10
+ import { useLoadingScope } from './loading-scope';
8
11
 
9
12
  interface SquareAvatarProps extends HTMLAttributes<HTMLDivElement> {
10
13
  src?: string;
11
14
  alt?: string;
15
+ /** A step of the shared avatar scale (`AVATAR_SIZE`). */
12
16
  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
13
17
  /** Exact pixel size (width & height). Overrides the `size` bucket dimensions —
14
18
  * for callers with a numeric-px API (e.g. UserDisplay/MSPDisplay). */
@@ -27,6 +31,12 @@ interface SquareAvatarProps extends HTMLAttributes<HTMLDivElement> {
27
31
  initialsClassName?: string;
28
32
  }
29
33
 
34
+ /** The avatar's corner at each variant, read by the avatar and by its skeleton. */
35
+ const SQUARE_AVATAR_VARIANT_CLASS = {
36
+ square: 'rounded-md',
37
+ round: 'rounded-full',
38
+ } as const;
39
+
30
40
  const SquareAvatar = memo(
31
41
  forwardRef<HTMLDivElement, SquareAvatarProps>(
32
42
  (
@@ -45,30 +55,17 @@ const SquareAvatar = memo(
45
55
  },
46
56
  ref,
47
57
  ) => {
48
- const resolvedSrc = useAuthedImageSrc(src);
49
- const sizeClasses = {
50
- // xs (24px): dense card meta rows — avatar stacks on delivery/
51
- // roadmap cards. Part of the shared scale so no caller ever
52
- // bypasses the buckets with raw sizePx for a standard size.
53
- xs: 'h-6 w-6',
54
- sm: 'h-8 w-8',
55
- md: 'h-10 w-10',
56
- lg: 'h-12 w-12',
57
- xl: 'h-16 w-16',
58
- };
59
-
60
- const sizePxBySize = {
61
- xs: 24,
62
- sm: 32,
63
- md: 40,
64
- lg: 48,
65
- xl: 64,
66
- };
58
+ // In a loading scope the avatar is its skeleton, and its image is not fetched.
59
+ const held = useLoadingScope();
60
+ const authedSrc = useAuthedImageSrc(held ? undefined : src);
61
+ if (held) {
62
+ return <SquareAvatarSkeleton size={size} sizePx={sizePx} variant={variant} className={className} />;
63
+ }
64
+ const resolvedSrc = authedSrc;
65
+ const sizeClasses = AVATAR_SIZE;
66
+ const sizePxBySize = AVATAR_SIZE_PX;
67
67
 
68
- const variantClasses = {
69
- square: 'rounded-md',
70
- round: 'rounded-full',
71
- };
68
+ const variantClasses = SQUARE_AVATAR_VARIANT_CLASS;
72
69
 
73
70
  return (
74
71
  <div
@@ -136,3 +133,24 @@ const SquareAvatar = memo(
136
133
  SquareAvatar.displayName = 'SquareAvatar';
137
134
 
138
135
  export { SquareAvatar };
136
+
137
+ /** A SquareAvatar while its person is read: a box of the avatar's own size and corner. */
138
+ export function SquareAvatarSkeleton({
139
+ size = 'md',
140
+ sizePx,
141
+ variant = 'square',
142
+ className,
143
+ }: Pick<SquareAvatarProps, 'size' | 'sizePx' | 'variant' | 'className'>) {
144
+ return (
145
+ <UnifiedSkeleton
146
+ className={cn(
147
+ 'shrink-0',
148
+ sizePx === undefined && AVATAR_SIZE[size],
149
+ SQUARE_AVATAR_VARIANT_CLASS[variant],
150
+ className,
151
+ )}
152
+ width={sizePx}
153
+ height={sizePx}
154
+ />
155
+ );
156
+ }
@@ -3,6 +3,8 @@
3
3
  import type { ReactNode } from 'react';
4
4
  import Link from '../../embed-shims/next-link';
5
5
  import { cn } from '../../utils/cn';
6
+ import { TextLineSkeleton } from '../loading/unified-skeleton';
7
+ import { useLoadingScope } from './loading-scope';
6
8
 
7
9
  /**
8
10
  * StackedRowsPanel — a single bordered card that stacks rows inside it.
@@ -67,8 +69,28 @@ export interface StackedRowsPanelProps {
67
69
  /** Optional uppercase caption rendered above the card. */
68
70
  title?: string;
69
71
  className?: string;
72
+ /** The shape drawn while the rows are read (a page's loading state, where `rows` is empty). */
73
+ skeleton?: StackedRowsPanelSkeletonShape;
74
+ /**
75
+ * The rows are a read list (how many there are is the data's, and a loading state draws a fold of them): every
76
+ * row carries `data-loading-item`. Default false (a panel of fixed fields).
77
+ */
78
+ listItems?: boolean;
70
79
  }
71
80
 
81
+ /** How many rows a loading panel draws, and how many value/label columns each carries. */
82
+ export interface StackedRowsPanelSkeletonShape {
83
+ /** Rows drawn. Default {@link STACKED_ROWS_SKELETON_COUNT}. */
84
+ rows?: number;
85
+ /** Columns per row; one is a full-width title/caption row. Default 1. */
86
+ columns?: number;
87
+ /** Each cell carries a label under its value. Default `true`. */
88
+ labels?: boolean;
89
+ }
90
+
91
+ /** Rows a loading panel draws when its caller names no count. */
92
+ export const STACKED_ROWS_SKELETON_COUNT = 3;
93
+
72
94
  const ALIGN_CLASS: Record<PanelColumnAlign, string> = {
73
95
  left: 'justify-start items-start',
74
96
  center: 'justify-center items-center',
@@ -93,6 +115,13 @@ const HIDE_CLASS: Record<PanelHideAt, string> = {
93
115
  // the joined-row pattern used across the detail layouts (56px mobile, 80px tablet+).
94
116
  const ROW_CLASS =
95
117
  'flex items-center gap-[var(--spacing-system-m)] px-[var(--spacing-system-m)] min-h-14 content-md:min-h-20 border-b border-ods-border last:border-b-0';
118
+ // A single-column row is a full-width title/subtitle row, padded symmetrically.
119
+ const FULL_WIDTH_ROW_CLASS =
120
+ 'flex items-center gap-[var(--spacing-system-m)] border-b border-ods-border p-[var(--spacing-system-m)] last:border-b-0';
121
+ const CARD_CLASS = 'flex flex-col overflow-clip rounded-md border border-ods-border bg-ods-card';
122
+ const TITLED_CLASS = 'flex flex-col gap-[var(--spacing-system-xxs)]';
123
+ const TITLE_CLASS = 'uppercase text-ods-text-secondary text-h5';
124
+ const DEFAULT_WIDTH_CLASS = 'flex-[1_0_0] min-w-0';
96
125
 
97
126
  function CellValue({ column }: { column: PanelColumn }) {
98
127
  const valueNode = (
@@ -131,7 +160,7 @@ function CellValue({ column }: { column: PanelColumn }) {
131
160
  }
132
161
 
133
162
  function PanelCell({ column }: { column: PanelColumn }) {
134
- const widthClass = column.width ?? 'flex-[1_0_0] min-w-0';
163
+ const widthClass = column.width ?? DEFAULT_WIDTH_CLASS;
135
164
  const hideClass = column.hideAt ? HIDE_CLASS[column.hideAt] : 'flex';
136
165
 
137
166
  if (column.content !== undefined) {
@@ -158,11 +187,16 @@ function PanelCell({ column }: { column: PanelColumn }) {
158
187
  );
159
188
  }
160
189
 
161
- function PanelRowView({ row }: { row: PanelRow }) {
190
+ function PanelRowView({ row, listItem }: { row: PanelRow; listItem?: boolean }) {
191
+ const item = listItem ? { 'data-loading-item': '' } : undefined;
162
192
  // Arbitrary content (e.g. a nested table): keep it edge-to-edge unless the caller
163
193
  // overrides via `className`. No fixed height — let the content size itself.
164
194
  if (row.content !== undefined) {
165
- return <div className={cn('border-b border-ods-border last:border-b-0', row.className)}>{row.content}</div>;
195
+ return (
196
+ <div className={cn('border-b border-ods-border last:border-b-0', row.className)} {...item}>
197
+ {row.content}
198
+ </div>
199
+ );
166
200
  }
167
201
 
168
202
  const columns = row.columns ?? [];
@@ -170,15 +204,10 @@ function PanelRowView({ row }: { row: PanelRow }) {
170
204
 
171
205
  // A single-column row is a full-width title/subtitle row: pad symmetrically
172
206
  // (ODS `m`) instead of using a fixed column-row height.
173
- const rowClass = isFullWidth
174
- ? cn(
175
- 'flex items-center gap-[var(--spacing-system-m)] border-b border-ods-border p-[var(--spacing-system-m)] last:border-b-0',
176
- row.className,
177
- )
178
- : cn(ROW_CLASS, row.className);
207
+ const rowClass = isFullWidth ? cn(FULL_WIDTH_ROW_CLASS, row.className) : cn(ROW_CLASS, row.className);
179
208
 
180
209
  return (
181
- <div className={rowClass}>
210
+ <div className={rowClass} {...item}>
182
211
  {columns.map(column => (
183
212
  <PanelCell key={column.key} column={column} />
184
213
  ))}
@@ -186,11 +215,16 @@ function PanelRowView({ row }: { row: PanelRow }) {
186
215
  );
187
216
  }
188
217
 
189
- export function StackedRowsPanel({ rows, title, className }: StackedRowsPanelProps) {
218
+ export function StackedRowsPanel({ rows, title, className, skeleton, listItems = false }: StackedRowsPanelProps) {
219
+ // In a page's loading state with no rows yet (they are read) the panel is its skeleton; rows it is given there
220
+ // are the page's own copy and draw as they are.
221
+ const inScope = useLoadingScope();
222
+ if (inScope && rows.length === 0)
223
+ return <StackedRowsPanelSkeleton {...skeleton} title={title} className={className} listItems={listItems} />;
190
224
  const card = (
191
- <div className="flex flex-col overflow-clip rounded-md border border-ods-border bg-ods-card">
225
+ <div className={CARD_CLASS}>
192
226
  {rows.map(row => (
193
- <PanelRowView key={row.id} row={row} />
227
+ <PanelRowView key={row.id} row={row} listItem={listItems} />
194
228
  ))}
195
229
  </div>
196
230
  );
@@ -200,8 +234,47 @@ export function StackedRowsPanel({ rows, title, className }: StackedRowsPanelPro
200
234
  }
201
235
 
202
236
  return (
203
- <div className={cn('flex flex-col gap-[var(--spacing-system-xxs)]', className)}>
204
- <p className="uppercase text-ods-text-secondary text-h5">{title}</p>
237
+ <div className={cn(TITLED_CLASS, className)}>
238
+ <p className={TITLE_CLASS}>{title}</p>
239
+ {card}
240
+ </div>
241
+ );
242
+ }
243
+
244
+ /**
245
+ * A StackedRowsPanel while its rows are read: the same card and row heights, each cell's value a `text-h4` bar
246
+ * over its label's `text-h6` bar. The title above the card is the page's own and draws as it is.
247
+ */
248
+ export function StackedRowsPanelSkeleton({
249
+ rows = STACKED_ROWS_SKELETON_COUNT,
250
+ columns = 1,
251
+ labels = true,
252
+ title,
253
+ className,
254
+ listItems = false,
255
+ }: StackedRowsPanelSkeletonShape & Pick<StackedRowsPanelProps, 'title' | 'className' | 'listItems'>) {
256
+ const card = (
257
+ <div className={CARD_CLASS} aria-hidden>
258
+ {Array.from({ length: rows }, (_, row) => (
259
+ <div
260
+ key={row}
261
+ className={columns === 1 ? FULL_WIDTH_ROW_CLASS : ROW_CLASS}
262
+ {...(listItems ? { 'data-loading-item': '' } : undefined)}
263
+ >
264
+ {Array.from({ length: columns }, (_cell, column) => (
265
+ <div key={column} className={cn('flex flex-col justify-center', DEFAULT_WIDTH_CLASS)}>
266
+ <TextLineSkeleton type="h4" className="w-1/2" />
267
+ {labels && <TextLineSkeleton type="h6" className="w-3/4" />}
268
+ </div>
269
+ ))}
270
+ </div>
271
+ ))}
272
+ </div>
273
+ );
274
+ if (!title) return <div className={className}>{card}</div>;
275
+ return (
276
+ <div className={cn(TITLED_CLASS, className)}>
277
+ <p className={TITLE_CLASS}>{title}</p>
205
278
  {card}
206
279
  </div>
207
280
  );
@@ -3,6 +3,8 @@
3
3
  import { cva, type VariantProps } from 'class-variance-authority';
4
4
  import type React from 'react';
5
5
  import { cn } from '../../utils/cn';
6
+ import { UnifiedSkeleton } from '../loading/unified-skeleton';
7
+ import { useLoadingScope } from './loading-scope';
6
8
 
7
9
  const statusBadgeVariants = cva('inline-flex items-center justify-center rounded', {
8
10
  variants: {
@@ -93,7 +95,22 @@ export interface StatusBadgeProps
93
95
  gen?: number;
94
96
  }
95
97
 
98
+ /**
99
+ * A badge while its text is read: one skeleton box with the badge's own padding and type step, its content one line
100
+ * of that step (`box-content`: the padding adds to the line, as it does around the badge's text).
101
+ */
102
+ function StatusBadgeSkeleton({ variant, className }: { variant?: 'card' | 'button' | null; className?: string }) {
103
+ return (
104
+ <UnifiedSkeleton
105
+ as="span"
106
+ className={cn(statusBadgeVariants({ variant, colorScheme: null }), 'box-content h-[1lh] w-12 border-transparent', className)}
107
+ />
108
+ );
109
+ }
110
+
96
111
  function StatusBadge({ text, variant, colorScheme, className, singleLine, gen, style, ...props }: StatusBadgeProps) {
112
+ const loading = useLoadingScope();
113
+ if (loading) return <StatusBadgeSkeleton variant={variant} className={className} />;
97
114
  // Generation mode: constant full-accent text, progressive-opacity accent bg,
98
115
  // SSOT casing (textTransform:none overrides the base `uppercase`). Inline
99
116
  // style so it wins over any colorScheme class regardless of CSS source order.
@@ -143,4 +160,4 @@ function StatusBadge({ text, variant, colorScheme, className, singleLine, gen, s
143
160
  );
144
161
  }
145
162
 
146
- export { StatusBadge, statusBadgeVariants };
163
+ export { StatusBadge, StatusBadgeSkeleton, statusBadgeVariants };
@@ -1,6 +1,13 @@
1
1
  'use client';
2
2
 
3
3
  import Link from '../../embed-shims/next-link';
4
+ import { DOT_SIZE } from '../../styles/component-sizes';
5
+ import { TextLineSkeleton, UnifiedSkeleton } from '../loading/unified-skeleton';
6
+ import { useLoadingScope } from './loading-scope';
7
+
8
+ /** The indicator's row and dot, read by the indicator and by its skeleton. */
9
+ const ROW_CLASS = 'flex items-center gap-1.5';
10
+ const DOT_CLASS = `${DOT_SIZE.md} rounded-full`;
4
11
 
5
12
  interface StatusIndicatorProps {
6
13
  status: 'success' | 'pending' | 'error' | 'missing';
@@ -9,6 +16,8 @@ interface StatusIndicatorProps {
9
16
  }
10
17
 
11
18
  export function StatusIndicator({ status, label, href }: StatusIndicatorProps) {
19
+ // In a page's loading state the status is read: the indicator is its skeleton.
20
+ if (useLoadingScope()) return <StatusIndicatorSkeleton />;
12
21
  const getStatusColor = (kind: string) => {
13
22
  switch (kind) {
14
23
  case 'success':
@@ -28,8 +37,8 @@ export function StatusIndicator({ status, label, href }: StatusIndicatorProps) {
28
37
  const [dotColor, textColor] = colorClasses.split(' ');
29
38
 
30
39
  const content = (
31
- <div className="flex items-center gap-1.5">
32
- <div className={`h-3 w-3 rounded-full ${dotColor}`} />
40
+ <div className={ROW_CLASS}>
41
+ <div className={`${DOT_CLASS} ${dotColor}`} />
33
42
  <span className={`text-h6 ${textColor}`}>{label}</span>
34
43
  </div>
35
44
  );
@@ -44,3 +53,13 @@ export function StatusIndicator({ status, label, href }: StatusIndicatorProps) {
44
53
 
45
54
  return content;
46
55
  }
56
+
57
+ /** A StatusIndicator while its status is read: the dot a circle of its size, the label a `text-h6` bar. */
58
+ export function StatusIndicatorSkeleton({ className }: { className?: string }) {
59
+ return (
60
+ <div className={`${ROW_CLASS} ${className ?? ''}`} aria-hidden>
61
+ <UnifiedSkeleton variant="circular" className={DOT_CLASS} />
62
+ <TextLineSkeleton type="h6" className="w-24" />
63
+ </div>
64
+ );
65
+ }
@@ -1,6 +1,7 @@
1
1
  import { cn } from '../../utils/cn';
2
2
  import { CheckCircleIcon } from '../icons-v2-generated/signs-and-symbols/check-circle-icon';
3
3
  import { XmarkCircleIcon } from '../icons-v2-generated/signs-and-symbols/xmark-circle-icon';
4
+ import { LIVE_PULSE_CLASS } from './skeleton-surface';
4
5
 
5
6
  /**
6
7
  * What a status line says about the thing above it:
@@ -41,7 +42,7 @@ export function StatusLine({ tone, label, className }: StatusLineProps) {
41
42
  >
42
43
  {tone === 'working' && (
43
44
  <span
44
- className="h-2 w-2 shrink-0 animate-pulse rounded-full bg-ods-flamingo-cyan motion-reduce:animate-none"
45
+ className={cn('h-2 w-2 shrink-0 rounded-full bg-ods-flamingo-cyan', LIVE_PULSE_CLASS)}
45
46
  aria-hidden
46
47
  />
47
48
  )}
@@ -1,5 +1,9 @@
1
+ 'use client';
2
+
1
3
  import type { ReactNode } from 'react';
2
4
  import { cn } from '../../utils/cn';
5
+ import { TextLineSkeleton } from '../loading/unified-skeleton';
6
+ import { useLoadingScope } from './loading-scope';
3
7
 
4
8
  export interface StripCardProps {
5
9
  /** Before the title, at 24px (an icon, a step's number). */
@@ -16,6 +20,20 @@ export interface StripCardProps {
16
20
  bodyClassName?: string;
17
21
  }
18
22
 
23
+ /** The card's frame, head and body, read by the card and by its skeleton. */
24
+ const FRAME_CLASS = 'flex h-full min-w-0 flex-col overflow-hidden rounded-md border border-ods-border bg-ods-card';
25
+ const HEAD_CLASS = 'flex items-center gap-[var(--spacing-system-mf)] border-b border-ods-border';
26
+ const HEAD_TEXT_CLASS = 'flex min-w-0 flex-1 flex-col';
27
+ const LEAD_CLASS = 'flex shrink-0 items-center';
28
+ const headPadding = (roomy: boolean) => (roomy ? 'p-[var(--spacing-system-l)]' : 'p-[var(--spacing-system-m)]');
29
+ const bodyClass = (roomy: boolean) =>
30
+ cn(
31
+ 'flex min-w-0 flex-1 flex-col bg-ods-bg',
32
+ roomy
33
+ ? 'gap-[var(--spacing-system-l)] p-[var(--spacing-system-l)]'
34
+ : 'gap-[var(--spacing-system-m)] px-[var(--spacing-system-m)] pb-[var(--spacing-system-l)] pt-[var(--spacing-system-m)]',
35
+ );
36
+
19
37
  /**
20
38
  * THE card with a head strip (Figma "Info-card" with a `tag` head): a head on
21
39
  * the card surface holding a mark, a title and an optional caption, a hairline,
@@ -33,34 +51,66 @@ export function StripCard({
33
51
  bodyClassName,
34
52
  }: StripCardProps) {
35
53
  const roomy = density === 'roomy';
36
- return (
37
- <div
38
- className={cn(
39
- 'flex h-full min-w-0 flex-col overflow-hidden rounded-md border border-ods-border bg-ods-card',
40
- className,
41
- )}
42
- >
43
- <div
44
- className={cn(
45
- 'flex items-center gap-[var(--spacing-system-mf)] border-b border-ods-border',
46
- roomy ? 'p-[var(--spacing-system-l)]' : 'p-[var(--spacing-system-m)]',
47
- )}
54
+ // In a page's loading state a title still being read is empty: the head is its skeleton, the body (whose own
55
+ // components draw their skeletons) as it is.
56
+ const inScope = useLoadingScope();
57
+ if (inScope && !title) {
58
+ return (
59
+ <StripCardSkeleton
60
+ lead={lead}
61
+ caption={caption !== undefined}
62
+ density={density}
63
+ className={className}
64
+ bodyClassName={bodyClassName}
48
65
  >
49
- {lead && <span className="flex shrink-0 items-center">{lead}</span>}
50
- <div className="flex min-w-0 flex-1 flex-col">
66
+ {children}
67
+ </StripCardSkeleton>
68
+ );
69
+ }
70
+ return (
71
+ <div className={cn(FRAME_CLASS, className)}>
72
+ <div className={cn(HEAD_CLASS, headPadding(roomy))}>
73
+ {lead && <span className={LEAD_CLASS}>{lead}</span>}
74
+ <div className={HEAD_TEXT_CLASS}>
51
75
  <Title className="m-0 text-ods-text-primary text-h3">{title}</Title>
52
76
  {caption && <span className="text-ods-text-secondary text-h6">{caption}</span>}
53
77
  </div>
54
78
  </div>
55
- <div
56
- className={cn(
57
- 'flex min-w-0 flex-1 flex-col bg-ods-bg',
58
- roomy
59
- ? 'gap-[var(--spacing-system-l)] p-[var(--spacing-system-l)]'
60
- : 'gap-[var(--spacing-system-m)] px-[var(--spacing-system-m)] pb-[var(--spacing-system-l)] pt-[var(--spacing-system-m)]',
61
- bodyClassName,
62
- )}
63
- >
79
+ <div className={cn(bodyClass(roomy), bodyClassName)}>
80
+ {children}
81
+ </div>
82
+ </div>
83
+ );
84
+ }
85
+
86
+ /**
87
+ * A StripCard while its head is read: the same frame, the lead as given (an icon is static, a picture draws its
88
+ * own box), the title a `text-h3` bar and the caption, when the card carries one, a `text-h6` bar. The body is
89
+ * the caller's: its components draw their own skeletons.
90
+ */
91
+ export function StripCardSkeleton({
92
+ lead,
93
+ caption = false,
94
+ density = 'default',
95
+ children,
96
+ className,
97
+ bodyClassName,
98
+ }: Pick<StripCardProps, 'lead' | 'density' | 'children' | 'className' | 'bodyClassName'> & {
99
+ /** The loaded card carries a caption under its title. */
100
+ caption?: boolean;
101
+ }) {
102
+ const roomy = density === 'roomy';
103
+ return (
104
+ <div className={cn(FRAME_CLASS, className)}>
105
+ <div className={cn(HEAD_CLASS, headPadding(roomy))} aria-hidden>
106
+ {lead && <span className={LEAD_CLASS}>{lead}</span>}
107
+ <div className={HEAD_TEXT_CLASS}>
108
+ <TextLineSkeleton type="h3" className="w-3/4" />
109
+ {caption && <TextLineSkeleton type="h6" className="w-1/2" />}
110
+ </div>
111
+ </div>
112
+ {/* The body is the caller's, inert while the card is read (its components draw their own skeletons). */}
113
+ <div className={cn(bodyClass(roomy), bodyClassName)} inert>
64
114
  {children}
65
115
  </div>
66
116
  </div>